[jboss-svn-commits] JBL Code SVN: r29733 - in labs/jbossrules/trunk: drools-container and 24 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Oct 21 23:44:36 EDT 2009


Author: mark.proctor at jboss.com
Date: 2009-10-21 23:44:35 -0400 (Wed, 21 Oct 2009)
New Revision: 29733

Added:
   labs/jbossrules/trunk/drools-container/drools-spring/
   labs/jbossrules/trunk/drools-container/drools-spring/.classpath
   labs/jbossrules/trunk/drools-container/drools-spring/.project
   labs/jbossrules/trunk/drools-container/drools-spring/pom.xml
   labs/jbossrules/trunk/drools-container/drools-spring/src/
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/KnowledgeBaseDefinitionParser.java
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/KnowledgeSessionDefinitionParser.java
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/SpringDroolsFactory.java
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/SpringDroolsHandler.java
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/META-INF/
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/META-INF/spring.handlers
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/META-INF/spring.schemas
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/drools-spring.xsd
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/log4j.properties
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/Person.java
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/SpringDroolsTest.java
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/.~lock.IntegrationExampleTest.xls#
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/IntegrationExampleTest.xls
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans.xml
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/testSpring.drl
   labs/jbossrules/trunk/drools-container/pom.xml
Modified:
   labs/jbossrules/trunk/pom.xml
Log:
JBRULES-1434 Drools Spring
-Initial spring integration


Property changes on: labs/jbossrules/trunk/drools-container/drools-spring
___________________________________________________________________
Name: svn:ignore
   + .settings
target


Added: labs/jbossrules/trunk/drools-container/drools-spring/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/.classpath	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/.classpath	2009-10-22 03:44:35 UTC (rev 29733)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry excluding="**/*.java" including="**" kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javax/jms/jms/1.1/jms-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
+	<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/jexcelapi/jxl/2.4.2/jxl-2.4.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.15/log4j-1.2.15.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javax/mail/mail/1.4/mail-1.4.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.9pre2/mvel2-2.0.9pre2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/springframework/spring-beans/2.5.6/spring-beans-2.5.6.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/springframework/spring-context/2.5.6/spring-context-2.5.6.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/springframework/spring-core/2.5.6/spring-core-2.5.6.jar"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/drools-api"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/drools-compiler"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/drools-core"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/drools-decisiontables"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/drools-templates"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: labs/jbossrules/trunk/drools-container/drools-spring/.project
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/.project	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/.project	2009-10-22 03:44:35 UTC (rev 29733)
@@ -0,0 +1,13 @@
+<projectDescription>
+  <name>drools-spring</name>
+  <comment>A rule production system</comment>
+  <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-container/drools-spring/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/pom.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/pom.xml	2009-10-22 03:44:35 UTC (rev 29733)
@@ -0,0 +1,64 @@
+<?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-spring</artifactId>
+  <packaging>jar</packaging>
+  <name>Drools :: Spring</name> 
+    
+      <dependencies>
+            
+    	<dependency>
+    		<groupId>org.drools</groupId>
+    		<artifactId>drools-api</artifactId>
+    	</dependency>
+    	         		  
+    	<dependency>
+    		<groupId>org.drools</groupId>
+    		<artifactId>drools-core</artifactId>
+    	</dependency>         	
+
+    	<dependency>
+    		<groupId>org.drools</groupId>
+    		<artifactId>drools-compiler</artifactId>
+    	</dependency>
+    	
+    	<dependency>
+    		<groupId>org.drools</groupId>
+    		<artifactId>drools-decisiontables</artifactId>
+    	</dependency>    	
+        
+    	<dependency>
+    		<groupId>org.springframework</groupId>
+    		<artifactId>spring-core</artifactId>
+            <version>2.5.6</version>
+    	</dependency>     
+
+        <dependency>
+    		<groupId>org.springframework</groupId>
+    		<artifactId>spring-beans</artifactId>
+            <version>2.5.6</version>
+    	</dependency> 
+        
+        <dependency>
+    		<groupId>org.springframework</groupId>
+    		<artifactId>spring-context</artifactId>
+            <version>2.5.6</version>
+    	</dependency>         
+
+        
+		<dependency>
+		  <groupId>log4j</groupId>
+		  <artifactId>log4j</artifactId>
+		  <version>1.2.15</version>
+		</dependency>    
+        
+      </dependencies>              
+                  
+</project>

