Author: tsurdilovic
Date: 2010-01-05 12:45:59 -0500 (Tue, 05 Jan 2010)
New Revision: 11911
Added:
modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeBase.java
modules/drools/trunk/src/main/java/org/jboss/seam/drools/TemplateDataProvider.java
modules/drools/trunk/src/main/java/org/jboss/seam/drools/events/
modules/drools/trunk/src/main/java/org/jboss/seam/drools/events/KnowledgeBuilderErrorsEvent.java
modules/drools/trunk/src/main/java/org/jboss/seam/drools/events/RuleResourceAddedEvent.java
Removed:
modules/drools/trunk/src/main/java/org/jboss/seam/drools/Decision.java
modules/drools/trunk/src/main/java/org/jboss/seam/drools/DroolsActionHandler.java
modules/drools/trunk/src/main/java/org/jboss/seam/drools/DroolsAssignmentHandler.java
modules/drools/trunk/src/main/java/org/jboss/seam/drools/DroolsDecisionHandler.java
modules/drools/trunk/src/main/java/org/jboss/seam/drools/DroolsHandler.java
modules/drools/trunk/src/main/java/org/jboss/seam/drools/ManagedWorkingMemory.java
modules/drools/trunk/src/main/java/org/jboss/seam/drools/RuleAgent.java
modules/drools/trunk/src/main/java/org/jboss/seam/drools/RuleBase.java
modules/drools/trunk/src/main/java/org/jboss/seam/drools/SeamGlobalResolver.java
Modified:
modules/drools/trunk/pom.xml
Log:
Drools 5 Integration.
Modified: modules/drools/trunk/pom.xml
===================================================================
--- modules/drools/trunk/pom.xml 2010-01-05 11:43:52 UTC (rev 11910)
+++ modules/drools/trunk/pom.xml 2010-01-05 17:45:59 UTC (rev 11911)
@@ -13,7 +13,7 @@
<version>3.0.0-SNAPSHOT</version>
<name>Seam Drools</name>
- <!-- Snapshots repo to get parent -->
+ <!-- Snapshots repo to get parent -->
<repositories>
<repository>
<
id>oss.sonatype.org/jboss-snapshots</id>
@@ -35,13 +35,7 @@
<dependencies>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
+ <dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<scope>provided</scope>
@@ -51,8 +45,19 @@
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-templates</artifactId>
+ </dependency>
<dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<scope>provided</scope>
@@ -63,6 +68,14 @@
<artifactId>cdi-api</artifactId>
<scope>provided</scope>
</dependency>
+
+ <!-- non portable dependency -->
+ <dependency>
+ <groupId>org.jboss.weld</groupId>
+ <artifactId>weld-core</artifactId>
+ <version>1.0.0</version>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
Deleted: modules/drools/trunk/src/main/java/org/jboss/seam/drools/Decision.java
===================================================================
--- modules/drools/trunk/src/main/java/org/jboss/seam/drools/Decision.java 2010-01-05
11:43:52 UTC (rev 11910)
+++ modules/drools/trunk/src/main/java/org/jboss/seam/drools/Decision.java 2010-01-05
17:45:59 UTC (rev 11911)
@@ -1,21 +0,0 @@
-package org.jboss.seam.drools;
-
-/**
- * API for setting the result of a decision from rules in
- * a Drools decision handler.
- *
- */
-public class Decision
-{
- private String outcome;
-
- public String getOutcome()
- {
- return outcome;
- }
-
- public void setOutcome(String outcome)
- {
- this.outcome = outcome;
- }
-}
Deleted:
modules/drools/trunk/src/main/java/org/jboss/seam/drools/DroolsActionHandler.java
===================================================================
---
modules/drools/trunk/src/main/java/org/jboss/seam/drools/DroolsActionHandler.java 2010-01-05
11:43:52 UTC (rev 11910)
+++
modules/drools/trunk/src/main/java/org/jboss/seam/drools/DroolsActionHandler.java 2010-01-05
17:45:59 UTC (rev 11911)
@@ -1,30 +0,0 @@
-package org.jboss.seam.drools;
-
-import java.util.List;
-
-//import org.jbpm.graph.def.ActionHandler;
-//import org.jbpm.graph.exe.ExecutionContext;
-
-/**
- * A jBPM ActionHandler that delegates to a Drools WorkingMemory
- * held in a Seam context variable.
- *
- * @author Jeff Delong
- * @author Gavin King
- *
- */
-public class DroolsActionHandler extends DroolsHandler //implements ActionHandler
-{
- private static final long serialVersionUID = 7752070876220597913L;
-
- public List<String> assertObjects;
- public String workingMemoryName;
-
- //public void execute(ExecutionContext executionContext) throws Exception
- //{
- // Disabled BPM support for now
-
- //getWorkingMemory(workingMemoryName, assertObjects,
executionContext).fireAllRules();
- //}
-
-}
\ No newline at end of file
Deleted:
modules/drools/trunk/src/main/java/org/jboss/seam/drools/DroolsAssignmentHandler.java
===================================================================
---
modules/drools/trunk/src/main/java/org/jboss/seam/drools/DroolsAssignmentHandler.java 2010-01-05
11:43:52 UTC (rev 11910)
+++
modules/drools/trunk/src/main/java/org/jboss/seam/drools/DroolsAssignmentHandler.java 2010-01-05
17:45:59 UTC (rev 11911)
@@ -1,35 +0,0 @@
-package org.jboss.seam.drools;
-
-import java.util.List;
-
-import org.drools.WorkingMemory;
-//import org.jbpm.graph.exe.ExecutionContext;
-//import org.jbpm.taskmgmt.def.AssignmentHandler;
-//import org.jbpm.taskmgmt.exe.Assignable;
-
-/**
- * A jBPM AssignmentHandler that delegates to a Drools WorkingMemory
- * held in a Seam context variable.
- *
- * @author Jeff Delong
- * @author Gavin King
- *
- */
-public class DroolsAssignmentHandler extends DroolsHandler //implements
AssignmentHandler
-{
- private static final long serialVersionUID = -7114640047036854546L;
-
- public String workingMemoryName;
- public List<String> assertObjects;
-
- //public void assign(Assignable assignable, ExecutionContext executionContext) throws
Exception
- //{
- // Disabled BPM support for now
- /*
- WorkingMemory workingMemory = getWorkingMemory(workingMemoryName, assertObjects,
executionContext);
- workingMemory.setGlobal( "assignable", assignable );
- workingMemory.fireAllRules();
- */
- //}
-
-}
\ No newline at end of file
Deleted:
modules/drools/trunk/src/main/java/org/jboss/seam/drools/DroolsDecisionHandler.java
===================================================================
---
modules/drools/trunk/src/main/java/org/jboss/seam/drools/DroolsDecisionHandler.java 2010-01-05
11:43:52 UTC (rev 11910)
+++
modules/drools/trunk/src/main/java/org/jboss/seam/drools/DroolsDecisionHandler.java 2010-01-05
17:45:59 UTC (rev 11911)
@@ -1,37 +0,0 @@
-package org.jboss.seam.drools;
-
-import java.util.List;
-
-import org.drools.WorkingMemory;
-//import org.jbpm.graph.exe.ExecutionContext;
-//import org.jbpm.graph.node.DecisionHandler;
-
-/**
- * A jBPM DecisionHandler that delegates to a Drools WorkingMemory
- * held in a Seam context variable. The decision outcome is returned
- * by setting the outcome attribute of the global named "decision".
- *
- * @author Gavin King
- *
- */
-public class DroolsDecisionHandler extends DroolsHandler //implements DecisionHandler
-{
- private static final long serialVersionUID = -8900810376838166513L;
-
- public List<String> assertObjects;
- public String workingMemoryName;
-
- //public String decide(ExecutionContext executionContext) throws Exception
- //{
- // Disabled BPM support for now
- /*
- WorkingMemory workingMemory = getWorkingMemory(workingMemoryName, assertObjects,
executionContext);
- workingMemory.setGlobal( "decision", new Decision() );
- workingMemory.fireAllRules();
- return ( (Decision) workingMemory.getGlobal("decision") ).getOutcome();
- */
-
- // return null;
- //}
-
-}
\ No newline at end of file
Deleted: modules/drools/trunk/src/main/java/org/jboss/seam/drools/DroolsHandler.java
===================================================================
--- modules/drools/trunk/src/main/java/org/jboss/seam/drools/DroolsHandler.java 2010-01-05
11:43:52 UTC (rev 11910)
+++ modules/drools/trunk/src/main/java/org/jboss/seam/drools/DroolsHandler.java 2010-01-05
17:45:59 UTC (rev 11911)
@@ -1,62 +0,0 @@
-package org.jboss.seam.drools;
-
-import java.util.List;
-
-import org.drools.FactHandle;
-import org.drools.WorkingMemory;
-//import org.jbpm.graph.exe.ExecutionContext;
-//import org.jbpm.jpdl.el.ELException;
-
-/**
- * Common functionality for jBPM handlers for Drools.
- *
- * @author Jeff Delong
- * @author Gavin King
- *
- */
-public class DroolsHandler
-{
- // Disabled BPM support for now
-
- /*
- protected WorkingMemory getWorkingMemory(String workingMemoryName, List<String>
expressions, ExecutionContext executionContext)
- throws ELException
- {
- WorkingMemory workingMemory = (WorkingMemory)
Component.getInstance(workingMemoryName, true);
-
- for (String objectName: expressions)
- {
- Object object =
Expressions.instance().createValueExpression(objectName).getValue();
-
- // assert the object into the rules engine
- if (object instanceof Iterable)
- {
- for (Object element: (Iterable) object)
- {
- assertObject(workingMemory, element);
- }
- }
- else
- {
- assertObject(workingMemory, object);
- }
- }
-
- workingMemory.insert(Actor.instance());
-
- return workingMemory;
- }*/
-
- private void assertObject(WorkingMemory workingMemory, Object element)
- {
- FactHandle fact = workingMemory.getFactHandle(element);
- if (fact==null)
- {
- workingMemory.insert(element);
- }
- else
- {
- workingMemory.update(fact, element);
- }
- }
-}
Added: modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeBase.java
===================================================================
--- modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeBase.java
(rev 0)
+++ modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeBase.java 2010-01-05
17:45:59 UTC (rev 11911)
@@ -0,0 +1,252 @@
+package org.jboss.seam.drools;
+
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.Serializable;
+import java.io.StringReader;
+import java.util.Properties;
+import java.util.regex.Pattern;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Disposes;
+import javax.enterprise.inject.Produces;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.inject.Inject;
+import javax.security.auth.login.Configuration;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.drools.KnowledgeBaseConfiguration;
+import org.drools.builder.KnowledgeBuilderConfiguration;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.event.knowledgebase.KnowledgeBaseEventListener;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderError;
+import org.drools.builder.KnowledgeBuilderErrors;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.template.ObjectDataCompiler;
+import org.jboss.seam.drools.events.KnowledgeBuilderErrorsEvent;
+import org.jboss.seam.drools.events.RuleResourceAddedEvent;
+
+/**
+ * Manager component for a Drools KnowledgeBase.
+ *
+ * @author Tihomir Surdilovic
+ */
+@ApplicationScoped
+public class KnowledgeBase implements Serializable
+{
+ private static final long serialVersionUID = 8165645910387861887L;
+
+ private static final Logger log =
LoggerFactory.getLogger(org.jboss.seam.drools.KnowledgeBase.class);
+
+ private static final Pattern DIVIDER = Pattern.compile(";");
+ private static final int RESOURCE_PATH = 0;
+ private static final int RESOURCE = 1;
+ private static final int RESOURCE_TYPE = 2;
+ private static final int RESOURCE_TEMPLATE_DATA = 3;
+ private static final String RESOURCE_TYPE_URL = "url";
+ private static final String RESOURCE_TYPE_FILE = "file";
+ private static final String RESOURCE_TYPE_CLASSPATH = "classpath";
+
+ private String knowledgeBuilderConfig;
+ private String knowledgeBaseConfig;
+ private String[] ruleResources;
+ private String[] eventListeners;
+ private org.drools.KnowledgeBase kbase;
+
+ @Inject BeanManager manager;
+
+ @Produces org.drools.KnowledgeBase getKnowledgeBase() {
+ return kbase;
+ }
+
+ public void dispose(@Disposes org.drools.KnowledgeBase kbase) {
+ kbase = null;
+ }
+
+
+ // @Inject
+ public void create() throws Exception
+ {
+ KnowledgeBuilderConfiguration kbuilderconfig =
KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
+ // Only allow resource for .properties files
+ if (knowledgeBuilderConfig != null &&
knowledgeBuilderConfig.endsWith(".properties"))
+ {
+ Properties kbuilderProp = new Properties();
+ InputStream in =
this.getClass().getClassLoader().getResourceAsStream(knowledgeBuilderConfig);
+ if (in == null)
+ {
+ throw new IllegalStateException("Could not locate
knowledgeBuilderConfig: " + knowledgeBuilderConfig);
+ }
+ kbuilderProp.load(in);
+ in.close();
+ kbuilderconfig =
KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(kbuilderProp, null);
+ log.debug("KnowledgeBuilderConfiguration loaded: " +
knowledgeBuilderConfig);
+ }
+
+ KnowledgeBuilder kbuilder =
KnowledgeBuilderFactory.newKnowledgeBuilder(kbuilderconfig);
+
+ if (ruleResources != null)
+ {
+ for (String nextResource : ruleResources)
+ {
+ addResource(kbuilder, nextResource);
+ }
+ }
+
+ KnowledgeBuilderErrors kbuildererrors = kbuilder.getErrors();
+ if (kbuildererrors.size() > 0)
+ {
+ for (KnowledgeBuilderError kbuildererror : kbuildererrors)
+ {
+ log.error(kbuildererror.getMessage());
+ }
+ manager.fireEvent(new KnowledgeBuilderErrorsEvent(kbuildererrors));
+ }
+
+ KnowledgeBaseConfiguration kbaseconfig =
KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
+
+ // Only allow resource for .properties files
+ if (knowledgeBaseConfig != null &&
knowledgeBaseConfig.endsWith(".properties"))
+ {
+ Properties kbaseProp = new Properties();
+ InputStream in =
this.getClass().getClassLoader().getResourceAsStream(knowledgeBaseConfig);
+ if (in == null)
+ {
+ throw new IllegalStateException("Could not locate knowledgeBaseConfig:
" + knowledgeBaseConfig);
+ }
+ kbaseProp.load(in);
+ in.close();
+ kbaseconfig = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(kbaseProp,
null);
+ log.debug("KnowledgeBaseConfiguration loaded: " +
knowledgeBaseConfig);
+ }
+
+ kbase = KnowledgeBaseFactory.newKnowledgeBase(kbaseconfig);
+ kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+
+ if(eventListeners != null) {
+ for(String eventListener : eventListeners) {
+ addEventListener(kbase, eventListener);
+ }
+ }
+ }
+
+ protected void addEventListener(org.drools.KnowledgeBase kbase, String eventListener)
{
+ try {
+ Class eventListenerClass = Class.forName(eventListener);
+ Object eventListenerObject = eventListenerClass.newInstance();
+
+ if(eventListenerObject instanceof KnowledgeBaseEventListener) {
+ kbase.addEventListener((KnowledgeBaseEventListener) eventListenerObject);
+ } else {
+ log.debug("Event Listener " + eventListener + " is not of type
KnowledgeBaseEventListener");
+ }
+ } catch(Exception e) {
+ log.error("Error adding event listener " + e.getMessage());
+ }
+ }
+
+ protected void addResource(KnowledgeBuilder kbuilder, String resource) throws
Exception
+ {
+ String[] resourceParts = DIVIDER.split(resource.trim());
+
+ if (resourceParts.length < 3)
+ {
+ log.error("Invalid resource definition: " + resource);
+ }
+ else
+ {
+ ResourceType resourceType =
ResourceType.getResourceType(resourceParts[RESOURCE_TYPE]);
+
+ if (resourceParts.length == 4)
+ {
+ @SuppressWarnings("unchecked")
+ Bean<TemplateDataProvider> templateDataProviderBean =
(Bean<TemplateDataProvider>)
manager.getBeans(resourceParts[RESOURCE_TEMPLATE_DATA]).iterator().next();
+
+ TemplateDataProvider templateDataProvider = (TemplateDataProvider)
manager.getReference(templateDataProviderBean, Configuration.class,
manager.createCreationalContext(templateDataProviderBean));
+
+ InputStream templateStream =
this.getClass().getClassLoader().getResourceAsStream(resourceParts[RESOURCE]);
+ if (templateStream == null)
+ {
+ throw new IllegalStateException("Could not locate rule resource:
" + resourceParts[RESOURCE]);
+ }
+
+ ObjectDataCompiler converter = new ObjectDataCompiler();
+ String drl = converter.compile(templateDataProvider.getTemplateData(),
templateStream);
+ templateStream.close();
+ log.debug("Generated following DRL from template: " + drl);
+ Reader rdr = new StringReader(drl);
+
+ kbuilder.add(ResourceFactory.newReaderResource(rdr), resourceType);
+ }
+ else
+ {
+ if (resourceParts[RESOURCE_PATH].equals(RESOURCE_TYPE_URL))
+ {
+ kbuilder.add(ResourceFactory.newUrlResource(resourceParts[RESOURCE]),
resourceType);
+ manager.fireEvent(new RuleResourceAddedEvent(resourceParts[RESOURCE]));
+ }
+ else if (resourceParts[RESOURCE_PATH].equals(RESOURCE_TYPE_FILE))
+ {
+ kbuilder.add(ResourceFactory.newFileResource(resourceParts[RESOURCE]),
resourceType);
+ manager.fireEvent(new RuleResourceAddedEvent(resourceParts[RESOURCE]));
+ }
+ else if (resourceParts[RESOURCE_PATH].equals(RESOURCE_TYPE_CLASSPATH))
+ {
+
kbuilder.add(ResourceFactory.newClassPathResource(resourceParts[RESOURCE]),
resourceType);
+ manager.fireEvent(new RuleResourceAddedEvent(resourceParts[RESOURCE]));
+ }
+ else
+ {
+ log.error("Invalid resource path: " +
resourceParts[RESOURCE_PATH]);
+ }
+ }
+ }
+ }
+
+ public String getKnowledgeBuilderConfig()
+ {
+ return knowledgeBuilderConfig;
+ }
+
+ public void setKnowledgeBuilderConfig(String knowledgeBuilderConfig)
+ {
+ this.knowledgeBuilderConfig = knowledgeBuilderConfig;
+ }
+
+ public String getKnowledgeBaseConfig()
+ {
+ return knowledgeBaseConfig;
+ }
+
+ public void setKnowledgeBaseConfig(String knowledgeBaseConfig)
+ {
+ this.knowledgeBaseConfig = knowledgeBaseConfig;
+ }
+
+ public String[] getRuleResources()
+ {
+ return ruleResources;
+ }
+
+ public void setRuleResources(String[] ruleResources)
+ {
+ this.ruleResources = ruleResources;
+ }
+
+ public String[] getEventListeners()
+ {
+ return eventListeners;
+ }
+
+ public void setEventListeners(String[] eventListeners)
+ {
+ this.eventListeners = eventListeners;
+ }
+
+}
Deleted:
modules/drools/trunk/src/main/java/org/jboss/seam/drools/ManagedWorkingMemory.java
===================================================================
---
modules/drools/trunk/src/main/java/org/jboss/seam/drools/ManagedWorkingMemory.java 2010-01-05
11:43:52 UTC (rev 11910)
+++
modules/drools/trunk/src/main/java/org/jboss/seam/drools/ManagedWorkingMemory.java 2010-01-05
17:45:59 UTC (rev 11911)
@@ -1,126 +0,0 @@
-package org.jboss.seam.drools;
-
-import java.io.Serializable;
-import java.util.Set;
-
-import javax.annotation.PreDestroy;
-import javax.enterprise.context.ConversationScoped;
-import javax.inject.Inject;
-import javax.enterprise.inject.Produces;
-import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.BeanManager;
-
-import org.drools.RuleBase;
-import org.drools.StatefulSession;
-import org.drools.rule.Rule;
-import org.drools.spi.GlobalResolver;
-import org.jboss.seam.el.Expressions.ValueExpression;
-
-/**
- * A conversation-scoped Drools WorkingMemory for a named RuleBase
- *
- * @author Gavin King
- *
- */
-@ConversationScoped
-//TODO implement mutable
-public class ManagedWorkingMemory implements /*Mutable, */Serializable
-{
- private static final long serialVersionUID = -1746942080571374743L;
-
- private String ruleBaseName;
- private StatefulSession statefulSession;
- private ValueExpression<RuleBase> ruleBase;
-
- @Inject BeanManager manager;
-
- public boolean clearDirty()
- {
- return true;
- }
-
- /**
- * The name of a Seam context variable holding an
- * instance of org.drools.RuleBase
- *
- * @return a context variable name
- * @deprecated
- */
- public String getRuleBaseName()
- {
- return ruleBaseName;
- }
-
- /**
- * The name of a Seam context variable holding an
- * instance of org.drools.RuleBase
- *
- * @param ruleBaseName a context variable name
- * @deprecated
- */
- public void setRuleBaseName(String ruleBaseName)
- {
- this.ruleBaseName = ruleBaseName;
- }
-
- @Produces
- public StatefulSession getStatefulSession()
- {
- if (statefulSession==null)
- {
- statefulSession = getRuleBaseFromValueBinding().newStatefulSession();
- statefulSession.setGlobalResolver( createGlobalResolver(
statefulSession.getGlobalResolver() ) );
- }
- return statefulSession;
- }
-
- protected RuleBase getRuleBaseFromValueBinding()
- {
- RuleBase ruleBase = null;
- if (this.ruleBase!=null)
- {
- ruleBase = this.ruleBase.getValue();
- }
- else if (ruleBaseName!=null)
- {
- Set<Bean<?>> beans = manager.getBeans(ruleBaseName);
- if (beans.size() == 1) {
- //deprecated stuff
- Bean<?> bean = beans.iterator().next();
- ruleBase = (RuleBase) manager.getReference(bean, RuleBase.class,
manager.createCreationalContext(bean));
- }
- }
- else
- {
- throw new IllegalStateException("No RuleBase");
- }
-
- if (ruleBase==null)
- {
- throw new IllegalStateException("RuleBase not found: " +
ruleBaseName);
- }
- return ruleBase;
- }
-
- protected GlobalResolver createGlobalResolver(GlobalResolver delegate)
- {
- return new SeamGlobalResolver(delegate);
- }
-
- @PreDestroy
- public void destroy()
- {
- statefulSession.dispose();
- }
-
- public ValueExpression<RuleBase> getRuleBase()
- {
- return ruleBase;
- }
-
- public void setRuleBase(ValueExpression<RuleBase> ruleBase)
- {
- this.ruleBase = ruleBase;
- }
-
-}
Deleted: modules/drools/trunk/src/main/java/org/jboss/seam/drools/RuleAgent.java
===================================================================
--- modules/drools/trunk/src/main/java/org/jboss/seam/drools/RuleAgent.java 2010-01-05
11:43:52 UTC (rev 11910)
+++ modules/drools/trunk/src/main/java/org/jboss/seam/drools/RuleAgent.java 2010-01-05
17:45:59 UTC (rev 11911)
@@ -1,161 +0,0 @@
-package org.jboss.seam.drools;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-import javax.enterprise.inject.Produces;
-
-import org.jboss.seam.resources.ResourceLoader;
-import org.jboss.webbeans.log.Log;
-import org.jboss.webbeans.log.Logger;
-
-/**
- * Manager component for a rule base loaded from a drools RulesAgent
- */
-@ApplicationScoped
-public class RuleAgent
-{
- @Logger Log log;
-
- @Inject ResourceLoader resourceLoader;
-
- private org.drools.agent.RuleAgent agent;
- private String configurationFile;
-
- private String newInstance;
- private String files;
- private String url;
- private String localCacheDir;
- private String poll;
- private String configName;
-
- @Inject
- public void createAgent() throws Exception
- {
- Properties properties = new Properties();
-
- loadFromPath(properties, configurationFile);
- setLocalProperties(properties);
-
- agent = org.drools.agent.RuleAgent.newRuleAgent(properties);
- log.debug("Creating new rules agent");
- }
-
- protected void setLocalProperties(Properties properties)
- {
- if (newInstance != null) {
- properties.setProperty(org.drools.agent.RuleAgent.NEW_INSTANCE, newInstance);
- }
- if (files != null) {
- properties.setProperty(org.drools.agent.RuleAgent.FILES, files);
- }
- if (url != null) {
- properties.setProperty(org.drools.agent.RuleAgent.URLS, url);
- }
- if (localCacheDir != null) {
- properties.setProperty(org.drools.agent.RuleAgent.LOCAL_URL_CACHE,
localCacheDir);
- }
- if (poll != null) {
- properties.setProperty(org.drools.agent.RuleAgent.POLL_INTERVAL, poll);
- }
- if (configName != null) {
- properties.setProperty(org.drools.agent.RuleAgent.CONFIG_NAME, configName);
- }
-
- }
-
- protected void loadFromPath(Properties properties, String configurationFile)
- throws IOException
- {
- if (configurationFile != null) {
- InputStream inputStream =
resourceLoader.getResourceAsStream(configurationFile);
- if (inputStream != null) {
- try {
- properties.load(inputStream);
- } finally {
- inputStream.close();
- }
- }
- }
- }
-
- @Produces
- public org.drools.RuleBase getRuleBase()
- {
- return agent.getRuleBase();
- }
-
- public String getNewInstance()
- {
- return newInstance;
- }
-
- public void setNewInstance(String newInstance)
- {
- this.newInstance = newInstance;
- }
-
- public String getFiles()
- {
- return files;
- }
-
- public void setFiles(String files)
- {
- this.files = files;
- }
-
- public String getUrl()
- {
- return url;
- }
-
- public void setUrl(String url)
- {
- this.url = url;
- }
-
- public String getLocalCacheDir()
- {
- return localCacheDir;
- }
-
- public void setLocalCacheDir(String localCacheDir)
- {
- this.localCacheDir = localCacheDir;
- }
-
- public String getPoll()
- {
- return poll;
- }
-
- public void setPoll(String poll)
- {
- this.poll = poll;
- }
-
- public String getConfigName()
- {
- return configName;
- }
-
- public void setConfigName(String name)
- {
- this.configName = name;
- }
-
- public String getConfigurationFile()
- {
- return configurationFile;
- }
-
- public void setConfigurationFile(String brmsConfig)
- {
- this.configurationFile = brmsConfig;
- }
-
-}
Deleted: modules/drools/trunk/src/main/java/org/jboss/seam/drools/RuleBase.java
===================================================================
--- modules/drools/trunk/src/main/java/org/jboss/seam/drools/RuleBase.java 2010-01-05
11:43:52 UTC (rev 11910)
+++ modules/drools/trunk/src/main/java/org/jboss/seam/drools/RuleBase.java 2010-01-05
17:45:59 UTC (rev 11911)
@@ -1,120 +0,0 @@
-package org.jboss.seam.drools;
-
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-import javax.enterprise.inject.Produces;
-
-import org.drools.RuleBaseFactory;
-import org.drools.compiler.DroolsError;
-import org.drools.compiler.PackageBuilder;
-import org.drools.compiler.PackageBuilderConfiguration;
-import org.drools.compiler.RuleError;
-import org.jboss.seam.resources.ResourceLoader;
-import org.jboss.webbeans.log.Log;
-import org.jboss.webbeans.log.Logger;
-
-/**
- * Manager component for a Drools RuleBase
- *
- * @author Gavin King
- *
- */
-@ApplicationScoped
-public class RuleBase
-{
- @Logger Log log;
-
- @Inject ResourceLoader resourceLoader;
-
- private String[] ruleFiles;
- private String dslFile;
- private org.drools.RuleBase ruleBase;
-
- @Inject
- public void compileRuleBase() throws Exception
- {
- PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
- PackageBuilder builder = new PackageBuilder(conf);
-
- if (ruleFiles!=null)
- {
- for (String ruleFile: ruleFiles)
- {
- log.info("parsing rules: " + ruleFile);
- InputStream stream = getResourceAsStream(ruleFile);
- if (stream==null)
- {
- throw new IllegalStateException("could not locate rule file: " +
ruleFile);
- }
- // read in the source
- Reader drlReader = new InputStreamReader(stream);
-
- if (dslFile==null)
- {
- builder.addPackageFromDrl(drlReader);
- }
- else
- {
- Reader dslReader = new InputStreamReader( getResourceAsStream(dslFile) );
- builder.addPackageFromDrl(drlReader, dslReader);
- }
-
- if ( builder.hasErrors() )
- {
- log.error("errors parsing rules in: " + ruleFile);
- for ( DroolsError error: builder.getErrors().getErrors() )
- {
- if (error instanceof RuleError)
- {
- RuleError ruleError = (RuleError) error;
- log.error( ruleError.getMessage() + " (" + ruleFile +
':' + ruleError.getLine() + ')' );
- }
- else
- {
- log.error( error.getMessage() + " (" + ruleFile +
')' );
- }
- }
- }
- }
- }
-
- // add the package to a rulebase
- ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( builder.getPackage() );
- }
-
- @Produces
- public org.drools.RuleBase getRuleBase()
- {
- return ruleBase;
- }
-
- public String[] getRuleFiles()
- {
- return ruleFiles;
- }
-
- public void setRuleFiles(String[] ruleFiles)
- {
- this.ruleFiles = ruleFiles;
- }
-
- public String getDslFile()
- {
- return dslFile;
- }
-
- public void setDslFile(String dslFile)
- {
- this.dslFile = dslFile;
- }
-
- public InputStream getResourceAsStream(String resource)
- {
- return resourceLoader.getResourceAsStream(resource);
- }
-}
Deleted: modules/drools/trunk/src/main/java/org/jboss/seam/drools/SeamGlobalResolver.java
===================================================================
---
modules/drools/trunk/src/main/java/org/jboss/seam/drools/SeamGlobalResolver.java 2010-01-05
11:43:52 UTC (rev 11910)
+++
modules/drools/trunk/src/main/java/org/jboss/seam/drools/SeamGlobalResolver.java 2010-01-05
17:45:59 UTC (rev 11911)
@@ -1,56 +0,0 @@
-package org.jboss.seam.drools;
-
-import org.drools.spi.GlobalResolver;
-
-/**
- * Resolves Seam context variables as Drools globals
- *
- * @author Gavin King
- *
- */
-public class SeamGlobalResolver implements GlobalResolver
-{
- private static final long serialVersionUID = -2274336299784922069L;
-
- private GlobalResolver delegate;
-
- public SeamGlobalResolver(GlobalResolver delegate)
- {
- this.delegate = delegate;
- }
-
- public void setGlobal(String name, Object value)
- {
- //TODO: is this the right thing to do??
- //or: Contexts.getConversationContext().set(name, value);
- delegate.setGlobal(name, value);
- }
-
- public Object resolveGlobal(String name)
- {
- return delegate.resolveGlobal(name);
-
- // TODO enable contextual variable resolution
- /*
- if ( !Contexts.isApplicationContextActive() )
- {
- return delegate.resolveGlobal(name);
- }
- else
- {
- Object instance = Component.getInstance(name);
- if (instance==null)
- {
- instance = delegate.resolveGlobal(name);
- return instance==null ?
- Init.instance().getRootNamespace().getChild(name) :
- instance;
- }
- else
- {
- return instance;
- }
- }
- */
- }
-}
\ No newline at end of file
Added: modules/drools/trunk/src/main/java/org/jboss/seam/drools/TemplateDataProvider.java
===================================================================
--- modules/drools/trunk/src/main/java/org/jboss/seam/drools/TemplateDataProvider.java
(rev 0)
+++
modules/drools/trunk/src/main/java/org/jboss/seam/drools/TemplateDataProvider.java 2010-01-05
17:45:59 UTC (rev 11911)
@@ -0,0 +1,15 @@
+package org.jboss.seam.drools;
+
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * Interface for template data providers.
+ *
+ * @author Tihomir Surdilovic
+ *
+ */
+public interface TemplateDataProvider
+{
+ public Collection<Map<String, Object>> getTemplateData();
+}
Added:
modules/drools/trunk/src/main/java/org/jboss/seam/drools/events/KnowledgeBuilderErrorsEvent.java
===================================================================
---
modules/drools/trunk/src/main/java/org/jboss/seam/drools/events/KnowledgeBuilderErrorsEvent.java
(rev 0)
+++
modules/drools/trunk/src/main/java/org/jboss/seam/drools/events/KnowledgeBuilderErrorsEvent.java 2010-01-05
17:45:59 UTC (rev 11911)
@@ -0,0 +1,29 @@
+package org.jboss.seam.drools.events;
+
+import org.drools.builder.KnowledgeBuilderErrors;
+
+/**
+ * This event is fires in case of KnowledgeBuilder errors.
+ *
+ * @author Tihomir Surdilovic
+ */
+public class KnowledgeBuilderErrorsEvent
+{
+ private KnowledgeBuilderErrors errors;
+
+ public KnowledgeBuilderErrorsEvent(KnowledgeBuilderErrors errors)
+ {
+ this.errors = errors;
+ }
+
+ public KnowledgeBuilderErrors getErrors()
+ {
+ return errors;
+ }
+
+ public void setErrors(KnowledgeBuilderErrors errors)
+ {
+ this.errors = errors;
+ }
+
+}
Added:
modules/drools/trunk/src/main/java/org/jboss/seam/drools/events/RuleResourceAddedEvent.java
===================================================================
---
modules/drools/trunk/src/main/java/org/jboss/seam/drools/events/RuleResourceAddedEvent.java
(rev 0)
+++
modules/drools/trunk/src/main/java/org/jboss/seam/drools/events/RuleResourceAddedEvent.java 2010-01-05
17:45:59 UTC (rev 11911)
@@ -0,0 +1,26 @@
+package org.jboss.seam.drools.events;
+
+/**
+ * This event is fires when a rule resource is added.
+ *
+ * @author Tihomir Surdilovic
+ */
+public class RuleResourceAddedEvent
+{
+ String resource;
+
+ public RuleResourceAddedEvent(String resource)
+ {
+ this.resource = resource;
+ }
+
+ public String getResource()
+ {
+ return resource;
+ }
+
+ public void setResource(String resource)
+ {
+ this.resource = resource;
+ }
+}