[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