[jboss-svn-commits] JBL Code SVN: r32661 - in labs/jbossrules/trunk/drools-container/drools-spring/src: main/resources/org/drools/container/spring and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Apr 27 16:36:28 EDT 2010
Author: baunax
Date: 2010-04-27 16:36:26 -0400 (Tue, 27 Apr 2010)
New Revision: 32661
Added:
labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/DefinitionParserHelper.java
labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/JpaSessionServiceFactoryDefinitionParser.java
Modified:
labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd
labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/VariablePersistenceStrategyTest.java
labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beansVarPersistence.xml
Log:
JBRULES-2332 Drools JPA- Spring Transactions
- added a drools:jpaSessionServiceFactory namespace for easy the configuration
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/DefinitionParserHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/DefinitionParserHelper.java (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/DefinitionParserHelper.java 2010-04-27 20:36:26 UTC (rev 32661)
@@ -0,0 +1,12 @@
+package org.drools.container.spring.namespace;
+
+public class DefinitionParserHelper {
+
+ public static void emptyAttributeCheck(final String element,
+ final String attributeName,
+ final String attribute) {
+ if (attribute == null || attribute.trim().length() == 0) {
+ throw new IllegalArgumentException("<" + element + "> requires a '" + attributeName + "' attribute");
+ }
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/DefinitionParserHelper.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/JpaSessionServiceFactoryDefinitionParser.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/JpaSessionServiceFactoryDefinitionParser.java (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/JpaSessionServiceFactoryDefinitionParser.java 2010-04-27 20:36:26 UTC (rev 32661)
@@ -0,0 +1,53 @@
+package org.drools.container.spring.namespace;
+
+import static org.drools.container.spring.namespace.DefinitionParserHelper.emptyAttributeCheck;
+
+import java.util.List;
+
+import org.drools.container.spring.beans.JPASingleSessionCommandServiceFactory;
+import org.springframework.beans.factory.support.AbstractBeanDefinition;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.support.ManagedMap;
+import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
+import org.springframework.beans.factory.xml.ParserContext;
+import org.springframework.util.xml.DomUtils;
+import org.w3c.dom.Element;
+
+public class JpaSessionServiceFactoryDefinitionParser extends AbstractBeanDefinitionParser {
+
+ private static final String KBASE_ATTRIBUTE = "kbase";
+ private static final String EMF_ATTRIBUTE = "entityManagerFactory";
+ private static final String TX_MANAGER_ATTRIBUTE = "transactionManager";
+ private static final String FORCLASS_ATTRIBUTE = "forClass";
+ private static final String IMPLEMENTATION_ATTRIBUTE = "implementation";
+
+ @SuppressWarnings("unchecked")
+ @Override
+ protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
+ BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(JPASingleSessionCommandServiceFactory.class);
+
+ String kbase = element.getAttribute(KBASE_ATTRIBUTE);
+ emptyAttributeCheck(element.getLocalName(), KBASE_ATTRIBUTE, kbase);
+ factory.addPropertyReference("knowledgeBase", kbase);
+
+ String entityManagerFactory = element.getAttribute(EMF_ATTRIBUTE);
+ emptyAttributeCheck(element.getLocalName(), EMF_ATTRIBUTE, entityManagerFactory);
+ factory.addPropertyReference("entityManagerFactory", entityManagerFactory);
+
+ String txMngr = element.getAttribute(TX_MANAGER_ATTRIBUTE);
+ emptyAttributeCheck(element.getLocalName(), TX_MANAGER_ATTRIBUTE, txMngr);
+ factory.addPropertyReference("transactionManager", txMngr);
+
+ List<Element> childElems = DomUtils.getChildElementsByTagName(element, "variablePersisters");
+ if (childElems != null && childElems.size() > 0) {
+ List<Element> elems = DomUtils.getChildElementsByTagName(childElems.get(0), "persister");
+ ManagedMap persistors = new ManagedMap(childElems.size());
+ for (Element persister : elems) {
+ persistors.put(persister.getAttribute(FORCLASS_ATTRIBUTE), persister.getAttribute(IMPLEMENTATION_ATTRIBUTE));
+ }
+ factory.addPropertyValue("variablePersisters", persistors);
+ }
+
+ return factory.getBeanDefinition();
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/JpaSessionServiceFactoryDefinitionParser.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd 2010-04-27 20:32:08 UTC (rev 32660)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd 2010-04-27 20:36:26 UTC (rev 32661)
@@ -106,4 +106,26 @@
</xsd:complexType>
</xsd:element>
+ <xsd:complexType name="persisterType">
+ <xsd:attribute name="forClass" use="required" type="xsd:string"/>
+ <xsd:attribute name="implementation" use="required" type="xsd:string"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="variablePersistersType">
+ <xsd:sequence>
+ <xsd:element name="persister" type="persisterType" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="jpaSessionServiceFactory">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="variablePersisters" type="variablePersistersType" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" use="optional" type="xsd:ID"/>
+ <xsd:attribute name="kbase" use="required" type="xsd:string"/>
+ <xsd:attribute name="entityManagerFactory" use="required" type="xsd:string"/>
+ <xsd:attribute name="transactionManager" use="required" type="xsd:string"/>
+ </xsd:complexType>
+ </xsd:element>
</xsd:schema>
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/VariablePersistenceStrategyTest.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/VariablePersistenceStrategyTest.java 2010-04-27 20:32:08 UTC (rev 32660)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/VariablePersistenceStrategyTest.java 2010-04-27 20:36:26 UTC (rev 32661)
@@ -1,31 +1,20 @@
package org.drools.container.spring.beans.persistence;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-import org.drools.KnowledgeBase;
-import org.drools.KnowledgeBaseFactory;
-import org.drools.base.MapGlobalResolver;
-import org.drools.builder.KnowledgeBuilder;
-import org.drools.builder.KnowledgeBuilderError;
-import org.drools.builder.KnowledgeBuilderFactory;
-import org.drools.builder.ResourceType;
import org.drools.command.SingleSessionCommandService;
import org.drools.command.runtime.process.GetProcessInstanceCommand;
import org.drools.command.runtime.process.StartProcessCommand;
import org.drools.container.spring.beans.JPASingleSessionCommandService;
-import org.drools.io.impl.ClassPathResource;
-import org.drools.persistence.jpa.JPAKnowledgeService;
-import org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo;
-import org.drools.runtime.Environment;
-import org.drools.runtime.EnvironmentName;
-import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.runtime.process.ProcessInstance;
import org.drools.runtime.process.WorkItem;
import org.drools.runtime.process.WorkflowProcessInstance;
import org.h2.tools.DeleteDbFiles;
@@ -40,8 +29,6 @@
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import org.springframework.context.support.ClassPathXmlApplicationContext;
-import static org.junit.Assert.*;
-
public class VariablePersistenceStrategyTest {
private static final String TMPDIR = System.getProperty("java.io.tmpdir");
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beansVarPersistence.xml
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beansVarPersistence.xml 2010-04-27 20:32:08 UTC (rev 32660)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beansVarPersistence.xml 2010-04-27 20:36:26 UTC (rev 32661)
@@ -27,16 +27,12 @@
<property name="entityManagerFactory" ref="myEmf" />
</bean>
- <bean id="jpaSingleSessionCommandService" class="org.drools.container.spring.beans.JPASingleSessionCommandServiceFactory">
- <property name="knowledgeBase" ref="kbase1"/>
- <property name="entityManagerFactory" ref="myEmf"/>
- <property name="transactionManager" ref="txManager"/>
- <property name="variablePersisters">
- <map>
- <entry key="javax.persistence.Entity" value="org.drools.persistence.processinstance.persisters.JPAVariablePersister"/>
- <entry key="java.lang.String" value="org.drools.container.spring.beans.persistence.StringVariablePersister"/>
- <entry key="java.io.Serializable" value="org.drools.persistence.processinstance.persisters.SerializableVariablePersister"/>
- </map>
- </property>
- </bean>
+ <drools:jpaSessionServiceFactory id="jpaSingleSessionCommandService" kbase="kbase1"
+ entityManagerFactory="myEmf" transactionManager="txManager">
+ <drools:variablePersisters>
+ <drools:persister forClass="javax.persistence.Entity" implementation="org.drools.persistence.processinstance.persisters.JPAVariablePersister"/>
+ <drools:persister forClass="java.lang.String" implementation="org.drools.container.spring.beans.persistence.StringVariablePersister"/>
+ <drools:persister forClass="java.io.Serializable" implementation="org.drools.persistence.processinstance.persisters.SerializableVariablePersister"/>
+ </drools:variablePersisters>
+ </drools:jpaSessionServiceFactory>
</beans>
\ No newline at end of file
More information about the jboss-svn-commits
mailing list