[jboss-svn-commits] JBL Code SVN: r34339 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: command/runtime/process and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jul 29 17:11:37 EDT 2010


Author: mark.proctor at jboss.com
Date: 2010-07-29 17:11:36 -0400 (Thu, 29 Jul 2010)
New Revision: 34339

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbUnknownAdapter.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/AbortWorkItemCommand.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/CompleteWorkItemCommand.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamHelper.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamJSon.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamXML.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbPair.java
Log:


Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java	2010-07-29 21:06:24 UTC (rev 34338)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java	2010-07-29 21:11:36 UTC (rev 34339)
@@ -21,12 +21,15 @@
 import javax.xml.bind.annotation.XmlAnyElement;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.drools.command.Context;
 import org.drools.command.impl.GenericCommand;
 import org.drools.command.impl.KnowledgeCommandContext;
 import org.drools.impl.StatefulKnowledgeSessionImpl;
 import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.xml.jaxb.util.JaxbListAdapter;
+import org.drools.xml.jaxb.util.JaxbUnknownAdapter;
 
 @XmlAccessorType(XmlAccessType.NONE)
 public class SetGlobalCommand
@@ -37,6 +40,7 @@
     private String  identifier;
 	
 	@XmlElement
+	//@XmlJavaTypeAdapter(JaxbUnknownAdapter.class)
     private Object  object;
 
     @XmlAttribute(name="out-identifier")

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/AbortWorkItemCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/AbortWorkItemCommand.java	2010-07-29 21:06:24 UTC (rev 34338)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/AbortWorkItemCommand.java	2010-07-29 21:11:36 UTC (rev 34339)
@@ -19,6 +19,7 @@
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
 
 import org.drools.command.Context;
 import org.drools.command.impl.GenericCommand;
@@ -26,6 +27,7 @@
 import org.drools.runtime.StatefulKnowledgeSession;
 
 @XmlAccessorType(XmlAccessType.NONE)
+ at XmlRootElement
 public class AbortWorkItemCommand
     implements
     GenericCommand<Object> {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/CompleteWorkItemCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/CompleteWorkItemCommand.java	2010-07-29 21:06:24 UTC (rev 34338)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/CompleteWorkItemCommand.java	2010-07-29 21:11:36 UTC (rev 34339)
@@ -22,6 +22,7 @@
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
 
 import org.drools.command.Context;
 import org.drools.command.impl.GenericCommand;
@@ -29,6 +30,7 @@
 import org.drools.runtime.StatefulKnowledgeSession;
 
 @XmlAccessorType(XmlAccessType.NONE)
+ at XmlRootElement
 public class CompleteWorkItemCommand implements GenericCommand<Object> {
 	
 	@XmlAttribute(name="id", required = true)

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java	2010-07-29 21:06:24 UTC (rev 34338)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java	2010-07-29 21:11:36 UTC (rev 34339)
@@ -181,7 +181,7 @@
      * @see FactHandle
      */
     public String toExternalForm() {
-        return "0:" + this.id + ":" + getIdentityHashCode() + ":" + getObjectHashCode() + ":" + getRecency() + ":" + ((this.entryPoint != null) ? this.entryPoint.getEntryPointId() : "null" );
+        return  "0:" + this.id + ":" + getIdentityHashCode() + ":" + getObjectHashCode() + ":" + getRecency() + ":" + ((this.entryPoint != null) ? this.entryPoint.getEntryPointId() : "null" );
     }
 
     @XmlAttribute(name="external-form")
@@ -332,7 +332,7 @@
         this.identityHashCode = Integer.parseInt( elements[2] );
         this.objectHashCode = Integer.parseInt( elements[3] );
         this.recency = Long.parseLong( elements[4] );
-        this.entryPoint = StringUtils.isEmpty( elements[5] ) ? null : new DisconnectedWorkingMemoryEntryPoint( elements[5].trim() );
+        this.entryPoint = ( StringUtils.isEmpty( elements[5] ) || "null".equals( elements[5].trim() ) ) ? null : new DisconnectedWorkingMemoryEntryPoint( elements[5].trim() );
         this.disconnected = true;
     }    
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamHelper.java	2010-07-29 21:06:24 UTC (rev 34338)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamHelper.java	2010-07-29 21:11:36 UTC (rev 34339)
@@ -77,8 +77,6 @@
                        QueryCommand.class );
         xstream.alias( "query-results",
                        FlatQueryResults.class );
