[jboss-svn-commits] JBL Code SVN: r24662 - in labs/jbossrules/trunk/drools-pipeline: drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jan 13 02:22:37 EST 2009


Author: mark.proctor at jboss.com
Date: 2009-01-13 02:22:37 -0500 (Tue, 13 Jan 2009)
New Revision: 24662

Added:
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlTransformer.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbToXmlTransformer.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformerProviderImpl.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/JaxbFactTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/JaxbGlobalTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/JaxbTest.java
Removed:
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/DroolsJaxbTest.java
Modified:
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/resources/org/drools/runtime/pipeline/impl/order.xml
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/resources/org/drools/runtime/pipeline/impl/test_Jaxb.drl
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksFromSourceTransformer.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamFactTest.java
Log:
JBRULES-1903 Pipeline support for DataLoaders and Feeders 
-Added toXml for Jaxb
-Added Global and Fact tests for Jaxb

Copied: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlTransformer.java (from rev 24646, labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlTransformer.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlTransformer.java	2009-01-13 07:22:37 UTC (rev 24662)
@@ -0,0 +1,63 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.StringReader;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.transform.Source;
+
+import org.drools.io.Resource;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.pipeline.impl.BaseEmitter;
+import org.drools.runtime.pipeline.impl.BaseStage;
+import org.xml.sax.InputSource;
+
+public class JaxbFromXmlTransformer extends BaseEmitter
+    implements
+    Transformer {
+    private Unmarshaller            unmarshaller;
+
+    public JaxbFromXmlTransformer(Unmarshaller unmarshaller) {
+        this.unmarshaller = unmarshaller;
+    }
+
+    public void receive(Object object,
+                       PipelineContext context) {
+        Object result = null;
+        try {
+            if ( object instanceof File ) {
+                result = this.unmarshaller.unmarshal( (File) object );
+            } else if ( object instanceof InputStream ) {
+                result = this.unmarshaller.unmarshal( (InputStream) object );
+            } else if ( object instanceof Reader ) {
+                result = this.unmarshaller.unmarshal( (Reader) object );
+            } else if ( object instanceof Source ) {
+                result = this.unmarshaller.unmarshal( (Source) object );
+            } else if ( object instanceof InputSource ) {
+                result = this.unmarshaller.unmarshal( (InputSource) object );
+            }  else if ( object instanceof Resource ) {
+                result = this.unmarshaller.unmarshal( (( Resource ) object).getReader() );
+            }  else if ( object instanceof String ) {
+                result = this.unmarshaller.unmarshal( new StringReader( ( String ) object ) );
+            } else {
+                throw new IllegalArgumentException( "signal object must be instance of File, InputStream, Reader, Source, InputSource, Resource, String" );
+            }
+        } catch ( Exception e ) {
+            handleException( this,
+                             object,
+                             e );
+        }
+        
+        if ( result instanceof JAXBElement ) {
+            result = ((JAXBElement) object).getValue().getClass().getName();
+        }
+        
+        emit( result,
+              context );
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlTransformer.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbToXmlTransformer.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbToXmlTransformer.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbToXmlTransformer.java	2009-01-13 07:22:37 UTC (rev 24662)
@@ -0,0 +1,49 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.StringWriter;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.transform.Source;
+
+import org.drools.io.Resource;
+import org.drools.runtime.pipeline.JaxbTransformerProvider;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.pipeline.impl.BaseEmitter;
+import org.drools.runtime.pipeline.impl.BaseStage;
+import org.xml.sax.InputSource;
+
+public class JaxbToXmlTransformer extends BaseEmitter
+    implements
+    Transformer {
+    private Marshaller            marshaller;
+
+    public JaxbToXmlTransformer(Marshaller marshaller) {
+        this.marshaller = marshaller;
+    }
+
+    public void receive(Object object,
+                       PipelineContext context) {
+        Object result = null;
+        try {
+            StringWriter stringWriter = new StringWriter();
+            
+            this.marshaller.marshal( object, stringWriter );
+
+            result = stringWriter.getBuffer().toString();
+        } catch ( Exception e ) {
+            handleException( this,
+                             object,
+                             e );
+        }
+        
+        emit( result,
+              context );
+    }
+
+}

Deleted: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java	2009-01-13 06:46:23 UTC (rev 24661)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java	2009-01-13 07:22:37 UTC (rev 24662)
@@ -1,67 +0,0 @@
-package org.drools.runtime.pipeline.impl;
-
-import java.io.File;
-import java.io.InputStream;
-import java.io.Reader;
-
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.transform.Source;
-
-import org.drools.io.Resource;
-import org.drools.runtime.pipeline.JaxbTransformerProvider;
-import org.drools.runtime.pipeline.PipelineContext;
-import org.drools.runtime.pipeline.Transformer;
-import org.drools.runtime.pipeline.impl.BaseEmitter;
-import org.drools.runtime.pipeline.impl.BaseStage;
-import org.xml.sax.InputSource;
-
-public class JaxbTransformer extends BaseEmitter
-    implements
-    Transformer {
-    private Unmarshaller            unmarshaller;
-
-    public JaxbTransformer(Unmarshaller unmarshaller) {
-        this.unmarshaller = unmarshaller;
-    }
-
-    public void receive(Object object,
-                       PipelineContext context) {
-        Object result = null;
-        try {
-            if ( object instanceof File ) {
-                result = this.unmarshaller.unmarshal( (File) object );
-            } else if ( object instanceof InputStream ) {
-                result = this.unmarshaller.unmarshal( (InputStream) object );
-            } else if ( object instanceof Reader ) {
-                result = this.unmarshaller.unmarshal( (Reader) object );
-            } else if ( object instanceof Source ) {
-                result = this.unmarshaller.unmarshal( (Source) object );
-            } else if ( object instanceof InputSource ) {
-                result = this.unmarshaller.unmarshal( (InputSource) object );
-            }  else if ( object instanceof Resource ) {
-                result = this.unmarshaller.unmarshal( (( Resource ) object).getReader() );
-            } else {
-                throw new IllegalArgumentException( "signal object must be instance of File, InputStream, Reader, Source, InputSource or Resource" );
-            }
-        } catch ( Exception e ) {
-            handleException( this,
-                             object,
-                             e );
-        }
-        
-        if ( result instanceof JAXBElement ) {
-            result = ((JAXBElement) object).getValue().getClass().getName();
-        }
-        
-        emit( result,
-              context );
-    }
-
-    public static class JaxbTransformerProviderImpl implements JaxbTransformerProvider {
-        public Transformer newJaxbTransformer(Unmarshaller unmarshaller) {
-            return new JaxbTransformer( unmarshaller );
-        }
-    }
-
-}

Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformerProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformerProviderImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformerProviderImpl.java	2009-01-13 07:22:37 UTC (rev 24662)
@@ -0,0 +1,20 @@
+/**
+ * 
+ */
+package org.drools.runtime.pipeline.impl;
+
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+
+import org.drools.runtime.pipeline.JaxbTransformerProvider;
+import org.drools.runtime.pipeline.Transformer;
+
+public class JaxbTransformerProviderImpl implements JaxbTransformerProvider {
+    public Transformer newJaxbFromXmlTransformer(Unmarshaller unmarshaller) {
+        return new JaxbFromXmlTransformer( unmarshaller );
+    }
+    
+    public Transformer newJaxbToXmlTransformer(Marshaller marshaller) {
+        return new JaxbToXmlTransformer( marshaller );
+    }    
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/DroolsJaxbTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/DroolsJaxbTest.java	2009-01-13 06:46:23 UTC (rev 24661)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/DroolsJaxbTest.java	2009-01-13 07:22:37 UTC (rev 24662)
@@ -1,215 +0,0 @@
-package org.drools.runtime.pipeline.impl;
-
-/*
- * Copyright 2005 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.
- */
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.transform.stream.StreamSource;
-
-import junit.framework.TestCase;
-
-import org.drools.KnowledgeBase;
-import org.drools.KnowledgeBaseFactory;
-import org.drools.builder.KnowledgeBuilder;
-import org.drools.builder.KnowledgeBuilderFactory;
-import org.drools.builder.ResourceType;
-import org.drools.builder.help.KnowledgeBuilderHelper;
-import org.drools.io.ResourceFactory;
-import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.runtime.pipeline.Action;
-import org.drools.runtime.pipeline.Expression;
-import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
-import org.drools.runtime.pipeline.Pipeline;
-import org.drools.runtime.pipeline.PipelineFactory;
-import org.drools.runtime.pipeline.ResultHandler;
-import org.drools.runtime.pipeline.Splitter;
-import org.drools.runtime.pipeline.Transformer;
-import org.drools.runtime.pipeline.impl.StatefulKnowledgeSessionPipelineTest.ResultHandlerImpl;
-import org.drools.runtime.rule.FactHandle;
-
-import com.sun.tools.xjc.Language;
-import com.sun.tools.xjc.Options;
-
-public class DroolsJaxbTest extends TestCase {
-
-    //    public void testModelLoad() throws Exception {
-    //        Options xjcOpts = new Options();
-    //        xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
-    //        PackageBuilder pkgBuilder = new PackageBuilder();
-    //
-    //        InputStream stream = getClass().getResourceAsStream( "test.xsd" );
-    //        String[] classNames = DroolsJaxbHelper.addModel( new InputStreamReader( stream ),
-    //                                                         pkgBuilder,
-    //                                                         xjcOpts,
-    //                                                         "xsd" );
-    //
-    //        assertFalse( pkgBuilder.hasErrors() );
-    //
-    //        RuleBase rb = RuleBaseFactory.newRuleBase();
-    //        rb.addPackage( pkgBuilder.getPackage() );
-    //
-    //        JAXBContext jaxbCtx = DroolsJaxbHelper.newInstance( classNames,
-    //                                                            rb );
-    //        Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
-    //        JAXBElement elm = ( JAXBElement ) unmarshaller.unmarshal( getClass().getResourceAsStream( "data.xml" ) );
-    //       
-    //        assertEquals( "com.oracle.sample3.USAddress",
-    //                      elm.getValue().getClass().getName() );        
-    //    }
-
-    public void testDirectRoot() throws Exception {
-        Options xjcOpts = new Options();
-        xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
-        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-
-        String[] classNames = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource( "order.xsd",
-                                                                                                        getClass() ),
-                                                                  kbuilder,
-                                                                  xjcOpts,
-                                                                  "xsd" );
-
-        assertFalse( kbuilder.hasErrors() );
-
-        kbuilder.add( ResourceFactory.newClassPathResource( "test_Jaxb.drl",
-                                                            getClass() ),
-                      ResourceType.DRL );
-
-        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-        List list1 = new ArrayList();
-        ksession.setGlobal( "list1",
-                            list1 );
-        
-        Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
-
-        KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert();
-        insertStage.setReceiver( executeResultHandler );
-        
-        JAXBContext jaxbCtx = KnowledgeBuilderHelper.newJAXBContext( classNames,
-                                                                     kbase );
-        Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
-        Transformer transformer = PipelineFactory.newJaxbTransformer( unmarshaller );
-        transformer.setReceiver(insertStage );
-        
-        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
-        pipeline.setReceiver( transformer );        
-        
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-        pipeline.insert( new StreamSource( getClass().getResourceAsStream( "order.xml" ) ), resultHandler );
-        ksession.fireAllRules();
-        
-        Map<FactHandle, Object> handles = ( Map<FactHandle, Object>  ) resultHandler.getObject();
-
-        ksession.fireAllRules();
-
-        assertEquals( 1,
-                      handles.size() );
-        assertEquals( 1,
-                      list1.size() );
-
-        assertEquals( "org.drools.model.order.Order",
-                      list1.get( 0 ).getClass().getName() );
-    }
-
-    public void testNestedIterable() throws Exception {
-        Options xjcOpts = new Options();
-        xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
-        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-
-        String[] classNames = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource( "order.xsd",
-                                                                                                        getClass() ),
-                                                                  kbuilder,
-                                                                  xjcOpts,
-                                                                  "xsd" );
-
-        assertFalse( kbuilder.hasErrors() );
-
-        kbuilder.add( ResourceFactory.newClassPathResource( "test_Jaxb.drl",
-                                                            getClass() ),
-                      ResourceType.DRL );
-
-        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-        List list1 = new ArrayList();
-        List list2 = new ArrayList();
-        ksession.setGlobal( "list1",
-                            list1 );
-        ksession.setGlobal( "list2",
-                            list2 );
-        
-        
-        Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
-
-        KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert();
-        insertStage.setReceiver( executeResultHandler );
-        
-        Splitter splitter = PipelineFactory.newIterateSplitter();
-        splitter.setReceiver( insertStage );
-        
-        Expression expression = PipelineFactory.newMvelExpression( "this.orderItem" );
-        expression.setReceiver( splitter );
-        
-        JAXBContext jaxbCtx = KnowledgeBuilderHelper.newJAXBContext( classNames,
-                                                                     kbase );
-        Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
-        Transformer transformer = PipelineFactory.newJaxbTransformer( unmarshaller );        
-        transformer.setReceiver( expression );
-        
-        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
-        pipeline.setReceiver( transformer );
-        
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-        pipeline.insert( new StreamSource( getClass().getResourceAsStream( "order.xml" ) ), resultHandler );
-
-        Map<FactHandle, Object> handles = ( Map<FactHandle, Object>  ) resultHandler.getObject();
-        ksession.fireAllRules();
-
-        assertEquals( 2,
-                      handles.size() );
-        assertEquals( 1,
-                      list1.size() );
-        assertEquals( 1,
-                      list2.size() );
-
-        assertEquals( "org.drools.model.order.Order$OrderItem",
-                      list1.get( 0 ).getClass().getName() );
-
-        assertEquals( "org.drools.model.order.Order$OrderItem",
-                      list2.get( 0 ).getClass().getName() );
-
-        assertNotSame( list1.get( 0 ),
-                       list2.get( 0 ) );
-    }
-    
-    public static class ResultHandlerImpl implements ResultHandler {
-        Object object;
-        public void handleResult(Object object) {
-           this.object = object;             
-        }
-        public Object getObject() {
-            return this.object;
-        }       
-    } 
-}

Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/JaxbFactTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/JaxbFactTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/JaxbFactTest.java	2009-01-13 07:22:37 UTC (rev 24662)
@@ -0,0 +1,131 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.InputStreamReader;
+import java.util.Map;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.builder.help.KnowledgeBuilderHelper;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.pipeline.Action;
+import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
+import org.drools.runtime.pipeline.Pipeline;
+import org.drools.runtime.pipeline.PipelineFactory;
+import org.drools.runtime.pipeline.ResultHandler;
+import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.rule.FactHandle;
+import org.drools.util.StringUtils;
+
+import com.sun.tools.xjc.Language;
+import com.sun.tools.xjc.Options;
+
+public class JaxbFactTest extends TestCase {
+    public void testFact() throws Exception {
+        Options xjcOpts = new Options();
+        xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        String[] classNames = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource( "order.xsd",
+                                                                                                        getClass() ),
+                                                                  kbuilder,
+                                                                  xjcOpts,
+                                                                  "xsd" );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_Jaxb.drl",
+                                                            getClass() ),
+                      ResourceType.DRL );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+        Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
+
+        KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert();
+        insertStage.setReceiver( executeResultHandler );
+
+        JAXBContext jaxbCtx = KnowledgeBuilderHelper.newJAXBContext( classNames,
+                                                                     kbase );
+        Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
+        Transformer transformer = PipelineFactory.newJaxbFromXmlTransformer( unmarshaller );
+        transformer.setReceiver( insertStage );
+
+        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( transformer );
+
+        String xml = StringUtils.readFileAsString( new InputStreamReader( getClass().getResourceAsStream( "order.xml" ) ) );
+
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        pipeline.insert( xml,
+                         resultHandler );
+
+        FactHandle factHandle = (FactHandle) ((Map) resultHandler.getObject()).keySet().iterator().next();
+        assertNotNull( factHandle );
+
+        // now round trip that fact
+        Action executeResult = PipelineFactory.newExecuteResultHandler();
+
+        Action assignAsResult = PipelineFactory.newAssignObjectAsResult();
+        assignAsResult.setReceiver( executeResult );
+
+        //transformer = PipelineFactory.newXStreamToXmlTransformer( xstream );
+        Marshaller marshaller = jaxbCtx.createMarshaller();
+        transformer = PipelineFactory.newJaxbToXmlTransformer( marshaller );
+        transformer.setReceiver( assignAsResult );
+
+        KnowledgeRuntimeCommand getObject = PipelineFactory.newStatefulKnowledgeSessionGetObject();
+        getObject.setReceiver( transformer );
+
+        pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( getObject );
+
+        resultHandler = new ResultHandlerImpl();
+        pipeline.insert( factHandle,
+                         resultHandler );
+
+        assertEqualsIgnoreWhitespace( xml,
+                                      (String) resultHandler.getObject() );
+    }
+
+    private static void assertEqualsIgnoreWhitespace(final String expected,
+                                                     final String actual) {
+        final String cleanExpected = expected.replaceAll( "\\s+",
+                                                          "" );
+        final String cleanActual = actual.replaceAll( "\\s+",
+                                                      "" );
+        assertEquals( cleanExpected,
+                      cleanActual );
+    }
+
+    public static class ResultHandlerImpl
+        implements
+        ResultHandler {
+        Object object;
+
+        public void handleResult(Object object) {
+            this.object = object;
+        }
+
+        public Object getObject() {
+            return this.object;
+        }
+    }
+
+}

Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/JaxbGlobalTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/JaxbGlobalTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/JaxbGlobalTest.java	2009-01-13 07:22:37 UTC (rev 24662)
@@ -0,0 +1,126 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.transform.stream.StreamSource;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.builder.help.KnowledgeBuilderHelper;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.pipeline.Action;
+import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
+import org.drools.runtime.pipeline.Pipeline;
+import org.drools.runtime.pipeline.PipelineFactory;
+import org.drools.runtime.pipeline.ResultHandler;
+import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.rule.FactHandle;
+import org.drools.util.StringUtils;
+
+import com.sun.tools.xjc.Language;
+import com.sun.tools.xjc.Options;
+
+import junit.framework.TestCase;
+
+public class JaxbGlobalTest extends TestCase {
+    public void testGlobal() throws Exception {
+        Options xjcOpts = new Options();
+        xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        String[] classNames = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource( "order.xsd",
+                                                                                                        getClass() ),
+                                                                  kbuilder,
+                                                                  xjcOpts,
+                                                                  "xsd" );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_Jaxb.drl",
+                                                            getClass() ),
+                      ResourceType.DRL );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+        KnowledgeRuntimeCommand setGlobalStage = PipelineFactory.newStatefulKnowledgeSessionSetGlobal( "order" );
+
+        JAXBContext jaxbCtx = KnowledgeBuilderHelper.newJAXBContext( classNames,
+                                                                     kbase );
+        Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
+        Transformer transformer = PipelineFactory.newJaxbFromXmlTransformer( unmarshaller );
+        transformer.setReceiver(setGlobalStage );
+
+        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( transformer );
+
+        String xml = StringUtils.readFileAsString( new InputStreamReader( getClass().getResourceAsStream( "order.xml" ) ) );
+        
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        pipeline.insert( xml,
+                         resultHandler );
+
+        // now round trip that global
+        Action executeResult = PipelineFactory.newExecuteResultHandler();
+        
+        Action assignAsResult = PipelineFactory.newAssignObjectAsResult();
+        assignAsResult.setReceiver( executeResult );
+        
+        //transformer = PipelineFactory.newXStreamToXmlTransformer( xstream );
+        Marshaller marshaller = jaxbCtx.createMarshaller();
+        transformer = PipelineFactory.newJaxbToXmlTransformer( marshaller );
+        transformer.setReceiver( assignAsResult );
+        
+        KnowledgeRuntimeCommand getGlobalStage = PipelineFactory.newStatefulKnowledgeSessionGetGlobal( );        
+        getGlobalStage.setReceiver( transformer );
+
+        pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( getGlobalStage );
+        
+        resultHandler = new ResultHandlerImpl();
+        pipeline.insert( "order", resultHandler );  
+        
+        assertEqualsIgnoreWhitespace( xml, (String) resultHandler.getObject() );
+    }
+    
+    private static void assertEqualsIgnoreWhitespace(final String expected,
+                                                     final String actual) {
+               final String cleanExpected = expected.replaceAll( "\\s+",
+                                                                 "" );
+               final String cleanActual = actual.replaceAll( "\\s+",
+                                                             "" );
+               assertEquals( cleanExpected,
+                             cleanActual );
+           }
+    
+    public static class ResultHandlerImpl
+    implements
+    ResultHandler {
+    Object object;
+
+    public void handleResult(Object object) {
+        this.object = object;
+    }
+
+    public Object getObject() {
+        return this.object;
+    }
+}
+
+}

