[jboss-svn-commits] JBL Code SVN: r21620 - in labs/jbossrules/trunk/drools-core/src: test/java/org/drools/persistence/memory and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Aug 19 01:23:08 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-08-19 01:23:08 -0400 (Tue, 19 Aug 2008)
New Revision: 21620

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/ByteArraySnapshotter.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/DroolsXid.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/PersistenceManager.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/StatefulSessionSnapshotter.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/Transaction.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryPersistenceManagerTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryPersistenceSessionTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryXaResourceTest.java
Log:
JBRULES-1738 Support XAResource transactions and generic save points
JBRULES-1739 in-memory XAResource
-MemoryPersistenceManager now works with sessions

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/ByteArraySnapshotter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/ByteArraySnapshotter.java	2008-08-19 05:05:09 UTC (rev 21619)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/ByteArraySnapshotter.java	2008-08-19 05:23:08 UTC (rev 21620)
@@ -5,6 +5,6 @@
 
 public interface ByteArraySnapshotter {
     public byte[] getSnapshot();
-    
-    public void loadSnapshot(byte[] bytes);       
+
+    public void loadSnapshot(byte[] bytes);
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/DroolsXid.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/DroolsXid.java	2008-08-19 05:05:09 UTC (rev 21619)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/DroolsXid.java	2008-08-19 05:23:08 UTC (rev 21620)
@@ -1,38 +1,62 @@
 package org.drools.persistence;
 
-import javax.transaction.xa.*;
+import javax.transaction.xa.Xid;
 
-    
-    public class DroolsXid implements Xid
-    {
-        protected int formatId;
-        protected byte gtrid[];
-        protected byte bqual[];
+public class DroolsXid
+    implements
+    Xid {
+    protected int  formatId;
+    protected byte gtrid[];
+    protected byte bqual[];
 
-        public DroolsXid()
-        {
-        }
+    public DroolsXid() {
+    }
 
-        public DroolsXid(int formatId, byte gtrid[], byte bqual[])
-        {
-            this.formatId = formatId;
-            this.gtrid = gtrid;
-            this.bqual = bqual;
-        }
+    public DroolsXid(int formatId,
+                     byte gtrid[],
+                     byte bqual[]) {
+        this.formatId = formatId;
+        this.gtrid = gtrid;
+        this.bqual = bqual;
+    }
 
+    public int getFormatId() {
+        return formatId;
+    }
 
-        public int getFormatId()
-        {
-            return formatId;
+    public byte[] getBranchQualifier() {
+        return bqual;
+    }
+
+    public byte[] getGlobalTransactionId() {
+        return gtrid;
+    }
+
+    public String toString() {
+        int hexVal;
+        StringBuffer sb = new StringBuffer( 512 );
+        sb.append( "formatId=" + formatId );
+        sb.append( " gtrid(" + gtrid.length + ")={0x" );
+        for ( int i = 0; i < gtrid.length; i++ ) {
+            hexVal = gtrid[i] & 0xFF;
+            if ( hexVal < 0x10 ) {
+                sb.append( "0" + Integer.toHexString( gtrid[i] & 0xFF ) );
+            } else {
+                sb.append( Integer.toHexString( gtrid[i] & 0xFF ) );
+            }
         }
 
-        public byte[] getBranchQualifier()
-        {
-            return bqual;
+        sb.append( "} bqual(" + bqual.length + ")={0x" );
+        for ( int i = 0; i < bqual.length; i++ ) {
+            hexVal = bqual[i] & 0xFF;
+            if ( hexVal < 0x10 ) {
+                sb.append( "0" + Integer.toHexString( bqual[i] & 0xFF ) );
+            } else {
+                sb.append( Integer.toHexString( bqual[i] & 0xFF ) );
+            }
         }
 
-        public byte[] getGlobalTransactionId()
-        {
-            return gtrid;
-        }
+        sb.append( "}" );
+        return sb.toString();
     }
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/PersistenceManager.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/PersistenceManager.java	2008-08-19 05:05:09 UTC (rev 21619)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/PersistenceManager.java	2008-08-19 05:23:08 UTC (rev 21620)
@@ -2,15 +2,14 @@
 
 import javax.transaction.xa.XAResource;
 
-
 public interface PersistenceManager {
 
-	XAResource getXAResource();
+    XAResource getXAResource();
 
-	Transaction getTransaction();
+    Transaction getTransaction();
 
-	void save();
+    void save();
 
-	void load();
+    void load();
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/StatefulSessionSnapshotter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/StatefulSessionSnapshotter.java	2008-08-19 05:05:09 UTC (rev 21619)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/StatefulSessionSnapshotter.java	2008-08-19 05:23:08 UTC (rev 21620)
@@ -9,32 +9,40 @@
 import org.drools.marshalling.DefaultMarshaller;
 import org.drools.marshalling.Marshaller;
 
-public class StatefulSessionSnapshotter implements ByteArraySnapshotter{
-	StatefulSession session;
-    Marshaller marshaller = new DefaultMarshaller();
-	
-	public StatefulSessionSnapshotter(StatefulSession session) {
-		this.session = session;
-	}
+public class StatefulSessionSnapshotter
+    implements
+    ByteArraySnapshotter {
+    StatefulSession session;
+    Marshaller      marshaller = new DefaultMarshaller();
 
-	public byte[] getSnapshot() {
+    public StatefulSessionSnapshotter(StatefulSession session) {
+        this.session = session;
+    }
+
+    public byte[] getSnapshot() {
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         try {
-            marshaller.write( baos, (InternalRuleBase) session.getRuleBase(), session );
-        } catch (IOException e) {
-        	throw new RuntimeException( "Unable to get session snapshot", e );
+            marshaller.write( baos,
+                              (InternalRuleBase) session.getRuleBase(),
+                              session );
+        } catch ( IOException e ) {
+            throw new RuntimeException( "Unable to get session snapshot",
+                                        e );
         }
-        
+
         return baos.toByteArray();
-	}
+    }
 
-	public void loadSnapshot(byte[] bytes) {
+    public void loadSnapshot(byte[] bytes) {
         ByteArrayInputStream bais = new ByteArrayInputStream( bytes );
         try {
-            marshaller.read( bais, (InternalRuleBase) session.getRuleBase(), session );
-        } catch (Exception e) {
-        	throw new RuntimeException( "Unable to load session snapshot", e );
+            marshaller.read( bais,
+                             (InternalRuleBase) session.getRuleBase(),
+                             session );
+        } catch ( Exception e ) {
+            throw new RuntimeException( "Unable to load session snapshot",
+                                        e );
         }
-		
-	}
+
+    }
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/Transaction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/Transaction.java	2008-08-19 05:05:09 UTC (rev 21619)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/Transaction.java	2008-08-19 05:23:08 UTC (rev 21620)
@@ -5,30 +5,33 @@
 import javax.transaction.xa.Xid;
 
 public class Transaction {
-    private Xid xid;    
-    
-    XAResource xaResource;
-    
-    public Transaction(Xid xid, XAResource xaResource) {
+    private Xid xid;
+
+    XAResource  xaResource;
+
+    public Transaction(Xid xid,
+                       XAResource xaResource) {
         this.xid = xid;
         this.xaResource = xaResource;
     }
-    
+
     public Xid getXid() {
         return xid;
-    }    
-    
+    }
+
     public void start() throws XAException {
-        this.xaResource.start( xid, XAResource.TMNOFLAGS );
+        this.xaResource.start( xid,
+                               XAResource.TMNOFLAGS );
     }
-    
+
     public void rollback() throws XAException {
-    	this.xaResource.rollback( xid );
+        this.xaResource.rollback( xid );
     }
-    
+
     public void commit() throws XAException {
-        this.xaResource.commit( xid, true );
-    }        
+        this.xaResource.commit( xid,
+                                true );
+    }
 
     public int hashCode() {
         return xid.hashCode();
@@ -43,6 +46,6 @@
             if ( other.xid != null ) return false;
         } else if ( !xid.equals( other.xid ) ) return false;
         return true;
-    }       
-     
+    }
+
 }

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryPersistenceManagerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryPersistenceManagerTest.java	2008-08-19 05:05:09 UTC (rev 21619)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryPersistenceManagerTest.java	2008-08-19 05:23:08 UTC (rev 21620)
@@ -4,100 +4,114 @@
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
+import junit.framework.TestCase;
+
 import org.drools.persistence.DroolsXid;
-import org.drools.persistence.memory.MemoryPersistenceManager;
-import org.drools.persistence.memory.MemoryXaResource;
 import org.drools.transaction.MockByteArraySnapshotter;
 
-import junit.framework.TestCase;
+public class MemoryPersistenceManagerTest extends TestCase {
+    private byte[]           data1 = new byte[]{1, 1, 1, 1, 1};
+    private byte[]           data2 = new byte[]{1, 1, 1, 1, 0};
+    private byte[]           data3 = new byte[]{1, 1, 1, 0, 0};
 
-public class MemoryPersistenceManagerTest extends  TestCase {
-    private byte[] data1 = new byte[] { 1, 1, 1, 1, 1 };
-    private byte[] data2 = new byte[] { 1, 1, 1, 1, 0 };
-    private byte[] data3 = new byte[] { 1, 1, 1, 0, 0 };
-    
     MockByteArraySnapshotter snapshotter;
     MemoryPersistenceManager pm;
-    
+
     protected void setUp() throws Exception {
-    	snapshotter =  new MockByteArraySnapshotter();
+        snapshotter = new MockByteArraySnapshotter();
         pm = new MemoryPersistenceManager( snapshotter );
     }
-    
+
     public void testSave() {
-    	snapshotter.loadSnapshot( data1 );
-    	pm.save();
-        assertTrue( assertEquals( data1, snapshotter.bytes ) );
-        
-    	snapshotter.loadSnapshot( data2 );    	
-    	assertTrue( assertEquals( data2, snapshotter.bytes ) );
-    	
-    	pm.load();    	
-    	assertTrue( assertEquals( data1, snapshotter.bytes ) );    
+        snapshotter.loadSnapshot( data1 );
+        pm.save();
+        assertTrue( assertEquals( data1,
+                                  snapshotter.bytes ) );
+
+        snapshotter.loadSnapshot( data2 );
+        assertTrue( assertEquals( data2,
+                                  snapshotter.bytes ) );
+
+        pm.load();
+        assertTrue( assertEquals( data1,
+                                  snapshotter.bytes ) );
     }
-    
+
     public void testSaveInOpenTransaction() throws XAException {
-    	snapshotter.loadSnapshot( data1 );
-    	
-    	XAResource xa = pm.getXAResource();    	
-        Xid xid = new DroolsXid(100, new byte[]{0x01}, new byte[]{0x01});        
-        xa.start(xid, XAResource.TMNOFLAGS);
-        
+        snapshotter.loadSnapshot( data1 );
+
+        XAResource xa = pm.getXAResource();
+        Xid xid = new DroolsXid( 100,
+                                 new byte[]{0x01},
+                                 new byte[]{0x01} );
+        xa.start( xid,
+                  XAResource.TMNOFLAGS );
+
         try {
-        	pm.save();
-        	fail( "save should fail as the session currently has an open transaction" );
-        } catch ( Exception e) {
-        	// success
+            pm.save();
+            fail( "save should fail as the session currently has an open transaction" );
+        } catch ( Exception e ) {
+            // success
         }
     }
-    
+
     public void testLoadInOpenTransaction() throws XAException {
-    	snapshotter.loadSnapshot( data1 );
-    	pm.save();
-    	
-    	XAResource xa = pm.getXAResource();    	
-        Xid xid = new DroolsXid(100, new byte[]{0x01}, new byte[]{0x01});        
-        xa.start(xid, XAResource.TMNOFLAGS);
-        
+        snapshotter.loadSnapshot( data1 );
+        pm.save();
+
+        XAResource xa = pm.getXAResource();
+        Xid xid = new DroolsXid( 100,
+                                 new byte[]{0x01},
+                                 new byte[]{0x01} );
+        xa.start( xid,
+                  XAResource.TMNOFLAGS );
+
         try {
-        	pm.load();
-        	fail( "load should fail as the session currently has an open transaction" );
-        } catch ( Exception e) {
-        	// success
+            pm.load();
+            fail( "load should fail as the session currently has an open transaction" );
+        } catch ( Exception e ) {
+            // success
         }
-    }    
-    
+    }
+
     public void testLoadSaveAfterTransaction() throws Exception {
-    	snapshotter.loadSnapshot( data1 );    	
-    	XAResource xa = pm.getXAResource();    	
-        Xid xid = new DroolsXid(100, new byte[]{0x01}, new byte[]{0x01});        
-        xa.start(xid, XAResource.TMNOFLAGS);
+        snapshotter.loadSnapshot( data1 );
+        XAResource xa = pm.getXAResource();
+        Xid xid = new DroolsXid( 100,
+                                 new byte[]{0x01},
+                                 new byte[]{0x01} );
+        xa.start( xid,
+                  XAResource.TMNOFLAGS );
 
-        
         snapshotter.loadSnapshot( data2 );
-        xa.commit(xid, true);        
-        
+        xa.commit( xid,
+                   true );
+
         pm.save();
-    	assertTrue( assertEquals( data2, snapshotter.bytes ) );  
-    	    	
+        assertTrue( assertEquals( data2,
+                                  snapshotter.bytes ) );
+
         snapshotter.loadSnapshot( data3 );
-    	assertTrue( assertEquals( data3, snapshotter.bytes ) );
+        assertTrue( assertEquals( data3,
+                                  snapshotter.bytes ) );
 
         pm.load();
-    	assertTrue( assertEquals( data2, snapshotter.bytes ) );
+        assertTrue( assertEquals( data2,
+                                  snapshotter.bytes ) );
     }
-    
-    public boolean assertEquals( byte[] bytes1, byte[] bytes2) {
+
+    public boolean assertEquals(byte[] bytes1,
+                                byte[] bytes2) {
         if ( bytes1.length != bytes2.length ) {
             return false;
         }
-        
+
         for ( int i = 0; i < bytes1.length; i++ ) {
             if ( bytes1[i] != bytes2[i] ) {
                 return false;
             }
         }
-        
+
         return true;
-    }    
+    }
 }

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryPersistenceSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryPersistenceSessionTest.java	2008-08-19 05:05:09 UTC (rev 21619)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryPersistenceSessionTest.java	2008-08-19 05:23:08 UTC (rev 21620)
@@ -7,9 +7,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.transaction.xa.XAException;
-import javax.transaction.xa.XAResource;
-import javax.transaction.xa.Xid;
+import junit.framework.TestCase;
 
 import org.drools.Person;
 import org.drools.RuleBase;
@@ -23,20 +21,12 @@
 import org.drools.base.evaluators.EqualityEvaluatorsDefinition;
 import org.drools.base.evaluators.Operator;
 import org.drools.common.InternalWorkingMemory;
-import org.drools.examples.manners.Context;
-import org.drools.examples.manners.Count;
-import org.drools.examples.manners.Guest;
-import org.drools.examples.manners.Path;
-import org.drools.examples.manners.Seating;
-import org.drools.persistence.DroolsXid;
 import org.drools.persistence.StatefulSessionSnapshotter;
 import org.drools.persistence.Transaction;
-import org.drools.persistence.memory.MemoryPersistenceManager;
-import org.drools.persistence.memory.MemoryXaResource;
 import org.drools.rule.Declaration;
 import org.drools.rule.InvalidRuleException;
+import org.drools.rule.Package;
 import org.drools.rule.Pattern;
-import org.drools.rule.Package;
 import org.drools.rule.Rule;
 import org.drools.rule.VariableConstraint;
 import org.drools.spi.BetaNodeFieldConstraint;
@@ -46,10 +36,7 @@
 import org.drools.spi.InternalReadAccessor;
 import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.Tuple;
-import org.drools.transaction.MockByteArraySnapshotter;
 
-import junit.framework.TestCase;
-
 public class MemoryPersistenceSessionTest extends TestCase {
     private byte[]          data1 = new byte[]{1, 1, 1, 1, 1};
     private byte[]          data2 = new byte[]{1, 1, 1, 1, 0};
@@ -60,81 +47,95 @@
     public void testSave() throws Exception {
         RuleBase ruleBase = RuleBaseFactory.newRuleBase();
         Package pkg = new Package( "org.drools.test" );
-        pkg.addGlobal( "list", List.class );
+        pkg.addGlobal( "list",
+                       List.class );
         pkg.setClassFieldAccessorCache( new ClassFieldAccessorCache( Thread.currentThread().getContextClassLoader() ) );
         store = pkg.getClassFieldAccessorStore();
         store.setEagerWire( true );
-        
-        pkg.addRule( getFindPersonRule() );        
+
+        pkg.addRule( getFindPersonRule() );
         ruleBase.addPackage( pkg );
-        
 
         StatefulSession session = ruleBase.newStatefulSession();
         List list = new ArrayList();
-        session.setGlobal( "list", list );
-        Person p1 = new Person("boba fet", 500);
+        session.setGlobal( "list",
+                           list );
+        Person p1 = new Person( "boba fet",
+                                500 );
         session.insert( p1 );
-        
+
         MemoryPersistenceManager pm = new MemoryPersistenceManager( new StatefulSessionSnapshotter( session ) );
         pm.save();
-        
-        
-        Person p2 = new Person("boba fet", 500);
-        Person p3 = new Person("boba fet", 500);
+
+        Person p2 = new Person( "boba fet",
+                                500 );
+        Person p3 = new Person( "boba fet",
+                                500 );
         session.insert( p2 );
-        session.insert( p3 );        
+        session.insert( p3 );
         session.insert( new String( "boba fet" ) );
-        assertEquals( 4, ((InternalWorkingMemory)session).getObjectStore().size() );
-        session.fireAllRules();        
-        assertEquals(3, list.size() );        
-        
+        assertEquals( 4,
+                      ((InternalWorkingMemory) session).getObjectStore().size() );
+        session.fireAllRules();
+        assertEquals( 3,
+                      list.size() );
+
         pm.load();
         list.clear();
         session.insert( new String( "boba fet" ) );
-        session.fireAllRules();        
-        assertEquals( 1, list.size() );             
-        assertEquals( 2, ((InternalWorkingMemory)session).getObjectStore().size() );
+        session.fireAllRules();
+        assertEquals( 1,
+                      list.size() );
+        assertEquals( 2,
+                      ((InternalWorkingMemory) session).getObjectStore().size() );
     }
-    
+
     public void testTransactionWithRollback() throws Exception {
         RuleBase ruleBase = RuleBaseFactory.newRuleBase();
         Package pkg = new Package( "org.drools.test" );
-        pkg.addGlobal( "list", List.class );
+        pkg.addGlobal( "list",
+                       List.class );
         pkg.setClassFieldAccessorCache( new ClassFieldAccessorCache( Thread.currentThread().getContextClassLoader() ) );
         store = pkg.getClassFieldAccessorStore();
         store.setEagerWire( true );
-        
-        pkg.addRule( getFindPersonRule() );        
+
+        pkg.addRule( getFindPersonRule() );
         ruleBase.addPackage( pkg );
-        
 
         StatefulSession session = ruleBase.newStatefulSession();
         List list = new ArrayList();
-        session.setGlobal( "list", list );
-        Person p1 = new Person("boba fet", 500);
+        session.setGlobal( "list",
+                           list );
+        Person p1 = new Person( "boba fet",
+                                500 );
         session.insert( p1 );
-        
+
         MemoryPersistenceManager pm = new MemoryPersistenceManager( new StatefulSessionSnapshotter( session ) );
         Transaction t = pm.getTransaction();
         t.start();
-        
-        
-        Person p2 = new Person("boba fet", 500);
-        Person p3 = new Person("boba fet", 500);
+
+        Person p2 = new Person( "boba fet",
+                                500 );
+        Person p3 = new Person( "boba fet",
+                                500 );
         session.insert( p2 );
-        session.insert( p3 );        
+        session.insert( p3 );
         session.insert( new String( "boba fet" ) );
-        assertEquals( 4, ((InternalWorkingMemory)session).getObjectStore().size() );
-        session.fireAllRules();        
-        assertEquals(3, list.size() );        
-        
+        assertEquals( 4,
+                      ((InternalWorkingMemory) session).getObjectStore().size() );
+        session.fireAllRules();
+        assertEquals( 3,
+                      list.size() );
+
         t.rollback();
         list.clear();
         session.insert( new String( "boba fet" ) );
-        session.fireAllRules();        
-        assertEquals( 1, list.size() );             
-        assertEquals( 2, ((InternalWorkingMemory)session).getObjectStore().size() );
-    }    
+        session.fireAllRules();
+        assertEquals( 1,
+                      list.size() );
+        assertEquals( 2,
+                      ((InternalWorkingMemory) session).getObjectStore().size() );
+    }
 
     private Rule getFindPersonRule() throws IntrospectionException,
                                     InvalidRuleException {

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryXaResourceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryXaResourceTest.java	2008-08-19 05:05:09 UTC (rev 21619)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryXaResourceTest.java	2008-08-19 05:23:08 UTC (rev 21620)
@@ -3,118 +3,144 @@
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
+import junit.framework.TestCase;
+
 import org.drools.persistence.DroolsXid;
-import org.drools.persistence.memory.MemoryPersistenceManager;
-import org.drools.persistence.memory.MemoryXaResource;
 import org.drools.transaction.MockByteArraySnapshotter;
 
-import junit.framework.TestCase;
+public class MemoryXaResourceTest extends TestCase {
+    private byte[]           data1 = new byte[]{1, 1, 1, 1, 1};
+    private byte[]           data2 = new byte[]{1, 1, 1, 1, 0};
+    private byte[]           data3 = new byte[]{1, 1, 1, 0, 0};
 
-public class MemoryXaResourceTest extends  TestCase {
-    private byte[] data1 = new byte[] { 1, 1, 1, 1, 1 };
-    private byte[] data2 = new byte[] { 1, 1, 1, 1, 0 };
-    private byte[] data3 = new byte[] { 1, 1, 1, 0, 0 };
-    
     MockByteArraySnapshotter snapshotter;
     MemoryPersistenceManager pm;
-    
+
     protected void setUp() throws Exception {
-    	snapshotter =  new MockByteArraySnapshotter();
+        snapshotter = new MockByteArraySnapshotter();
         pm = new MemoryPersistenceManager( snapshotter );
     }
-    
+
     public void testInitFields() {
         MemoryXaResource xa = pm.getXAResource();
-        
+
         // make sure these are initialised correctly
-        assertEquals( 0, xa.list.size() );
-        assertNull( pm.lastSave );              
+        assertEquals( 0,
+                      xa.list.size() );
+        assertNull( pm.lastSave );
     }
-    
+
     public void testSingleTransactionWithRollBack() throws Exception {
         MemoryXaResource xa = pm.getXAResource();
-        
-        Xid xid = new DroolsXid(100, new byte[]{0x01}, new byte[]{0x01});
 
-        
-        snapshotter.bytes = data1;        
-        xa.start(xid, XAResource.TMNOFLAGS);
-        assertEquals( 1, xa.list.size() ); // we only have one transaction
-        assertSame( xa.data.get( xa.list.get( 0 )), pm.lastSave ); // lastSave is always set to begin of the first transaction
-        
+        Xid xid = new DroolsXid( 100,
+                                 new byte[]{0x01},
+                                 new byte[]{0x01} );
+
+        snapshotter.bytes = data1;
+        xa.start( xid,
+                  XAResource.TMNOFLAGS );
+        assertEquals( 1,
+                      xa.list.size() ); // we only have one transaction
+        assertSame( xa.data.get( xa.list.get( 0 ) ),
+                    pm.lastSave ); // lastSave is always set to begin of the first transaction
+
         snapshotter.bytes = data2;
-        xa.rollback(xid);      
-        
-        assertTrue( assertEquals( data1, snapshotter.bytes ) );
+        xa.rollback( xid );
+
+        assertTrue( assertEquals( data1,
+                                  snapshotter.bytes ) );
         assertTrue( xa.list.isEmpty() );
-        assertTrue( xa.data.isEmpty() );        
+        assertTrue( xa.data.isEmpty() );
     }
-    
+
     public void testSingleTransactionWithCommit() throws Exception {
         MemoryXaResource xa = pm.getXAResource();
-        
-        Xid xid = new DroolsXid(100, new byte[]{0x01}, new byte[]{0x01});
-        
-        snapshotter.bytes = data1;        
-        xa.start(xid, XAResource.TMNOFLAGS);
-        
+
+        Xid xid = new DroolsXid( 100,
+                                 new byte[]{0x01},
+                                 new byte[]{0x01} );
+
+        snapshotter.bytes = data1;
+        xa.start( xid,
+                  XAResource.TMNOFLAGS );
+
         snapshotter.bytes = data2;
-        xa.commit(xid, true);
-        
+        xa.commit( xid,
+                   true );
+
         // check levels are empty and that lastsave was updated to be the same as end
-        assertEquals( 0, xa.list.size() );
-        assertSame( data2, pm.lastSave );
-        
+        assertEquals( 0,
+                      xa.list.size() );
+        assertSame( data2,
+                    pm.lastSave );
+
         // should do nothing as there is nothing to rollback
-        xa.rollback(xid);
-        
-        assertTrue( assertEquals( data2, snapshotter.bytes ) );        
+        xa.rollback( xid );
+
+        assertTrue( assertEquals( data2,
+                                  snapshotter.bytes ) );
         assertTrue( xa.list.isEmpty() );
         assertTrue( xa.data.isEmpty() );
-    }         
-    
+    }
+
     public void testMultipleTransactions() throws Exception {
         MemoryXaResource xa = pm.getXAResource();
-        
-        Xid xid1 = new DroolsXid(100, new byte[]{0x01}, new byte[]{0x01});
-        
-        snapshotter.bytes = data1;        
-        xa.start(xid1, XAResource.TMNOFLAGS);
-        
-        Xid xid2 = new DroolsXid(100, new byte[]{0x02}, new byte[]{0x02});
+
+        Xid xid1 = new DroolsXid( 100,
+                                  new byte[]{0x01},
+                                  new byte[]{0x01} );
+
+        snapshotter.bytes = data1;
+        xa.start( xid1,
+                  XAResource.TMNOFLAGS );
+
+        Xid xid2 = new DroolsXid( 100,
+                                  new byte[]{0x02},
+                                  new byte[]{0x02} );
         snapshotter.bytes = data2;
-        xa.start(xid2, XAResource.TMNOFLAGS);        
-        assertEquals( 2, xa.list.size() ); // we now have two levels
-        assertSame( xa.data.get( xa.list.get( 0 ) ), pm.lastSave ); // check lastSave is still first transaction
-        
-        Xid xid3 = new DroolsXid(100, new byte[]{0x03}, new byte[]{0x03});
+        xa.start( xid2,
+                  XAResource.TMNOFLAGS );
+        assertEquals( 2,
+                      xa.list.size() ); // we now have two levels
+        assertSame( xa.data.get( xa.list.get( 0 ) ),
+                    pm.lastSave ); // check lastSave is still first transaction
+
+        Xid xid3 = new DroolsXid( 100,
+                                  new byte[]{0x03},
+                                  new byte[]{0x03} );
         snapshotter.bytes = data3;
-        xa.start(xid3, XAResource.TMNOFLAGS);      
-        assertEquals( 3, xa.list.size() );  // we now have three levels.
-        
+        xa.start( xid3,
+                  XAResource.TMNOFLAGS );
+        assertEquals( 3,
+                      xa.list.size() ); // we now have three levels.
+
         // commit the first, so the second should become the lastSave point
-        xa.commit( xid1, true );
-        
-        assertSame( xa.data.get( xid2 ), pm.lastSave ); // xid2 should now be the lastSave point
+        xa.commit( xid1,
+                   true );
 
+        assertSame( xa.data.get( xid2 ),
+                    pm.lastSave ); // xid2 should now be the lastSave point
+
         // rollback xid2, should result in rolling back xid3 too
-        xa.rollback( xid2  );
-        
+        xa.rollback( xid2 );
+
         assertTrue( xa.list.isEmpty() );
         assertTrue( xa.data.isEmpty() );
-    }    
-  
-    public boolean assertEquals( byte[] bytes1, byte[] bytes2) {
+    }
+
+    public boolean assertEquals(byte[] bytes1,
+                                byte[] bytes2) {
         if ( bytes1.length != bytes2.length ) {
             return false;
         }
-        
+
         for ( int i = 0; i < bytes1.length; i++ ) {
             if ( bytes1[i] != bytes2[i] ) {
                 return false;
             }
         }
-        
+
         return true;
     }
 }




More information about the jboss-svn-commits mailing list