-        xstream.alias( "query-results",
-                       NativeQueryResults.class );
         xstream.alias( "fact-handle",
                        DefaultFactHandle.class );
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamJSon.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamJSon.java	2010-07-29 21:06:24 UTC (rev 34338)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamJSon.java	2010-07-29 21:11:36 UTC (rev 34339)
@@ -662,9 +662,16 @@
 
                     writer.startNode( "value" );
                     Object value = result.getValue( identifier );
-                    writeItem( value,
-                               context,
-                               writer );
+                    if ( value instanceof org.drools.runtime.rule.QueryResults ) {
+                        String name = mapper().serializedClass(FlatQueryResults.class);
+                        ExtendedHierarchicalStreamWriterHelper.startNode(writer, name, FlatQueryResults.class);
+                        context.convertAnother(value);
+                        writer.endNode();
+                    } else {
+                        writeItem( value,
+                                   context,
+                                   writer );
+                    }
                     writer.endNode();
 
                     writer.endNode();

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamXML.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamXML.java	2010-07-29 21:06:24 UTC (rev 34338)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamXML.java	2010-07-29 21:11:36 UTC (rev 34339)
@@ -60,6 +60,7 @@
 import com.thoughtworks.xstream.converters.MarshallingContext;
 import com.thoughtworks.xstream.converters.UnmarshallingContext;
 import com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter;
+import com.thoughtworks.xstream.io.ExtendedHierarchicalStreamWriterHelper;
 import com.thoughtworks.xstream.io.HierarchicalStreamReader;
 import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
 import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;
@@ -801,9 +802,16 @@
           writer.addAttribute( "identifier",
                                identifier );
           Object value = result.getValue( identifier );
-          writeItem( value,
-                     context,
-                     writer );
+          if ( value instanceof org.drools.runtime.rule.QueryResults ) {
+              String name = mapper().serializedClass(FlatQueryResults.class);
+              ExtendedHierarchicalStreamWriterHelper.startNode(writer, name, FlatQueryResults.class);
+              context.convertAnother(value);
+              writer.endNode();
+          } else {
+              writeItem( value,
+                         context,
+                         writer );
+          }
           writer.endNode();
       }
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java	2010-07-29 21:06:24 UTC (rev 34338)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java	2010-07-29 21:11:36 UTC (rev 34339)
@@ -30,16 +30,16 @@
 import org.drools.runtime.rule.impl.NativeQueryResults;
 
 
