[wise-commits] wise SVN: r461 - webgui/branches/cdi-jsf/src/main/java/org/jboss/wise/gui/treeElement.

wise-commits at lists.jboss.org wise-commits at lists.jboss.org
Sun Jan 20 18:27:29 EST 2013


Author: alessio.soldano at jboss.com
Date: 2013-01-20 18:27:29 -0500 (Sun, 20 Jan 2013)
New Revision: 461

Modified:
   webgui/branches/cdi-jsf/src/main/java/org/jboss/wise/gui/treeElement/ParameterizedWiseTreeElement.java
Log:
Fix tree to Object conversion of parameterized elements


Modified: webgui/branches/cdi-jsf/src/main/java/org/jboss/wise/gui/treeElement/ParameterizedWiseTreeElement.java
===================================================================
--- webgui/branches/cdi-jsf/src/main/java/org/jboss/wise/gui/treeElement/ParameterizedWiseTreeElement.java	2013-01-20 23:26:38 UTC (rev 460)
+++ webgui/branches/cdi-jsf/src/main/java/org/jboss/wise/gui/treeElement/ParameterizedWiseTreeElement.java	2013-01-20 23:27:29 UTC (rev 461)
@@ -16,9 +16,14 @@
  */
 package org.jboss.wise.gui.treeElement;
 
+import java.lang.reflect.Method;
 import java.lang.reflect.ParameterizedType;
 import java.util.Iterator;
+import java.util.List;
 
+import javax.xml.bind.annotation.XmlElementDecl;
+
+import org.jboss.logging.Logger;
 import org.jboss.wise.core.client.WSDynamicClient;
 import org.jboss.wise.core.exception.WiseRuntimeException;
 import org.jboss.wise.core.utils.IDGenerator;
@@ -75,12 +80,43 @@
 
     @Override
     public Object toObject() throws WiseRuntimeException {
-	return null;
-//	if (client == null) {
-//	    throw new WiseRuntimeException("null client: impossible conversion of ParameterizedWiseTreeElemnt to object");
-//	}
-//	return isLeaf() ? null : client.instanceXmlElementDecl(this.name, this.scope, this.namespace, this.getChildrenAsList().get(0).toObject());
+	return isLeaf() ? null : instanceXmlElementDecl(this.name, this.scope, this.namespace, ((WiseTreeElement) this.getChild(this.getChildrenKeysIterator().next())).toObject());
     }
+    
+    private Object instanceXmlElementDecl(String name, Class<?> scope, String namespace, Object value) {
+	try {
+	    Class<?> objectFactoryClass = null;
+	    Method methodToUse = null;
+	    boolean done = false;
+	    List<Class<?>> objectFactories = client.getObjectFactories();
+	    if (objectFactories != null) {
+		for (Iterator<Class<?>> it = objectFactories.iterator(); it.hasNext() && !done; ) {
+		    objectFactoryClass = it.next();
+		    Method[] methods = objectFactoryClass.getMethods();
+		    for (int i = 0; i < methods.length; i++) {
+			XmlElementDecl annotation = methods[i].getAnnotation(XmlElementDecl.class);
+			if (annotation != null && name.equals(annotation.name()) && (annotation.namespace() == null || annotation.namespace().equals(namespace)) && (annotation
+				.scope() == null || annotation.scope().equals(scope))) {
+			    methodToUse = methods[i];
+			    break;
+			}
+		    }
+		    if (methodToUse != null) {
+			done = true;
+		    }
+		}
+	    }
+	    if (methodToUse != null) {
+		Object obj = objectFactoryClass.newInstance();
+		Logger.getLogger(this.getClass()).debug(methodToUse + " with value=" + value);
+		return methodToUse.invoke(obj, new Object[] { value });
+	    } else {
+		return null;
+	    }
+	} catch (Exception e) {
+	    throw new WiseRuntimeException(e);
+	}
+    }
 
     public void setClient(WSDynamicClient client) {
 	this.client = client;



More information about the wise-commits mailing list