[seam-commits] Seam SVN: r11911 - in modules/drools/trunk: src/main/java/org/jboss/seam/drools and 1 other directories.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Tue Jan 5 12:45:59 EST 2010


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
+ */
+ at 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
- *
- */
- at 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
- */
- at 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
- *
- */
- at 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;
+   }
+}



More information about the seam-commits mailing list