[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