[jboss-svn-commits] JBL Code SVN: r31685 - labs/jbossrules/trunk/osgi-bundles/org.drools.osgi.test/src/test/java/org/drools/osgi/integrationtests.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Feb 15 19:41:41 EST 2010
Author: mark.proctor at jboss.com
Date: 2010-02-15 19:41:40 -0500 (Mon, 15 Feb 2010)
New Revision: 31685
Added:
labs/jbossrules/trunk/osgi-bundles/org.drools.osgi.test/src/test/java/org/drools/osgi/integrationtests/JpaOsgiTest.java
Modified:
labs/jbossrules/trunk/osgi-bundles/org.drools.osgi.test/src/test/java/org/drools/osgi/integrationtests/SimpleOsgiTest.java
Log:
JBRULES-2351 OSGi Ready
-trying to get JPA to work now
Added: labs/jbossrules/trunk/osgi-bundles/org.drools.osgi.test/src/test/java/org/drools/osgi/integrationtests/JpaOsgiTest.java
===================================================================
--- labs/jbossrules/trunk/osgi-bundles/org.drools.osgi.test/src/test/java/org/drools/osgi/integrationtests/JpaOsgiTest.java (rev 0)
+++ labs/jbossrules/trunk/osgi-bundles/org.drools.osgi.test/src/test/java/org/drools/osgi/integrationtests/JpaOsgiTest.java 2010-02-16 00:41:40 UTC (rev 31685)
@@ -0,0 +1,206 @@
+package org.drools.osgi.integrationtests;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.naming.InitialContext;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+import javax.transaction.UserTransaction;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseConfiguration;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.base.MapGlobalResolver;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderConfiguration;
+import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactoryService;
+import org.drools.osgi.test.AbstractDroolsSpringDMTest;
+import org.drools.persistence.jpa.impl.JPAKnowledgeServiceProviderImpl;
+import org.drools.runtime.Environment;
+import org.drools.runtime.EnvironmentName;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.util.ServiceRegistry;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.Constants;
+import org.osgi.framework.ServiceReference;
+import org.springframework.osgi.util.OsgiStringUtils;
+import org.test.Cheese;
+import org.test.Person;
+import org.test.decisiontable.Dummy;
+
+import bitronix.tm.TransactionManagerServices;
+import bitronix.tm.resource.jdbc.PoolingDataSource;
+
+public class JpaOsgiTest extends AbstractDroolsSpringDMTest {
+
+ PoolingDataSource ds1;
+ private EntityManagerFactory emf;
+
+ protected void onSetUp() throws Exception {
+ super.onSetUp();
+
+ ds1 = new PoolingDataSource();
+ ds1.setUniqueName( "jdbc/testDS1" );
+ ds1.setClassName( "org.h2.jdbcx.JdbcDataSource" );
+ ds1.setMaxPoolSize( 3 );
+ ds1.setAllowLocalTransactions( true );
+ ds1.getDriverProperties().put( "user",
+ "sa" );
+ ds1.getDriverProperties().put( "password",
+ "sasa" );
+ ds1.getDriverProperties().put( "URL",
+ "jdbc:h2:mem:mydb" );
+ ds1.init();
+ //
+ // Bundle jpaBundle = null;
+ // for ( Bundle bundle : bundleContext.getBundles() ) {
+ // if ( "org.drools.persistence-jpa".equals( bundle.getSymbolicName() ) ) {
+ // jpaBundle = bundle;
+ // break;
+ // }
+ // }
+
+ URL url = getClass().getClassLoader().getResource( "META-INF/persistence.xml" );
+ System.out.println( url );
+
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader( getClass().getClassLoader() );
+ emf = Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" );
+ } finally {
+ Thread.currentThread().setContextClassLoader( cl );
+ }
+ emf = Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" );
+
+ }
+
+ protected void onTearDown() throws Exception {
+ emf.close();
+ ds1.close();
+ super.onTearDown();
+ }
+
+ public void testPersistenceWithUserTransactions() throws Exception {
+ ServiceReference serviceRef = bundleContext.getServiceReference( ServiceRegistry.class.getName() );
+ ServiceRegistry registry = (ServiceRegistry) bundleContext.getService( serviceRef );
+
+ KnowledgeBuilderFactoryService knowledgeBuilderFactoryService = registry.get( KnowledgeBuilderFactoryService.class );
+ KnowledgeBaseFactoryService knowledgeBaseFactoryService = registry.get( KnowledgeBaseFactoryService.class );
+ ResourceFactoryService resourceFactoryService = registry.get( ResourceFactoryService.class );
+
+ String str = "";
+ str += "package org.drools.test\n";
+ str += "global java.util.List list\n";
+ str += "rule rule1\n";
+ str += "when\n";
+ str += " $i : Integer(intValue > 0)\n";
+ str += "then\n";
+ str += " list.add( $i );\n";
+ str += "end\n";
+ str += "\n";
+
+ KnowledgeBuilder kbuilder = knowledgeBuilderFactoryService.newKnowledgeBuilder();
+ kbuilder.add( resourceFactoryService.newByteArrayResource( str.getBytes() ),
+ ResourceType.DRL );
+ KnowledgeBase kbase = knowledgeBaseFactoryService.newKnowledgeBase();
+
+ if ( kbuilder.hasErrors() ) {
+ fail( kbuilder.getErrors().toString() );
+ }
+
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ EntityManagerFactory emf = Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" );
+ Environment env = knowledgeBaseFactoryService.newEnvironment();
+ env.set( EnvironmentName.ENTITY_MANAGER_FACTORY,
+ emf );
+ env.set( EnvironmentName.TRANSACTION_MANAGER,
+ TransactionManagerServices.getTransactionManager() );
+ env.set( EnvironmentName.GLOBALS,
+ new MapGlobalResolver() );
+
+ UserTransaction ut = (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" );
+ ut.begin();
+ JPAKnowledgeServiceProviderImpl jpaService = new JPAKnowledgeServiceProviderImpl();
+
+ StatefulKnowledgeSession ksession = jpaService.newStatefulKnowledgeSession( kbase,
+ null,
+ env );
+ ut.commit();
+
+ // EntityManager em = emf.createEntityManager();
+ // SessionInfo sInfo = em.find( SessionInfo.class, 1 );
+ // assertNotNull( sInfo );
+ // //System.out.println( "session creation : " + sInfo.getVersion() );
+ // em.close();
+
+ List list = new ArrayList();
+
+ // insert and commit
+ ut = (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" );
+ ut.begin();
+ ksession.setGlobal( "list",
+ list );
+ ksession.insert( 1 );
+ ksession.insert( 2 );
+ ut.commit();
+ //
+ // insert and rollback
+ ut = (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" );
+ ut.begin();
+ ksession.insert( 3 );
+ ut.rollback();
+
+ // check we rolled back the state changes from the 3rd insert
+ ut = (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" );
+ ut.begin();
+ ksession.fireAllRules();
+ ut.commit();
+ assertEquals( 2,
+ list.size() );
+
+ // insert and commit
+ ut = (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" );
+ ut.begin();
+ ksession.insert( 3 );
+ ksession.insert( 4 );
+ ut.commit();
+
+ // rollback again, this is testing that we can do consequetive rollbacks and commits without issue
+ ut = (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" );
+ ut.begin();
+ ksession.insert( 5 );
+ ksession.insert( 6 );
+ ut.rollback();
+
+ ksession.fireAllRules();
+
+ assertEquals( 4,
+ list.size() );
+
+ // now load the ksession
+ ut = (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" );
+ ut.begin();
+ ksession = jpaService.loadStatefulKnowledgeSession( ksession.getId(),
+ kbase,
+ null,
+ env );
+ ut.commit();
+
+ ut = (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" );
+ ut.begin();
+ ksession.insert( 7 );
+ ksession.insert( 8 );
+ ut.commit();
+
+ ksession.fireAllRules();
+
+ assertEquals( 6,
+ list.size() );
+ }
+
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/osgi-bundles/org.drools.osgi.test/src/test/java/org/drools/osgi/integrationtests/SimpleOsgiTest.java
===================================================================
--- labs/jbossrules/trunk/osgi-bundles/org.drools.osgi.test/src/test/java/org/drools/osgi/integrationtests/SimpleOsgiTest.java 2010-02-16 00:40:20 UTC (rev 31684)
+++ labs/jbossrules/trunk/osgi-bundles/org.drools.osgi.test/src/test/java/org/drools/osgi/integrationtests/SimpleOsgiTest.java 2010-02-16 00:41:40 UTC (rev 31685)
@@ -42,7 +42,8 @@
Bundle[] bundles = bundleContext.getBundles();
System.out.println( "bundles: " );
for ( int i = 0; i < bundles.length; i++ ) {
- System.out.print( OsgiStringUtils.nullSafeName( bundles[i] ) );
+
+ System.out.print( bundles[i].getSymbolicName() );
System.out.print( ", " );
}
System.out.println();
More information about the jboss-svn-commits
mailing list