[zb4osgi-changeset] [scm] ZigBee 4 OSGi repository change: r571 - in /projects/zb4osgi/trunk/zigbee.tester: pom.xml src/main/java/org/persona/zigbee/tester/gui/CommandActionPanel.java

scm-notify at zb4osgi.aaloa.org scm-notify at zb4osgi.aaloa.org
Fri Oct 26 11:27:46 CEST 2012


Author: stefano.lenzi
Date: Fri Oct 26 11:27:46 2012
New Revision: 571

Log:
Added dependencies with zigbee.cc2480.datalink due ByteUtils class with should be moved into zigbee.common
Displaying command result for all kind of response with a better message ( refs #162 )


Modified:
    projects/zb4osgi/trunk/zigbee.tester/pom.xml
    projects/zb4osgi/trunk/zigbee.tester/src/main/java/org/persona/zigbee/tester/gui/CommandActionPanel.java

Modified: projects/zb4osgi/trunk/zigbee.tester/pom.xml
==============================================================================
--- projects/zb4osgi/trunk/zigbee.tester/pom.xml (original)
+++ projects/zb4osgi/trunk/zigbee.tester/pom.xml Fri Oct 26 11:27:46 2012
@@ -104,14 +104,17 @@
             </Export-Package>
             <Private-Package>
               org.persona.zigbee.tester.*,
-              org.persona.zigbee.util.*
+              org.persona.zigbee.util.*,
+              com.itaca.ztool.util
             </Private-Package>
             <Import-Package>
+		!com.itaca.ztool.api,
                 javax.swing.*,
                 it.cnr.isti.zigbee.api.*,
                 it.cnr.isti.zigbee.ha.*,
                 it.cnr.isti.zigbee.zcl.*,
-                org.osgi.*
+                org.osgi.*,
+                org.slf4j; provider=paxlogging                
             </Import-Package>
           </instructions>
         </configuration>
@@ -162,6 +165,10 @@
       <groupId>org.aaloa.zb4osgi</groupId>
       <artifactId>org.aaloa.zb4osgi.zigbee.basedriver.api</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.aaloa.zb4osgi</groupId>
+      <artifactId>org.aaloa.zb4osgi.zigbee.cc2480.datalink</artifactId>
+    </dependency>
 
 
     <!-- 

Modified: projects/zb4osgi/trunk/zigbee.tester/src/main/java/org/persona/zigbee/tester/gui/CommandActionPanel.java
==============================================================================
--- projects/zb4osgi/trunk/zigbee.tester/src/main/java/org/persona/zigbee/tester/gui/CommandActionPanel.java (original)
+++ projects/zb4osgi/trunk/zigbee.tester/src/main/java/org/persona/zigbee/tester/gui/CommandActionPanel.java Fri Oct 26 11:27:46 2012
@@ -21,6 +21,9 @@
    limitations under the License.
 */
 package org.persona.zigbee.tester.gui;
+
+import it.cnr.isti.zigbee.zcl.library.api.core.Response;
+import it.cnr.isti.zigbee.zcl.library.impl.core.ResponseImpl;
 
 import java.awt.BorderLayout;
 import java.awt.Component;
@@ -50,6 +53,8 @@
 
 import org.persona.zigbee.tester.gui.Command.CommandParsingException;
 
+import com.itaca.ztool.util.ByteUtils;
+
 /**
  * 
  * @author <a href="mailto:stefano.lenzi at isti.cnr.it">Stefano "Kismet" Lenzi</a>
@@ -95,11 +100,7 @@
 				}
 				try {
 					Object returned = action.invoke(params);
-					if ( returned == null ) {
-						result.setText("Invokation successed without error, but without return values");
-					} else {
-						result.setText(returned.toString());
-					}
+					showActionResult(returned);
 				} catch (CommandParsingException ex) {
 					ByteArrayOutputStream bof = new ByteArrayOutputStream();
 					PrintStream ps = new PrintStream(bof);
@@ -127,7 +128,37 @@
 				}
 			}
 			
-            private void printReport(String[] params,Object result) {
+            private void showActionResult(Object returned) {
+				if ( returned == null ) {
+					result.setText("Invokation successed without error, but without return values");
+					return;
+				}
+				final Class clz = returned.getClass();
+				if ( clz.isPrimitive() || clz == String.class ){
+					result.setText(returned.toString());
+				} else if ( returned instanceof Response){
+					Response r = (Response) returned;
+					String str = r.toString();
+					try {
+						final Class clzToString = clz.getMethod("toString").getDeclaringClass();
+						if ( clzToString == Object.class || clzToString == ResponseImpl.class) {
+							//TODO A default response to String in a ResponseBase class or Response.stringValueOf(Response) should be provided
+							str = "The response object do not provide any String representation of itself";
+						}
+					} catch (Exception ex) {
+						ex.printStackTrace();
+					}
+					result.setText(
+							"Invokation successed, the raw response payload is \n" +
+							ByteUtils.toBase16( r.getPayload() ) + "\n" +
+							"String representaion of the response is:\n" + str
+					);
+				} else { 
+					result.setText("Invokation successed without error, but unknown return type "+returned.getClass()+" ["+returned.toString()+"]");
+				}
+			}
+
+			private void printReport(String[] params,Object result) {
                 String input = "";
                 String output = "";
                 if (params != null) input = Arrays.toString(params);




More information about the Commit mailing list