[zb4osgi-changeset] [scm] ZigBee 4 OSGi repository change: r525 - /projects/zb4osgi/trunk/zigbee.tester/src/main/java/org/persona/zigbee/tester/gui/Command.java

scm-notify at zb4osgi.aaloa.org scm-notify at zb4osgi.aaloa.org
Fri Oct 19 09:26:39 CEST 2012


Author: stefano.lenzi
Date: Fri Oct 19 09:26:39 2012
New Revision: 525

Log:
Added support for boolean parameter
Throwing an exception when paramter is not supported 

Modified:
    projects/zb4osgi/trunk/zigbee.tester/src/main/java/org/persona/zigbee/tester/gui/Command.java

Modified: projects/zb4osgi/trunk/zigbee.tester/src/main/java/org/persona/zigbee/tester/gui/Command.java
==============================================================================
--- projects/zb4osgi/trunk/zigbee.tester/src/main/java/org/persona/zigbee/tester/gui/Command.java (original)
+++ projects/zb4osgi/trunk/zigbee.tester/src/main/java/org/persona/zigbee/tester/gui/Command.java Fri Oct 19 09:26:39 2012
@@ -25,6 +25,7 @@
 
 import it.cnr.isti.zigbee.ha.cluster.glue.Cluster;
 
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
 /**
@@ -52,7 +53,7 @@
 		return types;
 	}
 	
-	public String invoke(String[] values) throws Exception{
+	public String invoke(String[] values) throws Exception {
 		Class<?>[] params = method.getParameterTypes();
 		Object[] objs = new Object[params.length];
 		for (int i = 0; i < objs.length; i++) {
@@ -62,7 +63,11 @@
 			else if ( params[i].isAssignableFrom( byte.class ) ) objs[i] = Byte.decode(values[i]).byteValue();
 			else if ( params[i].isAssignableFrom( double.class ) ) objs[i] = Double.valueOf(values[i]).doubleValue();
 			else if ( params[i].isAssignableFrom( float.class ) ) objs[i] = Float.valueOf(values[i]).floatValue();
-			else objs[i]=values[i]; 
+			else if ( params[i].isAssignableFrom( boolean.class ) ) objs[i] = Boolean.valueOf(values[i]).booleanValue() || "on".equalsIgnoreCase(values[i]) || "1".equals(values[i]);
+			else if ( params[i].isAssignableFrom( String.class ) ) objs[i] = values[i];
+			//TODO Add an option for ignoring type that we cannot convert
+			//TODO Define a plugin system for enabling data conversion
+			else throw new IllegalArgumentException("No convertion defined from "+String.class+" to argument of type "+params[i]); 
 		}
 		if( method.getReturnType() == void.class ) {
 			method.invoke(cluster, objs);




More information about the Commit mailing list