diff --git a/api/src/main/java/org/jboss/seam/drools/config/Drools.java b/api/src/main/java/org/jboss/seam/drools/config/Drools.java index cc360ee..8773998 100644 --- a/api/src/main/java/org/jboss/seam/drools/config/Drools.java +++ b/api/src/main/java/org/jboss/seam/drools/config/Drools.java @@ -30,7 +30,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; -import org.jboss.weld.extensions.bean.generic.GenericConfiguration; +import org.jboss.weld.extensions.bean.generic.GenericType; /** * Drools configuration file. @@ -40,36 +40,8 @@ */ @Retention(RUNTIME) @Target( { METHOD, FIELD, PARAMETER, TYPE }) -@GenericConfiguration +@GenericType(DroolsConfig.class) public @interface Drools { - public String name() default ""; - public String kbuilderConfigFile() default ""; - public String kbaseConfigFile() default ""; - public String ksessionConfigFile() default ""; - public String kagentConfigFile() default ""; - public String serializationSigningConfigFile() default ""; - - public boolean startChangeNotifierService() default false; - public boolean startChangeScannerService() default false; - public int scannerInterval() default -1; - public String agentName() default ""; - - public String loggerName() default ""; - public String loggerType() default ""; - public String loggerPath() default ""; - public int loggerInterval() default 0; - - public boolean disableSeamDelegate() default false; - - public DroolsProperty[] kbuilderProperties() default {}; - - public DroolsProperty[] kbaseProperties() default {}; - - public DroolsProperty[] ksessionProperties() default {}; - - public DroolsProperty[] kagentPropertiest() default {}; - - public DroolsProperty[] serializationSigningProperties() default {}; - + public String name() default ""; } diff --git a/api/src/main/java/org/jboss/seam/drools/config/DroolsConfig.java b/api/src/main/java/org/jboss/seam/drools/config/DroolsConfig.java new file mode 100644 index 0000000..aed1ba6 --- /dev/null +++ b/api/src/main/java/org/jboss/seam/drools/config/DroolsConfig.java @@ -0,0 +1,246 @@ +package org.jboss.seam.drools.config; + +/** + * Drools configuration parameters + * + * @author Shane Bryzak + */ +public class DroolsConfig +{ + private String kbuilderConfigFile; + private String kbaseConfigFile; + private String ksessionConfigFile; + private String kagentConfigFile; + private String serializationSigningConfigFile; + + private boolean startChangeNotifierService; + private boolean startChangeScannerService; + private int scannerInterval = -1; + private String agentName; + + private String loggerName; + private String loggerType; + private String loggerPath; + private int loggerInterval = 0; + + private boolean disableSeamDelegate; + + private DroolsProperty[] kbuilderProperties = {}; + + private DroolsProperty[] kbaseProperties = {}; + + private DroolsProperty[] ksessionProperties = {}; + + private DroolsProperty[] kagentProperties = {}; + + private DroolsProperty[] serializationSigningProperties = {}; + + public String getKBuilderConfigFile() + { + return kbuilderConfigFile; + } + + public String getKBaseConfigFile() + { + return kbaseConfigFile; + } + + public String getKSessionConfigFile() + { + return ksessionConfigFile; + } + + public String getKAgentConfigFile() + { + return kagentConfigFile; + } + + public String getSerializationSigningConfigFile() + { + return serializationSigningConfigFile; + } + + public boolean getStartChangeNotifierService() + { + return startChangeNotifierService; + } + + public boolean getStartChangeScannerService() + { + return startChangeScannerService; + } + + public int getScannerInterval() + { + return scannerInterval; + } + + public String getAgentName() + { + return agentName; + } + + public String getLoggerName() + { + return loggerName; + } + + public String getLoggerType() + { + return loggerType; + } + + public String getLoggerPath() + { + return loggerPath; + } + + public int getLoggerInterval() + { + return loggerInterval; + } + + public boolean getDisableSeamDelegate() + { + return disableSeamDelegate; + } + + public DroolsProperty[] getKBuilderProperties() + { + return kbuilderProperties; + } + + public DroolsProperty[] getKBaseProperties() + { + return kbaseProperties; + } + + public DroolsProperty[] getKSessionProperties() + { + return ksessionProperties; + } + + public DroolsProperty[] getKAgentProperties() + { + return kagentProperties; + } + + public DroolsProperty[] getSerializationSigningProperties() + { + return serializationSigningProperties; + } + + public DroolsConfig setKBuilderConfigFile(String fileName) + { + this.kbuilderConfigFile = fileName; + return this; + } + + public DroolsConfig setKBaseConfigFile(String fileName) + { + this.kbaseConfigFile = fileName; + return this; + } + + public DroolsConfig setKSessionConfigFile(String fileName) + { + this.ksessionConfigFile = fileName; + return this; + } + + public DroolsConfig setKAgentConfigFile(String fileName) + { + this.kagentConfigFile = fileName; + return this; + } + + public DroolsConfig setSerializationSigningConfigFile(String fileName) + { + this.serializationSigningConfigFile = fileName; + return this; + } + + public DroolsConfig setStartChangeNotifierService(boolean value) + { + this.startChangeNotifierService = value; + return this; + } + + public DroolsConfig setStartChangeScannerService(boolean value) + { + this.startChangeScannerService = value; + return this; + } + + public DroolsConfig setScannerInterval(int interval) + { + this.scannerInterval = interval; + return this; + } + + public DroolsConfig setAgentName(String agentName) + { + this.agentName = agentName; + return this; + } + + public DroolsConfig setLoggerName(String loggerName) + { + this.loggerName = loggerName; + return this; + } + + public DroolsConfig setLoggerType(String loggerType) + { + this.loggerType = loggerType; + return this; + } + + public DroolsConfig setLoggerPath(String loggerPath) + { + this.loggerPath = loggerPath; + return this; + } + + public DroolsConfig setLoggerInterval(int loggerInterval) + { + this.loggerInterval = loggerInterval; + return this; + } + + public DroolsConfig setDisableSeamDelegate(boolean value) + { + this.disableSeamDelegate = value; + return this; + } + + public DroolsConfig setKBuilderProperties(DroolsProperty[] properties) + { + this.kbuilderProperties = properties; + return this; + } + + public DroolsConfig setKBaseProperties(DroolsProperty[] properties) + { + this.kbaseProperties = properties; + return this; + } + + public DroolsConfig setKSessionProperties(DroolsProperty[] properties) + { + this.ksessionProperties = properties; + return this; + } + + public DroolsConfig setKAgentProperties(DroolsProperty[] properties) + { + this.kagentProperties = properties; + return this; + } + + public DroolsConfig setSerializationSigningProperties(DroolsProperty[] properties) + { + this.serializationSigningProperties = properties; + return this; + } +} diff --git a/api/src/main/java/org/jboss/seam/drools/config/RuleResources.java b/api/src/main/java/org/jboss/seam/drools/config/RuleResources.java index ec87afb..f70bda9 100644 --- a/api/src/main/java/org/jboss/seam/drools/config/RuleResources.java +++ b/api/src/main/java/org/jboss/seam/drools/config/RuleResources.java @@ -4,9 +4,9 @@ import java.util.Iterator; import java.util.List; -import org.jboss.weld.extensions.bean.generic.Generic; +import org.jboss.weld.extensions.bean.generic.GenericConfiguration; -@Generic(Drools.class) +@GenericConfiguration(Drools.class) public class RuleResources { private List ruleResources = new ArrayList(); diff --git a/impl/src/main/java/org/jboss/seam/drools/EntryPointProducer.java b/impl/src/main/java/org/jboss/seam/drools/EntryPointProducer.java index cbe455a..fd1e1ac 100644 --- a/impl/src/main/java/org/jboss/seam/drools/EntryPointProducer.java +++ b/impl/src/main/java/org/jboss/seam/drools/EntryPointProducer.java @@ -35,7 +35,7 @@ import org.jboss.seam.drools.qualifiers.EntryPoint; import org.jboss.seam.drools.qualifiers.Scanned; import org.jboss.weld.extensions.bean.generic.Generic; -import org.jboss.weld.extensions.bean.generic.GenericProduct; +import org.jboss.weld.extensions.bean.generic.GenericConfiguration; import org.jboss.weld.extensions.core.Veto; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,19 +46,16 @@ */ @Veto @SessionScoped -//@Generic(Drools.class) +@GenericConfiguration(Drools.class) public class EntryPointProducer implements Serializable { + private static final long serialVersionUID = -8162220518047452589L; + private static final Logger log = LoggerFactory.getLogger(EntryPointProducer.class); - @Inject - //@GenericProduct - StatefulKnowledgeSession statefullKsession; + @Inject @Generic StatefulKnowledgeSession statefullKsession; - @Inject - @Scanned - //@GenericProduct - StatefulKnowledgeSession statefulKnowledgeSession; + @Inject @Scanned @Generic StatefulKnowledgeSession statefulKnowledgeSession; @Produces @Default diff --git a/impl/src/main/java/org/jboss/seam/drools/ExecutionResultsProducer.java b/impl/src/main/java/org/jboss/seam/drools/ExecutionResultsProducer.java index a684294..c3cfb43 100644 --- a/impl/src/main/java/org/jboss/seam/drools/ExecutionResultsProducer.java +++ b/impl/src/main/java/org/jboss/seam/drools/ExecutionResultsProducer.java @@ -29,7 +29,6 @@ import javax.enterprise.context.Dependent; import javax.enterprise.context.RequestScoped; -import javax.enterprise.context.SessionScoped; import javax.enterprise.inject.Default; import javax.enterprise.inject.Produces; import javax.enterprise.inject.spi.BeanManager; @@ -52,11 +51,8 @@ import org.jboss.seam.drools.qualifiers.Stateful; import org.jboss.seam.drools.qualifiers.Stateless; import org.jboss.weld.extensions.bean.generic.Generic; -import org.jboss.weld.extensions.bean.generic.GenericProduct; +import org.jboss.weld.extensions.bean.generic.GenericConfiguration; import org.jboss.weld.extensions.core.Veto; -import org.jboss.weld.extensions.resourceLoader.ResourceProvider; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * @@ -64,10 +60,10 @@ */ @Veto @Dependent -//@Generic(Drools.class) +@GenericConfiguration(Drools.class) public class ExecutionResultsProducer implements Serializable { - private static final Logger log = LoggerFactory.getLogger(ExecutionResultsProducer.class); + private static final long serialVersionUID = -8930175070602484726L; @Inject BeanManager manager; @@ -77,21 +73,20 @@ public class ExecutionResultsProducer implements Serializable @Inject @Default - //@GenericProduct + @Generic StatelessKnowledgeSession statelessKsession; @Inject @Scanned - //@GenericProduct + @Generic StatelessKnowledgeSession scannedStatelessKsession; @Inject - @GenericProduct StatefulKnowledgeSession statefullKsession; @Inject @Scanned - //@GenericProduct + @Generic StatefulKnowledgeSession scannedStatefullKSession; @SuppressWarnings("unchecked") @@ -177,8 +172,8 @@ private Pipeline getPipelineStateful(StatefulKnowledgeSession ksession) } - @SuppressWarnings("unchecked") - private List getCommandList() { + @SuppressWarnings({"unchecked", "rawtypes"}) + private List getCommandList() { List commandList = new ArrayList(); Iterator iter = droolsExtension.getFactProviderSet().iterator(); while(iter.hasNext()) diff --git a/impl/src/main/java/org/jboss/seam/drools/KnowledgeAgentProducer.java b/impl/src/main/java/org/jboss/seam/drools/KnowledgeAgentProducer.java index c086b23..7b4a0f2 100644 --- a/impl/src/main/java/org/jboss/seam/drools/KnowledgeAgentProducer.java +++ b/impl/src/main/java/org/jboss/seam/drools/KnowledgeAgentProducer.java @@ -36,17 +36,15 @@ import org.drools.agent.KnowledgeAgentFactory; import org.drools.io.ResourceFactory; import org.jboss.seam.drools.config.Drools; +import org.jboss.seam.drools.config.DroolsConfig; import org.jboss.seam.drools.config.RuleResource; import org.jboss.seam.drools.config.RuleResources; import org.jboss.seam.drools.configutil.DroolsConfigUtil; import org.jboss.seam.drools.qualifiers.Scanned; import org.jboss.weld.extensions.bean.generic.Generic; -import org.jboss.weld.extensions.bean.generic.GenericBean; -import org.jboss.weld.extensions.bean.generic.GenericProduct; +import org.jboss.weld.extensions.bean.generic.GenericConfiguration; import org.jboss.weld.extensions.core.Veto; import org.jboss.weld.extensions.resourceLoader.ResourceProvider; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * KnowledgeAgent producer. @@ -55,10 +53,10 @@ */ @Veto @Dependent -//@Generic(Drools.class) +@GenericConfiguration(Drools.class) public class KnowledgeAgentProducer implements Serializable { - private static final Logger log = LoggerFactory.getLogger(KnowledgeAgentProducer.class); + private static final long serialVersionUID = 4910933194538463561L; @Inject BeanManager manager; @@ -66,15 +64,14 @@ public class KnowledgeAgentProducer implements Serializable @Inject ResourceProvider resourceProvider; - @Inject - Drools config; + @Inject @Generic DroolsConfig config; @Inject //@GenericBean DroolsConfigUtil configUtils; @Inject - //@GenericProduct + @Generic RuleResources ruleResources; @Produces @@ -95,21 +92,25 @@ public KnowledgeBase produceScannedKnowledgeBase() throws Exception private KnowledgeAgent getAgent() throws Exception { - ResourceFactory.getResourceChangeScannerService().configure(configUtils.getResourceChangeScannerConfiguration()); + ResourceFactory.getResourceChangeScannerService().configure( + configUtils.getResourceChangeScannerConfiguration()); - KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(configUtils.getKnowledgeBaseConfiguration()); - KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent(config.agentName(), kbase, configUtils.getKnowledgeAgentConfiguration()); + KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase( + configUtils.getKnowledgeBaseConfiguration()); + + KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent( + config.getAgentName(), kbase, configUtils.getKnowledgeAgentConfiguration()); Iterator resourceIterator = ruleResources.iterator(); while(resourceIterator.hasNext()) { kagent.applyChangeSet(resourceIterator.next().getDroolsResouce()); } - if (config.startChangeNotifierService()) + if (config.getStartChangeNotifierService()) { ResourceFactory.getResourceChangeNotifierService().start(); } - if (config.startChangeScannerService()) + if (config.getStartChangeScannerService()) { ResourceFactory.getResourceChangeScannerService().start(); } diff --git a/impl/src/main/java/org/jboss/seam/drools/KnowledgeBaseProducer.java b/impl/src/main/java/org/jboss/seam/drools/KnowledgeBaseProducer.java index 7a1e5e6..8e05a2d 100644 --- a/impl/src/main/java/org/jboss/seam/drools/KnowledgeBaseProducer.java +++ b/impl/src/main/java/org/jboss/seam/drools/KnowledgeBaseProducer.java @@ -28,10 +28,8 @@ import java.util.Iterator; import java.util.Map.Entry; -import javax.annotation.PostConstruct; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.context.Dependent; -import javax.enterprise.inject.Default; import javax.enterprise.inject.Produces; import javax.enterprise.inject.spi.BeanManager; import javax.inject.Inject; @@ -59,8 +57,7 @@ import org.jboss.seam.drools.events.KnowledgeBuilderErrorsEvent; import org.jboss.seam.drools.events.RuleResourceAddedEvent; import org.jboss.weld.extensions.bean.generic.Generic; -import org.jboss.weld.extensions.bean.generic.GenericBean; -import org.jboss.weld.extensions.bean.generic.GenericProduct; +import org.jboss.weld.extensions.bean.generic.GenericConfiguration; import org.jboss.weld.extensions.resourceLoader.ResourceProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -70,35 +67,26 @@ * @author Tihomir Surdilovic */ @Dependent -@Generic(Drools.class) +@GenericConfiguration(Drools.class) public class KnowledgeBaseProducer implements Serializable { + private static final long serialVersionUID = -2280137917638113018L; + private static final Logger log = LoggerFactory.getLogger(KnowledgeBaseProducer.class); - @Inject - BeanManager manager; + @Inject BeanManager manager; - @Inject - ResourceProvider resourceProvider; + @Inject ResourceProvider resourceProvider; - @Inject - DroolsExtension droolsExtension; + @Inject DroolsExtension droolsExtension; - @Inject - @GenericBean - Drools drools; - - @Inject - @GenericBean - DroolsConfigUtil configUtils; + @Inject @Generic Drools drools; - @Inject - @GenericProduct - RuleResources ruleResources; + @Inject @Generic DroolsConfigUtil configUtils; + @Inject @Generic RuleResources ruleResources; - @Produces - @ApplicationScoped + @Produces @ApplicationScoped public KnowledgeBase produceKnowledgeBase() throws Exception { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(addCustomEvaluators(configUtils.getKnowledgeBuilderConfiguration())); diff --git a/impl/src/main/java/org/jboss/seam/drools/KnowledgeLoggerProducer.java b/impl/src/main/java/org/jboss/seam/drools/KnowledgeLoggerProducer.java index d68d30d..734405a 100644 --- a/impl/src/main/java/org/jboss/seam/drools/KnowledgeLoggerProducer.java +++ b/impl/src/main/java/org/jboss/seam/drools/KnowledgeLoggerProducer.java @@ -25,7 +25,6 @@ import javax.enterprise.context.Dependent; import javax.enterprise.context.RequestScoped; -import javax.enterprise.context.SessionScoped; import javax.inject.Inject; import org.drools.event.KnowledgeRuntimeEventManager; @@ -34,11 +33,11 @@ import org.drools.runtime.StatefulKnowledgeSession; import org.drools.runtime.StatelessKnowledgeSession; import org.jboss.seam.drools.config.Drools; +import org.jboss.seam.drools.config.DroolsConfig; import org.jboss.seam.drools.configutil.DroolsConfigUtil; import org.jboss.seam.drools.qualifiers.Scanned; import org.jboss.weld.extensions.bean.generic.Generic; -import org.jboss.weld.extensions.bean.generic.GenericBean; -import org.jboss.weld.extensions.bean.generic.GenericProduct; +import org.jboss.weld.extensions.bean.generic.GenericConfiguration; import org.jboss.weld.extensions.core.Veto; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -50,34 +49,24 @@ */ @Veto @Dependent -//@Generic(Drools.class) +@GenericConfiguration(Drools.class) public class KnowledgeLoggerProducer implements Serializable { + private static final long serialVersionUID = 1537722646752938903L; + private static final Logger log = LoggerFactory.getLogger(KnowledgeLoggerProducer.class); - @Inject - Drools config; + @Inject DroolsConfig config; - @Inject - //@GenericBean - DroolsConfigUtil configUtils; + @Inject @Generic DroolsConfigUtil configUtils; - @Inject - //@GenericProduct - StatefulKnowledgeSession statefullKsession; + @Inject @Generic StatefulKnowledgeSession statefullKsession; - @Inject - @Scanned - //@GenericBean - StatefulKnowledgeSession scannedStatefullKsession; + @Inject @Scanned @Generic StatefulKnowledgeSession scannedStatefullKsession; - @Inject - @GenericBean - StatelessKnowledgeSession statelessKsession; + @Inject @Generic StatelessKnowledgeSession statelessKsession; - @Inject - @Scanned - @GenericProduct + @Inject @Scanned @Generic StatelessKnowledgeSession scannedStatelessKsession; @RequestScoped @@ -111,37 +100,44 @@ public KnowledgeRuntimeLogger produceScannedStatelessKnowledgeLogger() private KnowledgeRuntimeLogger getLogger(KnowledgeRuntimeEventManager ksession) { KnowledgeRuntimeLogger krLogger = null; - if (config.loggerType() != null && config.loggerType().equalsIgnoreCase("file")) + if (config.getLoggerType() != null && config.getLoggerType().equalsIgnoreCase("file")) { - if (config.loggerPath() == null || config.loggerName() == null) + if (config.getLoggerPath() == null || config.getLoggerName() == null) { - log.error("Invalid file logger information - path: " + config.loggerPath() + ", name: " + config.loggerName()); + log.error("Invalid file logger information - path: " + + config.getLoggerPath() + ", name: " + config.getLoggerName()); } else { - String logName = config.loggerPath() + config.loggerName() + System.currentTimeMillis(); + String logName = config.getLoggerPath() + config.getLoggerName() + System.currentTimeMillis(); krLogger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, logName); } } - else if (config.loggerType() != null && config.loggerType().equalsIgnoreCase("console")) + else if (config.getLoggerType() != null && config.getLoggerType().equalsIgnoreCase("console")) { krLogger = KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession); } - else if (config.loggerType() != null && config.loggerType().equalsIgnoreCase("threaded")) + else if (config.getLoggerType() != null && config.getLoggerType().equalsIgnoreCase("threaded")) { - if (config.loggerPath() == null || config.loggerName() == null || config.loggerInterval() == -1) + if (config.getLoggerPath() == null || config.getLoggerName() == null || + config.getLoggerInterval() == -1) { - log.error("Invalid threaded logger information - path: " + config.loggerPath() + ", name: " + config.loggerName() + ", interval: " + config.loggerInterval()); + log.error("Invalid threaded logger information - path: " + + config.getLoggerPath() + ", name: " + config.getLoggerName() + + ", interval: " + config.getLoggerInterval()); } else { - String logName = config.loggerPath() + config.loggerName() + System.currentTimeMillis(); - krLogger = KnowledgeRuntimeLoggerFactory.newThreadedFileLogger(ksession, logName, config.loggerInterval()); + String logName = config.getLoggerPath() + config.getLoggerName() + + System.currentTimeMillis(); + krLogger = KnowledgeRuntimeLoggerFactory.newThreadedFileLogger( + ksession, logName, config.getLoggerInterval()); } } else { - log.error("Invalid logger specified: type: " + config.loggerType() + " path: " + config.loggerPath() + " interval: " + config.loggerInterval()); + log.error("Invalid logger specified: type: " + config.getLoggerType() + + " path: " + config.getLoggerPath() + " interval: " + config.getLoggerInterval()); } return krLogger; } diff --git a/impl/src/main/java/org/jboss/seam/drools/KnowledgeSessionProducer.java b/impl/src/main/java/org/jboss/seam/drools/KnowledgeSessionProducer.java index a9177b3..41203d0 100644 --- a/impl/src/main/java/org/jboss/seam/drools/KnowledgeSessionProducer.java +++ b/impl/src/main/java/org/jboss/seam/drools/KnowledgeSessionProducer.java @@ -43,12 +43,12 @@ import org.drools.runtime.StatelessKnowledgeSession; import org.jboss.seam.drools.bootstrap.DroolsExtension; import org.jboss.seam.drools.config.Drools; +import org.jboss.seam.drools.config.DroolsConfig; import org.jboss.seam.drools.configutil.DroolsConfigUtil; import org.jboss.seam.drools.qualifiers.Persisted; import org.jboss.seam.drools.qualifiers.Scanned; import org.jboss.weld.extensions.bean.generic.Generic; -import org.jboss.weld.extensions.bean.generic.GenericBean; -import org.jboss.weld.extensions.bean.generic.GenericProduct; +import org.jboss.weld.extensions.bean.generic.GenericConfiguration; import org.jboss.weld.extensions.core.Veto; import org.jboss.weld.extensions.resourceLoader.ResourceProvider; import org.slf4j.Logger; @@ -60,9 +60,11 @@ */ @Veto @Dependent -//@Generic(Drools.class) +@GenericConfiguration(Drools.class) public class KnowledgeSessionProducer implements Serializable { + private static final long serialVersionUID = -1958250222223530L; + private static final Logger log = LoggerFactory.getLogger(KnowledgeSessionProducer.class); @Inject @@ -77,32 +79,25 @@ public class KnowledgeSessionProducer implements Serializable @Inject SeamDelegate delegate; - @Inject - Drools drools; + @Inject DroolsConfig config; - @Inject - //@GenericBean - DroolsConfigUtil configUtils; + @Inject @Generic DroolsConfigUtil configUtils; - @Inject - //@GenericBean - KnowledgeBase kbase; + @Inject @Generic KnowledgeBase kbase; - @Inject - @Scanned - //@GenericBean - KnowledgeBase scannedKbase; + @Inject @Scanned @Generic KnowledgeBase scannedKbase; - @Produces - @Default - @SessionScoped + @Produces @Default @SessionScoped public StatefulKnowledgeSession produceStatefulSession() throws Exception { - StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(configUtils.getKnowledgeSessionConfiguration(), null); - if (!drools.disableSeamDelegate()) + StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession( + configUtils.getKnowledgeSessionConfiguration(), null); + + if (!config.getDisableSeamDelegate()) { addSeamDelegate(ksession); } + addEventListeners(ksession); addWorkItemHandlers(ksession); addFactProviders(ksession); @@ -120,17 +115,19 @@ public StatefulKnowledgeSession producePersistedStatefulKnowledgeSession() throw return null; } - @Produces @Scanned @SessionScoped public StatefulKnowledgeSession produceScannedStatefulSession() throws Exception { - StatefulKnowledgeSession ksession = scannedKbase.newStatefulKnowledgeSession(configUtils.getKnowledgeSessionConfiguration(), null); - if (!drools.disableSeamDelegate()) + StatefulKnowledgeSession ksession = scannedKbase.newStatefulKnowledgeSession( + configUtils.getKnowledgeSessionConfiguration(), null); + + if (!config.getDisableSeamDelegate()) { addSeamDelegate(ksession); } + addEventListeners(ksession); addWorkItemHandlers(ksession); addFactProviders(ksession); @@ -144,11 +141,14 @@ public StatefulKnowledgeSession produceScannedStatefulSession() throws Exception @RequestScoped public StatelessKnowledgeSession produceScannedStatelessSession() throws Exception { - StatelessKnowledgeSession ksession = scannedKbase.newStatelessKnowledgeSession(configUtils.getKnowledgeSessionConfiguration()); - if (!drools.disableSeamDelegate()) + StatelessKnowledgeSession ksession = scannedKbase.newStatelessKnowledgeSession( + configUtils.getKnowledgeSessionConfiguration()); + + if (!config.getDisableSeamDelegate()) { addSeamDelegate(ksession); } + addEventListeners(ksession); return ksession; @@ -159,11 +159,14 @@ public StatelessKnowledgeSession produceScannedStatelessSession() throws Excepti @RequestScoped public StatelessKnowledgeSession produceStatelessSession() throws Exception { - StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession(configUtils.getKnowledgeSessionConfiguration()); - if (!drools.disableSeamDelegate()) + StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession( + configUtils.getKnowledgeSessionConfiguration()); + + if (!config.getDisableSeamDelegate()) { addSeamDelegate(ksession); } + addEventListeners(ksession); return ksession; diff --git a/impl/src/main/java/org/jboss/seam/drools/QueryResultsProducer.java b/impl/src/main/java/org/jboss/seam/drools/QueryResultsProducer.java index 79822d2..2812202 100644 --- a/impl/src/main/java/org/jboss/seam/drools/QueryResultsProducer.java +++ b/impl/src/main/java/org/jboss/seam/drools/QueryResultsProducer.java @@ -36,7 +36,7 @@ import org.jboss.seam.drools.qualifiers.Query; import org.jboss.seam.drools.qualifiers.Scanned; import org.jboss.weld.extensions.bean.generic.Generic; -import org.jboss.weld.extensions.bean.generic.GenericProduct; +import org.jboss.weld.extensions.bean.generic.GenericConfiguration; import org.jboss.weld.extensions.core.Veto; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,19 +47,16 @@ */ @Veto @Dependent -//@Generic(Drools.class) +@GenericConfiguration(Drools.class) public class QueryResultsProducer implements Serializable { + private static final long serialVersionUID = 2247193896006218358L; + private static final Logger log = LoggerFactory.getLogger(QueryResultsProducer.class); - @Inject - //@GenericProduct - StatefulKnowledgeSession statefullKsession; + @Inject @Generic StatefulKnowledgeSession statefullKsession; - @Inject - @Scanned - //@GenericProduct - StatefulKnowledgeSession scannedStatefullKsession; + @Inject @Scanned @Generic StatefulKnowledgeSession scannedStatefullKsession; @Produces @Default diff --git a/impl/src/main/java/org/jboss/seam/drools/SessionReportProducer.java b/impl/src/main/java/org/jboss/seam/drools/SessionReportProducer.java index 94f943c..5e791dc 100644 --- a/impl/src/main/java/org/jboss/seam/drools/SessionReportProducer.java +++ b/impl/src/main/java/org/jboss/seam/drools/SessionReportProducer.java @@ -24,15 +24,11 @@ import java.io.Serializable; import javax.enterprise.context.Dependent; -import javax.enterprise.context.SessionScoped; import javax.enterprise.inject.Default; import javax.enterprise.inject.Produces; import javax.enterprise.inject.spi.InjectionPoint; import javax.inject.Inject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import org.drools.core.util.debug.SessionInspector; import org.drools.core.util.debug.SessionReporter; import org.drools.core.util.debug.StatefulKnowledgeSessionInfo; @@ -41,7 +37,7 @@ import org.jboss.seam.drools.qualifiers.Scanned; import org.jboss.seam.drools.qualifiers.SessionReport; import org.jboss.weld.extensions.bean.generic.Generic; -import org.jboss.weld.extensions.bean.generic.GenericProduct; +import org.jboss.weld.extensions.bean.generic.GenericConfiguration; import org.jboss.weld.extensions.core.Veto; /** @@ -50,32 +46,31 @@ */ @Veto @Dependent -//@Generic(Drools.class) +@GenericConfiguration(Drools.class) public class SessionReportProducer implements Serializable { - private static final Logger log = LoggerFactory.getLogger(SessionReportProducer.class); - - @Inject - //@GenericProduct - StatefulKnowledgeSession statefullKsession; + private static final long serialVersionUID = -796317512311188655L; + + @Inject @Generic StatefulKnowledgeSession statefullKsession; - @Inject - @Scanned - //@GenericProduct - StatefulKnowledgeSession scannedStatefullKsession; + @Inject @Scanned @Generic StatefulKnowledgeSession scannedStatefullKsession; @Produces @Default @SessionReport public SessionReportWrapper produceSessionReport(InjectionPoint ip) { - return generate(statefullKsession, ip.getAnnotated().getAnnotation(SessionReport.class).name(), ip.getAnnotated().getAnnotation(SessionReport.class).template()); + return generate(statefullKsession, + ip.getAnnotated().getAnnotation(SessionReport.class).name(), + ip.getAnnotated().getAnnotation(SessionReport.class).template()); } @Produces @Scanned @SessionReport public SessionReportWrapper produceScannedSessionReport(InjectionPoint ip) { - return generate(scannedStatefullKsession, ip.getAnnotated().getAnnotation(SessionReport.class).name(), ip.getAnnotated().getAnnotation(SessionReport.class).template()); + return generate(scannedStatefullKsession, + ip.getAnnotated().getAnnotation(SessionReport.class).name(), + ip.getAnnotated().getAnnotation(SessionReport.class).template()); } private SessionReportWrapper generate(StatefulKnowledgeSession ksession, String name, String template) { diff --git a/impl/src/main/java/org/jboss/seam/drools/configutil/DroolsConfigUtil.java b/impl/src/main/java/org/jboss/seam/drools/configutil/DroolsConfigUtil.java index 09f956a..6bedd58 100644 --- a/impl/src/main/java/org/jboss/seam/drools/configutil/DroolsConfigUtil.java +++ b/impl/src/main/java/org/jboss/seam/drools/configutil/DroolsConfigUtil.java @@ -5,8 +5,8 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Map; -import java.util.Properties; import java.util.Map.Entry; +import java.util.Properties; import javax.annotation.PostConstruct; import javax.enterprise.context.ApplicationScoped; @@ -22,24 +22,26 @@ import org.drools.io.ResourceFactory; import org.drools.runtime.KnowledgeSessionConfiguration; import org.jboss.seam.drools.config.Drools; +import org.jboss.seam.drools.config.DroolsConfig; import org.jboss.seam.drools.config.DroolsProperty; import org.jboss.seam.drools.utils.ConfigUtils; -import org.jboss.weld.extensions.bean.generic.Generic; +import org.jboss.weld.extensions.bean.generic.GenericConfiguration; import org.jboss.weld.extensions.resourceLoader.ResourceProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -@Generic(Drools.class) +@GenericConfiguration(Drools.class) @ApplicationScoped public class DroolsConfigUtil implements Serializable { + private static final long serialVersionUID = 3602744739839624526L; + private static final Logger log = LoggerFactory.getLogger(DroolsConfigUtil.class); @Inject ResourceProvider resourceProvider; - @Inject - Drools config; + @Inject DroolsConfig config; private final Map kbuilderPropertiesMap = new HashMap(); private final Map kbasePropertiesMap = new HashMap(); @@ -50,20 +52,25 @@ public class DroolsConfigUtil implements Serializable @PostConstruct public void setup() { - readProperties(kbuilderPropertiesMap, config.kbuilderProperties(), config.kbuilderConfigFile()); - readProperties(kbasePropertiesMap, config.kbaseProperties(), config.kbaseConfigFile()); - readProperties(ksessionPropertiesMap, config.ksessionProperties(), config.ksessionConfigFile()); - readProperties(kagentPropertiestMap, config.kagentPropertiest(), config.kagentConfigFile()); - readProperties(serializationSigningPropertiesMap, config.serializationSigningProperties(), config.serializationSigningConfigFile()); + readProperties(kbuilderPropertiesMap, config.getKBuilderProperties(), config.getKBuilderConfigFile()); + readProperties(kbasePropertiesMap, config.getKBaseProperties(), config.getKBaseConfigFile()); + readProperties(ksessionPropertiesMap, config.getKSessionProperties(), config.getKSessionConfigFile()); + readProperties(kagentPropertiestMap, config.getKAgentProperties(), config.getKAgentConfigFile()); + readProperties(serializationSigningPropertiesMap, config.getSerializationSigningProperties(), + config.getSerializationSigningConfigFile()); } public ResourceChangeScannerConfiguration getResourceChangeScannerConfiguration() { - ResourceChangeScannerConfiguration sconf = ResourceFactory.getResourceChangeScannerService().newResourceChangeScannerConfiguration(); - if (config.scannerInterval() >= 0) + ResourceChangeScannerConfiguration sconf = ResourceFactory + .getResourceChangeScannerService() + .newResourceChangeScannerConfiguration(); + + if (config.getScannerInterval() >= 0) { - sconf.setProperty("drools.resource.scanner.interval", String.valueOf(config.scannerInterval())); + sconf.setProperty("drools.resource.scanner.interval", String.valueOf(config.getScannerInterval())); } + return sconf; } diff --git a/impl/src/test/java/org/jboss/seam/drools/test/kbase/KBaseTestRuleResources.java b/impl/src/test/java/org/jboss/seam/drools/test/kbase/KBaseTestRuleResources.java index da3936c..f0d10bb 100644 --- a/impl/src/test/java/org/jboss/seam/drools/test/kbase/KBaseTestRuleResources.java +++ b/impl/src/test/java/org/jboss/seam/drools/test/kbase/KBaseTestRuleResources.java @@ -10,7 +10,7 @@ public class KBaseTestRuleResources { - @Drools(kbuilderConfigFile = "kbuilderconfig.properties", kbaseConfigFile = "kbaseconfig.properties") + @Drools//(kbuilderConfigFile = "kbuilderconfig.properties", kbaseConfigFile = "kbaseconfig.properties") @Produces @ApplicationScoped @CreditRules @@ -19,7 +19,7 @@ public RuleResources configureCreditRules() return new RuleResources().add(new RuleResource("classpath:kbasetest.drl", "DRL", "forkbasetest")); } - @Drools(kbuilderProperties = { @DroolsProperty(name="drools.dialect.default", value="java") }) + @Drools//(kbuilderProperties = { @DroolsProperty(name="drools.dialect.default", value="java") }) @Produces @ApplicationScoped @DebitRules