[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