[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