[jboss-svn-commits] JBL Code SVN: r33931 - in labs/jbossrules/trunk: drools-container/drools-spring/src/main/java/org/drools/container/spring/beans and 7 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jul 16 01:27:41 EDT 2010
Author: mark.proctor at jboss.com
Date: 2010-07-16 01:27:41 -0400 (Fri, 16 Jul 2010)
New Revision: 33931
Added:
labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/ResourceChangeScannerBeanFactory.java
labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/ResourceChangeScannerDefinitionParser.java
labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/drl/
labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/drl/testSpring.drl
Modified:
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/ResourceChangeNotifier.java
labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeAgentBeanFactory.java
labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/StatelessKnowledgeSessionBeanFactory.java
labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeAgentDefinitionParser.java
labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeSessionDefinitionParser.java
labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/SpringDroolsHandler.java
labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd
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/org/drools/container/spring/kagents-beans.xml
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/impl/KnowledgeAgentImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java
Log:
JBRULES-1434 Drools Spring
-KnowledgeAgent configuration now works
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/ResourceChangeNotifier.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/ResourceChangeNotifier.java 2010-07-16 04:59:01 UTC (rev 33930)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/ResourceChangeNotifier.java 2010-07-16 05:27:41 UTC (rev 33931)
@@ -19,6 +19,7 @@
* part of the ResourceType api when adding to KnowledgeBuilder, which is considered stable. KnowledgeBuilder currently ignored Added/Modified xml elements,
* the KnowledgeAgent will use them, when rebuilding the KnowledgeBase.
* </p>
+ * @BETA
*
*/
public interface ResourceChangeNotifier {
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeAgentBeanFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeAgentBeanFactory.java 2010-07-16 04:59:01 UTC (rev 33930)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeAgentBeanFactory.java 2010-07-16 05:27:41 UTC (rev 33931)
@@ -44,44 +44,41 @@
return this.kagent;
}
- public Class< ? extends KnowledgeAgent> getObjectType() {
+ public Class<KnowledgeAgent> getObjectType() {
return KnowledgeAgent.class;
}
public void afterPropertiesSet() throws Exception {
KnowledgeAgentConfiguration kagentConf = KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
- if ( kbase == null && (resources == null || resources == Collections.<DroolsResourceAdapter> emptyList()) ) {
- throw new RuntimeException( "kagent must reference either an existing kbase or have child element resources" );
+ if ( kbase == null ) {
+ throw new RuntimeException( "kagent must reference an existing kbase" );
}
-
- kagentConf.setProperty( "newInstance",
+
+ kagentConf.setProperty( "drools.agent.newInstance",
newInstance );
- if ( kbase != null ) {
- this.kagent = KnowledgeAgentFactory.newKnowledgeAgent( this.id,
- this.kbase,
- kagentConf );
- } else {
- this.kagent = KnowledgeAgentFactory.newKnowledgeAgent( this.id,
- kagentConf );
+ this.kagent = KnowledgeAgentFactory.newKnowledgeAgent( this.id,
+ this.kbase,
+ kagentConf );
+
+ if ( resources != null && !resources.isEmpty() ) {
Collection<Resource> rs = new ArrayList<Resource>();
for ( DroolsResourceAdapter res : resources ) {
InternalResource resource = (InternalResource) res.getDroolsResource();
-
+
resource.setResourceType( res.getResourceType() );
-
+
if ( res.getResourceConfiguration() != null ) {
resource.setConfiguration( res.getResourceConfiguration() );
}
-
+
rs.add( resource );
}
ChangeSetImpl changeSet = new ChangeSetImpl();
changeSet.setResourcesAdded( rs );
-
+
kagent.applyChangeSet( changeSet );
}
- System.out.println( kagent );
}
public KnowledgeBase getKbase() {
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/ResourceChangeScannerBeanFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/ResourceChangeScannerBeanFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/ResourceChangeScannerBeanFactory.java 2010-07-16 05:27:41 UTC (rev 33931)
@@ -0,0 +1,57 @@
+package org.drools.container.spring.beans;
+
+import org.drools.grid.generic.GenericConnection;
+import org.drools.grid.local.LocalConnection;
+import org.drools.io.ResourceChangeScanner;
+import org.drools.io.ResourceFactory;
+import org.springframework.beans.factory.FactoryBean;
+import org.springframework.beans.factory.InitializingBean;
+
+/**
+ *
+ * @author Lucas Amador
+ *
+ */
+public class ResourceChangeScannerBeanFactory
+ implements
+ FactoryBean,
+ InitializingBean {
+
+ private String id;
+ private int interval;
+
+ public Object getObject() throws Exception {
+ return ResourceFactory.getResourceChangeScannerService();
+ }
+
+ public Class<ResourceChangeScanner> getObjectType() {
+ return ResourceChangeScanner.class;
+ }
+
+ public boolean isSingleton() {
+ return true;
+ }
+
+ public void afterPropertiesSet() throws Exception {
+ ResourceFactory.getResourceChangeScannerService().setInterval( this.interval );
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public int getInterval() {
+ return interval;
+ }
+
+ public void setInterval(int interval) {
+ this.interval = interval;
+ }
+
+
+
+}
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/StatelessKnowledgeSessionBeanFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/StatelessKnowledgeSessionBeanFactory.java 2010-07-16 04:59:01 UTC (rev 33930)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/StatelessKnowledgeSessionBeanFactory.java 2010-07-16 05:27:41 UTC (rev 33931)
@@ -1,10 +1,20 @@
package org.drools.container.spring.beans;
+import org.drools.agent.KnowledgeAgent;
import org.drools.runtime.CommandExecutor;
import org.drools.runtime.StatelessKnowledgeSession;
public class StatelessKnowledgeSessionBeanFactory extends AbstractKnowledgeSessionBeanFactory {
private StatelessKnowledgeSession ksession;
+ private KnowledgeAgent kagent;
+
+ public void setKnowledgeAgent(KnowledgeAgent kagent) {
+ this.kagent = kagent;
+ }
+
+ public KnowledgeAgent getKnowledgeAgent() {
+ return this.kagent;
+ }
public Class<StatelessKnowledgeSession> getObjectType() {
return StatelessKnowledgeSession.class;
@@ -17,6 +27,10 @@
@Override
protected void internalAfterPropertiesSet() {
- ksession = getKbase().newStatelessKnowledgeSession();
+ if ( this.kagent != null ) {
+ ksession = this.kagent.newStatelessKnowledgeSession();
+ } else {
+ ksession = getKbase().newStatelessKnowledgeSession();
+ }
}
}
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeAgentDefinitionParser.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeAgentDefinitionParser.java 2010-07-16 04:59:01 UTC (rev 33930)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeAgentDefinitionParser.java 2010-07-16 05:27:41 UTC (rev 33931)
@@ -4,6 +4,10 @@
import org.drools.container.spring.beans.ExecutionNodeBeanFactory;
import org.drools.container.spring.beans.KnowledgeAgentBeanFactory;
+import org.drools.container.spring.beans.StatelessKnowledgeSessionBeanFactory;
+import org.springframework.beans.PropertyValue;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.config.RuntimeBeanReference;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.ManagedList;
@@ -50,6 +54,18 @@
factory.addPropertyValue( "resources",
resources );
}
+
+ // inject the kagent into any stateless sessions
+ for ( String beanName : parserContext.getRegistry().getBeanDefinitionNames() ) {
+ BeanDefinition def = parserContext.getRegistry().getBeanDefinition(beanName);
+ if ( def.getBeanClassName().equals( StatelessKnowledgeSessionBeanFactory.class.getName() ) ) {
+ PropertyValue pvalue = def.getPropertyValues().getPropertyValue( "kbase" );
+ RuntimeBeanReference tbf = ( RuntimeBeanReference ) pvalue.getValue();
+ if ( kbase.equals( tbf.getBeanName() ) ) {
+ def.getPropertyValues().addPropertyValue( "knowledgeAgent", new RuntimeBeanReference( id ) );
+ }
+ }
+ }
return factory.getBeanDefinition();
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeSessionDefinitionParser.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeSessionDefinitionParser.java 2010-07-16 04:59:01 UTC (rev 33930)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeSessionDefinitionParser.java 2010-07-16 05:27:41 UTC (rev 33931)
@@ -11,9 +11,12 @@
import org.drools.command.runtime.rule.FireAllRulesCommand;
import org.drools.command.runtime.rule.FireUntilHaltCommand;
import org.drools.command.runtime.rule.InsertObjectCommand;
+import org.drools.container.spring.beans.KnowledgeAgentBeanFactory;
+import org.drools.container.spring.beans.KnowledgeBaseBeanFactory;
import org.drools.container.spring.beans.StatefulKnowledgeSessionBeanFactory;
import org.drools.container.spring.beans.StatelessKnowledgeSessionBeanFactory;
import org.drools.container.spring.beans.StatefulKnowledgeSessionBeanFactory.JpaConfiguration;
+import org.springframework.beans.PropertyValue;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.RuntimeBeanReference;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
@@ -42,6 +45,13 @@
protected AbstractBeanDefinition parseInternal(Element element,
ParserContext parserContext) {
+
+ String id = element.getAttribute( "id" );
+ emptyAttributeCheck( element.getLocalName(),
+ "id",
+ id);
+
+
String kbase = element.getAttribute( KBASE_ATTRIBUTE );
emptyAttributeCheck( element.getLocalName(),
KBASE_ATTRIBUTE,
@@ -68,9 +78,12 @@
}
String name = element.getAttribute( NAME_ATTRIBUTE );
- if ( name != null && name.length() > 0 ) {
+ if ( StringUtils.hasText(name) ) {
factory.addPropertyValue( "name",
name );
+ } else {
+ factory.addPropertyValue( "name",
+ id );
}
Element persistenceElm = DomUtils.getChildElementByTagName(element, "jpa-persistence");
@@ -210,6 +223,18 @@
}
factory.addPropertyValue( "script", children );
}
+
+ // find any kagent's for the current kbase and assign
+ for ( String beanName : parserContext.getRegistry().getBeanDefinitionNames() ) {
+ BeanDefinition def = parserContext.getRegistry().getBeanDefinition(beanName);
+ if ( def.getBeanClassName().equals( KnowledgeAgentBeanFactory.class.getName() ) ) {
+ PropertyValue pvalue = def.getPropertyValues().getPropertyValue( "kbase" );
+ RuntimeBeanReference tbf = ( RuntimeBeanReference ) pvalue.getValue();
+ if ( kbase.equals( tbf.getBeanName() ) ) {
+ factory.addPropertyValue( "knowledgeAgent", new RuntimeBeanReference( beanName ) );
+ }
+ }
+ }
return factory.getBeanDefinition();
}
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/ResourceChangeScannerDefinitionParser.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/ResourceChangeScannerDefinitionParser.java (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/ResourceChangeScannerDefinitionParser.java 2010-07-16 05:27:41 UTC (rev 33931)
@@ -0,0 +1,31 @@
+package org.drools.container.spring.namespace;
+
+import org.drools.container.spring.beans.ConnectionBeanFactory;
+import org.drools.container.spring.beans.ResourceChangeScannerBeanFactory;
+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.ParserContext;
+import org.w3c.dom.Element;
+
+/**
+ *
+ * @author Lucas Amador
+ *
+ */
+public class ResourceChangeScannerDefinitionParser extends AbstractBeanDefinitionParser {
+
+ private static final String INTERVAL = "interval";
+
+ protected AbstractBeanDefinition parseInternal(Element element,
+ ParserContext parserContext) {
+
+ BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition( ResourceChangeScannerBeanFactory.class );
+
+ factory.addPropertyValue( INTERVAL,
+ element.getAttribute( INTERVAL ) );
+
+ return factory.getBeanDefinition();
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/SpringDroolsHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/SpringDroolsHandler.java 2010-07-16 04:59:01 UTC (rev 33930)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/SpringDroolsHandler.java 2010-07-16 05:27:41 UTC (rev 33931)
@@ -12,6 +12,9 @@
registerBeanDefinitionParser( "resource-ref",
new ResourceRefDefinitionParser() );
+ registerBeanDefinitionParser( "resource-change-scanner",
+ new ResourceChangeScannerDefinitionParser() );
+
registerBeanDefinitionParser( "model",
new ResourceDefinitionParser() );
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd 2010-07-16 04:59:01 UTC (rev 33930)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd 2010-07-16 05:27:41 UTC (rev 33931)
@@ -7,18 +7,25 @@
<xsd:element name="connection">
<xsd:complexType>
- <xsd:attribute name="id" use="optional" type="xsd:ID"/>
+ <xsd:attribute name="id" use="required" type="xsd:ID"/>
<xsd:attribute name="type" use="required" type="connectionTypeEnum"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="execution-node">
<xsd:complexType>
- <xsd:attribute name="id" use="optional" type="xsd:ID"/>
+ <xsd:attribute name="id" use="required" type="xsd:ID"/>
<xsd:attribute name="connection" use="required" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
+ <xsd:element name="resource-change-scanner">
+ <xsd:complexType>
+ <xsd:attribute name="id" use="required" type="xsd:ID"/>
+ <xsd:attribute name="interval" use="optional" type="xsd:integer"/>
+ </xsd:complexType>
+ </xsd:element>
+
<xsd:element name="resource">
<xsd:complexType>
<xsd:complexContent>
@@ -47,8 +54,8 @@
<xsd:element name="resource-ref" type="resourceRefType"/>
</xsd:choice>
- <xsd:attribute name="id" use="optional" type="xsd:ID"/>
- <xsd:attribute name="kbase" use="optional" type="xsd:string"/>
+ <xsd:attribute name="id" use="required" type="xsd:ID"/>
+ <xsd:attribute name="kbase" use="required" type="xsd:string"/>
<xsd:attribute name="new-instance" use="optional" type="xsd:boolean"/>
</xsd:complexType>
</xsd:element>
@@ -71,7 +78,7 @@
<xsd:attribute name="type" use="required" type="knowledgeSessionTypeEnum"/>
<xsd:attribute name="kbase" use="required" type="xsd:string"/>
- <xsd:attribute name="id" use="optional" type="xsd:ID"/>
+ <xsd:attribute name="id" use="required" type="xsd:ID"/>
<xsd:attribute name="node" use="optional" type="xsd:string"/>
<xsd:attribute name="name" use="optional" type="xsd:string"/>
</xsd:complexType>
Modified: 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 2010-07-16 04:59:01 UTC (rev 33930)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/SpringDroolsTest.java 2010-07-16 05:27:41 UTC (rev 33931)
@@ -12,9 +12,17 @@
import org.apache.log4j.lf5.util.StreamUtils;
import org.drools.KnowledgeBase;
import org.drools.Person;
+import org.drools.agent.KnowledgeAgent;
+import org.drools.agent.impl.KnowledgeAgentImpl;
import org.drools.builder.DirectoryLookupFactoryService;
import org.drools.core.util.FileManager;
import org.drools.grid.ExecutionNode;
+import org.drools.impl.KnowledgeBaseImpl;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
+import org.drools.impl.StatelessKnowledgeSessionImpl;
+import org.drools.io.ResourceChangeScanner;
+import org.drools.io.ResourceFactory;
+import org.drools.io.impl.ResourceChangeScannerImpl;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.StatelessKnowledgeSession;
import org.drools.server.KnowledgeService;
@@ -80,45 +88,39 @@
list.size() );
}
- public void testAgents() throws Exception {
- URL url = getClass().getResource( "testSpring.drl" );
- File file = new File( url.getFile() );
-// File dir = new File( file, "temp" );
-// dir.mkdirs()
- File dir = new File( file.getParentFile(), "temp/drl" );
- dir.mkdirs();
+ public void testAgents() throws Exception {
+ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "org/drools/container/spring/kagents-beans.xml" );
- File drlFile = new File( dir, "testSpring.drl");
- System.out.println( drlFile );
- drlFile.createNewFile();
+ ResourceChangeScannerImpl scanner = ( ResourceChangeScannerImpl ) ResourceFactory.getResourceChangeScannerService();
+ assertEquals( 5, scanner.getInterval() );
+ KnowledgeBaseImpl kbase1 = ( KnowledgeBaseImpl ) context.getBean( "kbase1" );
+ KnowledgeBaseImpl kbase2 = ( KnowledgeBaseImpl ) context.getBean( "kbase2" );
- StreamUtils.copy( url.openStream(), new FileOutputStream( drlFile ) );
- System.out.println( url );
- assertTrue( drlFile.exists() );
-//
-// ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "org/drools/container/spring/beans.xml" );
-//
-// List<String> list = new ArrayList<String>();
-// StatelessKnowledgeSession kstateless = (StatelessKnowledgeSession) context.getBean( "ksession1" );
-// kstateless.setGlobal( "list",
-// list );
-// kstateless.execute( new Person( "Darth",
-// "Cheddar",
-// 50 ) );
-// assertEquals( 2,
-// list.size() );
-//
-// list = new ArrayList<String>();
-// StatefulKnowledgeSession kstateful = ((StatefulKnowledgeSession) context.getBean( "ksession2" ));
-// kstateful.setGlobal( "list",
-// list );
-// kstateful.insert( new Person( "Darth",
-// "Cheddar",
-// 50 ) );
-// kstateful.fireAllRules();
-// assertEquals( 2,
-// list.size() );
+ KnowledgeAgentImpl kagent1 = ( KnowledgeAgentImpl ) context.getBean( "kagent1" );
+ assertSame( kagent1.getKnowledgeBase(), kbase1 );
+ assertEquals( 0, kagent1.getResourceDirectories().size() );
+ assertFalse( kagent1.isNewInstance() );
+
+ KnowledgeAgentImpl kagent2 = ( KnowledgeAgentImpl ) context.getBean( "kagent2" );
+ assertSame( kagent2.getKnowledgeBase(), kbase2 );
+ assertEquals( 1, kagent2.getResourceDirectories().size() );
+ assertFalse( kagent2.isNewInstance() );
+
+ KnowledgeAgentImpl kagent3 = ( KnowledgeAgentImpl ) context.getBean( "kagent3" );
+ assertTrue( kagent3.isNewInstance() );
+
+ StatelessKnowledgeSessionImpl ksession1 = (StatelessKnowledgeSessionImpl) context.getBean( "ksession1" );
+ assertSame( kbase1.getRuleBase(), ksession1.getRuleBase() );
+ assertSame( kagent1, ksession1.getKnowledgeAgent() );
+
+ StatefulKnowledgeSessionImpl ksession2 = (StatefulKnowledgeSessionImpl) context.getBean( "ksession2" );
+ assertSame( kbase1.getRuleBase(), ksession2.getRuleBase() );
+
+ StatelessKnowledgeSessionImpl ksession3 = (StatelessKnowledgeSessionImpl) context.getBean( "ksession3" );
+ assertSame( kagent2, ksession3.getKnowledgeAgent() );
+ assertSame( kbase2.getRuleBase(), ksession3.getRuleBase() );
+
}
public void testNode() {
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/drl/testSpring.drl
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/drl/testSpring.drl (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/drl/testSpring.drl 2010-07-16 05:27:41 UTC (rev 33931)
@@ -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
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/kagents-beans.xml
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/kagents-beans.xml 2010-07-16 04:59:01 UTC (rev 33930)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/kagents-beans.xml 2010-07-16 05:27:41 UTC (rev 33931)
@@ -3,36 +3,39 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:drools="http://drools.org/schema/drools-spring"
xmlns:drools-service="http://drools.org/schema/drools-service-spring"
- xmlns:camel="http://camel.apache.org/schema/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 http://drools.org/schema/drools-spring.xsd
http://drools.org/schema/drools-service-spring http://drools.org/schema/drools-service-spring.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
- <camelContext id="executionContext" xmlns="http://camel.apache.org/schema/spring" />
+ <drools:resource-change-scanner id="s1" interval="5" />
<drools:connection id="connection1" type="local" />
<drools:execution-node id="node1" connection="connection1" />
+ <drools:ksession id="ksession1" type="stateless" kbase="kbase1"/>
+
+ <drools:ksession id="ksession2" type="stateful" kbase="kbase1"/>
+
<drools:kbase id="kbase1" node="node1">
- <drools:resource id="resource1" type="DRL" source="classpath:org/drools/container/spring/temp/drl/testSpring.drl"/>
+ <drools:resource type="DRL" source="classpath:org/drools/container/spring/testSpring.drl"/>
</drools:kbase>
- <drools:kagent id="kagent1" kbase="kbase1" new-instance="true" />
+ <drools:kbase id="kbase2" node="node1">
+ </drools:kbase>
+
+ <drools:kbase id="kbase3" node="node1">
+ </drools:kbase>
- <drools:kagent id="kagent2" new-instance="true" >
- <drools:resource type="DRL" source="classpath:org/drools/container/spring/temp/drl"/>
+ <drools:kagent id="kagent1" kbase="kbase1" new-instance="false" />
+
+ <drools:kagent id="kagent2" kbase="kbase2" new-instance="false">
+ <drools:resource type="DRL" source="classpath:org/drools/container/spring/drl" />
</drools:kagent>
+ <drools:kagent id="kagent3" kbase="kbase3" new-instance="true" />
- <drools-service:configuration id="service-conf-1" marshaller="XSTREAM" session="ksession1">
- <drools-service:class>org.drools.model.Person</drools-service:class>
- </drools-service:configuration>
-
- <drools-service:definition id="service" node="node1" camelContext="executionContext">
- <drools-service:configuration marshaller="JAXB" session="ksession2" />
- <drools-service:configuration-ref id="service-conf-1" />
- </drools-service:definition>
+ <drools:ksession id="ksession3" type="stateless" kbase="kbase2"/>
</beans>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/impl/KnowledgeAgentImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/impl/KnowledgeAgentImpl.java 2010-07-16 04:59:01 UTC (rev 33930)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/impl/KnowledgeAgentImpl.java 2010-07-16 05:27:41 UTC (rev 33931)
@@ -137,7 +137,15 @@
public void setSystemEventListener(SystemEventListener listener) {
this.listener = listener;
}
+
+ public Set<Resource> getResourceDirectories() {
+ return this.resourceDirectories;
+ }
+ public boolean isNewInstance() {
+ return this.newInstance;
+ }
+
public void applyChangeSet(Resource resource) {
applyChangeSet(getChangeSet(resource));
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java 2010-07-16 04:59:01 UTC (rev 33930)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java 2010-07-16 05:27:41 UTC (rev 33931)
@@ -87,6 +87,10 @@
}
return this.ruleBase;
}
+
+ public KnowledgeAgent getKnowledgeAgent() {
+ return this.kagent;
+ }
public StatefulKnowledgeSession newWorkingMemory() {
if ( this.kagent != null ) {
More information about the jboss-svn-commits
mailing list