Added: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/KnowledgeBaseDefinitionParser.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/KnowledgeBaseDefinitionParser.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/KnowledgeBaseDefinitionParser.java	2009-10-22 03:44:35 UTC (rev 29733)
@@ -0,0 +1,107 @@
+package org.drools.container.spring;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.KnowledgeBase;
+import org.drools.builder.DecisionTableInputType;
+import org.drools.builder.ResourceType;
+import org.drools.builder.impl.DecisionTableConfigurationImpl;
+import org.drools.io.InternalResource;
+import org.drools.io.Resource;
+import org.drools.io.impl.ClassPathResource;
+import org.drools.io.impl.KnowledgeResource;
+import org.drools.io.impl.UrlResource;
+import org.drools.xml.ExtensibleXmlParser;
+import org.springframework.beans.factory.config.ConstructorArgumentValues;
+import org.springframework.beans.factory.support.AbstractBeanDefinition;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
+import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
+import org.springframework.beans.factory.xml.ParserContext;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+public class KnowledgeBaseDefinitionParser extends AbstractSingleBeanDefinitionParser  {
+    protected Class getBeanClass(Element element) {
+        return KnowledgeBase.class;
+     }
+
+     protected void doParse(Element element, BeanDefinitionBuilder bean) {         
+         bean.getRawBeanDefinition().setBeanClassName( "org.drools.container.spring.SpringDroolsFactory" );
+         bean.getRawBeanDefinition().setFactoryMethodName( "buildKnowledgeBase" );     
+         
+         List<Resource> resources = new ArrayList<Resource>();
+         
+         NodeList resourcesList = element.getChildNodes();
+         for ( int i = 0, resourcesListLength = resourcesList.getLength(); i < resourcesListLength; i++ ) {
+             Node resourceNode = resourcesList.item( i );
+             if ( resourceNode.getNodeType() == Node.ELEMENT_NODE ) {
+                 Element resourceElement = ( Element ) resourceNode;
+                 String source = resourceElement.getAttribute( "source" );
+                 String type = resourceElement.getAttribute( "type" );
+                 
+                 emptyAttributeCheck( "resource",
+                                      "source",
+                                      source );
+                 
+                 emptyAttributeCheck( "resource",
+                                      "type",
+                                      type );        
+                 InternalResource resource = null;                
+                 
+                 if ( source.trim().startsWith( "classpath:" ) ) {
+                     resource = new ClassPathResource( source.substring( source.indexOf( ':' ) + 1 ), ClassPathResource.class.getClassLoader() );
+                 } else {
+                     resource = new UrlResource( source );
+                 }
+                 
+                 resource.setResourceType( ResourceType.getResourceType( type ) );
+                 
+                 NodeList configurationList = resourceElement.getChildNodes();
+                 for ( int j = 0, configurationListLength = configurationList.getLength(); j < configurationListLength; j++ ) {
+                     Node configurationNode = configurationList.item( j );
+                     if ( configurationNode.getNodeType() == Node.ELEMENT_NODE ) {
+                         Element configurationElement = ( Element ) configurationNode;
+                         if ( "decisiontable-conf".equals( configurationElement.getLocalName() ) ) {
+                             String inputType = configurationElement.getAttribute( "input-type" );
+                             String worksheetName = configurationElement.getAttribute( "worksheet-name" );
+                             
+                             DecisionTableConfigurationImpl dtableConf = new DecisionTableConfigurationImpl();
+                             dtableConf.setInputType( DecisionTableInputType.valueOf( inputType ) );
+                             dtableConf.setWorksheetName( worksheetName );
+                             resource.setConfiguration( dtableConf );
+                         }      
+                     }
+                 }
+                 
+                 resources.add( resource );
+             }
+         }
+         
+         ConstructorArgumentValues values = new ConstructorArgumentValues();
+         values.addGenericArgumentValue( resources );
+         
+         bean.getRawBeanDefinition().setConstructorArgumentValues( values );
+     }
+     
+     public void emptyAttributeCheck(final String element,
+                                     final String attributeName,
+                                     final String attribute) {
+         if ( attribute == null || attribute.trim().equals( "" ) ) {
+             throw new IllegalArgumentException( "<" + element + "> requires a '" + attributeName + "' attribute" );
+         }
+     }     
+
+//    protected AbstractBeanDefinition parseInternal(Element elm,
+//                                                   ParserContext ctx) {
+//        System.out.println( elm.getAttribute( "value" ) );
+//        
+//        
+//        return elm.getAttribute( "value" );
+//    }
+
+}