-public class JaxbMapAdapter extends XmlAdapter<JaxbPair[], Map<String,Object>> {
+public class JaxbMapAdapter extends XmlAdapter<JaxbPair[], Map<Object,Object>> {
 
 	@Override
-	public JaxbPair[] marshal(Map<String, Object> value) throws Exception {
+	public JaxbPair[] marshal(Map<Object, Object> value) throws Exception {
 		if (value == null || value.isEmpty()) {
 			return new JaxbPair[0];
 		}
 		
 		List<JaxbPair> ret = new ArrayList<JaxbPair>(value.size());
-		for (Map.Entry<String, Object> entry : value.entrySet()) {
+		for (Map.Entry<Object, Object> entry : value.entrySet()) {
 		    Object obj = entry.getValue();
 		    Class<? extends Object> vClass = obj.getClass();
 		    
@@ -57,8 +57,8 @@
 	}
 
 	@Override
-	public Map<String, Object> unmarshal(JaxbPair[] value) throws Exception {
-		Map<String, Object> r = new HashMap<String, Object>();
+	public Map<Object, Object> unmarshal(JaxbPair[] value) throws Exception {
+		Map<Object, Object> r = new HashMap<Object, Object>();
 		for( JaxbPair p : value ) {
 		    if ( p.getValue() instanceof JaxbListWrapper) {
 		        r.put(p.getKey(), Arrays.asList( ((JaxbListWrapper)p.getValue()).getElements() ) );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbPair.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbPair.java	2010-07-29 21:06:24 UTC (rev 34338)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbPair.java	2010-07-29 21:11:36 UTC (rev 34339)
@@ -26,7 +26,7 @@
 public class JaxbPair {
 
 	@XmlAttribute(name = "key")
-	private String key;
+	private Object key;
 
 	@XmlElement
 	private Object value;
@@ -34,12 +34,12 @@
 	public JaxbPair() {
 	}
 
-	public JaxbPair(String key, Object value) {
+	public JaxbPair(Object key, Object value) {
 		this.key = key;
 		this.value = value;
 	}
 
-	public String getKey() {
+	public Object getKey() {
 		return key;
 	}
 

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbUnknownAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbUnknownAdapter.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbUnknownAdapter.java	2010-07-29 21:11:36 UTC (rev 34339)
@@ -0,0 +1,87 @@
+/**
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.xml.jaxb.util;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+import org.drools.FactHandle;
+import org.drools.common.InternalFactHandle;
+import org.drools.runtime.rule.impl.FlatQueryResults;
+import org.drools.runtime.rule.impl.NativeQueryResults;
+
+public class JaxbUnknownAdapter extends XmlAdapter<Object, Object> {
+
+    @Override
+    public Object marshal(Object o) throws Exception {
+        if ( o instanceof List ) {
+            List v = ( List ) o;
+            return new JaxbListWrapper( v.toArray( new Object[v.size()]) );
+        } else if ( o instanceof Map ){
+            Map<Object, Object>  value = ( Map<Object, Object>  ) o;
+            if (value == null || value.isEmpty()) {
+                return new JaxbPair[0];
+            }
+            
+            List<JaxbPair> ret = new ArrayList<JaxbPair>(value.size());
+            for (Map.Entry<Object, Object> entry : value.entrySet()) {
+                Object obj = entry.getValue();
+                Class<? extends Object> vClass = obj.getClass();
+                
+                if ( obj instanceof NativeQueryResults ) {
+                    obj = new FlatQueryResults( ((NativeQueryResults )obj).getResults() );
+                } else if (obj instanceof FactHandle ) {
+                    obj = ((InternalFactHandle)obj).toExternalForm();
+                } else if (List.class.isAssignableFrom(vClass) && !JaxbListWrapper.class.equals(vClass)) {    
+                    obj = new JaxbListWrapper( ((List<?>) obj).toArray( new Object[((List<?>) obj).size()]) );;
+                }
+                ret.add(new JaxbPair(entry.getKey(), obj));
+            }
+            
+            return ret.toArray(new JaxbPair[value.size()]);
+        } else {
+            return o;
+        }
+    }
+
+    @Override
+    public Object unmarshal(Object o) throws Exception {
+        if ( o instanceof JaxbListWrapper ) {
+            JaxbListWrapper v = ( JaxbListWrapper ) o;
+            return Arrays.asList( v.getElements() );
+        } else if (o instanceof JaxbPair[] ) {
+            JaxbPair[] value = ( JaxbPair[] ) o; 
+            Map<Object, Object> r = new HashMap<Object, Object>();
+            for( JaxbPair p : value ) {
+                if ( p.getValue() instanceof JaxbListWrapper) {
+                    r.put(p.getKey(), Arrays.asList( ((JaxbListWrapper)p.getValue()).getElements() ) );
+                } else {
+                    r.put(p.getKey(), p.getValue());
+                }
+            }
+            return r;
+        } else {       
+            return o;
+        }
+    }
+
+}



More information about the jboss-svn-commits mailing list