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

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Fri Jan 8 01:22:39 EST 2010


Author: tsurdilovic
Date: 2010-01-08 01:22:38 -0500 (Fri, 08 Jan 2010)
New Revision: 11934

Added:
   modules/drools/trunk/src/main/java/org/jboss/seam/drools/FactProvider.java
   modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeSessionManagerConfig.java
   modules/drools/trunk/src/main/java/org/jboss/seam/drools/events/KnowledgeSessionCreatedEvent.java
Modified:
   modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeBaseManager.java
   modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeBaseManagerConfig.java
   modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeSessionManager.java
Log:
Drools 5 integration.

Added: modules/drools/trunk/src/main/java/org/jboss/seam/drools/FactProvider.java
===================================================================
--- modules/drools/trunk/src/main/java/org/jboss/seam/drools/FactProvider.java	                        (rev 0)
+++ modules/drools/trunk/src/main/java/org/jboss/seam/drools/FactProvider.java	2010-01-08 06:22:38 UTC (rev 11934)
@@ -0,0 +1,20 @@
+package org.jboss.seam.drools;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Interface for fact providers.
+ * 
+ * @author Tihomir Surdilovic
+ * 
+ */
+public interface FactProvider
+{
+   public List<Object> getFacts();
+   public void setFacts(List<Object> facts);
+   
+   public Map<String, Object> getGlobals();
+   public void setGlobals(Map<String, Object> globals);
+   
+}
\ No newline at end of file

Modified: modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeBaseManager.java
===================================================================
--- modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeBaseManager.java	2010-01-08 02:48:00 UTC (rev 11933)
+++ modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeBaseManager.java	2010-01-08 06:22:38 UTC (rev 11934)
@@ -5,7 +5,6 @@
 import java.io.StringReader;
 import java.util.Properties;
 
-import javax.annotation.PostConstruct;
 import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.inject.Disposes;
 import javax.enterprise.inject.Produces;
@@ -41,7 +40,6 @@
    private static final Logger log = LoggerFactory.getLogger(KnowledgeBaseManager.class);
    
    private KnowledgeBaseManagerConfig kbaseManagerConfig;
-   private KnowledgeBase kbase;
 
    @Inject
    BeanManager manager;
@@ -53,19 +51,9 @@
 
    @Produces
    @ApplicationScoped
-   public KnowledgeBase getKBase()
+   public KnowledgeBase createKBase() throws Exception
    {
-      return kbase;
-   }
-
-   public void disposeKBase(@Disposes KnowledgeBase kbase)
-   {
-      kbase = null;
-   }
-
-   @PostConstruct
-   private void createKBase() throws Exception
-   {
+      KnowledgeBase kbase;
       KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(getKnowledgeBuilderConfiguration());
       
       for (String nextResource : kbaseManagerConfig.getRuleResources())
@@ -93,8 +81,14 @@
             addEventListener(kbase, eventListener);
          }
       }
-   } 
+      return kbase;
+   }
    