Added: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/KnowledgeSessionDefinitionParser.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/KnowledgeSessionDefinitionParser.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/KnowledgeSessionDefinitionParser.java	2009-10-22 03:44:35 UTC (rev 29733)
@@ -0,0 +1,51 @@
+package org.drools.container.spring;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.KnowledgeBase;
+import org.drools.builder.ResourceType;
+import org.drools.io.InternalResource;
+import org.drools.io.Resource;
+import org.drools.io.impl.ClassPathResource;
+import org.drools.io.impl.UrlResource;
+import org.drools.runtime.CommandExecutor;
+import org.springframework.beans.factory.config.ConstructorArgumentValues;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class KnowledgeSessionDefinitionParser extends AbstractSingleBeanDefinitionParser {
+    protected Class getBeanClass(Element element) {
+        return CommandExecutor.class;
+    }
+
+    protected void doParse(Element element,
+                           BeanDefinitionBuilder bean) {
+        String kbase = element.getAttribute( "kbase" );
+        String sessionType = element.getAttribute( "type" );
+        
+        bean.getRawBeanDefinition().setBeanClassName( "org.drools.container.spring.SpringDroolsFactory" );
+        
+        if ( "stateful".equals( sessionType ) ) {
+            bean.getRawBeanDefinition().setFactoryMethodName( "newStatefulKnowledgeSession" );
+        } else if ( "stateless".equals( sessionType ) ) {
+            bean.getRawBeanDefinition().setFactoryMethodName( "newStatelessKnowledgeSession" );
+        } else {
+            
+        }
+
+        bean.addConstructorArgReference( kbase );
+    }
+
+    public void emptyAttributeCheck(final String element,
+                                    final String attributeName,
+                                    final String attribute) {
+        if ( attribute == null || attribute.trim().equals( "" ) ) {
+            throw new IllegalArgumentException( "<" + element + "> requires a '" + attributeName + "' attribute" );
+        }
+    }
+
+}

Added: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/SpringDroolsFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/SpringDroolsFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/SpringDroolsFactory.java	2009-10-22 03:44:35 UTC (rev 29733)
@@ -0,0 +1,40 @@
+package org.drools.container.spring;
+
+import java.io.IOException;
+import java.util.Collection;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.io.InternalResource;
+import org.drools.io.Resource;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.StatelessKnowledgeSession;
+
+public class SpringDroolsFactory {
+    private static KnowledgeBase buildKnowledgeBase(Collection<Resource> resources) {        
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        for ( Resource resource : resources ) {            
+            if ( ((InternalResource)resource).getConfiguration() == null ) {
+                kbuilder.add( resource, ((InternalResource)resource).getResourceType() );                
+            } else {
+                kbuilder.add( resource, ((InternalResource)resource).getResourceType(), ((InternalResource)resource).getConfiguration() );                
+            }
+                        
+        }
+        
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+        
+        return kbase;
+    }
+    
+    private static StatefulKnowledgeSession newStatefulKnowledgeSession(KnowledgeBase kbase) {
+        return kbase.newStatefulKnowledgeSession();
+    }
+    
+    private static StatelessKnowledgeSession newStatelessKnowledgeSession(KnowledgeBase kbase) {
+        return kbase.newStatelessKnowledgeSession();
+    }    
+}

