[jboss-svn-commits] JBL Code SVN: r31637 - labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Feb 12 14:30:56 EST 2010


Author: baunax
Date: 2010-02-12 14:30:55 -0500 (Fri, 12 Feb 2010)
New Revision: 31637

Modified:
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ResultTranslator.java
Log:
changed the way that a NativeQueryResults is translated to FlatQueryResults

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ResultTranslator.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ResultTranslator.java	2010-02-12 19:28:00 UTC (rev 31636)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ResultTranslator.java	2010-02-12 19:30:55 UTC (rev 31637)
@@ -3,7 +3,6 @@
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -12,13 +11,15 @@
 import javax.xml.transform.TransformerException;
 
 import org.drools.FactHandle;
-import org.drools.QueryResult;
-import org.drools.QueryResults;
+import org.drools.base.ClassObjectType;
+import org.drools.base.DroolsQuery;
 import org.drools.common.DisconnectedFactHandle;
 import org.drools.rule.Declaration;
 import org.drools.runtime.impl.ExecutionResultImpl;
+import org.drools.runtime.rule.QueryResultsRow;
 import org.drools.runtime.rule.impl.FlatQueryResults;
 import org.drools.runtime.rule.impl.NativeQueryResults;
+import org.drools.spi.ObjectType;
 import org.drools.xml.jaxb.util.JaxbListWrapper;
 
 public class ResultTranslator {
@@ -30,32 +31,33 @@
 		
 		if (obj instanceof NativeQueryResults) {
 			NativeQueryResults nativeQueryResults = (NativeQueryResults) obj;
-            Declaration[] declrs = nativeQueryResults.getDeclarations().values().toArray( new Declaration[nativeQueryResults.getDeclarations().size()] );
-            int length = declrs.length;
+            List<Declaration> declrs = new ArrayList<Declaration>();
+            HashMap<String, Integer> identifiers = new HashMap<String, Integer>(  );
             
-            HashMap<String, Integer> identifiers = new HashMap<String, Integer>( length );
-            for ( int i = 0; i < length; i++ ) {
-                identifiers.put( declrs[i].getIdentifier(), i );
+            for ( String identifier : nativeQueryResults.getIdentifiers() ) {
+            	// we don't want to marshall the query parameters
+            	Declaration declr = nativeQueryResults.getDeclarations().get( identifier );
+            	ObjectType objectType = declr.getPattern().getObjectType();
+            	if ( objectType instanceof ClassObjectType &&
+            		((ClassObjectType) objectType).getClassType() == DroolsQuery.class ) {
+            			continue;
+            	}
+            	declrs.add(declr);
+            	identifiers.put(identifier, declrs.size() - 1);
             }
             
             ArrayList<ArrayList<Object>> results = new ArrayList<ArrayList<Object>>( nativeQueryResults.size() );
             ArrayList<ArrayList<org.drools.runtime.rule.FactHandle>> factHandles = new ArrayList<ArrayList<org.drools.runtime.rule.FactHandle>> ( nativeQueryResults.size() );
-            
-            QueryResults queryResults = nativeQueryResults.getResults();
-            Iterator<QueryResult> iterator = queryResults.iterator();
-            ArrayList<Object> objectList = new ArrayList<Object>();
-            ArrayList<org.drools.runtime.rule.FactHandle> factHandleList = new ArrayList<org.drools.runtime.rule.FactHandle>();
-            while (iterator.hasNext()) {
-            	QueryResult result = iterator.next();
-            	FactHandle[] handles = result.getFactHandles();
-            	for (int i=0; i < handles.length; i++) {
-            		DisconnectedFactHandle factHandle = (DisconnectedFactHandle) handles[i];
-            		objectList.add(factHandle.getObject());
-            		factHandleList.add(factHandle);
-            	}
+            for (QueryResultsRow row : nativeQueryResults) {
+            	ArrayList<Object> objectList = new ArrayList<Object>();
+                ArrayList<org.drools.runtime.rule.FactHandle> factHandleList = new ArrayList<org.drools.runtime.rule.FactHandle>();
+                for (int i = 0; i < declrs.size(); i++) {
+                	objectList.add(convert(row.get(declrs.get(i).getIdentifier())));
+                	factHandleList.add(new DisconnectedFactHandle(row.getFactHandle(declrs.get(i).getIdentifier()).toExternalForm()));
+                }                
+            	factHandles.add(factHandleList);
+                results.add(objectList);
             }
-            factHandles.add(factHandleList);
-            results.add(objectList);
 
             return new FlatQueryResults(identifiers, results, factHandles);
 		}



More information about the jboss-svn-commits mailing list