[Schmitzm-commits] r1739 - in trunk/schmitzm-core/src: main/java/de/schmitzm/lang test/java/de/schmitzm/lang

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Thu Sep 29 21:00:41 CEST 2011


Author: mojays
Date: 2011-09-29 21:00:41 +0200 (Thu, 29 Sep 2011)
New Revision: 1739

Modified:
   trunk/schmitzm-core/src/main/java/de/schmitzm/lang/LangUtil.java
   trunk/schmitzm-core/src/test/java/de/schmitzm/lang/LangUtilTest.java
Log:


Modified: trunk/schmitzm-core/src/main/java/de/schmitzm/lang/LangUtil.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/lang/LangUtil.java	2011-09-29 18:36:59 UTC (rev 1738)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/lang/LangUtil.java	2011-09-29 19:00:41 UTC (rev 1739)
@@ -598,7 +598,7 @@
 	public static String stringConcatWithSep(String sep, String maskChar, boolean ignoreNulls, Object... str) {
 		StringBuffer sb = new StringBuffer();
 		for (int i = 0; str != null && i < str.length; i++) {
-			if (str[i] == null || str[i].toString().trim().equals(""))
+			if (ignoreNulls && (str[i] == null || str[i].toString().trim().equals("")))
 				continue;
 			// if (i > 0)
 			if (sb.length() > 0)
@@ -1394,11 +1394,13 @@
 	    // festgestellt, wenn die Parameter GENAU die Typen sind, mit denen die
 	    // Methode deklariert ist... Besser ist es, die passende Methode durch
 	    // Ausprobieren zu ermitteln:
+	    boolean methodFound = false;
 	    for (Method m : clazz.getMethods()) {
 	      if ( !m.getName().equals(methodName) )
 	        continue;
 	      try {
 	        ret[i] = m.invoke(null, methodParams);
+	        methodFound = true;
 	        break;
 	      } catch (Exception err){
 	        // Wenn Methode einen Fehler erzeugte, diese
@@ -1411,6 +1413,8 @@
 	        // -> ignornieren
 	      }
 	    }
+	    if ( !methodFound )
+	      throw new UnsupportedOperationException("Static method '"+methodName+"("+stringConcatWithSep(",",methodParams)+")' not available in "+getSimpleClassName(clazz));
 	  }
 	  return ret;
 	}

Modified: trunk/schmitzm-core/src/test/java/de/schmitzm/lang/LangUtilTest.java
===================================================================
--- trunk/schmitzm-core/src/test/java/de/schmitzm/lang/LangUtilTest.java	2011-09-29 18:36:59 UTC (rev 1738)
+++ trunk/schmitzm-core/src/test/java/de/schmitzm/lang/LangUtilTest.java	2011-09-29 19:00:41 UTC (rev 1739)
@@ -154,4 +154,22 @@
 				LangUtil.regExBereich("Am Ender der Absperrung war ein großer Baum zu sehen", "Baum", 3));
 
 	}
+	
+	public static int testMethod(int i, double j) {
+	  return i;
+	}
+	
+	@Test
+	public void testStaticMethodCall() {
+	  final int value = 123;
+	  Object[] ret = LangUtil.callStaticMethod(
+	      new Class[] {LangUtilTest.class, String.class, LangUtilTest.class},
+	      LangUtilTest.class,
+	      "testMethod",
+	      value,
+	      value);
+	  assertEquals(value, ret[0]);
+	  assertTrue(ret[1] == null); // String.class nicht von LangUtilTest abgeleitet
+      assertEquals(value, ret[2]);
+	}
 }
\ No newline at end of file



More information about the Schmitzm-commits mailing list