Added: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/SpringDroolsHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/SpringDroolsHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/SpringDroolsHandler.java	2009-10-22 03:44:35 UTC (rev 29733)
@@ -0,0 +1,14 @@
+package org.drools.container.spring;
+
+import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
+
+public class SpringDroolsHandler extends NamespaceHandlerSupport {
+
+    public void init() {
+        registerBeanDefinitionParser("kbase", new KnowledgeBaseDefinitionParser());
+        
+        registerBeanDefinitionParser("ksession", new KnowledgeSessionDefinitionParser());
+
+    }
+
+}

Added: labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/META-INF/spring.handlers
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/META-INF/spring.handlers	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/META-INF/spring.handlers	2009-10-22 03:44:35 UTC (rev 29733)
@@ -0,0 +1 @@
+http\://drools.org/schema/drools-spring=org.drools.container.spring.SpringDroolsHandler
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/META-INF/spring.schemas
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/META-INF/spring.schemas	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/META-INF/spring.schemas	2009-10-22 03:44:35 UTC (rev 29733)
@@ -0,0 +1 @@
+http\://drools.org/schema/drools-spring=spring-drools.xsd
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/drools-spring.xsd
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/drools-spring.xsd	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/drools-spring.xsd	2009-10-22 03:44:35 UTC (rev 29733)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsd:schema xmlns="http://drools.org/schema/drools-spring"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:beans="http://www.springframework.org/schema/beans"
+	targetNamespace="http://drools.org/schema/drools-spring"
+	elementFormDefault="qualified" attributeFormDefault="unqualified">
+
+	<xsd:element name="kbase">
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element name="resource" maxOccurs="unbounded">
+					<xsd:complexType>
+						<xsd:sequence>
+							<xsd:element name="decisiontable-conf" minOccurs="0" maxOccurs="1">
+								<xsd:complexType>
+									<xsd:attribute name="input-type" use="required" />
+									<xsd:attribute name="worksheet-name " use="required" />
+								</xsd:complexType>
+							</xsd:element>
+						</xsd:sequence>					
+						<xsd:attribute name="source" use="required" />
+						<xsd:attribute name="type" use="required" />
+					</xsd:complexType>
+				</xsd:element>
+			</xsd:sequence>
+			<xsd:attribute name="id" use="required" />
+		</xsd:complexType>
+	</xsd:element>
+
+	<xsd:element name="ksession">
+		<xsd:complexType>
+			<xsd:attribute name="type" use="required" />
+			<xsd:attribute name="kbase" use="required" />
+			<xsd:attribute name="id" use="required" />
+		</xsd:complexType>
+	</xsd:element>
+
+</xsd:schema>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/log4j.properties
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/log4j.properties	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/log4j.properties	2009-10-22 03:44:35 UTC (rev 29733)
@@ -0,0 +1,4 @@
+log4j.rootLogger=DEBUG, stdout
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/Person.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/Person.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/Person.java	2009-10-22 03:44:35 UTC (rev 29733)
@@ -0,0 +1,259 @@
+package org.drools;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+
+public class Person
+    implements
+    Serializable {
+    /**
+     *
+     */
+    private static final long serialVersionUID = 400L;
+    private String            name;
+    private String            likes;
+    private int               age;
+    private BigDecimal        bigDecimal;
+    private BigInteger        bigInteger;
+    private String            hair;
+
+    private char              sex;
+
+    private boolean           alive;
+    private boolean           happy;
+
+    private String            status;
+
+    //    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+    //        name    = (String)in.readObject();
+    //        likes    = (String)in.readObject();
+    //        age     = in.readInt();
+    //        bigDecimal    = (BigDecimal)in.readObject();
+    //        bigInteger    = (BigInteger)in.readObject();
+    //        hair    = (String)in.readObject();
+    //        sex     = in.readChar();
+    //        alive   = in.readBoolean();
+    //        status    = (String)in.readObject();
+    //        cheese    = (Cheese)in.readObject();
+    //        addresses    = (List)in.readObject();
+    //    }
+    //
+    //    public void writeExternal(ObjectOutput out) throws IOException {
+    //        out.writeObject(name);
+    //        out.writeObject(likes);
+    //        out.writeObject(bigDecimal);
+    //        out.writeObject(bigInteger);
+    //        out.writeObject(hair);
+    //        out.writeChar(sex);
+    //        out.writeBoolean(alive);
+    //        out.writeObject(status);
+    //        out.writeObject(cheese);
+    //        out.writeObject(addresses);
+    //    }
+
+    public Person() {
+
+    }
+
+    public Person(String name,
+                  int age) {
+        super();
+        this.name = name;
+        this.age = age;
+    }
+
+    public Person(final String name) {
+        this( name,
+              "",
+              0 );
+    }
+
+
+    public Person(final String name,
+                  final String likes) {
+        this( name,
+              likes,
+              0 );
+    }
+
+    public Person(final String name,
+                  final String likes,
+                  final int age) {
+        this.name = name;
+        this.likes = likes;
+        this.age = age;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.PersonInterface#getStatus()
+     */
+    public String getStatus() {
+        return this.status;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.PersonInterface#setStatus(java.lang.String)
+     */
+    public void setStatus(final String status) {
+        this.status = status;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.PersonInterface#getLikes()
+     */
+    public String getLikes() {
+        return this.likes;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.PersonInterface#getName()
+     */
+    public String getName() {
+        return this.name;
+    }
+
+    public void setName(final String name) {
+        this.name = name;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.PersonInterface#getAge()
+     */
+    public int getAge() {
+        return this.age;
+    }
+
+    public void setAge(final int age) {
+        this.age = age;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.PersonInterface#isAlive()
+     */
+    public boolean isAlive() {
+        return this.alive;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.PersonInterface#setAlive(boolean)
+     */
+    public void setAlive(final boolean alive) {
+        this.alive = alive;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.PersonInterface#getSex()
+     */
+    public char getSex() {
+        return this.sex;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.PersonInterface#setSex(char)
+     */
+    public void setSex(final char sex) {
+        this.sex = sex;
+    }
+
+    public String getHair() {
+        return this.hair;
+    }
+
+    public void setHair(final String hair) {
+        this.hair = hair;
+    }
+
+    public String toString() {
+        return "[Person name='" + this.name + "']";
+    }
+
+    /**
+     * @inheritDoc
+     */
+    public int hashCode() {
+        final int PRIME = 31;
+        int result = 1;
+        result = PRIME * result + this.age;
+        result = PRIME * result + (this.alive ? 1231 : 1237);
+        result = PRIME * result + ((this.name == null) ? 0 : this.name.hashCode());
+        result = PRIME * result + this.sex;
+        return result;
+    }
+
+    /**
+     * @inheritDoc
+     */
+    public boolean equals(final Object obj) {
+        if ( this == obj ) {
+            return true;
+        }
+        if ( obj == null ) {
+            return false;
+        }
+        if ( getClass() != obj.getClass() ) {
+            return false;
+        }
+        final Person other = (Person) obj;
+        if ( this.age != other.age ) {
+            return false;
+        }
+        if ( this.alive != other.alive ) {
+            return false;
+        }
+        if ( this.name == null ) {
+            if ( other.name != null ) {
+                return false;
+            }
+        } else if ( !this.name.equals( other.name ) ) {
+            return false;
+        }
+        if ( this.sex != other.sex ) {
+            return false;
+        }
+        return true;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.PersonInterface#getBigDecimal()
+     */
+    public BigDecimal getBigDecimal() {
+        return this.bigDecimal;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.PersonInterface#setBigDecimal(java.math.BigDecimal)
+     */
+    public void setBigDecimal(final BigDecimal bigDecimal) {
+        this.bigDecimal = bigDecimal;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.PersonInterface#getBigInteger()
+     */
+    public BigInteger getBigInteger() {
+        return this.bigInteger;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.PersonInterface#setBigInteger(java.math.BigInteger)
+     */
+    public void setBigInteger(final BigInteger bigInteger) {
+        this.bigInteger = bigInteger;
+    }
+
+    public void setLikes(final String likes) {
+        this.likes = likes;
+    }
+
+    public boolean isHappy() {
+        return happy;
+    }
+
+    public void setHappy(boolean happy) {
+        this.happy = happy;
+    }
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/SpringDroolsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/SpringDroolsTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/SpringDroolsTest.java	2009-10-22 03:44:35 UTC (rev 29733)
@@ -0,0 +1,31 @@
+package org.drools.container.spring;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.drools.Person;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.StatelessKnowledgeSession;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class SpringDroolsTest extends TestCase {
+	public void test1() throws Exception {		
+		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "org/drools/container/spring/beans.xml" );
+		
+		List list = new ArrayList();
+		StatelessKnowledgeSession kstateless = (StatelessKnowledgeSession) context.getBean( "ksession1" );
+		kstateless.setGlobal( "list", list );
+		kstateless.execute( new Person( "Darth", "Cheddar", 50 ) );
+		assertEquals( 2, list.size() );
+		
+		
+		list = new ArrayList();
+		StatefulKnowledgeSession kstateful = ( StatefulKnowledgeSession ) ((StatefulKnowledgeSession)context.getBean( "ksession2" ));
+		kstateful.setGlobal( "list", list );
+		kstateful.insert( new Person( "Darth", "Cheddar", 50 ) );
+		kstateful.fireAllRules();	
+		assertEquals( 2, list.size() );
+	}
+}

Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/.~lock.IntegrationExampleTest.xls#
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/.~lock.IntegrationExampleTest.xls#	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/.~lock.IntegrationExampleTest.xls#	2009-10-22 03:44:35 UTC (rev 29733)
@@ -0,0 +1 @@
+,Daedalus/mproctor,Daedalus,22.10.2009 04:23,file:///C:/Users/mproctor/AppData/Roaming/OpenOffice.org/3;
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/IntegrationExampleTest.xls
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/IntegrationExampleTest.xls
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans.xml
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans.xml	2009-10-22 03:44:35 UTC (rev 29733)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:drools="http://drools.org/schema/drools-spring"       
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+                           http://drools.org/schema/drools-spring drools-spring.xsd">
+  
+  <drools:kbase id="kbase1" >
+      <drools:resource source='classpath:org/drools/container/spring/testSpring.drl' type='DRL' />
+	  <drools:resource source='classpath:org/drools/container/spring/IntegrationExampleTest.xls' type="DTABLE">
+	      <drools:decisiontable-conf input-type="XLS" worksheet-name="Tables_2" />
+	  </drools:resource>      
+  </drools:kbase>
+  
+  <drools:ksession id="ksession1" type="stateless" kbase="kbase1" />
+
+  <drools:ksession id="ksession2" type="stateful"  kbase="kbase1" />
+</beans>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/testSpring.drl
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/testSpring.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/testSpring.drl	2009-10-22 03:44:35 UTC (rev 29733)
@@ -0,0 +1,12 @@
+package  org.drools.springframework
+
+import org.drools.Person
+
+global java.util.List list;
+
+rule "rule 1"
+when
+    $p : Person();
+then
+   list.add( $p );
+end
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-container/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-container/pom.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/pom.xml	2009-10-22 03:44:35 UTC (rev 29733)
@@ -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.1.0.SNAPSHOT</version>
+  </parent>
+
+  <artifactId>drools-container</artifactId>
+  <packaging>pom</packaging>
+  <name>Drools :: Container</name>
+  
+  <modules>
+      <module>drools-spring</module>
+  </modules>
+  
+</project>

Modified: labs/jbossrules/trunk/pom.xml
===================================================================
--- labs/jbossrules/trunk/pom.xml	2009-10-21 18:21:00 UTC (rev 29732)
+++ labs/jbossrules/trunk/pom.xml	2009-10-22 03:44:35 UTC (rev 29733)
@@ -832,7 +832,8 @@
         <module>drools-core</module>
         <module>drools-compiler</module>
         <module>drools-vsm</module>  
-        <module>drools-pipeline</module>                    
+        <module>drools-pipeline</module>   
+        <module>drools-container</module>         
         <module>drools-simulator</module>
         <module>drools-jsr94</module>
         <module>drools-templates</module>



More information about the jboss-svn-commits mailing list