+   public void disposeKBase(@Disposes KnowledgeBase kbase)
+   {
+      kbase = null;
+   }
+   
    private void addEventListener(org.drools.KnowledgeBase kbase, String eventListener) {
       try {
          @SuppressWarnings("unchecked")
@@ -163,19 +157,24 @@
    public KnowledgeBuilderConfiguration getKnowledgeBuilderConfiguration() throws Exception
    {
       KnowledgeBuilderConfiguration kbuilderconfig = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
-      // Only allow resource for .properties files
-      if (kbaseManagerConfig.getKnowledgeBuilderConfig() != null && kbaseManagerConfig.getKnowledgeBuilderConfig().endsWith(".properties"))
-      {
-         Properties kbuilderProp = new Properties();
-         InputStream in = this.getClass().getClassLoader().getResourceAsStream(kbaseManagerConfig.getKnowledgeBuilderConfig());
-         if (in == null)
+      if(kbaseManagerConfig.getKnowledgeBuilderConfigProp() != null) {
+         kbuilderconfig = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(kbaseManagerConfig.getKnowledgeBuilderConfigProp(), null);
+         log.debug("KnowledgeBuilderConfiguration loaded: " + kbaseManagerConfig.getKnowledgeBuilderConfigProp());
+      } else {
+         // Only allow resource for .properties files
+         if (kbaseManagerConfig.getKnowledgeBuilderConfig() != null && kbaseManagerConfig.getKnowledgeBuilderConfig().endsWith(".properties"))
          {
-            throw new IllegalStateException("Could not locate knowledgeBuilderConfig: " + kbaseManagerConfig.getKnowledgeBuilderConfig());
+            Properties kbuilderProp = new Properties();
+            InputStream in = this.getClass().getClassLoader().getResourceAsStream(kbaseManagerConfig.getKnowledgeBuilderConfig());
+            if (in == null)
+            {
+               throw new IllegalStateException("Could not locate knowledgeBuilderConfig: " + kbaseManagerConfig.getKnowledgeBuilderConfig());
+            }
+            kbuilderProp.load(in);
+            in.close();
+            kbuilderconfig = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(kbuilderProp, null);
+            log.debug("KnowledgeBuilderConfiguration loaded: " + kbaseManagerConfig.getKnowledgeBuilderConfig());
          }
-         kbuilderProp.load(in);
-         in.close();
-         kbuilderconfig = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(kbuilderProp, null);
-         log.debug("KnowledgeBuilderConfiguration loaded: " + kbaseManagerConfig.getKnowledgeBuilderConfig());
       }
       return kbuilderconfig;
    }
@@ -184,19 +183,24 @@
    {
       KnowledgeBaseConfiguration kbaseconfig = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
 
-      // Only allow resource for .properties files
-      if (kbaseManagerConfig.getKnowledgeBaseConfig() != null && kbaseManagerConfig.getKnowledgeBaseConfig().endsWith(".properties"))
-      {
-         Properties kbaseProp = new Properties();
-         InputStream in = this.getClass().getClassLoader().getResourceAsStream(kbaseManagerConfig.getKnowledgeBaseConfig());
-         if (in == null)
+      if(kbaseManagerConfig.getKnowledgeBaseConfigProp() != null) {
+         kbaseconfig = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(kbaseManagerConfig.getKnowledgeBaseConfigProp(), null);
+         log.debug("KnowledgeBaseConfiguration loaded: " + kbaseManagerConfig.getKnowledgeBaseConfigProp());
+      } else {
+         // Only allow resource for .properties files
+         if (kbaseManagerConfig.getKnowledgeBaseConfig() != null && kbaseManagerConfig.getKnowledgeBaseConfig().endsWith(".properties"))
          {
-            throw new IllegalStateException("Could not locate knowledgeBaseConfig: " + kbaseManagerConfig.getKnowledgeBaseConfig());
+            Properties kbaseProp = new Properties();
+            InputStream in = this.getClass().getClassLoader().getResourceAsStream(kbaseManagerConfig.getKnowledgeBaseConfig());
+            if (in == null)
+            {
+               throw new IllegalStateException("Could not locate knowledgeBaseConfig: " + kbaseManagerConfig.getKnowledgeBaseConfig());
+            }
+            kbaseProp.load(in);
+            in.close();
+            kbaseconfig = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(kbaseProp, null);
+            log.debug("KnowledgeBaseConfiguration loaded: " + kbaseManagerConfig.getKnowledgeBaseConfig());
          }
-         kbaseProp.load(in);
-         in.close();
-         kbaseconfig = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(kbaseProp, null);
-         log.debug("KnowledgeBaseConfiguration loaded: " + kbaseManagerConfig.getKnowledgeBaseConfig());
       }
       return kbaseconfig;
    }

Modified: modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeBaseManagerConfig.java
===================================================================
--- modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeBaseManagerConfig.java	2010-01-08 02:48:00 UTC (rev 11933)
+++ modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeBaseManagerConfig.java	2010-01-08 06:22:38 UTC (rev 11934)
@@ -1,25 +1,15 @@
 package org.jboss.seam.drools;
 
-import java.io.InputStream;
 import java.util.Properties;
 import java.util.regex.Pattern;
 
-import org.drools.KnowledgeBaseConfiguration;
-import org.drools.KnowledgeBaseFactory;
-import org.drools.builder.KnowledgeBuilderConfiguration;
-import org.drools.builder.KnowledgeBuilderFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 /**
- * Drools KnowledgeBaseManager Configuration.
+ * KnowledgeBaseManager Configuration.
  * 
  * @author Tihomir Surdilovic
  */
 public class KnowledgeBaseManagerConfig
 {
-   private static final Logger log = LoggerFactory.getLogger(KnowledgeBaseManagerConfig.class);
-
    private static final Pattern DIVIDER = Pattern.compile(";");
    private static final int RESOURCE_PATH = 0;
    private static final int RESOURCE = 1;
@@ -32,6 +22,8 @@
 
    private String knowledgeBuilderConfig;
    private String knowledgeBaseConfig;
+   private Properties knowledgeBuilderConfigProp;
+   private Properties knowledgeBaseConfigProp;
    private String[] ruleResources;
    private String[] eventListeners;
    
@@ -99,4 +91,26 @@
       this.eventListeners = eventListeners;
    }
 
+   public Properties getKnowledgeBuilderConfigProp()
+   {
+      return knowledgeBuilderConfigProp;
+   }
+
+   public void setKnowledgeBuilderConfigProp(Properties knowledgeBuilderConfigProp)
+   {
+      this.knowledgeBuilderConfigProp = knowledgeBuilderConfigProp;
+   }
+
+   public Properties getKnowledgeBaseConfigProp()
+   {
+      return knowledgeBaseConfigProp;
+   }
+
+   public void setKnowledgeBaseConfigProp(Properties knowledgeBaseConfigProp)
+   {
+      this.knowledgeBaseConfigProp = knowledgeBaseConfigProp;
+   }
+   
+   
+
 }

Modified: modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeSessionManager.java
===================================================================
--- modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeSessionManager.java	2010-01-08 02:48:00 UTC (rev 11933)
+++ modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeSessionManager.java	2010-01-08 06:22:38 UTC (rev 11934)
@@ -1,13 +1,29 @@
 package org.jboss.seam.drools;
 
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.annotation.PreDestroy;
 import javax.enterprise.context.Dependent;
+import javax.enterprise.context.RequestScoped;
+import javax.enterprise.inject.Disposes;
 import javax.enterprise.inject.Produces;
 import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.InjectionPoint;
 import javax.inject.Inject;
+import javax.inject.Named;
 
 import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.logger.KnowledgeRuntimeLogger;
+import org.drools.runtime.KnowledgeSessionConfiguration;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.StatelessKnowledgeSession;
+import org.jboss.seam.drools.events.KnowledgeSessionCreatedEvent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -20,19 +36,84 @@
 {
    private static final Logger log = LoggerFactory.getLogger(KnowledgeSessionManager.class);
 
+   private KnowledgeSessionManagerConfig ksessionManagerConfig;
+   private KnowledgeRuntimeLogger statelessKLogger;
+   private Map<Integer, KnowledgeRuntimeLogger> statefulKnowledgeLoggers = new Hashtable<Integer, KnowledgeRuntimeLogger>();
+
    @Inject
    BeanManager manager;
-   
-   @Inject 
+
+   @Inject
    KnowledgeBase kbase;
-   
+
+   @Inject
+   public KnowledgeSessionManager(KnowledgeSessionManagerConfig ksessionManagerConfig)
+   {
+      this.ksessionManagerConfig = ksessionManagerConfig;
+   }
+
    @Produces
-   public StatefulKnowledgeSession getStatefulSession() {
-      return null; // for now
+   @Named
+   public StatefulKnowledgeSession getStatefulSession(InjectionPoint injectionPoint) throws Exception
+   {
+      StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(getKSessionConfig(), null);
+      //addEventListeners(ksession);
+      //addWorkItemHandlers(ksession);
+      //addAuditLog(ksession);
+      manager.fireEvent(new KnowledgeSessionCreatedEvent(ksession.getId()));
+      return ksession;
    }
-   
+
+   public void disposeStatefulSession(@Disposes StatefulKnowledgeSession statefulSession)
+   {
+      if (statefulKnowledgeLoggers.get(statefulSession.getId()) != null)
+      {
+         statefulKnowledgeLoggers.get(statefulSession.getId()).close();
+      }
+      statefulSession.dispose();
+   }
+
    @Produces
-   public StatelessKnowledgeSession getStatelessSession() {
-      return null; // for now
+   @Named
+   public StatelessKnowledgeSession getStatelessSession(InjectionPoint injectionPoint) throws Exception 
+   {
+      StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession(getKSessionConfig());
+      //addEventListeners(ksession);
+      //addAuditLog(ksession);
+      manager.fireEvent(new KnowledgeSessionCreatedEvent(-1));
+      return ksession;
    }
+
+   public void disposeStatelessSession(@Disposes StatelessKnowledgeSession statelessSession)
+   {
+      if (statelessKLogger != null)
+      {
+         statelessKLogger.close();
+      }
+   }
+
+   private KnowledgeSessionConfiguration getKSessionConfig() throws Exception
+   {
+      KnowledgeSessionConfiguration ksessionConfig = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
+      if(ksessionManagerConfig.getKnowledgeSessionConfigProp() != null) {
+         ksessionConfig = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(ksessionManagerConfig.getKnowledgeSessionConfigProp());
+      } else {
+         // Only allow resource for .properties files
+         if (ksessionManagerConfig.getKnowledgeSessionConfig() != null && ksessionManagerConfig.getKnowledgeSessionConfig().endsWith(".properties"))
+         {
+            Properties ksessionProp = new Properties();
+            InputStream in = this.getClass().getClassLoader().getResourceAsStream(ksessionManagerConfig.getKnowledgeSessionConfig());
+            if (in == null)
+            {
+               throw new IllegalStateException("Could not locate knowledgeSessionrConfig: " + ksessionManagerConfig.getKnowledgeSessionConfig());
+            }
+            ksessionProp.load(in);
+            in.close();
+            ksessionConfig = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(ksessionProp);
+            log.debug("KnowledgeSessionConfiguration loaded: " + ksessionManagerConfig.getKnowledgeSessionConfig());
+         }
+      }
+      return ksessionConfig;
+   }
+
 }

Added: modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeSessionManagerConfig.java
===================================================================
--- modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeSessionManagerConfig.java	                        (rev 0)
+++ modules/drools/trunk/src/main/java/org/jboss/seam/drools/KnowledgeSessionManagerConfig.java	2010-01-08 06:22:38 UTC (rev 11934)
@@ -0,0 +1,63 @@
+package org.jboss.seam.drools;
+
+import java.util.Properties;
+import java.util.regex.Pattern;
+
+/**
+ * KnowledgeSessionManager Configuration.
+ * 
+ * @author Tihomir Surdilovic
+ */
+public class KnowledgeSessionManagerConfig
+{ 
+   private static final Pattern DIVIDER = Pattern.compile(";");
+   private static final int WORKITEMHANDLER_NAME = 0;
+   private static final int WORKITEMHANDLER_TYPE = 1;
+   
+   private String[] eventListeners;
+   private String[] workItemHandlers;
+   private String knowledgeSessionConfig;
+   private Properties knowledgeSessionConfigProp;
+   private String auditLog;
+   public String[] getEventListeners()
+   {
+      return eventListeners;
+   }
+   public void setEventListeners(String[] eventListeners)
+   {
+      this.eventListeners = eventListeners;
+   }
+   public String[] getWorkItemHandlers()
+   {
+      return workItemHandlers;
+   }
+   public void setWorkItemHandlers(String[] workItemHandlers)
+   {
+      this.workItemHandlers = workItemHandlers;
+   }
+   public String getKnowledgeSessionConfig()
+   {
+      return knowledgeSessionConfig;
+   }
+   public void setKnowledgeSessionConfig(String knowledgeSessionConfig)
+   {
+      this.knowledgeSessionConfig = knowledgeSessionConfig;
+   }
+   public String getAuditLog()
+   {
+      return auditLog;
+   }
+   public void setAuditLog(String auditLog)
+   {
+      this.auditLog = auditLog;
+   }
+   public Properties getKnowledgeSessionConfigProp()
+   {
+      return knowledgeSessionConfigProp;
+   }
+   public void setKnowledgeSessionConfigProp(Properties knowledgeSessionConfigProp)
+   {
+      this.knowledgeSessionConfigProp = knowledgeSessionConfigProp;
+   }
+
+}

Added: modules/drools/trunk/src/main/java/org/jboss/seam/drools/events/KnowledgeSessionCreatedEvent.java
===================================================================
--- modules/drools/trunk/src/main/java/org/jboss/seam/drools/events/KnowledgeSessionCreatedEvent.java	                        (rev 0)
+++ modules/drools/trunk/src/main/java/org/jboss/seam/drools/events/KnowledgeSessionCreatedEvent.java	2010-01-08 06:22:38 UTC (rev 11934)
@@ -0,0 +1,26 @@
+package org.jboss.seam.drools.events;
+
+/**
+ * This event is fires when Stateful or Stateless KnowledgeSession is created.
+ *  
+ * @author Tihomir Surdilovic
+ */
+public class KnowledgeSessionCreatedEvent
+{
+   private int sessionId;
+   
+   public KnowledgeSessionCreatedEvent(int sessionId) {
+      this.sessionId = sessionId;
+   }
+
+   public int getSessionId()
+   {
+      return sessionId;
+   }
+
+   public void setSessionId(int sessionId)
+   {
+      this.sessionId = sessionId;
+   }
+   
+}



More information about the seam-commits mailing list