Copied: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/JaxbTest.java (from rev 24647, labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/DroolsJaxbTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/JaxbTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/JaxbTest.java	2009-01-13 07:22:37 UTC (rev 24662)
@@ -0,0 +1,215 @@
+package org.drools.runtime.pipeline.impl;
+
+/*
+ * Copyright 2005 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.
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.transform.stream.StreamSource;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.builder.help.KnowledgeBuilderHelper;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.pipeline.Action;
+import org.drools.runtime.pipeline.Expression;
+import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
+import org.drools.runtime.pipeline.Pipeline;
+import org.drools.runtime.pipeline.PipelineFactory;
+import org.drools.runtime.pipeline.ResultHandler;
+import org.drools.runtime.pipeline.Splitter;
+import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.pipeline.impl.StatefulKnowledgeSessionPipelineTest.ResultHandlerImpl;
+import org.drools.runtime.rule.FactHandle;
+
+import com.sun.tools.xjc.Language;
+import com.sun.tools.xjc.Options;
+
+public class JaxbTest extends TestCase {
+
+    //    public void testModelLoad() throws Exception {
+    //        Options xjcOpts = new Options();
+    //        xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+    //        PackageBuilder pkgBuilder = new PackageBuilder();
+    //
+    //        InputStream stream = getClass().getResourceAsStream( "test.xsd" );
+    //        String[] classNames = DroolsJaxbHelper.addModel( new InputStreamReader( stream ),
+    //                                                         pkgBuilder,
+    //                                                         xjcOpts,
+    //                                                         "xsd" );
+    //
+    //        assertFalse( pkgBuilder.hasErrors() );
+    //
+    //        RuleBase rb = RuleBaseFactory.newRuleBase();
+    //        rb.addPackage( pkgBuilder.getPackage() );
+    //
+    //        JAXBContext jaxbCtx = DroolsJaxbHelper.newInstance( classNames,
+    //                                                            rb );
+    //        Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
+    //        JAXBElement elm = ( JAXBElement ) unmarshaller.unmarshal( getClass().getResourceAsStream( "data.xml" ) );
+    //       
+    //        assertEquals( "com.oracle.sample3.USAddress",
+    //                      elm.getValue().getClass().getName() );        
+    //    }
+
+    public void testDirectRoot() throws Exception {
+        Options xjcOpts = new Options();
+        xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        String[] classNames = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource( "order.xsd",
+                                                                                                        getClass() ),
+                                                                  kbuilder,
+                                                                  xjcOpts,
+                                                                  "xsd" );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_Jaxb.drl",
+                                                            getClass() ),
+                      ResourceType.DRL );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        List list1 = new ArrayList();
+        ksession.setGlobal( "list1",
+                            list1 );
+        
+        Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
+
+        KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert();
+        insertStage.setReceiver( executeResultHandler );
+        
+        JAXBContext jaxbCtx = KnowledgeBuilderHelper.newJAXBContext( classNames,
+                                                                     kbase );
+        Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
+        Transformer transformer = PipelineFactory.newJaxbFromXmlTransformer( unmarshaller );
+        transformer.setReceiver(insertStage );
+        
+        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( transformer );        
+        
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        pipeline.insert( new StreamSource( getClass().getResourceAsStream( "order.xml" ) ), resultHandler );
+        ksession.fireAllRules();
+        
+        Map<FactHandle, Object> handles = ( Map<FactHandle, Object>  ) resultHandler.getObject();
+
+        ksession.fireAllRules();
+
+        assertEquals( 1,
+                      handles.size() );
+        assertEquals( 1,
+                      list1.size() );
+
+        assertEquals( "org.drools.model.order.Order",
+                      list1.get( 0 ).getClass().getName() );
+    }
+
+    public void testNestedIterable() throws Exception {
+        Options xjcOpts = new Options();
+        xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        String[] classNames = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource( "order.xsd",
+                                                                                                        getClass() ),
+                                                                  kbuilder,
+                                                                  xjcOpts,
+                                                                  "xsd" );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_Jaxb.drl",
+                                                            getClass() ),
+                      ResourceType.DRL );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        List list1 = new ArrayList();
+        List list2 = new ArrayList();
+        ksession.setGlobal( "list1",
+                            list1 );
+        ksession.setGlobal( "list2",
+                            list2 );
+        
+        
+        Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
+
+        KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert();
+        insertStage.setReceiver( executeResultHandler );
+        
+        Splitter splitter = PipelineFactory.newIterateSplitter();
+        splitter.setReceiver( insertStage );
+        
+        Expression expression = PipelineFactory.newMvelExpression( "this.orderItem" );
+        expression.setReceiver( splitter );
+        
+        JAXBContext jaxbCtx = KnowledgeBuilderHelper.newJAXBContext( classNames,
+                                                                     kbase );
+        Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
+        Transformer transformer = PipelineFactory.newJaxbFromXmlTransformer( unmarshaller );        
+        transformer.setReceiver( expression );
+        
+        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( transformer );
+        
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        pipeline.insert( new StreamSource( getClass().getResourceAsStream( "order.xml" ) ), resultHandler );
+
+        Map<FactHandle, Object> handles = ( Map<FactHandle, Object>  ) resultHandler.getObject();
+        ksession.fireAllRules();
+
+        assertEquals( 2,
+                      handles.size() );
+        assertEquals( 1,
+                      list1.size() );
+        assertEquals( 1,
+                      list2.size() );
+
+        assertEquals( "org.drools.model.order.Order$OrderItem",
+                      list1.get( 0 ).getClass().getName() );
+
+        assertEquals( "org.drools.model.order.Order$OrderItem",
+                      list2.get( 0 ).getClass().getName() );
+
+        assertNotSame( list1.get( 0 ),
+                       list2.get( 0 ) );
+    }
+    
+    public static class ResultHandlerImpl implements ResultHandler {
+        Object object;
+        public void handleResult(Object object) {
+           this.object = object;             
+        }
+        public Object getObject() {
+            return this.object;
+        }       
+    } 
+}


Property changes on: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/JaxbTest.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/resources/org/drools/runtime/pipeline/impl/order.xml
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/resources/org/drools/runtime/pipeline/impl/order.xml	2009-01-13 06:46:23 UTC (rev 24661)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/resources/org/drools/runtime/pipeline/impl/order.xml	2009-01-13 07:22:37 UTC (rev 24662)
@@ -1,7 +1,5 @@
-<?xml version="1.0"?>
-<order xmlns="http://drools.org/model/order" 
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	   xsi:schemaLocation="http://drools.org/model/order order.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<order xmlns="http://drools.org/model/order" >
     <order-item>
         <product-id>111</product-id>
         <quantity>2</quantity>

Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/resources/org/drools/runtime/pipeline/impl/test_Jaxb.drl
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/resources/org/drools/runtime/pipeline/impl/test_Jaxb.drl	2009-01-13 06:46:23 UTC (rev 24661)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/resources/org/drools/runtime/pipeline/impl/test_Jaxb.drl	2009-01-13 07:22:37 UTC (rev 24662)
@@ -6,7 +6,9 @@
 global java.util.List list1;
 global java.util.List list2;
 
+global org.drools.model.order.Order order
 
+
 rule orderRule
 when
     $i : Order()

Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksFromSourceTransformer.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksFromSourceTransformer.java	2009-01-13 06:46:23 UTC (rev 24661)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksFromSourceTransformer.java	2009-01-13 07:22:37 UTC (rev 24662)
@@ -48,7 +48,7 @@
             } else if ( object instanceof String ) {                 
                 source =  new StringSource( (String) object);
             } else {
-                throw new IllegalArgumentException( "signal object must be instance of Source, InputStream, Reader or Resource" );
+                throw new IllegalArgumentException( "signal object must be instance of Source, InputStream, Reader, Resource or String" );
             }
             
             this.smooks.filter( source,

Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamFactTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamFactTest.java	2009-01-13 06:46:23 UTC (rev 24661)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamFactTest.java	2009-01-13 07:22:37 UTC (rev 24662)
@@ -68,7 +68,6 @@
         FactHandle factHandle = ( FactHandle ) ((Map)resultHandler.getObject()).keySet().iterator().next();
         assertNotNull( factHandle );
 
-
         // now round trip that fact
         Action executeResult = PipelineFactory.newExecuteResultHandler();
         




More information about the jboss-svn-commits mailing list