[jboss-svn-commits] JBL Code SVN: r37217 - in labs/jbosstm/trunk/ArjunaJTA/quickstarts/integration: src/main/resources/META-INF and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Jul 4 05:04:21 EDT 2011
Author: tomjenkinson
Date: 2011-07-04 05:04:21 -0400 (Mon, 04 Jul 2011)
New Revision: 37217
Added:
labs/jbosstm/trunk/ArjunaJTA/quickstarts/integration/src/main/resources/META-INF/MANIFEST.MF
Modified:
labs/jbosstm/trunk/ArjunaJTA/quickstarts/integration/pom.xml
labs/jbosstm/trunk/ArjunaJTA/quickstarts/integration/src/test/java/TestBusinessLogic.java
Log:
JBTM-854 update to include a TXOJ and a manifest to include the org.jboss.jts module. Also set the arquillian manifest in code for the test
Modified: labs/jbosstm/trunk/ArjunaJTA/quickstarts/integration/pom.xml
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/quickstarts/integration/pom.xml 2011-07-03 19:42:20 UTC (rev 37216)
+++ labs/jbosstm/trunk/ArjunaJTA/quickstarts/integration/pom.xml 2011-07-04 09:04:21 UTC (rev 37217)
@@ -35,6 +35,9 @@
<configuration>
<!-- Java EE 6 doesn't require web.xml, Maven needs to catch up! -->
<failOnMissingWebXml>false</failOnMissingWebXml>
+ <archive>
+ <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
+ </archive>
</configuration>
</plugin>
</plugins>
@@ -50,7 +53,7 @@
<type>pom</type>
<scope>provided</scope>
</dependency>
-
+
<dependency>
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-ext-api</artifactId>
@@ -64,6 +67,20 @@
</exclusions>
</dependency>
+ <!-- For the txoj -->
+ <dependency>
+ <groupId>org.jboss.jbossts</groupId>
+ <artifactId>jbossjta</artifactId>
+ <version>4.15.1.Final</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.jboss.logging</groupId>
+ <artifactId>jboss-logging-spi</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
<!-- We will provide some tests to check the quickstart deploys ok -->
<dependency>
<groupId>junit</groupId>
Added: labs/jbosstm/trunk/ArjunaJTA/quickstarts/integration/src/main/resources/META-INF/MANIFEST.MF
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/quickstarts/integration/src/main/resources/META-INF/MANIFEST.MF (rev 0)
+++ labs/jbosstm/trunk/ArjunaJTA/quickstarts/integration/src/main/resources/META-INF/MANIFEST.MF 2011-07-04 09:04:21 UTC (rev 37217)
@@ -0,0 +1,2 @@
+Dependencies: org.jboss.jts
+
Modified: labs/jbosstm/trunk/ArjunaJTA/quickstarts/integration/src/test/java/TestBusinessLogic.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/quickstarts/integration/src/test/java/TestBusinessLogic.java 2011-07-03 19:42:20 UTC (rev 37216)
+++ labs/jbosstm/trunk/ArjunaJTA/quickstarts/integration/src/test/java/TestBusinessLogic.java 2011-07-04 09:04:21 UTC (rev 37217)
@@ -18,8 +18,11 @@
* (C) 2011,
* @author JBoss, by Red Hat.
*/
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import java.io.IOException;
+
import javax.ejb.EJB;
import javax.naming.InitialContext;
import javax.naming.NamingException;
@@ -35,13 +38,26 @@
import org.jboss.narayana.quickstarts.ejb.Customer;
import org.jboss.narayana.quickstarts.ejb.SimpleEJB;
import org.jboss.narayana.quickstarts.ejb.SimpleEJBImpl;
-import org.jboss.narayana.quickstarts.servlet.SimpleServlet;
+import org.jboss.shrinkwrap.api.ArchivePaths;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Test;
import org.junit.runner.RunWith;
+import com.arjuna.ats.arjuna.AtomicAction;
+import com.arjuna.ats.arjuna.ObjectModel;
+import com.arjuna.ats.arjuna.ObjectType;
+import com.arjuna.ats.arjuna.common.Uid;
+import com.arjuna.ats.arjuna.coordinator.ActionStatus;
+import com.arjuna.ats.arjuna.state.InputObjectState;
+import com.arjuna.ats.arjuna.state.OutputObjectState;
+import com.arjuna.ats.txoj.Lock;
+import com.arjuna.ats.txoj.LockManager;
+import com.arjuna.ats.txoj.LockMode;
+import com.arjuna.ats.txoj.LockResult;
+
@RunWith(Arquillian.class)
public class TestBusinessLogic {
@EJB(lookup = "java:module/SimpleEJBImpl")
@@ -49,13 +65,23 @@
@Deployment
public static WebArchive createDeployment() {
- return ShrinkWrap
+ WebArchive archive = ShrinkWrap
.create(WebArchive.class, "test.war")
.addClasses(SimpleEJB.class, SimpleEJBImpl.class,
Customer.class)
+ .addClasses(AtomicObject.class)
.addAsResource("META-INF/persistence.xml",
"META-INF/persistence.xml")
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
+ archive.delete(ArchivePaths.create("META-INF/MANIFEST.MF"));
+
+ // Need to make sure we add the arquillian-service and msc as a
+ // dependency
+ final String ManifestMF = "Manifest-Version: 1.0\n"
+ + "Dependencies: org.jboss.modules,deployment.arquillian-service,org.jboss.msc,org.jboss.jts\n";
+ archive.setManifest(new StringAsset(ManifestMF));
+
+ return archive;
}
@Test
@@ -84,4 +110,231 @@
assertTrue(firstList.length() < secondList.length());
}
-}
+
+ @Test
+ public void testTxoj() throws Exception {
+ UserTransaction tx = (UserTransaction) new InitialContext()
+ .lookup("java:comp/UserTransaction");
+
+ AtomicObject foo = new AtomicObject();
+ Uid u = foo.get_uid();
+
+ tx.begin();
+
+ foo.set(2);
+
+ tx.commit();
+
+ int finalVal = foo.get();
+
+ assertEquals(2, finalVal);
+
+ foo = new AtomicObject(u);
+
+ tx.begin();
+
+ foo.set(4);
+
+ tx.commit();
+
+ finalVal = foo.get();
+
+ assertEquals(4, finalVal);
+
+ foo = new AtomicObject(u);
+
+ finalVal = foo.get();
+
+ assertEquals(4, finalVal);
+
+ tx.begin();
+
+ foo.set(10);
+
+ tx.rollback();
+
+ finalVal = foo.get();
+
+ assertEquals(4, finalVal);
+ }
+
+ public class AtomicObject extends LockManager {
+
+ private int state;
+
+ private boolean printDebug;
+ private int retry = 0;
+
+ public AtomicObject() {
+ this(ObjectModel.SINGLE);
+ }
+
+ public AtomicObject(int om) {
+ super(ObjectType.ANDPERSISTENT, om);
+
+ state = 0;
+
+ AtomicAction A = new AtomicAction();
+
+ A.begin();
+
+ if (setlock(new Lock(LockMode.WRITE), 0) == LockResult.GRANTED) {
+ if (A.commit() == ActionStatus.COMMITTED)
+ System.out
+ .println("Created persistent object " + get_uid());
+ else
+ System.out.println("Action.commit error.");
+ } else {
+ A.abort();
+
+ System.out.println("setlock error.");
+ }
+
+ String debug = System.getProperty("DEBUG", null);
+
+ if (debug != null)
+ printDebug = true;
+ }
+
+ public AtomicObject(Uid u) {
+ this(u, ObjectModel.SINGLE);
+ }
+
+ public AtomicObject(Uid u, int om) {
+ super(u, ObjectType.ANDPERSISTENT, om);
+
+ state = -1;
+
+ AtomicAction A = new AtomicAction();
+
+ A.begin();
+
+ if (setlock(new Lock(LockMode.READ), 0) == LockResult.GRANTED) {
+ System.out.println("Recreated object " + u);
+ A.commit();
+ } else {
+ System.out.println("Error recreating object " + u);
+ A.abort();
+ }
+
+ String debug = System.getProperty("DEBUG", null);
+
+ if (debug != null)
+ printDebug = true;
+ }
+
+ public int getRetry() {
+ return retry;
+ }
+
+ public void setRetry(int t) {
+ retry = t;
+ }
+
+ public void terminate() {
+ super.terminate();
+ }
+
+ public void incr(int value) throws Exception {
+ AtomicAction A = new AtomicAction();
+
+ A.begin();
+
+ if (setlock(new Lock(LockMode.WRITE), retry) == LockResult.GRANTED) {
+ state += value;
+
+ if (A.commit() != ActionStatus.COMMITTED)
+ throw new Exception("Action commit error.");
+ else
+ return;
+ } else {
+ if (printDebug)
+ System.out.println("Error - could not set write lock.");
+ }
+
+ A.abort();
+
+ throw new Exception("Write lock error.");
+ }
+
+ public void set(int value) throws Exception {
+ AtomicAction A = new AtomicAction();
+
+ A.begin();
+
+ if (setlock(new Lock(LockMode.WRITE), retry) == LockResult.GRANTED) {
+ state = value;
+
+ if (A.commit() != ActionStatus.COMMITTED)
+ throw new Exception("Action commit error.");
+ else
+ return;
+ } else {
+ if (printDebug)
+ System.out.println("Error - could not set write lock.");
+ }
+
+ A.abort();
+
+ throw new Exception("Write lock error.");
+ }
+
+ public int get() throws Exception {
+ AtomicAction A = new AtomicAction();
+ int value = -1;
+
+ A.begin();
+
+ if (setlock(new Lock(LockMode.READ), retry) == LockResult.GRANTED) {
+ value = state;
+
+ if (A.commit() == ActionStatus.COMMITTED)
+ return value;
+ else
+ throw new Exception("Action commit error.");
+ } else {
+ if (printDebug)
+ System.out.println("Error - could not set read lock.");
+ }
+
+ A.abort();
+
+ throw new Exception("Read lock error.");
+ }
+
+ public boolean save_state(OutputObjectState os, int ot) {
+ boolean result = super.save_state(os, ot);
+
+ if (!result)
+ return false;
+
+ try {
+ os.packInt(state);
+ } catch (IOException e) {
+ result = false;
+ }
+
+ return result;
+ }
+
+ public boolean restore_state(InputObjectState os, int ot) {
+ boolean result = super.restore_state(os, ot);
+
+ if (!result)
+ return false;
+
+ try {
+ state = os.unpackInt();
+ } catch (IOException e) {
+ result = false;
+ }
+
+ return result;
+ }
+
+ public String type() {
+ return "/StateManager/LockManager/AtomicObject";
+ }
+ }
+
+}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list