[jboss-svn-commits] JBL Code SVN: r20924 - in labs/jbossrules/trunk: drools-dataloaders and 19 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Jul 5 21:49:10 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-07-05 21:49:10 -0400 (Sat, 05 Jul 2008)
New Revision: 20924
Added:
labs/jbossrules/trunk/drools-dataloaders/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/.classpath
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/.project
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/pom.xml
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/DroolsSmooksConfiguration.java
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/DroolsSmooksStatefulSession.java
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/DroolsSmooksStatelessSession.java
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/Root.java
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/resources/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/DroolsSmookStatefulSessionTest.java
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/DroolsSmookStatelessSessionTest.java
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/test_SmooksDirectRoot.drl
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/test_SmooksNestedIterable.drl
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/org/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/org/drools/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/org/drools/dataloaders/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/org/drools/dataloaders/smooks/
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/org/drools/dataloaders/smooks/SmooksDirectRoot.xml
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/org/drools/dataloaders/smooks/SmooksNestedIterable.xml
labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/org/drools/dataloaders/smooks/smooks-config.xml
labs/jbossrules/trunk/drools-dataloaders/pom.xml
Log:
JBRULES-1668 Smooks Data Loader
-First commit for a working Smooks Data Loader
Added: labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/.classpath (rev 0)
+++ labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/.classpath 2008-07-06 01:49:10 UTC (rev 20924)
@@ -0,0 +1,25 @@
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
+ <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
+ <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
+ <classpathentry kind="output" path="target/classes"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/milyn/milyn-smooks-javabean/1.0.1/milyn-smooks-javabean-1.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.3/commons-lang-2.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
+ <classpathentry kind="var" path="M2_REPO/milyn/milyn-smooks-core/1.0.1/milyn-smooks-core-1.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/milyn/milyn-commons/1.0/milyn-commons-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/hsqldb/hsqldb/1.8.0.2/hsqldb-1.8.0.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/2.0-dp4/mvel-2.0-dp4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/freemarker/freemarker/2.3.9/freemarker-2.3.9.jar"/>
+ <classpathentry kind="src" path="/drools-compiler"/>
+ <classpathentry kind="src" path="/drools-core"/>
+ <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
+ <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
+</classpath>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/.project
===================================================================
--- labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/.project (rev 0)
+++ labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/.project 2008-07-06 01:49:10 UTC (rev 20924)
@@ -0,0 +1,16 @@
+<projectDescription>
+ <name>drools-dataloaders-smooks</name>
+ <comment>A rule production system</comment>
+ <projects>
+ <project>drools-compiler</project>
+ <project>drools-core</project>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/pom.xml (rev 0)
+++ labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/pom.xml 2008-07-06 01:49:10 UTC (rev 20924)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>drools</artifactId>
+ <groupId>org.drools</groupId>
+ <version>5.0.0.SNAPSHOT</version>
+ </parent>
+
+ <artifactId>drools-dataloaders-smooks</artifactId>
+ <packaging>jar</packaging>
+ <name>Drools :: DataLoaders :: Smooks</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-compiler</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>milyn</groupId>
+ <artifactId>milyn-smooks-javabean</artifactId>
+ <version>1.0.1</version>
+ </dependency>
+ </dependencies>
+
+ <repositories>
+ <repository>
+ <id>dist.codehaus.org</id>
+ <url>http://dist.codehaus.org</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ </repository>
+ </repositories>
+</project>
Added: labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/DroolsSmooksConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/DroolsSmooksConfiguration.java (rev 0)
+++ labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/DroolsSmooksConfiguration.java 2008-07-06 01:49:10 UTC (rev 20924)
@@ -0,0 +1,40 @@
+package org.drools.dataloaders.smooks;
+
+public class DroolsSmooksConfiguration {
+ private String rootId;
+
+ private String iterableGetter;
+ //private String
+
+ public DroolsSmooksConfiguration() {
+ this.rootId = "root";
+ this.iterableGetter = null;
+ }
+
+ public DroolsSmooksConfiguration(String rootId, String iterableGetter) {
+ this.iterableGetter = iterableGetter;
+ this.rootId = rootId;
+ }
+
+ public void setRootId(String roodId) {
+ this.rootId = rootId;
+ }
+
+ public String getRoodId() {
+ return this.rootId;
+ }
+
+ public String getIterableGetter() {
+ return iterableGetter;
+ }
+
+ public void setIterableGetter(String iterableGetter) {
+ this.iterableGetter = iterableGetter;
+ }
+
+ public String getRootId() {
+ return rootId;
+ }
+
+
+}
Added: labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/DroolsSmooksStatefulSession.java
===================================================================
--- labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/DroolsSmooksStatefulSession.java (rev 0)
+++ labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/DroolsSmooksStatefulSession.java 2008-07-06 01:49:10 UTC (rev 20924)
@@ -0,0 +1,92 @@
+package org.drools.dataloaders.smooks;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.transform.Source;
+
+import org.drools.FactHandle;
+import org.drools.StatefulSession;
+import org.drools.common.InternalRuleBase;
+import org.milyn.Smooks;
+import org.milyn.container.ExecutionContext;
+import org.milyn.payload.JavaResult;
+import org.mvel.MVEL;
+import org.mvel.ParserContext;
+import org.mvel.compiler.ExpressionCompiler;
+
+public class DroolsSmooksStatefulSession {
+ private Smooks smooks;
+ private StatefulSession session;
+ private DroolsSmooksConfiguration configuration;
+ private Serializable getterExpr;
+
+ public DroolsSmooksStatefulSession(StatefulSession session,
+ Smooks smooks) {
+ this( session,
+ smooks,
+ new DroolsSmooksConfiguration() );
+
+ }
+
+ public DroolsSmooksStatefulSession(StatefulSession session,
+ Smooks smooks,
+ DroolsSmooksConfiguration configuration) {
+ this.smooks = smooks;
+ this.configuration = configuration;
+ this.session = session;
+
+ if ( this.configuration.getIterableGetter() != null ) {
+ final ParserContext parserContext = new ParserContext();
+ parserContext.setStrictTypeEnforcement( false );
+
+ ExpressionCompiler compiler = new ExpressionCompiler( this.configuration.getIterableGetter() );
+ this.getterExpr = compiler.compile( parserContext );
+ }
+
+ }
+
+ public Map insertFilter(Source source) {
+ JavaResult result = new JavaResult();
+
+ // preserve the previous classloader, While we make Smooks aware of the Drools classloader
+ ClassLoader previousClassLoader = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader( ((InternalRuleBase) this.session.getRuleBase()).getCompositePackageClassLoader() );
+
+ ExecutionContext executionContext = this.smooks.createExecutionContext();
+
+ // Filter the input message to extract, using the execution context...
+ smooks.filter( source,
+ result,
+ executionContext );
+
+ Thread.currentThread().setContextClassLoader( previousClassLoader );
+
+ Map handles = new HashMap<FactHandle, Object>();
+
+ Object object = result.getBean( this.configuration.getRoodId() );
+ if ( object == null ) {
+ return handles;
+ }
+
+ if ( this.getterExpr != null ) {
+ Iterable it = (Iterable) MVEL.executeExpression( this.getterExpr,
+ object );
+ if ( it != null ) {
+ for ( Object item : it ) {
+ FactHandle handle = this.session.insert( item );
+ handles.put( handle,
+ object );
+ }
+ }
+ } else {
+ FactHandle handle = this.session.insert( object );
+ handles.put( handle,
+ object );
+
+ }
+
+ return handles;
+ }
+}
Added: labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/DroolsSmooksStatelessSession.java
===================================================================
--- labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/DroolsSmooksStatelessSession.java (rev 0)
+++ labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/DroolsSmooksStatelessSession.java 2008-07-06 01:49:10 UTC (rev 20924)
@@ -0,0 +1,97 @@
+package org.drools.dataloaders.smooks;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.transform.Source;
+
+import org.drools.FactHandle;
+import org.drools.StatefulSession;
+import org.drools.StatelessSession;
+import org.drools.common.InternalRuleBase;
+import org.drools.common.InternalStatelessSession;
+import org.milyn.Smooks;
+import org.milyn.container.ExecutionContext;
+import org.milyn.payload.JavaResult;
+import org.mvel.MVEL;
+import org.mvel.ParserContext;
+import org.mvel.compiler.ExpressionCompiler;
+
+public class DroolsSmooksStatelessSession {
+ private Smooks smooks;
+ private InternalStatelessSession session;
+ private DroolsSmooksConfiguration configuration;
+ private Serializable getterExpr;
+
+ public DroolsSmooksStatelessSession(StatelessSession session,
+ Smooks smooks) {
+ this( session,
+ smooks,
+ new DroolsSmooksConfiguration() );
+
+ }
+
+ public DroolsSmooksStatelessSession(StatelessSession session,
+ Smooks smooks,
+ DroolsSmooksConfiguration configuration) {
+ this.smooks = smooks;
+ this.configuration = configuration;
+ this.session = ( InternalStatelessSession ) session;
+
+ if ( this.configuration.getIterableGetter() != null ) {
+ final ParserContext parserContext = new ParserContext();
+ parserContext.setStrictTypeEnforcement( false );
+
+ ExpressionCompiler compiler = new ExpressionCompiler( this.configuration.getIterableGetter() );
+ this.getterExpr = compiler.compile( parserContext );
+ }
+
+ }
+
+ public void executeFilter(Source source) {
+ JavaResult result = new JavaResult();
+
+ // preserve the previous classloader, While we make Smooks aware of the Drools classloader
+ ClassLoader previousClassLoader = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader( ((InternalRuleBase) this.session.getRuleBase()).getCompositePackageClassLoader() );
+
+ ExecutionContext executionContext = this.smooks.createExecutionContext();
+
+ // Filter the input message to extract, using the execution context...
+ smooks.filter( source,
+ result,
+ executionContext );
+
+ Thread.currentThread().setContextClassLoader( previousClassLoader );
+
+
+ Object object = result.getBean( this.configuration.getRoodId() );
+ if ( object == null ) {
+ return;
+ }
+
+ if ( this.getterExpr != null ) {
+ Iterable it = (Iterable) MVEL.executeExpression( this.getterExpr,
+ object );
+
+ if ( it != null ) {
+ this.session.execute( toList( it ) );
+ }
+ } else {
+ this.session.execute( object );
+
+ }
+ }
+
+ private List toList( Iterable it) {
+ List list = new ArrayList();
+ for ( Object o : it ) {
+ list.add( o );
+ }
+
+ return list;
+ }
+}
Added: labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/Root.java
===================================================================
--- labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/Root.java (rev 0)
+++ labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/main/java/org/drools/dataloaders/smooks/Root.java 2008-07-06 01:49:10 UTC (rev 20924)
@@ -0,0 +1,21 @@
+package org.drools.dataloaders.smooks;
+
+import java.util.List;
+
+public class Root {
+ private List children;
+
+ public Root() {
+
+ }
+
+ public List getChildren() {
+ return children;
+ }
+
+ public void setChildren(List children) {
+ this.children = children;
+ }
+
+
+}
Added: labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/DroolsSmookStatefulSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/DroolsSmookStatefulSessionTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/DroolsSmookStatefulSessionTest.java 2008-07-06 01:49:10 UTC (rev 20924)
@@ -0,0 +1,103 @@
+package org.drools.dataloaders.smooks;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.transform.stream.StreamSource;
+
+import junit.framework.TestCase;
+
+import org.drools.FactHandle;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.compiler.PackageBuilder;
+import org.milyn.Smooks;
+import org.milyn.io.StreamUtils;
+
+public class DroolsSmookStatefulSessionTest extends TestCase {
+ public void testSmooksNestedIterable() throws Exception {
+ PackageBuilder pkgBuilder = new PackageBuilder();
+
+ pkgBuilder.addPackageFromDrl( new InputStreamReader( DroolsSmookStatefulSessionTest.class.getResourceAsStream( "test_SmooksNestedIterable.drl" ) ) );
+
+ assertFalse( pkgBuilder.hasErrors() );
+
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkgBuilder.getPackage() );
+
+ StatefulSession session = ruleBase.newStatefulSession();
+ List list = new ArrayList();
+ session.setGlobal( "list", list );
+
+ // Instantiate Smooks with the config...
+ Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
+
+ DroolsSmooksConfiguration conf = new DroolsSmooksConfiguration( "root",
+ "children" );
+ //
+ DroolsSmooksStatefulSession dataLoader = new DroolsSmooksStatefulSession( session,
+ smooks,
+ conf );
+ Map<FactHandle, Object> handles = dataLoader.insertFilter( new StreamSource( getClass().getResourceAsStream( "SmooksNestedIterable.xml") ) );
+ //
+ session.fireAllRules();
+
+ assertEquals(2, handles.size() );
+ assertEquals(2, list.size());
+
+ assertEquals( "example.OrderItem", list.get( 0 ).getClass().getName() );
+ assertEquals( "example.OrderItem", list.get( 1 ).getClass().getName() );
+
+ assertNotSame( list.get( 0 ), list.get( 1 ) );
+ }
+
+ public void testSmooksDirectRoot() throws Exception {
+ PackageBuilder pkgBuilder = new PackageBuilder();
+
+ pkgBuilder.addPackageFromDrl( new InputStreamReader( DroolsSmookStatefulSessionTest.class.getResourceAsStream( "test_SmooksDirectRoot.drl" ) ) );
+
+ assertFalse( pkgBuilder.hasErrors() );
+
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkgBuilder.getPackage() );
+
+ StatefulSession session = ruleBase.newStatefulSession();
+ List list = new ArrayList();
+ session.setGlobal( "list", list );
+
+ // Instantiate Smooks with the config...
+ Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
+
+
+ DroolsSmooksConfiguration conf = new DroolsSmooksConfiguration( "orderItem", null );
+ //
+ DroolsSmooksStatefulSession dataLoader = new DroolsSmooksStatefulSession( session,
+ smooks,
+ conf );
+ Map<FactHandle, Object> handles = dataLoader.insertFilter( new StreamSource( getClass().getResourceAsStream( "SmooksDirectRoot.xml") ) );
+ //
+ session.fireAllRules();
+
+ assertEquals(1, handles.size() );
+ assertEquals(1, list.size());
+
+ assertEquals( "example.OrderItem", list.get( 0 ).getClass().getName() );
+ }
+
+
+
+
+ private static byte[] readInputMessage(InputStream stream) {
+ try {
+ return StreamUtils.readStream( stream );
+ } catch ( IOException e ) {
+ e.printStackTrace();
+ return "<no-message/>".getBytes();
+ }
+ }
+}
Added: labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/DroolsSmookStatelessSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/DroolsSmookStatelessSessionTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/DroolsSmookStatelessSessionTest.java 2008-07-06 01:49:10 UTC (rev 20924)
@@ -0,0 +1,99 @@
+package org.drools.dataloaders.smooks;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.transform.stream.StreamSource;
+
+import junit.framework.TestCase;
+
+import org.drools.FactHandle;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.StatelessSession;
+import org.drools.compiler.PackageBuilder;
+import org.milyn.Smooks;
+import org.milyn.io.StreamUtils;
+
+public class DroolsSmookStatelessSessionTest extends TestCase {
+ public void testSmooksNestedIterable() throws Exception {
+ PackageBuilder pkgBuilder = new PackageBuilder();
+
+ pkgBuilder.addPackageFromDrl( new InputStreamReader( DroolsSmookStatelessSessionTest.class.getResourceAsStream( "test_SmooksNestedIterable.drl" ) ) );
+
+ assertFalse( pkgBuilder.hasErrors() );
+
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkgBuilder.getPackage() );
+
+ StatelessSession session = ruleBase.newStatelessSession();
+ List list = new ArrayList();
+ session.setGlobal( "list", list );
+
+ // Instantiate Smooks with the config...
+ Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
+
+ DroolsSmooksConfiguration conf = new DroolsSmooksConfiguration( "root",
+ "children" );
+ //
+ DroolsSmooksStatelessSession dataLoader = new DroolsSmooksStatelessSession( session,
+ smooks,
+ conf );
+ dataLoader.executeFilter( new StreamSource( getClass().getResourceAsStream( "SmooksNestedIterable.xml") ) );
+ //
+
+ assertEquals(2, list.size());
+
+ assertEquals( "example.OrderItem", list.get( 0 ).getClass().getName() );
+ assertEquals( "example.OrderItem", list.get( 1 ).getClass().getName() );
+
+ assertNotSame( list.get( 0 ), list.get( 1 ) );
+ }
+
+ public void testSmooksDirectRoot() throws Exception {
+ PackageBuilder pkgBuilder = new PackageBuilder();
+
+ pkgBuilder.addPackageFromDrl( new InputStreamReader( DroolsSmookStatelessSessionTest.class.getResourceAsStream( "test_SmooksDirectRoot.drl" ) ) );
+
+ assertFalse( pkgBuilder.hasErrors() );
+
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkgBuilder.getPackage() );
+
+ StatelessSession session = ruleBase.newStatelessSession();
+ List list = new ArrayList();
+ session.setGlobal( "list", list );
+
+ // Instantiate Smooks with the config...
+ Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
+
+
+ DroolsSmooksConfiguration conf = new DroolsSmooksConfiguration( "orderItem", null );
+ //
+ DroolsSmooksStatelessSession dataLoader = new DroolsSmooksStatelessSession( session,
+ smooks,
+ conf );
+ dataLoader.executeFilter( new StreamSource( getClass().getResourceAsStream( "SmooksDirectRoot.xml") ) );
+
+ assertEquals(1, list.size());
+
+ assertEquals( "example.OrderItem", list.get( 0 ).getClass().getName() );
+ }
+
+
+
+
+ private static byte[] readInputMessage(InputStream stream) {
+ try {
+ return StreamUtils.readStream( stream );
+ } catch ( IOException e ) {
+ e.printStackTrace();
+ return "<no-message/>".getBytes();
+ }
+ }
+}
Added: labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/test_SmooksDirectRoot.drl
===================================================================
--- labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/test_SmooksDirectRoot.drl (rev 0)
+++ labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/test_SmooksDirectRoot.drl 2008-07-06 01:49:10 UTC (rev 20924)
@@ -0,0 +1,16 @@
+package example
+
+global java.util.List list;
+
+declare OrderItem
+ productId : long
+ quantity : Integer
+ price : double
+end
+
+rule someRule
+when
+ $i : OrderItem()
+then
+ list.add( $i );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/test_SmooksNestedIterable.drl
===================================================================
--- labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/test_SmooksNestedIterable.drl (rev 0)
+++ labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/java/org/drools/dataloaders/smooks/test_SmooksNestedIterable.drl 2008-07-06 01:49:10 UTC (rev 20924)
@@ -0,0 +1,16 @@
+package example
+
+global java.util.List list;
+
+declare OrderItem
+ productId : long
+ quantity : Integer
+ price : double
+end
+
+rule someRule
+when
+ $i : OrderItem()
+then
+ list.add( $i );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/org/drools/dataloaders/smooks/SmooksDirectRoot.xml
===================================================================
--- labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/org/drools/dataloaders/smooks/SmooksDirectRoot.xml (rev 0)
+++ labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/org/drools/dataloaders/smooks/SmooksDirectRoot.xml 2008-07-06 01:49:10 UTC (rev 20924)
@@ -0,0 +1,5 @@
+<order-item>
+ <product>222</product>
+ <quantity>7</quantity>
+ <price>5.20</price>
+</order-item>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/org/drools/dataloaders/smooks/SmooksNestedIterable.xml
===================================================================
--- labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/org/drools/dataloaders/smooks/SmooksNestedIterable.xml (rev 0)
+++ labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/org/drools/dataloaders/smooks/SmooksNestedIterable.xml 2008-07-06 01:49:10 UTC (rev 20924)
@@ -0,0 +1,12 @@
+<root>
+ <order-item>
+ <product>111</product>
+ <quantity>2</quantity>
+ <price>8.90</price>
+ </order-item>
+ <order-item>
+ <product>222</product>
+ <quantity>7</quantity>
+ <price>5.20</price>
+ </order-item>
+</root>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/org/drools/dataloaders/smooks/smooks-config.xml
===================================================================
--- labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/org/drools/dataloaders/smooks/smooks-config.xml (rev 0)
+++ labs/jbossrules/trunk/drools-dataloaders/drools-dataloaders-smooks/src/test/resources/org/drools/dataloaders/smooks/smooks-config.xml 2008-07-06 01:49:10 UTC (rev 20924)
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.0.xsd">
+
+ <!--
+ Create an "example.beans.Order" bean instance when we visit the start of the <order> element.
+ Assign the new bean instance to the beanId of "order".
+ -->
+ <resource-config selector="root">
+ <resource>org.milyn.javabean.BeanPopulator</resource>
+ <param name="beanId">root</param>
+ <param name="beanClass">org.drools.dataloaders.smooks.Root</param>
+ <param name="bindings">
+ <binding property="children" selector="${children}" />
+ </param>
+ </resource-config>
+
+ <!--
+ Create an ArrayList bean instance when we visit the start of the <order> element.
+ Call it "orderItems" and seet it on the "order".
+ -->
+ <resource-config selector="root">
+ <resource>org.milyn.javabean.BeanPopulator</resource>
+ <param name="beanId">children</param>
+ <param name="beanClass">java.util.ArrayList</param>
+ <param name="bindings">
+ <binding selector="${orderItem}" />
+ </param>
+ </resource-config>
+
+ <!--
+ Create an "example.beans.OrderItem" bean instance when we visit the start of the <order-item> element.
+ Set the OrderItem instances on the "orderItem".
+ -->
+ <resource-config selector="order-item">
+ <resource>org.milyn.javabean.BeanPopulator</resource>
+ <param name="beanClass">example.OrderItem</param>
+ <param name="bindings">
+ <!-- OrderItem bindings... -->
+ <binding property="productId" type="Long" selector="order-item product" />
+ <binding property="quantity" type="Integer" selector="order-item quantity" />
+ <binding property="price" type="Double" selector="order-item price" />
+ </param>
+ </resource-config>
+
+
+</smooks-resource-list>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-dataloaders/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-dataloaders/pom.xml (rev 0)
+++ labs/jbossrules/trunk/drools-dataloaders/pom.xml 2008-07-06 01:49:10 UTC (rev 20924)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>drools</artifactId>
+ <groupId>org.drools</groupId>
+ <version>5.0.0.SNAPSHOT</version>
+ </parent>
+
+ <artifactId>drools-dataloaders</artifactId>
+ <packaging>pom</packaging>
+ <name>Drools :: DataLoaders</name>
+
+ <modules>
+ <module>drools-dataloaders-smooks</module>
+ </modules>
+
+</project>
More information about the jboss-svn-commits
mailing list