[jboss-jts] First import after review (#805015)
Juan Hernandez
jhernand at fedoraproject.org
Fri Mar 23 13:07:11 UTC 2012
commit 27028b1e8f9fa7edf9fcb80c4ae7f41e7eaf510e
Author: Juan Hernandez <juan.hernandez at redhat.com>
Date: Fri Mar 23 14:06:18 2012 +0100
First import after review (#805015)
.gitignore | 1 +
jboss-jts-4.16.2.Final-build.patch | 364 ++++++++
jboss-jts-4.16.2.Final-hornetq.patch | 1160 ++++++++++++++++++++++++++
jboss-jts-4.16.2.Final-integration-pom.patch | 16 +
jboss-jts-4.16.2.Final-orson.patch | 859 +++++++++++++++++++
jboss-jts-4.16.2.Final-pom.patch | 16 +
jboss-jts-4.16.2.Final-publican.patch | 231 +++++
jboss-jts.spec | 220 +++++
jbossjta-4.16.2.Final.pom | 437 ++++++++++
jbossjta-integration-4.16.2.Final.pom | 437 ++++++++++
sources | 1 +
11 files changed, 3742 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..8bd392f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/jboss-jts-4.16.2.Final.tar.xz
diff --git a/jboss-jts-4.16.2.Final-build.patch b/jboss-jts-4.16.2.Final-build.patch
new file mode 100644
index 0000000..8fb5da6
--- /dev/null
+++ b/jboss-jts-4.16.2.Final-build.patch
@@ -0,0 +1,364 @@
+diff --git a/ArjunaCore/arjuna/build.xml b/ArjunaCore/arjuna/build.xml
+index 48524bc..b5f9e11 100644
+--- a/ArjunaCore/arjuna/build.xml
++++ b/ArjunaCore/arjuna/build.xml
+@@ -104,25 +104,6 @@
+ </fileset>
+ </tests>
+ </run.tests.macro>
+- <!-- reaper tests run using script reaper.txt -->
+- <run.tests.macro>
+- <tests>
+- <fileset dir="tests/classes">
+- <include name="**/reaper/ReaperMonitorTest.java"/>
+- <include name="**/reaper/ReaperTestCase.java"/>
+- <include name="**/reaper/ReaperTestCase2.java"/>
+- <include name="**/reaper/ReaperTestCase3.java"/>
+- </fileset>
+- </tests>
+-
+- <!--<additional.jvmargs>-->
+- <!--<jvmarg value="-Dorg.jboss.byteman.dump.generated.classes"/>-->
+- <!--<jvmarg value="-Dorg.jboss.byteman.dump.generated.classes.directory=dump"/>-->
+- <!--<jvmarg value="-Xdebug"/>-->
+- <!--<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"/>-->
+- <!--</additional.jvmargs>-->
+-
+- </run.tests.macro>
+ <!-- object store tests run using script objectstore.txt -->
+ <run.tests.macro>
+ <tests>
+diff --git a/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/recovery/RecoveryManagerStartStopTest.java b/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/recovery/RecoveryManagerStartStopTest.java
+deleted file mode 100644
+index 9dc2170..0000000
+--- a/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/recovery/RecoveryManagerStartStopTest.java
++++ /dev/null
+@@ -1,259 +0,0 @@
+-/*
+- * JBoss, Home of Professional Open Source
+- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+- * as indicated by the @author tags.
+- * See the copyright.txt in the distribution for a
+- * full listing of individual contributors.
+- * This copyrighted material is made available to anyone wishing to use,
+- * modify, copy, or redistribute it subject to the terms and conditions
+- * of the GNU Lesser General Public License, v. 2.1.
+- * This program is distributed in the hope that it will be useful, but WITHOUT A
+- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+- * You should have received a copy of the GNU Lesser General Public License,
+- * v.2.1 along with this distribution; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+- * MA 02110-1301, USA.
+- *
+- * (C) 2009,
+- * @author JBoss Inc.
+- */
+-
+-package com.hp.mwtests.ts.arjuna.recovery;
+-
+-import static org.junit.Assert.assertEquals;
+-import static org.junit.Assert.assertFalse;
+-
+-import java.io.BufferedReader;
+-import java.io.IOException;
+-import java.io.InputStreamReader;
+-import java.net.InetAddress;
+-import java.net.Socket;
+-import java.net.SocketException;
+-import java.util.ArrayList;
+-import java.util.List;
+-
+-import org.jboss.byteman.contrib.bmunit.BMScript;
+-import org.jboss.byteman.contrib.bmunit.BMUnitRunner;
+-import org.junit.Test;
+-import org.junit.runner.RunWith;
+-
+-import com.arjuna.ats.arjuna.common.recoveryPropertyManager;
+-import com.arjuna.ats.arjuna.recovery.RecoveryManager;
+-
+-/**
+- * test to ensure that the recovery manager cleans up all its threads when terminated
+- */
+-
+- at RunWith(BMUnitRunner.class)
+- at BMScript("recovery")
+-public class RecoveryManagerStartStopTest
+-{
+- @Test
+- public void testStartStop() throws Exception
+- {
+- recoveryPropertyManager.getRecoveryEnvironmentBean().setRecoveryPort(4712);
+-
+- // check how many threads there are running
+-
+- ThreadGroup thg = Thread.currentThread().getThreadGroup();
+- int activeCount = thg.activeCount();
+-
+- dumpThreadGroup(thg, "Before recovery manager create");
+-
+- RecoveryManager.delayRecoveryManagerThread();
+- RecoveryManager manager = RecoveryManager.manager(RecoveryManager.INDIRECT_MANAGEMENT);
+-
+- dumpThreadGroup(thg, "Before recovery manager initialize");
+-
+- manager.initialize();
+-
+- dumpThreadGroup(thg, "Before recovery manager start periodic recovery thread");
+-
+- manager.startRecoveryManagerThread();
+-
+- dumpThreadGroup(thg, "Before recovery manager client create");
+-
+- // Thread.sleep(1000);
+-
+- // we need to open several connections to the recovery manager listener service and then
+- // ensure they get closed down
+-
+- addRecoveryClient();
+- addRecoveryClient();
+-
+- dumpThreadGroup(thg, "Before recovery manager terminate");
+-
+- manager.terminate();
+-
+- // ensure the client threads get killed
+-
+- ensureRecoveryClientsTerminated();
+-
+- dumpThreadGroup(thg, "After recovery manager terminate");
+-
+- int newActiveCount = thg.activeCount();
+-
+- assertEquals(activeCount, newActiveCount);
+- }
+-
+- private void ensureRecoveryClientsTerminated()
+- {
+- // check that any threads added to talk to the recovery listener get their sockets closed
+-
+- for (RecoveryManagerStartStopTestThread client : clients) {
+- try {
+- client.join();
+- } catch (InterruptedException e) {
+- // do nothing
+- }
+- assertFalse(client.failed());
+- }
+- }
+-
+- private void addRecoveryClient()
+- {
+- // open a connection to the recovery listener service in a new thread and ensure that the
+- // thread is terminated by having its socket closed.
+-
+- RecoveryManagerStartStopTestThread client = new RecoveryManagerStartStopTestThread();
+- clients.add(client);
+- client.start();
+- client.ensureStarted();
+- }
+-
+- private void dumpThreadGroup(ThreadGroup thg, String header)
+- {
+- int activeCount = thg.activeCount();
+- Thread[] threads = new Thread[activeCount];
+- int reported = thg.enumerate(threads);
+-
+- System.out.println(header);
+- System.out.println("Thread count == " + activeCount);
+- for (int i = 0; i < reported; i++) {
+- System.out.println("Thread[" + i + "] == " + threads[i].getName());
+- }
+-
+- System.out.flush();
+- }
+-
+- private List<RecoveryManagerStartStopTestThread> clients = new ArrayList<RecoveryManagerStartStopTestThread>();
+-
+- private static class RecoveryManagerStartStopTestThread extends Thread
+- {
+- private boolean failed = true;
+- private boolean started = false;
+- private boolean stopped = false;
+-
+- public RecoveryManagerStartStopTestThread()
+- {
+- super("Recovery Listener Client");
+- }
+-
+- public boolean failed()
+- {
+- return failed;
+- }
+-
+- public void run()
+- {
+- BufferedReader fromServer = null;
+- Socket connectorSocket = null;
+- // get a socket connected to the listener
+- // don't write anything just sit on a read until the socket is closed
+- try {
+- String host;
+- int port;
+-
+- host = InetAddress.getLocalHost().getHostName();
+-
+- port = recoveryPropertyManager.getRecoveryEnvironmentBean().getRecoveryPort();
+-
+- System.out.println("client atempting to connect to host " + host + " port " + port);
+- System.out.flush();
+-
+- try
+- {
+- connectorSocket = new Socket(host, port);
+- }
+- catch (final Exception ex)
+- {
+- // in case local host name bind fails (e.g., on Mac OS)
+-
+- host = "127.0.0.1";
+-
+- connectorSocket = new Socket(host, port);
+- }
+-
+- System.out.println("connected!!!");
+- System.out.flush();
+-
+- fromServer = new BufferedReader(new InputStreamReader(connectorSocket.getInputStream()));
+- } catch (Exception e) {
+-
+- System.out.println("Failed to set up listener input stream!!!");
+- e.printStackTrace();
+- System.out.flush();
+-
+- return;
+- } finally {
+- notifyStarted();
+- }
+-
+- try {
+- String result = fromServer.readLine();
+- if (result == null || result.equals("")) {
+- System.out.println("Recovery Listener Client got empty string from readline() as expected");
+- System.out.flush();
+- failed = false;
+- }
+- } catch (SocketException e) {
+- if (!connectorSocket.isClosed()) {
+- try {
+- connectorSocket.close();
+- } catch (IOException e1) {
+- // ignore
+- }
+- }
+- System.out.println("Recovery Listener Client got socket exception as expected");
+- e.printStackTrace();
+- System.out.flush();
+- failed = false;
+- } catch (IOException e) {
+- if (!connectorSocket.isClosed()) {
+- System.out.println("Recovery Listener Client got non socket IO exception without socket being closed");
+- try {
+- connectorSocket.close();
+- } catch (IOException e1) {
+- // ignore
+- }
+- } else {
+- System.out.println("Recovery Listener Client got IO exception under readline() as expected");
+- failed = false;
+- }
+- e.printStackTrace();
+- System.out.flush();
+- } catch (Exception e) {
+- System.out.println("Recovery Listener Client got non IO exception");
+- e.printStackTrace();
+- System.out.flush();
+- }
+- }
+-
+- public synchronized void notifyStarted()
+- {
+- started = true;
+- notify();
+- }
+-
+- public synchronized void ensureStarted() {
+- while (!started) {
+- try {
+- wait();
+- } catch (InterruptedException e) {
+- // ignore
+- }
+- }
+- }
+- }
+-}
+diff --git a/ArjunaJTA/build.xml b/ArjunaJTA/build.xml
+index f42fd6b..7041647 100644
+--- a/ArjunaJTA/build.xml
++++ b/ArjunaJTA/build.xml
+@@ -26,7 +26,7 @@
+
+ <property name="component-module-list" value="../common,../ArjunaCore/arjuna,../ArjunaCore/txoj,jta,jdbc"/>
+
+- <target name="dist" depends="dist.compositenode, install.docs, install.scripts, install.services, install.etc">
++ <target name="dist" depends="dist.compositenode, install.scripts, install.services, install.etc">
+ <copy file="INSTALL" todir="${build.dir}/install"/>
+ </target>
+
+diff --git a/atsintegration/build.xml b/atsintegration/build.xml
+index 68af8e0..eeca631 100755
+--- a/atsintegration/build.xml
++++ b/atsintegration/build.xml
+@@ -81,7 +81,6 @@
+ <run.tests.macro showoutput="true">
+ <tests>
+ <fileset dir="tests/classes">
+- <include name="**/SimpleIsolatedServers.java"/>
+ <include name="**/TestXAResourceRecordWrapperImpl.java"/>
+ </fileset>
+ </tests>
+diff --git a/build.xml b/build.xml
+index 132990a..861b67e 100644
+--- a/build.xml
++++ b/build.xml
+@@ -54,19 +54,16 @@
+ <target name="jts" depends="clean, init_dependencies, antbuildsystem">
+ <ant dir="ArjunaJTS"/>
+ <install.macro src.module="ArjunaJTS"/>
+- <ant dir="qa"/>
+ </target>
+
+ <target name="jta" depends="clean, init_dependencies, antbuildsystem">
+ <ant dir="ArjunaJTA"/>
+ <install.macro src.module="ArjunaJTA"/>
+- <ant dir="qa"/>
+ </target>
+
+ <target name="core" depends="clean, init_dependencies, antbuildsystem">
+ <ant dir="ArjunaCore"/>
+ <install.macro src.module="ArjunaCore"/>
+- <ant dir="qa"/>
+ </target>
+
+ <macrodef name="atsinstall.macro">
+diff --git a/maven/build.xml b/maven/build.xml
+index fd4a61c..7591a33 100644
+--- a/maven/build.xml
++++ b/maven/build.xml
+@@ -96,14 +96,11 @@
+ <os family="unix" />
+ </condition>
+
+- <antcall target="maven-unix"/>
+- <antcall target="maven-windows"/>
+-
+ <copy todir="${ext.lib.dest}" overwrite="true">
+ <fileset dir="${ext.lib.src}">
+ <include name="third_party_licenses.txt"/>
+ <!-- we need a patched version of emma, see JBTM-682 -->
+- <include name="emma.jar"/>
++ <include name="*.jar"/>
+ </fileset>
+ </copy>
+
diff --git a/jboss-jts-4.16.2.Final-hornetq.patch b/jboss-jts-4.16.2.Final-hornetq.patch
new file mode 100644
index 0000000..96b4213
--- /dev/null
+++ b/jboss-jts-4.16.2.Final-hornetq.patch
@@ -0,0 +1,1160 @@
+diff -Naur jboss-jts-4.16.2.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/HornetqJournalEnvironmentBean.java jboss-jts-4.16.2.Final-work/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/HornetqJournalEnvironmentBean.java
+--- jboss-jts-4.16.2.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/HornetqJournalEnvironmentBean.java 2012-01-19 02:36:02.000000000 -0500
++++ jboss-jts-4.16.2.Final-work/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/HornetqJournalEnvironmentBean.java 1969-12-31 19:00:00.000000000 -0500
+@@ -1,361 +0,0 @@
+-/*
+- * JBoss, Home of Professional Open Source
+- * Copyright 2010, Red Hat, Inc. and/or its affiliates,
+- * and individual contributors as indicated by the @author tags.
+- * See the copyright.txt in the distribution for a
+- * full listing of individual contributors.
+- * This copyrighted material is made available to anyone wishing to use,
+- * modify, copy, or redistribute it subject to the terms and conditions
+- * of the GNU Lesser General Public License, v. 2.1.
+- * This program is distributed in the hope that it will be useful, but WITHOUT A
+- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+- * You should have received a copy of the GNU Lesser General Public License,
+- * v.2.1 along with this distribution; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+- * MA 02110-1301, USA.
+- *
+- * (C) 2010,
+- * @author JBoss, by Red Hat.
+- */
+-package com.arjuna.ats.internal.arjuna.objectstore.hornetq;
+-
+-import java.io.File;
+-
+-import com.arjuna.common.internal.util.propertyservice.PropertyPrefix;
+-
+-/**
+- * A JavaBean containing assorted configuration properties for the HornetQ Journal based transaction logging system.
+- *
+- * Parameters on this file serve a similar role to their counterparts in HornetQ.
+- * The HornetQ docs therefore provide relevant information on usage:
+- * http://hornetq.sourceforge.net/docs/hornetq-2.1.2.Final/user-manual/en/html/persistence.html#configuring.message.journal.journal-type
+- *
+- * @author Jonathan Halliday (jonathan.halliday at redhat.com), 2010-03
+- */
+- at PropertyPrefix(prefix = "com.arjuna.ats.arjuna.hornetqjournal.")
+-public class HornetqJournalEnvironmentBean implements HornetqJournalEnvironmentBeanMBean
+-{
+- private volatile int fileSize = 1024*1024*2;
+-
+- private volatile int minFiles = 4;
+-
+- private volatile int compactMinFiles = 10;
+-
+- private volatile int compactPercentage = 30;
+-
+- private volatile String filePrefix = "jbossts";
+-
+- private volatile String fileExtension = "txlog";
+-
+- private volatile int maxIO = 1;
+-
+- private volatile String storeDir = System.getProperty("user.dir") + File.separator + "HornetqJournalStore";
+-
+- private volatile boolean syncWrites = true;
+-
+- private volatile boolean syncDeletes = true;
+-
+- private volatile int bufferFlushesPerSecond = 500;
+-
+- private volatile int bufferSize = 490 * 1024;
+-
+- private volatile boolean logRates = false;
+-
+-
+- /**
+- * Returns the desired size in bytes of each log file.
+- * Minimum 1024.
+- *
+- * Default: 2MB (2097152 bytes)
+- *
+- * @return The individual log file size, in bytes.
+- */
+- public int getFileSize()
+- {
+- return fileSize;
+- }
+-
+- /**
+- * Sets the desired size in bytes for each log file.
+- *
+- * @param fileSize the individual log file size, in bytes.
+- */
+- public void setFileSize(int fileSize)
+- {
+- this.fileSize = fileSize;
+- }
+-
+- /**
+- * Returns the minimum number of log files to use.
+- * Minimum 2.
+- *
+- * Default: 4
+- *
+- * @return the minimum number of individual log files.
+- */
+- public int getMinFiles()
+- {
+- return minFiles;
+- }
+-
+- /**
+- * Sets the minimum number of log files to use.
+- *
+- * @param minFiles the minimum number of individual log files.
+- */
+- public void setMinFiles(int minFiles)
+- {
+- this.minFiles = minFiles;
+- }
+-
+- /**
+- * Gets the minimal number of files before we can consider compacting.
+- *
+- * Default: 10
+- *
+- * @return the threshold file count.
+- */
+- public int getCompactMinFiles()
+- {
+- return compactMinFiles;
+- }
+-
+- /**
+- * Sets the minimal number of files before we can consider compacting.
+- *
+- * @param compactMinFiles the threshold file count.
+- */
+- public void setCompactMinFiles(int compactMinFiles)
+- {
+- this.compactMinFiles = compactMinFiles;
+- }
+-
+- /**
+- * Gets the percentage minimum capacity usage at which to start compacting.
+- *
+- * Default: 30
+- *
+- * @return the threshold percentage.
+- */
+- public int getCompactPercentage()
+- {
+- return compactPercentage;
+- }
+-
+- /**
+- * Sets the percentage minimum capacity usage at which to start compacting.
+- *
+- * @param compactPercentage the threshold percentage.
+- */
+- public void setCompactPercentage(int compactPercentage)
+- {
+- this.compactPercentage = compactPercentage;
+- }
+-
+- /**
+- * Returns the prefix to be used when naming each log file.
+- *
+- * Default: "jbossts"
+- *
+- * @return the prefix used to construct individual log file names.
+- */
+- public String getFilePrefix()
+- {
+- return filePrefix;
+- }
+-
+- /**
+- * Sets the prefix to be used when naming each log file.
+- *
+- * @param filePrefix the prefix used to construct individual log file names.
+- */
+- public void setFilePrefix(String filePrefix)
+- {
+- this.filePrefix = filePrefix;
+- }
+-
+- /**
+- * Returns the suffix to be used then naming each log file.
+- *
+- * Default: "txlog"
+- *
+- * @return the suffix used to construct individual log file names.
+- */
+- public String getFileExtension()
+- {
+- return fileExtension;
+- }
+-
+- /**
+- * Sets the suffix to be used when naming each log file.
+- *
+- * @param fileExtension the suffix used to construct individual log file names.
+- */
+- public void setFileExtension(String fileExtension)
+- {
+- this.fileExtension = fileExtension;
+- }
+-
+- /**
+- * Gets the maximum write requests queue depth.
+- * Minimum 1. Use 1 for NIO. For AIO, recommended 500.
+- *
+- * Default: 1
+- *
+- * @return the max number of outstanding requests.
+- */
+- public int getMaxIO()
+- {
+- return maxIO;
+- }
+-
+- /**
+- * Sets the maximum write requests queue depth.
+- *
+- * @param maxIO the max number of outstanding requests.
+- */
+- public void setMaxIO(int maxIO)
+- {
+- this.maxIO = maxIO;
+- }
+-
+- /**
+- * Returns the log directory path
+- *
+- * Default: {user.dir}/HornetqJournalStore
+- *
+- * @return the log directory name
+- */
+- public String getStoreDir()
+- {
+- return storeDir;
+- }
+-
+- /**
+- * Sets the log directory path.
+- *
+- * @param storeDir the path to the log directory.
+- */
+- public void setStoreDir(String storeDir)
+- {
+- this.storeDir = storeDir;
+- }
+-
+- /**
+- * Returns the sync setting for transaction log write operations.
+- * To preserve ACID properties this value must be set to true, in which case
+- * log write operations block until data is forced to the physical storage device.
+- * Turn sync off only if you don't care about data integrity.
+- *
+- * Default: true.
+- *
+- * @return true if log writes should be synchronous, false otherwise.
+- */
+- public boolean isSyncWrites()
+- {
+- return syncWrites;
+- }
+-
+- /**
+- * Sets if log write operations should be synchronous or not.
+- *
+- * @param syncWrites true for synchronous operation, false otherwise.
+- */
+- public void setSyncWrites(boolean syncWrites)
+- {
+- this.syncWrites = syncWrites;
+- }
+-
+- /**
+- * Returns the sync setting for transaction log delete operations.
+- * For optimal crash recovery this value should be set to true.
+- * Asynchronous deletes may give rise to unnecessary crash recovery complications.
+- *
+- * Default: true.
+- *
+- * @return true if log deletes should be synchronous, false otherwise.
+- */
+- public boolean isSyncDeletes()
+- {
+- return syncDeletes;
+- }
+-
+- /**
+- * Sets if log delete operations should be synchronous or not.
+- *
+- * @param syncDeletes true for synchronous operation, false otherwise.
+- */
+- public void setSyncDeletes(boolean syncDeletes)
+- {
+- this.syncDeletes = syncDeletes;
+- }
+-
+- /**
+- * Returns the target number of timer based buffer flushes per second.
+- * Caution: this property is functionally equivalent to HornetQ's
+- * journal-buffer-timeout but uses different units.
+- *
+- * Default 500.
+- *
+- * @return the number of buffer flushes per second.
+- */
+- public int getBufferFlushesPerSecond()
+- {
+- return bufferFlushesPerSecond;
+- }
+-
+- /**
+- * Sets the target number of timer based buffer flushes per second.
+- *
+- * @param bufferFlushesPerSecond the target number.
+- */
+- public void setBufferFlushesPerSecond(int bufferFlushesPerSecond)
+- {
+- this.bufferFlushesPerSecond = bufferFlushesPerSecond;
+- }
+-
+- /**
+- * Returns the buffer size in bytes.
+- *
+- * Default: 490 KB.
+- *
+- * @return the size of the buffer.
+- */
+- public int getBufferSize()
+- {
+- return bufferSize;
+- }
+-
+- /**
+- * Sets the buffer size in bytes.
+- *
+- * @param bufferSize the size of the buffer.
+- */
+- public void setBufferSize(int bufferSize)
+- {
+- this.bufferSize = bufferSize;
+- }
+-
+- /**
+- * Returns the debug log mode for Journal throughput statistics.
+- *
+- * Default: false.
+- *
+- * @return true is rate logging is enabled, false otherwise.
+- */
+- public boolean isLogRates()
+- {
+- return logRates;
+- }
+-
+- /**
+- * Sets the debug log mode for Journal throughput statistics.
+- *
+- * @param logRates true to enable logging of statistics, false to disable.
+- */
+- public void setLogRates(boolean logRates)
+- {
+- this.logRates = logRates;
+- }
+-}
+diff -Naur jboss-jts-4.16.2.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/HornetqJournalEnvironmentBeanMBean.java jboss-jts-4.16.2.Final-work/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/HornetqJournalEnvironmentBeanMBean.java
+--- jboss-jts-4.16.2.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/HornetqJournalEnvironmentBeanMBean.java 2011-03-29 06:23:29.000000000 -0400
++++ jboss-jts-4.16.2.Final-work/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/HornetqJournalEnvironmentBeanMBean.java 1969-12-31 19:00:00.000000000 -0500
+@@ -1,55 +0,0 @@
+-/*
+- * JBoss, Home of Professional Open Source
+- * Copyright 2010, Red Hat, Inc. and/or its affiliates,
+- * and individual contributors as indicated by the @author tags.
+- * See the copyright.txt in the distribution for a
+- * full listing of individual contributors.
+- * This copyrighted material is made available to anyone wishing to use,
+- * modify, copy, or redistribute it subject to the terms and conditions
+- * of the GNU Lesser General Public License, v. 2.1.
+- * This program is distributed in the hope that it will be useful, but WITHOUT A
+- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+- * You should have received a copy of the GNU Lesser General Public License,
+- * v.2.1 along with this distribution; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+- * MA 02110-1301, USA.
+- *
+- * (C) 2010,
+- * @author JBoss, by Red Hat.
+- */
+-package com.arjuna.ats.internal.arjuna.objectstore.hornetq;
+-
+-/**
+- * A JMX MBean interface containing configuration for the HornetQ Journal based transaction logging system.
+- *
+- * @author Jonathan Halliday (jonathan.halliday at redhat.com)
+- */
+-public interface HornetqJournalEnvironmentBeanMBean
+-{
+- public int getFileSize();
+-
+- public int getMinFiles();
+-
+- public int getCompactMinFiles();
+-
+- public int getCompactPercentage();
+-
+- public String getFilePrefix();
+-
+- public String getFileExtension();
+-
+- public int getMaxIO();
+-
+- public String getStoreDir();
+-
+- public boolean isSyncWrites();
+-
+- public boolean isSyncDeletes();
+-
+- public int getBufferFlushesPerSecond();
+-
+- public int getBufferSize();
+-
+- public boolean isLogRates();
+-}
+diff -Naur jboss-jts-4.16.2.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/HornetqJournalStore.java jboss-jts-4.16.2.Final-work/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/HornetqJournalStore.java
+--- jboss-jts-4.16.2.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/HornetqJournalStore.java 2012-01-19 02:36:02.000000000 -0500
++++ jboss-jts-4.16.2.Final-work/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/HornetqJournalStore.java 1969-12-31 19:00:00.000000000 -0500
+@@ -1,267 +0,0 @@
+-/*
+- * JBoss, Home of Professional Open Source
+- * Copyright 2010, Red Hat, Inc. and/or its affiliates,
+- * and individual contributors as indicated by the @author tags.
+- * See the copyright.txt in the distribution for a
+- * full listing of individual contributors.
+- * This copyrighted material is made available to anyone wishing to use,
+- * modify, copy, or redistribute it subject to the terms and conditions
+- * of the GNU Lesser General Public License, v. 2.1.
+- * This program is distributed in the hope that it will be useful, but WITHOUT A
+- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+- * You should have received a copy of the GNU Lesser General Public License,
+- * v.2.1 along with this distribution; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+- * MA 02110-1301, USA.
+- *
+- * (C) 2010,
+- * @author JBoss, by Red Hat.
+- */
+-package com.arjuna.ats.internal.arjuna.objectstore.hornetq;
+-
+-import java.io.File;
+-import java.io.IOException;
+-import java.util.LinkedList;
+-import java.util.List;
+-import java.util.Map;
+-import java.util.Set;
+-import java.util.concurrent.ConcurrentHashMap;
+-import java.util.concurrent.ConcurrentMap;
+-
+-import org.hornetq.core.journal.Journal;
+-import org.hornetq.core.journal.JournalLoadInformation;
+-import org.hornetq.core.journal.PreparedTransactionInfo;
+-import org.hornetq.core.journal.RecordInfo;
+-import org.hornetq.core.journal.SequentialFileFactory;
+-import org.hornetq.core.journal.TransactionFailureCallback;
+-import org.hornetq.core.journal.impl.AIOSequentialFileFactory;
+-import org.hornetq.core.journal.impl.JournalImpl;
+-import org.hornetq.core.journal.impl.NIOSequentialFileFactory;
+-
+-import com.arjuna.ats.arjuna.common.Uid;
+-import com.arjuna.ats.arjuna.exceptions.ObjectStoreException;
+-import com.arjuna.ats.arjuna.logging.tsLogger;
+-import com.arjuna.ats.arjuna.state.InputBuffer;
+-import com.arjuna.ats.arjuna.state.InputObjectState;
+-import com.arjuna.ats.arjuna.state.OutputBuffer;
+-import com.arjuna.ats.arjuna.state.OutputObjectState;
+-import com.arjuna.ats.internal.arjuna.common.UidHelper;
+-
+-/**
+- * Implementation of the tx store backed by HornetQ's journal.
+- * This is a bean suitable for hooking into the app server lifecycle.
+- *
+- * @author Jonathan Halliday (jonathan.halliday at redhat.com), 2010-03
+- */
+-public class HornetqJournalStore
+-{
+- private final Journal journal;
+-
+- private final ConcurrentMap<String,Map<Uid, RecordInfo>> content = new ConcurrentHashMap<String, Map<Uid, RecordInfo>>();
+-
+- private final Object uidMappingLock = new Object();
+- private final boolean syncWrites;
+- private final boolean syncDeletes;
+- private long maxID = 0;
+-
+- private final String storeDirCanonicalPath;
+-
+- private static final byte RECORD_TYPE = 0x00;
+-
+- public void stop() throws Exception {
+- journal.stop();
+- }
+-
+- public void start() throws Exception {
+-
+- journal.start();
+-
+- List<RecordInfo> committedRecords = new LinkedList<RecordInfo>();
+- List<PreparedTransactionInfo> preparedTransactions = new LinkedList<PreparedTransactionInfo>();
+- TransactionFailureCallback failureCallback = new TransactionFailureCallback() {
+- public void failedTransaction(long l, java.util.List<org.hornetq.core.journal.RecordInfo> recordInfos, java.util.List<org.hornetq.core.journal.RecordInfo> recordInfos1) {
+- tsLogger.i18NLogger.warn_journal_load_error();
+- }
+- };
+-
+- JournalLoadInformation journalLoadInformation = journal.load(committedRecords, preparedTransactions, failureCallback);
+- maxID = journalLoadInformation.getMaxID();
+-
+- if(!preparedTransactions.isEmpty()) {
+- tsLogger.i18NLogger.warn_journal_load_error();
+- }
+-
+- for(RecordInfo record : committedRecords) {
+- InputBuffer inputBuffer = new InputBuffer(record.data);
+- Uid uid = UidHelper.unpackFrom(inputBuffer);
+- String typeName = inputBuffer.unpackString();
+- getContentForType(typeName).put(uid, record);
+- // don't unpack the rest yet, we may never need it. read_committed does it on demand.
+- }
+- }
+-
+- public HornetqJournalStore(HornetqJournalEnvironmentBean envBean) throws IOException {
+-
+- syncWrites = envBean.isSyncWrites();
+- syncDeletes = envBean.isSyncDeletes();
+-
+- File storeDir = new File(envBean.getStoreDir());
+- if(!storeDir.exists() && !storeDir.mkdirs()) {
+- throw new IOException(tsLogger.i18NLogger.get_dir_create_failed(storeDir.getCanonicalPath()));
+- }
+- storeDirCanonicalPath = storeDir.getCanonicalPath();
+-
+- SequentialFileFactory sequentialFileFactory;
+- if(AIOSequentialFileFactory.isSupported()) {
+- sequentialFileFactory = new AIOSequentialFileFactory(
+- envBean.getStoreDir(),
+- envBean.getBufferSize(),
+- (int)(1000000000d / envBean.getBufferFlushesPerSecond()), // bufferTimeout nanos .000000001 second
+- envBean.isLogRates());
+- } else {
+- sequentialFileFactory = new NIOSequentialFileFactory(
+- envBean.getStoreDir(),
+- true,
+- envBean.getBufferSize(),
+- (int)(1000000000d / envBean.getBufferFlushesPerSecond()), // bufferTimeout nanos .000000001 second
+- envBean.isLogRates());
+- }
+-
+- journal = new JournalImpl(envBean.getFileSize(), envBean.getMinFiles(), envBean.getCompactMinFiles(),
+- envBean.getCompactPercentage(), sequentialFileFactory, envBean.getFilePrefix(),
+- envBean.getFileExtension(), envBean.getMaxIO());
+- }
+-
+-
+- /**
+- * Remove the object's committed state.
+- *
+- * @param uid The object to work on.
+- * @param typeName The type of the object to work on.
+- * @return <code>true</code> if no errors occurred, <code>false</code>
+- * otherwise.
+- * @throws ObjectStoreException if things go wrong.
+- */
+- public boolean remove_committed(Uid uid, String typeName) throws ObjectStoreException
+- {
+- try {
+- long id = getId(uid, typeName); // look up the id *before* doing the remove from state, or it won't be there any more.
+- getContentForType(typeName).remove(uid);
+- journal.appendDeleteRecord(id, syncDeletes);
+- } catch(Exception e) {
+- throw new ObjectStoreException(e);
+- }
+-
+- return true;
+- }
+-
+- /**
+- * Write a new copy of the object's committed state.
+- *
+- * @param uid The object to work on.
+- * @param typeName The type of the object to work on.
+- * @param txData The state to write.
+- * @return <code>true</code> if no errors occurred, <code>false</code>
+- * otherwise.
+- * @throws ObjectStoreException if things go wrong.
+- */
+- public boolean write_committed(Uid uid, String typeName, OutputObjectState txData) throws ObjectStoreException
+- {
+- try {
+- OutputBuffer outputBuffer = new OutputBuffer();
+- UidHelper.packInto(uid, outputBuffer);
+- outputBuffer.packString(typeName);
+- outputBuffer.packBytes(txData.buffer());
+- long id = getId(uid, typeName);
+- byte[] data = outputBuffer.buffer();
+-
+- // yup, there is a race condition here.
+- if(getContentForType(typeName).containsKey(uid)) {
+- journal.appendUpdateRecord(id, RECORD_TYPE, data, syncWrites);
+- } else {
+- journal.appendAddRecord(id, RECORD_TYPE, data, syncWrites);
+- }
+-
+- RecordInfo record = new RecordInfo(id, RECORD_TYPE, data, false, (short)0);
+- getContentForType(typeName).put(uid, record);
+- } catch(Exception e) {
+- throw new ObjectStoreException(e);
+- }
+-
+- return true;
+- }
+-
+- /**
+- * Read the object's committed state.
+- *
+- * @param uid The object to work on.
+- * @param typeName The type of the object to work on.
+- * @return the state of the object.
+- * @throws ObjectStoreException if things go wrong.
+- */
+- public InputObjectState read_committed(Uid uid, String typeName) throws ObjectStoreException
+- {
+- RecordInfo record = getContentForType(typeName).get(uid);
+- if(record == null) {
+- return null;
+- }
+-
+- // this repeated unpacking is a little inefficient - subclass RecordInfo to hold unpacked form too?
+- // not too much of an issue as log reads are done for recovery only.
+- try {
+- InputBuffer inputBuffer = new InputBuffer(record.data);
+- Uid unpackedUid = UidHelper.unpackFrom(inputBuffer);
+- String unpackedTypeName = inputBuffer.unpackString();
+- InputObjectState inputObjectState = new InputObjectState(uid, typeName, inputBuffer.unpackBytes());
+- return inputObjectState;
+- } catch(Exception e) {
+- throw new ObjectStoreException(e);
+- }
+- }
+-
+- public boolean contains(Uid uid, String typeName) {
+- RecordInfo record = getContentForType(typeName).get(uid);
+- return record != null;
+- }
+-
+- /**
+- * @return the "name" of the object store. Where in the hierarchy it appears, e.g., /ObjectStore/MyName/...
+- */
+- public String getStoreName()
+- {
+- return this.getClass().getSimpleName()+":"+storeDirCanonicalPath;
+- }
+-
+- public String[] getKnownTypes() {
+- return content.keySet().toArray(new String[content.size()]);
+- }
+-
+- public Uid[] getUidsForType(String typeName) {
+- Set<Uid> keySet = getContentForType(typeName).keySet();
+- return keySet.toArray(new Uid[keySet.size()]);
+- }
+-
+- /////////////////////////////////
+-
+- private Map<Uid, RecordInfo> getContentForType(String typeName) {
+- Map<Uid, RecordInfo> result = content.get(typeName);
+- if(result == null) {
+- content.putIfAbsent(typeName, new ConcurrentHashMap<Uid, RecordInfo>());
+- result = content.get(typeName);
+- }
+- return result;
+- }
+-
+- private long getId(Uid uid, String typeName) {
+- synchronized (uidMappingLock) {
+- RecordInfo record = getContentForType(typeName).get(uid);
+- if(record != null) {
+- return record.id;
+- } else {
+- maxID++;
+- return maxID;
+- }
+- }
+- }
+-}
+diff -Naur jboss-jts-4.16.2.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/HornetqObjectStoreAdaptor.java jboss-jts-4.16.2.Final-work/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/HornetqObjectStoreAdaptor.java
+--- jboss-jts-4.16.2.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/HornetqObjectStoreAdaptor.java 2012-01-19 02:36:02.000000000 -0500
++++ jboss-jts-4.16.2.Final-work/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/HornetqObjectStoreAdaptor.java 1969-12-31 19:00:00.000000000 -0500
+@@ -1,460 +0,0 @@
+-/*
+- * JBoss, Home of Professional Open Source
+- * Copyright 2010, Red Hat, Inc. and/or its affiliates,
+- * and individual contributors as indicated by the @author tags.
+- * See the copyright.txt in the distribution for a
+- * full listing of individual contributors.
+- * This copyrighted material is made available to anyone wishing to use,
+- * modify, copy, or redistribute it subject to the terms and conditions
+- * of the GNU Lesser General Public License, v. 2.1.
+- * This program is distributed in the hope that it will be useful, but WITHOUT A
+- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+- * You should have received a copy of the GNU Lesser General Public License,
+- * v.2.1 along with this distribution; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+- * MA 02110-1301, USA.
+- *
+- * (C) 2010,
+- * @author JBoss, by Red Hat.
+- */
+-package com.arjuna.ats.internal.arjuna.objectstore.hornetq;
+-
+-import java.io.IOException;
+-import java.io.SyncFailedException;
+-import java.util.HashSet;
+-import java.util.Set;
+-
+-import com.arjuna.ats.arjuna.common.Uid;
+-import com.arjuna.ats.arjuna.exceptions.ObjectStoreException;
+-import com.arjuna.ats.arjuna.logging.tsLogger;
+-import com.arjuna.ats.arjuna.objectstore.ObjectStoreAPI;
+-import com.arjuna.ats.arjuna.objectstore.StateStatus;
+-import com.arjuna.ats.arjuna.state.InputObjectState;
+-import com.arjuna.ats.arjuna.state.OutputObjectState;
+-import com.arjuna.ats.internal.arjuna.common.UidHelper;
+-import com.arjuna.common.internal.util.propertyservice.BeanPopulator;
+-
+-/* transaction-jboss-beans.xml:
+-
+- <bean name="HornetqJournalEnvironmentBean" class="com.arjuna.ats.internal.arjuna.objectstore.hornetq.HornetqJournalEnvironmentBean">
+- <property name="storeDir">${jboss.server.data.dir}/tx-object-store/HornetqJournalStore</property>
+- </bean>
+- <bean name="HornetqJournalStore" class="com.arjuna.ats.internal.arjuna.objectstore.hornetq.HornetqJournalStore">
+- <constructor>
+- <parameter><inject bean="HornetqJournalEnvironmentBean"/></parameter>
+- </constructor>
+- </bean>
+- <bean name="HornetqObjectStoreAdaptor" class="com.arjuna.ats.internal.arjuna.objectstore.hornetq.HornetqObjectStoreAdaptor">
+- <constructor>
+- <parameter><inject bean="HornetqJournalStore"/></parameter>
+- </constructor>
+- </bean>
+- <bean name="TxStoreManager" class="com.arjuna.ats.arjuna.objectstore.StoreManager">
+- <constructor>
+- <parameter><inject bean="HornetqObjectStoreAdaptor"/></parameter>
+- <parameter><null/></parameter>
+- </constructor>
+- </bean>
+-
+- plus RecMgr/TxMgr lifecycle deps
+-
+-*/
+-
+-/**
+- * Adaptor class that wraps the store to make it look like an ObjectStore.
+- *
+- * @author Jonathan Halliday (jonathan.halliday at redhat.com), 2010-03
+- */
+-public class HornetqObjectStoreAdaptor implements ObjectStoreAPI
+-{
+- private final HornetqJournalStore store;
+-
+- // used for standalone bootstrap via StoreManager
+- public HornetqObjectStoreAdaptor() throws IOException {
+-
+- HornetqJournalEnvironmentBean envBean = BeanPopulator.getDefaultInstance(HornetqJournalEnvironmentBean.class);
+-
+- this.store = new HornetqJournalStore(envBean);
+- }
+-
+- // used for beans wiring type bootstrap when running embedded.
+- public HornetqObjectStoreAdaptor(HornetqJournalStore store) {
+- this.store = store;
+- }
+-
+- @Override
+- public void start()
+- {
+- if(tsLogger.logger.isTraceEnabled()) {
+- tsLogger.logger.trace("HornetqObjectStore.start()");
+- }
+-
+- try {
+- store.start();
+- } catch(Exception e) {
+- throw new RuntimeException(e);
+- }
+- }
+-
+- @Override
+- public void stop()
+- {
+- if(tsLogger.logger.isTraceEnabled()) {
+- tsLogger.logger.trace("HornetqObjectStore.stop()");
+- }
+-
+- try {
+- store.stop();
+- } catch(Exception e) {
+- throw new RuntimeException(e);
+- }
+- }
+-
+- /**
+- * Read the object's shadowed state.
+- *
+- * @param u The object to work on.
+- * @param tn The type of the object to work on.
+- * @return the state of the object.
+- */
+- @Override
+- public InputObjectState read_uncommitted(Uid u, String tn) throws ObjectStoreException
+- {
+- throw new ObjectStoreException(tsLogger.i18NLogger.get_method_not_implemented());
+- }
+-
+- /**
+- * Remove the object's uncommitted state.
+- *
+- * @param u The object to work on.
+- * @param tn The type of the object to work on.
+- * @return <code>true</code> if no errors occurred, <code>false</code>
+- * otherwise.
+- */
+- @Override
+- public boolean remove_uncommitted(Uid u, String tn) throws ObjectStoreException
+- {
+- throw new ObjectStoreException(tsLogger.i18NLogger.get_method_not_implemented());
+- }
+-
+-
+- private String ensureTypenamePrefix(String typeName)
+- {
+- if(!typeName.startsWith("/")) {
+- typeName = "/"+typeName;
+- }
+- return typeName;
+- }
+-
+- /**
+- * Read the object's committed state.
+- *
+- * @param u The object to work on.
+- * @param typeName The type of the object to work on.
+- * @return the state of the object.
+- */
+- @Override
+- public InputObjectState read_committed(Uid u, String typeName) throws ObjectStoreException
+- {
+- if(tsLogger.logger.isTraceEnabled()) {
+- tsLogger.logger.trace("HornetqObjectStore.read_committed("+u+", "+typeName+")");
+- }
+-
+- typeName = ensureTypenamePrefix(typeName);
+-
+- return store.read_committed(u, typeName);
+- }
+-
+- /**
+- * Remove the object's committed state.
+- *
+- * @param u The object to work on.
+- * @param typeName The type of the object to work on.
+- * @return <code>true</code> if no errors occurred, <code>false</code>
+- * otherwise.
+- */
+- @Override
+- public boolean remove_committed(Uid u, String typeName) throws ObjectStoreException
+- {
+- if(tsLogger.logger.isTraceEnabled()) {
+- tsLogger.logger.trace("HornetqObjectStore.remove_committed("+u+", "+typeName+")");
+- }
+-
+- typeName = ensureTypenamePrefix(typeName);
+-
+- return store.remove_committed(u, typeName);
+- }
+-
+- /**
+- * Hide the object's state in the object store. Used by crash
+- * recovery.
+- *
+- * @param u The object to work on.
+- * @param tn The type of the object to work on.
+- * @return <code>true</code> if no errors occurred, <code>false</code>
+- * otherwise.
+- */
+- @Override
+- public boolean hide_state(Uid u, String tn) throws ObjectStoreException
+- {
+- throw new ObjectStoreException(tsLogger.i18NLogger.get_method_not_implemented());
+- }
+-
+- /**
+- * Reveal a hidden object's state.
+- *
+- * @param u The object to work on.
+- * @param tn The type of the object to work on.
+- * @return <code>true</code> if no errors occurred, <code>false</code>
+- * otherwise.
+- */
+- @Override
+- public boolean reveal_state(Uid u, String tn) throws ObjectStoreException
+- {
+- throw new ObjectStoreException(tsLogger.i18NLogger.get_method_not_implemented());
+- }
+-
+- /**
+- * Commit the object's state in the object store.
+- *
+- * @param u The object to work on.
+- * @param tn The type of the object to work on.
+- * @return <code>true</code> if no errors occurred, <code>false</code>
+- * otherwise.
+- */
+- @Override
+- public boolean commit_state(Uid u, String tn) throws ObjectStoreException
+- {
+- throw new ObjectStoreException(tsLogger.i18NLogger.get_method_not_implemented());
+- }
+-
+- /**
+- * @param u The object to query.
+- * @param typeName The type of the object to query.
+- * @return the current state of the object's state (e.g., shadowed,
+- * committed ...) [StateStatus]
+- */
+- @Override
+- public int currentState(Uid u, String typeName) throws ObjectStoreException
+- {
+- if(tsLogger.logger.isTraceEnabled()) {
+- tsLogger.logger.trace("HornetqObjectStore.currentState("+u+", "+typeName+")");
+- }
+-
+- typeName = ensureTypenamePrefix(typeName);
+-
+- if( store.contains(u, typeName)) {
+- return StateStatus.OS_COMMITTED;
+- } else {
+- return StateStatus.OS_UNKNOWN;
+- }
+- }
+-
+-
+- /**
+- * Write a copy of the object's uncommitted state.
+- *
+- * @param u The object to work on.
+- * @param tn The type of the object to work on.
+- * @param buff The state to write.
+- * @return <code>true</code> if no errors occurred, <code>false</code>
+- * otherwise.
+- */
+- @Override
+- public boolean write_uncommitted(Uid u, String tn, OutputObjectState buff) throws ObjectStoreException
+- {
+- throw new ObjectStoreException(tsLogger.i18NLogger.get_method_not_implemented());
+- }
+-
+- /**
+- * Write a new copy of the object's committed state.
+- *
+- * @param u The object to work on.
+- * @param typeName The type of the object to work on.
+- * @param buff The state to write.
+- * @return <code>true</code> if no errors occurred, <code>false</code>
+- * otherwise.
+- */
+- @Override
+- public boolean write_committed(Uid u, String typeName, OutputObjectState buff) throws ObjectStoreException
+- {
+- if(tsLogger.logger.isTraceEnabled()) {
+- tsLogger.logger.trace("HornetqObjectStore.write_committed("+u+", "+typeName+")");
+- }
+-
+- typeName = ensureTypenamePrefix(typeName);
+-
+- return store.write_committed(u, typeName, buff);
+- }
+-
+- @Override
+- public boolean allObjUids(String typeName, InputObjectState foundInstances) throws ObjectStoreException
+- {
+- if(tsLogger.logger.isTraceEnabled()) {
+- tsLogger.logger.trace("HornetqObjectStore.allObjUids("+typeName+")");
+- }
+-
+- typeName = ensureTypenamePrefix(typeName);
+-
+- return allObjUids(typeName, foundInstances, StateStatus.OS_UNKNOWN);
+- }
+-
+- /**
+- * Obtain all of the Uids for a specified type.
+- *
+- * @param typeName The type to scan for.
+- * @param foundInstances The object state in which to store the Uids
+- * @param matchState The file type to look for (e.g., committed, shadowed). [StateStatus]
+- * @return <code>true</code> if no errors occurred, <code>false</code>
+- * otherwise.
+- */
+- @Override
+- public boolean allObjUids(String typeName, InputObjectState foundInstances, int matchState) throws ObjectStoreException
+- {
+- if(tsLogger.logger.isTraceEnabled()) {
+- tsLogger.logger.trace("HornetqObjectStore.allObjUids("+typeName+", "+matchState+")");
+- }
+-
+- boolean result = true;
+-
+- typeName = ensureTypenamePrefix(typeName);
+-
+- Uid[] uids = store.getUidsForType(typeName); // may contain trailing null elements
+-
+- OutputObjectState buffer = new OutputObjectState();
+-
+- try
+- {
+- if(uids != null && (matchState == StateStatus.OS_UNKNOWN || matchState == StateStatus.OS_COMMITTED))
+- {
+- for (Uid uid: uids)
+- {
+- if(uid != null) {
+- UidHelper.packInto(uid, buffer);
+- }
+- }
+- }
+- UidHelper.packInto(Uid.nullUid(), buffer);
+- }
+- catch (IOException e)
+- {
+- throw new ObjectStoreException(e);
+- }
+-
+- foundInstances.setBuffer(buffer.buffer());
+-
+- return result;
+- }
+-
+-
+- /**
+- * Obtain all types of objects stored in the object store.
+- *
+- * @param foundTypes The state in which to store the types.
+- * @return <code>true</code> if no errors occurred, <code>false</code>
+- * otherwise.
+- */
+- @Override
+- public boolean allTypes(InputObjectState foundTypes) throws ObjectStoreException
+- {
+- if(tsLogger.logger.isTraceEnabled()) {
+- tsLogger.logger.trace("HornetqObjectStore.allTypes()");
+- }
+-
+- boolean result = true;
+-
+- String[] knownTypes = store.getKnownTypes(); // may contain trailing null elements
+- Set<String> typeSet = new HashSet<String>();
+-
+- if (knownTypes == null || knownTypes.length == 0)
+- return true;
+-
+- OutputObjectState buffer = new OutputObjectState();
+-
+- try
+- {
+- for (String typeName: knownTypes)
+- {
+- if(typeName == null) {
+- continue;
+- }
+-
+- if(typeName.startsWith("/")) {
+- typeName = typeName.substring(1);
+- }
+-
+- if(typeName.contains("/")) {
+- String value = "";
+- String[] parents = typeName.split("/");
+- for(String parent : parents) {
+- if(parent.length() == 0) {
+- continue;
+- }
+- if(value.length() > 0) {
+- value = value+"/";
+- }
+- value = value+parent;
+- if(!typeSet.contains(value)) {
+- typeSet.add(value);
+- buffer.packString(value);
+- }
+- }
+- } else {
+- buffer.packString(typeName);
+- }
+- }
+- buffer.packString("");
+- }
+- catch (IOException e)
+- {
+- throw new ObjectStoreException(e);
+- }
+-
+- foundTypes.setBuffer(buffer.buffer());
+-
+- return result;
+- }
+-
+- /**
+- * Some object store implementations may be running with automatic
+- * sync disabled. Calling this method will ensure that any states are
+- * flushed to disk.
+- */
+- @Override
+- public void sync() throws SyncFailedException, ObjectStoreException
+- {
+- // null-op in this impl.
+- }
+-
+- /**
+- * @return the "name" of the object store. Where in the hierarchy it appears, e.g., /ObjectStore/MyName/...
+- */
+- @Override
+- public String getStoreName()
+- {
+- return store.getStoreName();
+- }
+-
+- @Override
+- public boolean fullCommitNeeded()
+- {
+- return false;
+- }
+-
+- /**
+- * Is the current state of the object the same as that provided as the last
+- * parameter?
+- *
+- * @param u The object to work on.
+- * @param tn The type of the object.
+- * @param st The expected type of the object. [StateType]
+- * @return <code>true</code> if the current state is as expected,
+- * <code>false</code> otherwise.
+- */
+- @Override
+- public boolean isType(Uid u, String tn, int st) throws ObjectStoreException
+- {
+- return false;
+- }
+-}
+\ No newline at end of file
diff --git a/jboss-jts-4.16.2.Final-integration-pom.patch b/jboss-jts-4.16.2.Final-integration-pom.patch
new file mode 100644
index 0000000..366ffa4
--- /dev/null
+++ b/jboss-jts-4.16.2.Final-integration-pom.patch
@@ -0,0 +1,16 @@
+--- jbossjta-integration.pom 2012-03-23 11:40:35.980000693 +0100
++++ jbossjta-integration.pom.work 2012-03-23 11:40:48.859000380 +0100
+@@ -278,13 +278,6 @@
+ <version>2.0.5312</version>
+ </dependency>
+
+- <!-- HornetQ Journal based object store requires HornetQ core,
+- at least until HORNETQ-274 is done -->
+- <dependency>
+- <groupId>org.hornetq</groupId>
+- <artifactId>hornetq-core</artifactId>
+- </dependency>
+-
+ <dependency>
+ <groupId>org.jboss.netty</groupId>
+ <artifactId>netty</artifactId>
diff --git a/jboss-jts-4.16.2.Final-orson.patch b/jboss-jts-4.16.2.Final-orson.patch
new file mode 100644
index 0000000..d430116
--- /dev/null
+++ b/jboss-jts-4.16.2.Final-orson.patch
@@ -0,0 +1,859 @@
+diff -Naur jboss-jts-4.16.2.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfGraph.java jboss-jts-4.16.2.Final-work/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfGraph.java
+--- jboss-jts-4.16.2.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfGraph.java 2012-01-19 02:36:02.000000000 -0500
++++ jboss-jts-4.16.2.Final-work/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfGraph.java 1969-12-31 19:00:00.000000000 -0500
+@@ -1,762 +0,0 @@
+-/*
+- * JBoss, Home of Professional Open Source
+- * Copyright 2011, Red Hat, Inc. and/or its affiliates,
+- * and individual contributors as indicated by the @author tags.
+- * See the copyright.txt in the distribution for a
+- * full listing of individual contributors.
+- * This copyrighted material is made available to anyone wishing to use,
+- * modify, copy, or redistribute it subject to the terms and conditions
+- * of the GNU Lesser General Public License, v. 2.1.
+- * This program is distributed in the hope that it will be useful, but WITHOUT A
+- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+- * You should have received a copy of the GNU Lesser General Public License,
+- * v.2.1 along with this distribution; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+- * MA 02110-1301, USA.
+- *
+- * (C) 2011,
+- * @author JBoss, by Red Hat.
+- */
+-package com.arjuna.ats.arjuna.tools.stats;
+-
+-import java.awt.BorderLayout;
+-import java.awt.Container;
+-import java.awt.event.ActionEvent;
+-import java.awt.event.ActionListener;
+-import java.io.IOException;
+-import java.lang.reflect.InvocationTargetException;
+-import java.net.MalformedURLException;
+-import java.text.SimpleDateFormat;
+-import java.util.TimeZone;
+-
+-import javax.management.JMX;
+-import javax.management.MBeanServerConnection;
+-import javax.management.ObjectName;
+-import javax.management.remote.JMXConnector;
+-import javax.management.remote.JMXConnectorFactory;
+-import javax.management.remote.JMXServiceURL;
+-import javax.swing.JComponent;
+-import javax.swing.JFrame;
+-import javax.swing.JMenuBar;
+-import javax.swing.JSpinner;
+-import javax.swing.SpinnerModel;
+-import javax.swing.SpinnerNumberModel;
+-import javax.swing.SwingUtilities;
+-import javax.swing.SwingWorker;
+-import javax.swing.border.EmptyBorder;
+-
+-import org.jfree.data.general.DefaultPieDataset;
+-import org.jfree.data.xy.XYSeries;
+-import org.jfree.data.xy.XYSeriesCollection;
+-
+-import com.arjuna.ats.arjuna.common.CoordinatorEnvironmentBeanMBean;
+-import com.arjuna.ats.arjuna.coordinator.TxStatsMBean;
+-
+-public class TxPerfGraph extends javax.swing.JPanel { //JFrame {
+- private final static int NUMBER_OF_SAMPLES = 100;
+-
+- private int POLL_PERIOD = 4000; // in ms
+-
+- public final static int NUMBER_OF_TRANSACTIONS_SERIES = 0;
+- public final static int NUMBER_OF_INFLIGHT_SERIES = 1;
+- public final static int NUMBER_OF_COMMITTED_SERIES = 2;
+- public final static int NUMBER_OF_ABORTED_SERIES = 3;
+- public final static int NUMBER_OF_HEURISTICS_SERIES = 4;
+- public final static int NUMBER_OF_NESTED_SERIES = 5;
+- public final static int NUMBER_OF_TIMEDOUT_SERIES = 6;
+-
+- private final static String[] SERIES_LABELS = {
+- "Transactions Created",
+- "In Flight Transactions",
+- "Committed Transactions",
+- "Aborted Transactions",
+- "Heuristics Raised",
+- "Nested Transactions Created",
+- "Timed Out Transactions",
+- };
+-
+- private final static String[] PIE_CHART_LABELS = {
+- "Nested",
+- "Heuristic",
+- "Committed",
+- "Aborted",
+- };
+-
+- private final static int[] PIE_CHART_SERIES = new int[] {
+- NUMBER_OF_NESTED_SERIES,
+- NUMBER_OF_HEURISTICS_SERIES,
+- NUMBER_OF_COMMITTED_SERIES,
+- NUMBER_OF_ABORTED_SERIES,
+- };
+-
+- private static final TimeZone GMT = TimeZone.getTimeZone("GMT");
+- private static SimpleDateFormat timeFormatter = new SimpleDateFormat("HH:mm:ss");
+-
+- private MBeanServerConnection server;
+- private JFrame frame;
+- private TxStatsMBean txMBean;
+- private CoordinatorEnvironmentBeanMBean coordMBean;
+-
+- private XYSeries[] _dataSeries = new XYSeries[7];
+- private XYSeriesCollection _tsDS[] = new XYSeriesCollection[7];
+- private long counter = 0L;
+- private DefaultPieDataset pieDS;
+- // TimerTask timerTask;
+- // Timer timer = new Timer("TxPerf Sampling thread");
+- javax.swing.Timer swingTimer;
+- ActionListener taskPerformer;
+-
+- /** Creates new form TxPerfGraph */
+- public TxPerfGraph(JFrame frame) {
+- this.frame = frame;
+- timeFormatter.setTimeZone(GMT);
+-
+- initComponents();
+-
+- for (int count = 0; count < _dataSeries.length; count++) {
+- _dataSeries[count] = new XYSeries(SERIES_LABELS[count]);//, Second.class);
+- //_dataSeries[count].setMaximumItemCount(NUMBER_OF_SAMPLES);
+- _tsDS[count] = new XYSeriesCollection(_dataSeries[count]);
+- }
+-
+- chart1.setDataset(_tsDS[NUMBER_OF_TRANSACTIONS_SERIES]);
+- chart1.setTitle(SERIES_LABELS[NUMBER_OF_TRANSACTIONS_SERIES]);
+- chart1.setSubtitle("");
+-
+- // DateAxis xAxis = new DateAxis("Time (hh:mm) Zulu", GMT);
+- // xAxis.setAutoRange(true);
+- // xAxis.setTickUnit(new DateTickUnit(DateTickUnit.MINUTE, 60, timeFormatter));
+- // xAxis.setVerticalTickLabels(true);
+- // xAxis.setDateFormatOverride(timeFormatter);
+-
+-
+- allTxnBtn.setSelected(true);
+-
+- pieDS = new DefaultPieDataset();
+-
+- txnPieChart.setDataset(pieDS);
+- txnPieChart.setTitle("All Transactions");
+- txnPieChart.setSubtitle("(during last time slices)");
+-
+- periodSelectSlider.setMajorTickSpacing(10);
+- periodSelectSlider.setToolTipText(
+- "Select the number of (" + POLL_PERIOD + "ms) time slices over which to show the pie chart");
+-
+- SpinnerModel sm1 = new SpinnerNumberModel(POLL_PERIOD / 1000, 1, 10000, 1);
+- SpinnerModel sm2 = new SpinnerNumberModel(NUMBER_OF_SAMPLES, 10, 1000, 1);
+-
+- pollIntervalSpinner.setModel(sm1);
+- pollIntervalSpinner.setEditor(new JSpinner.NumberEditor(pollIntervalSpinner, "#"));
+- sampleSizeSpinner.setModel(sm2);
+- sampleSizeSpinner.setEditor(new JSpinner.NumberEditor(sampleSizeSpinner, "#"));
+-
+- pollIntervalSpinner.setVisible(false);
+- sampleSizeSpinner.setVisible(false);
+- enableStatsCB.setSelected(false);
+- resetStatsBtn.setVisible(false);
+- pollIntervalBtn.setVisible(false);
+- sampleSizeBtn1.setVisible(false);
+-
+- taskPerformer = new ActionListener() {
+- public void actionPerformed(ActionEvent evt) {
+- newSwingWorker().execute();
+- }
+- };
+-
+- swingTimer = new javax.swing.Timer(POLL_PERIOD, taskPerformer);
+-
+- chartsPane.setSelectedIndex(1);
+- }
+-
+- public void setMBeanServerConnection(MBeanServerConnection mbs) {
+- this.server = mbs;
+- try {
+- txMBean = JMX.newMBeanProxy(server,
+- new ObjectName("jboss.jta:name=TransactionStatistics"), TxStatsMBean.class);
+- coordMBean = JMX.newMBeanProxy(server,
+- new ObjectName("jboss.jta:name=CoordinatorEnvironmentBean"),
+- CoordinatorEnvironmentBeanMBean.class);
+-
+- coordMBean.setEnableStatistics(true);
+- enableStatsCB.setSelected(true);
+-
+-// } catch (javax.management.InstanceNotFoundException e) {
+-// System.out.println("Transaction statistics MBean is not available.");
+- } catch (Exception e) {
+- e.printStackTrace();
+- }
+- }
+-
+- private void resetStats() {
+- //int cindex = _dataSeries[0].getIndex(now);
+- }
+-
+- private void sample() {
+- try {
+- counter += 1;
+-
+- long [] stats = new long[7];
+-
+- stats[NUMBER_OF_TRANSACTIONS_SERIES] = txMBean.getNumberOfTransactions();
+- stats[NUMBER_OF_INFLIGHT_SERIES] = txMBean.getNumberOfInflightTransactions();
+- stats[NUMBER_OF_COMMITTED_SERIES] = txMBean.getNumberOfCommittedTransactions();
+- stats[NUMBER_OF_ABORTED_SERIES] = txMBean.getNumberOfAbortedTransactions();
+- stats[NUMBER_OF_HEURISTICS_SERIES] = txMBean.getNumberOfHeuristics();
+- stats[NUMBER_OF_NESTED_SERIES] = txMBean.getNumberOfNestedTransactions();
+- stats[NUMBER_OF_TIMEDOUT_SERIES] = txMBean.getNumberOfTimedOutTransactions();
+-
+- for (int i = 0; i < 7; i++) {
+- _dataSeries[i].add(counter, stats[i]);
+- }
+-
+- if (counter > 1) {
+- int cindex = _dataSeries[0].indexOf(counter);
+- int slices = periodSelectSlider.getValue();
+- int lb = cindex < slices ? 0 : cindex - slices;
+-
+- for (int i = 0; i < PIE_CHART_SERIES.length; i++) {
+- XYSeries ts = _dataSeries[PIE_CHART_SERIES[i]];
+- Number n1 = ts.getDataItem(cindex).getY();
+- Number n2 = ts.getDataItem(lb).getY();
+-
+- pieDS.setValue(PIE_CHART_LABELS[i], n1.longValue() - n2.longValue());
+- }
+-
+- txnPieChart.setSubtitle("(during last " + // (cindex - lb + 1) * POLL_PERIOD / 1000 + " seconds) - " +
+- (cindex - lb + 1) + " poll intervals");
+- }
+- } catch (Exception e) {
+- System.err.println("MBean property failure: " + e);
+- }
+- }
+-
+- /** This method is called from within the constructor to
+- * initialize the form.
+- * WARNING: Do NOT modify this code. The content of this method is
+- * always regenerated by the Form Editor.
+- */
+- @SuppressWarnings("unchecked")
+- // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+- private void initComponents() {
+-
+- seriesSelectBtnGroup = new javax.swing.ButtonGroup();
+- configBtnGroup = new javax.swing.ButtonGroup();
+- jPanel1 = new javax.swing.JPanel();
+- btnPanel = new javax.swing.JPanel();
+- jLabel1 = new javax.swing.JLabel();
+- allTxnBtn = new javax.swing.JRadioButton();
+- inFlightTxnBtn = new javax.swing.JRadioButton();
+- committedTxnBtn = new javax.swing.JRadioButton();
+- abortedTxnBtn = new javax.swing.JRadioButton();
+- heuristicTxnBtn = new javax.swing.JRadioButton();
+- nestedTxnBtn = new javax.swing.JRadioButton();
+- timedoutTxnBtn = new javax.swing.JRadioButton();
+- chartsPane = new javax.swing.JTabbedPane();
+- configTab = new javax.swing.JPanel();
+- resetStatsBtn = new javax.swing.JButton();
+- pollIntervalSpinner = new javax.swing.JSpinner();
+- pollIntervalBtn = new javax.swing.JButton();
+- enableStatsCB = new javax.swing.JCheckBox();
+- sampleSizeBtn1 = new javax.swing.JButton();
+- sampleSizeSpinner = new javax.swing.JSpinner();
+- chart1 = new org.jfree.beans.JLineChart();
+- txnPieChart = new org.jfree.beans.JPieChart();
+- periodSelectPanel = new javax.swing.JPanel();
+- jLabel2 = new javax.swing.JLabel();
+- periodSelectSlider = new javax.swing.JSlider();
+- menuBar = new javax.swing.JMenuBar();
+-
+- setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.LINE_AXIS));
+-
+- jLabel1.setText("Select Series");
+-
+- seriesSelectBtnGroup.add(allTxnBtn);
+- allTxnBtn.setText("Transactions");
+- allTxnBtn.setToolTipText("Show all transactions");
+- allTxnBtn.addActionListener(new java.awt.event.ActionListener() {
+- public void actionPerformed(java.awt.event.ActionEvent evt) {
+- allTxnBtnActionPerformed(evt);
+- }
+- });
+-
+- seriesSelectBtnGroup.add(inFlightTxnBtn);
+- inFlightTxnBtn.setText("In Flight");
+- inFlightTxnBtn.setToolTipText("Show transactions that have not yet been committed/aborted");
+- inFlightTxnBtn.addActionListener(new java.awt.event.ActionListener() {
+- public void actionPerformed(java.awt.event.ActionEvent evt) {
+- inFlightTxnBtnActionPerformed(evt);
+- }
+- });
+-
+- seriesSelectBtnGroup.add(committedTxnBtn);
+- committedTxnBtn.setText("Committed");
+- committedTxnBtn.setToolTipText("Show successfully committed transactions");
+- committedTxnBtn.addActionListener(new java.awt.event.ActionListener() {
+- public void actionPerformed(java.awt.event.ActionEvent evt) {
+- committedTxnBtnActionPerformed(evt);
+- }
+- });
+-
+- seriesSelectBtnGroup.add(abortedTxnBtn);
+- abortedTxnBtn.setText("Aborted");
+- abortedTxnBtn.setToolTipText("Show stats for rolled back transactions");
+- abortedTxnBtn.addActionListener(new java.awt.event.ActionListener() {
+- public void actionPerformed(java.awt.event.ActionEvent evt) {
+- abortedTxnBtnActionPerformed(evt);
+- }
+- });
+-
+- seriesSelectBtnGroup.add(heuristicTxnBtn);
+- heuristicTxnBtn.setText("Heuristics");
+- heuristicTxnBtn.setToolTipText("Show stats for transactions that terminated with a heuristic outcome");
+- heuristicTxnBtn.addActionListener(new java.awt.event.ActionListener() {
+- public void actionPerformed(java.awt.event.ActionEvent evt) {
+- heuristicTxnBtnActionPerformed(evt);
+- }
+- });
+-
+- seriesSelectBtnGroup.add(nestedTxnBtn);
+- nestedTxnBtn.setText("Nested");
+- nestedTxnBtn.setToolTipText("Stats for nested transactions");
+- nestedTxnBtn.addActionListener(new java.awt.event.ActionListener() {
+- public void actionPerformed(java.awt.event.ActionEvent evt) {
+- nestedTxnBtnActionPerformed(evt);
+- }
+- });
+-
+- seriesSelectBtnGroup.add(timedoutTxnBtn);
+- timedoutTxnBtn.setText("Timed Out");
+- timedoutTxnBtn.setToolTipText("Stats for transactions which exceeded there time to live");
+- timedoutTxnBtn.addActionListener(new java.awt.event.ActionListener() {
+- public void actionPerformed(java.awt.event.ActionEvent evt) {
+- timedoutTxnBtnActionPerformed(evt);
+- }
+- });
+-
+- javax.swing.GroupLayout btnPanelLayout = new javax.swing.GroupLayout(btnPanel);
+- btnPanel.setLayout(btnPanelLayout);
+- btnPanelLayout.setHorizontalGroup(
+- btnPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addGroup(btnPanelLayout.createSequentialGroup()
+- .addContainerGap()
+- .addGroup(btnPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addGroup(btnPanelLayout.createSequentialGroup()
+- .addGroup(btnPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addComponent(inFlightTxnBtn)
+- .addComponent(allTxnBtn)
+- .addComponent(abortedTxnBtn)
+- .addComponent(committedTxnBtn))
+- .addGap(35, 35, 35)
+- .addGroup(btnPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addComponent(nestedTxnBtn)
+- .addComponent(heuristicTxnBtn)
+- .addComponent(timedoutTxnBtn)))
+- .addComponent(jLabel1))
+- .addContainerGap(188, Short.MAX_VALUE))
+- );
+- btnPanelLayout.setVerticalGroup(
+- btnPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, btnPanelLayout.createSequentialGroup()
+- .addContainerGap()
+- .addComponent(jLabel1)
+- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+- .addGroup(btnPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addGroup(btnPanelLayout.createSequentialGroup()
+- .addComponent(heuristicTxnBtn)
+- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+- .addComponent(nestedTxnBtn)
+- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+- .addComponent(timedoutTxnBtn))
+- .addGroup(btnPanelLayout.createSequentialGroup()
+- .addComponent(allTxnBtn)
+- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+- .addComponent(inFlightTxnBtn)
+- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+- .addComponent(committedTxnBtn)
+- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+- .addComponent(abortedTxnBtn))))
+- );
+-
+- chartsPane.addChangeListener(new javax.swing.event.ChangeListener() {
+- public void stateChanged(javax.swing.event.ChangeEvent evt) {
+- chartsPaneStateChanged(evt);
+- }
+- });
+-
+- resetStatsBtn.setText("Reset Stats");
+- resetStatsBtn.addActionListener(new java.awt.event.ActionListener() {
+- public void actionPerformed(java.awt.event.ActionEvent evt) {
+- resetStatsBtnActionPerformed(evt);
+- }
+- });
+-
+- pollIntervalSpinner.setToolTipText("Change polling interval (in seconds)");
+-
+- pollIntervalBtn.setText("Set Poll Interval");
+- pollIntervalBtn.setToolTipText("Change polling interval (in seconds)");
+- pollIntervalBtn.addActionListener(new java.awt.event.ActionListener() {
+- public void actionPerformed(java.awt.event.ActionEvent evt) {
+- pollIntervalBtnActionPerformed(evt);
+- }
+- });
+-
+- enableStatsCB.setSelected(true);
+- enableStatsCB.setText("Enable Statistics");
+- enableStatsCB.setToolTipText("Stop data collection by disabling the stats MBean in the target JVM");
+- enableStatsCB.addActionListener(new java.awt.event.ActionListener() {
+- public void actionPerformed(java.awt.event.ActionEvent evt) {
+- enableStatsCBActionPerformed(evt);
+- }
+- });
+-
+- sampleSizeBtn1.setText("Set Sample Size");
+- sampleSizeBtn1.setToolTipText("Change polling interval (in seconds)");
+- sampleSizeBtn1.addActionListener(new java.awt.event.ActionListener() {
+- public void actionPerformed(java.awt.event.ActionEvent evt) {
+- sampleSizeBtn1ActionPerformed(evt);
+- }
+- });
+-
+- sampleSizeSpinner.setToolTipText("Change Number of Data Samples ");
+-
+- javax.swing.GroupLayout configTabLayout = new javax.swing.GroupLayout(configTab);
+- configTab.setLayout(configTabLayout);
+- configTabLayout.setHorizontalGroup(
+- configTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addGroup(configTabLayout.createSequentialGroup()
+- .addGap(23, 23, 23)
+- .addGroup(configTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addComponent(resetStatsBtn, javax.swing.GroupLayout.DEFAULT_SIZE, 246, Short.MAX_VALUE)
+- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, configTabLayout.createSequentialGroup()
+- .addComponent(pollIntervalBtn, javax.swing.GroupLayout.DEFAULT_SIZE, 120, Short.MAX_VALUE)
+- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+- .addComponent(pollIntervalSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE))
+- .addGroup(configTabLayout.createSequentialGroup()
+- .addGap(2, 2, 2)
+- .addGroup(configTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addComponent(enableStatsCB)
+- .addGroup(configTabLayout.createSequentialGroup()
+- .addComponent(sampleSizeBtn1)
+- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+- .addComponent(sampleSizeSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE)))))
+- .addGap(149, 149, 149))
+- );
+- configTabLayout.setVerticalGroup(
+- configTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addGroup(configTabLayout.createSequentialGroup()
+- .addGap(38, 38, 38)
+- .addComponent(enableStatsCB)
+- .addGap(29, 29, 29)
+- .addGroup(configTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+- .addComponent(sampleSizeBtn1)
+- .addComponent(sampleSizeSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+- .addGroup(configTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+- .addComponent(pollIntervalBtn)
+- .addComponent(pollIntervalSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+- .addComponent(resetStatsBtn)
+- .addContainerGap(47, Short.MAX_VALUE))
+- );
+-
+- chartsPane.addTab("Settings", configTab);
+-
+- chart1.setXAxisLabel("Number of Poll Intervals");
+- chart1.setXAxisScale(org.jfree.beans.AxisScale.INTEGER);
+- chart1.setYAxisLabel("Number of Txns");
+- chart1.setYAxisScale(org.jfree.beans.AxisScale.INTEGER);
+-
+- javax.swing.GroupLayout chart1Layout = new javax.swing.GroupLayout(chart1);
+- chart1.setLayout(chart1Layout);
+- chart1Layout.setHorizontalGroup(
+- chart1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addGap(0, 418, Short.MAX_VALUE)
+- );
+- chart1Layout.setVerticalGroup(
+- chart1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addGap(0, 235, Short.MAX_VALUE)
+- );
+-
+- chartsPane.addTab("Transactions", null, chart1, "View Transaction Statistics");
+-
+- javax.swing.GroupLayout txnPieChartLayout = new javax.swing.GroupLayout(txnPieChart);
+- txnPieChart.setLayout(txnPieChartLayout);
+- txnPieChartLayout.setHorizontalGroup(
+- txnPieChartLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addGap(0, 418, Short.MAX_VALUE)
+- );
+- txnPieChartLayout.setVerticalGroup(
+- txnPieChartLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addGap(0, 235, Short.MAX_VALUE)
+- );
+-
+- chartsPane.addTab("Pie Chart", null, txnPieChart, "View Transactions as a Pie Chart");
+-
+- jLabel2.setText("Time Slices");
+- jLabel2.setToolTipText("Select the number of polling periods to use for populating the pie chart");
+-
+- periodSelectSlider.setPaintLabels(true);
+- periodSelectSlider.setPaintTicks(true);
+- periodSelectSlider.setToolTipText("Select the number of time slices over which to show the pie chart");
+- periodSelectSlider.setValue(30);
+-
+- javax.swing.GroupLayout periodSelectPanelLayout = new javax.swing.GroupLayout(periodSelectPanel);
+- periodSelectPanel.setLayout(periodSelectPanelLayout);
+- periodSelectPanelLayout.setHorizontalGroup(
+- periodSelectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addGroup(periodSelectPanelLayout.createSequentialGroup()
+- .addContainerGap()
+- .addComponent(jLabel2)
+- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+- .addComponent(periodSelectSlider, javax.swing.GroupLayout.DEFAULT_SIZE, 334, Short.MAX_VALUE))
+- );
+- periodSelectPanelLayout.setVerticalGroup(
+- periodSelectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addGroup(periodSelectPanelLayout.createSequentialGroup()
+- .addGroup(periodSelectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addGroup(periodSelectPanelLayout.createSequentialGroup()
+- .addGap(12, 12, 12)
+- .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 36, Short.MAX_VALUE))
+- .addComponent(periodSelectSlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+- .addContainerGap())
+- );
+-
+- javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
+- jPanel1.setLayout(jPanel1Layout);
+- jPanel1Layout.setHorizontalGroup(
+- jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addGroup(jPanel1Layout.createSequentialGroup()
+- .addContainerGap()
+- .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addComponent(periodSelectPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+- .addComponent(chartsPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 430, Short.MAX_VALUE)
+- .addComponent(btnPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+- .addContainerGap())
+- );
+- jPanel1Layout.setVerticalGroup(
+- jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+- .addGroup(jPanel1Layout.createSequentialGroup()
+- .addComponent(chartsPane, javax.swing.GroupLayout.PREFERRED_SIZE, 278, javax.swing.GroupLayout.PREFERRED_SIZE)
+- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+- .addComponent(periodSelectPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
+- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+- .addComponent(btnPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+- .addContainerGap(14, Short.MAX_VALUE))
+- );
+-
+- add(jPanel1);
+- add(menuBar);
+- }// </editor-fold>//GEN-END:initComponents
+-
+- private void btnActionPerformed(int series) {
+- chart1.setDataset(_tsDS[series]);
+- chart1.setTitle(SERIES_LABELS[series]);
+- }
+- private void allTxnBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_allTxnBtnActionPerformed
+- btnActionPerformed(NUMBER_OF_TRANSACTIONS_SERIES);
+- }//GEN-LAST:event_allTxnBtnActionPerformed
+-
+- private void inFlightTxnBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_inFlightTxnBtnActionPerformed
+- btnActionPerformed(NUMBER_OF_INFLIGHT_SERIES);
+- }//GEN-LAST:event_inFlightTxnBtnActionPerformed
+-
+- private void heuristicTxnBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_heuristicTxnBtnActionPerformed
+- btnActionPerformed(NUMBER_OF_HEURISTICS_SERIES);
+- }//GEN-LAST:event_heuristicTxnBtnActionPerformed
+-
+- private void committedTxnBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_committedTxnBtnActionPerformed
+- btnActionPerformed(NUMBER_OF_COMMITTED_SERIES);
+- }//GEN-LAST:event_committedTxnBtnActionPerformed
+-
+- private void abortedTxnBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_abortedTxnBtnActionPerformed
+- btnActionPerformed(NUMBER_OF_ABORTED_SERIES);
+- }//GEN-LAST:event_abortedTxnBtnActionPerformed
+-
+- private void nestedTxnBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nestedTxnBtnActionPerformed
+- btnActionPerformed(NUMBER_OF_NESTED_SERIES);
+- }//GEN-LAST:event_nestedTxnBtnActionPerformed
+-
+- private void timedoutTxnBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_timedoutTxnBtnActionPerformed
+- btnActionPerformed(NUMBER_OF_TIMEDOUT_SERIES);
+- }//GEN-LAST:event_timedoutTxnBtnActionPerformed
+-
+- private void chartsPaneStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_chartsPaneStateChanged
+- int tab = chartsPane.getSelectedIndex();
+-
+- btnPanel.setVisible(false);
+- periodSelectPanel.setVisible(false);
+-
+- switch (tab) {
+- case 1: btnPanel.setVisible(true); break;
+- case 2: periodSelectPanel.setVisible(true); break;
+- default:
+- break;
+- }
+- }//GEN-LAST:event_chartsPaneStateChanged
+-
+- private void pollIntervalBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pollIntervalBtnActionPerformed
+- Integer v = (Integer) pollIntervalSpinner.getValue();
+-
+- POLL_PERIOD = v * 1000;
+- swingTimer.setDelay(POLL_PERIOD);
+- startPolling();
+- }//GEN-LAST:event_pollIntervalBtnActionPerformed
+-
+- private void resetStatsBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_resetStatsBtnActionPerformed
+- resetStats();
+-}//GEN-LAST:event_resetStatsBtnActionPerformed
+-
+- private void enableStatsCBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_enableStatsCBActionPerformed
+- coordMBean.setEnableStatistics(enableStatsCB.isSelected());
+- }//GEN-LAST:event_enableStatsCBActionPerformed
+-
+- private void sampleSizeBtn1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sampleSizeBtn1ActionPerformed
+- // TODO add your handling code here:
+- }//GEN-LAST:event_sampleSizeBtn1ActionPerformed
+-
+- private void startPolling() {
+- // timer.cancel();
+-
+- //timer.schedule(timerTask, 0, POLL_PERIOD);
+- if (swingTimer.isRunning())
+- swingTimer.restart();
+- else
+- swingTimer.start();
+- }
+-
+- private static void createAndShowGUI(TxPerfGraph perfPanel) {
+- JFrame frame = perfPanel.getFrame();
+- // Create and set up the window.
+- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+-
+- // Create and set up the content pane.
+- JComponent contentPane = (JComponent) frame.getContentPane();
+- contentPane.add(perfPanel, BorderLayout.CENTER);
+- contentPane.setOpaque(true); //content panes must be opaque
+- contentPane.setBorder(new EmptyBorder(12, 12, 12, 12));
+- frame.setContentPane(contentPane);
+-
+- // Display the window.
+- frame.pack();
+- frame.setVisible(true);
+- }
+-
+- private static MBeanServerConnection connect(String hostname, int port) {
+- String urlPath = "/jndi/rmi://" + hostname + ":" + port + "/jmxrmi";
+- MBeanServerConnection server = null;
+-
+- try {
+- JMXServiceURL url = new JMXServiceURL("rmi", "", 0, urlPath);
+- JMXConnector jmxc = JMXConnectorFactory.connect(url);
+- server = jmxc.getMBeanServerConnection();
+- } catch (MalformedURLException e) {
+- } catch (IOException e) {
+- System.err.println("Unable to get an MBean Server connection: " + e.getMessage());
+- System.exit(1);
+- }
+-
+- return server;
+- }
+-
+- /*
+- * SwingWorker for updating the TxPerf tab
+- */
+- public SwingWorker<XYSeries[], Object> newSwingWorker() {
+- return new Worker();
+- }
+-
+- void dispose() {
+-// if (coordMBean != null && disableStatsOnDispose.isSelected())
+-// coordMBean.setEnableStatistics(false);
+- }
+-
+- class Worker extends SwingWorker<XYSeries[], Object> {
+-
+- @Override
+- protected XYSeries[] doInBackground() throws Exception {
+- sample();
+- return _dataSeries;
+- }
+- }
+-
+- public static void main(String args[]) throws InterruptedException, InvocationTargetException {
+- final TxPerfGraph graphPanel = new TxPerfGraph(new JFrame("TxPerf"));
+- String hostname = "localhost";
+- int port = 1090;
+-
+- if (args.length > 0) {
+- String[] opts = args[0].split(":");
+-
+- hostname = opts[0];
+-
+- if (opts.length > 1)
+- port = Integer.parseInt(opts[1]);
+- }
+-
+- System.out.println("Connecting to MBeanServer on endpoint " + hostname + ":" + port);
+-
+- MBeanServerConnection server = connect(hostname, port);
+- graphPanel.setMBeanServerConnection(server);
+-
+- SwingUtilities.invokeAndWait(new Runnable() {
+-
+- public void run() {
+- createAndShowGUI(graphPanel);
+- }
+- });
+-
+- graphPanel.startPolling();
+-
+- }
+- // Variables declaration - do not modify//GEN-BEGIN:variables
+- private javax.swing.JRadioButton abortedTxnBtn;
+- private javax.swing.JRadioButton allTxnBtn;
+- private javax.swing.JPanel btnPanel;
+- private org.jfree.beans.JLineChart chart1;
+- private javax.swing.JTabbedPane chartsPane;
+- private javax.swing.JRadioButton committedTxnBtn;
+- private javax.swing.ButtonGroup configBtnGroup;
+- private javax.swing.JPanel configTab;
+- private javax.swing.JCheckBox enableStatsCB;
+- private javax.swing.JRadioButton heuristicTxnBtn;
+- private javax.swing.JRadioButton inFlightTxnBtn;
+- private javax.swing.JLabel jLabel1;
+- private javax.swing.JLabel jLabel2;
+- private javax.swing.JPanel jPanel1;
+- private javax.swing.JMenuBar menuBar;
+- private javax.swing.JRadioButton nestedTxnBtn;
+- private javax.swing.JPanel periodSelectPanel;
+- private javax.swing.JSlider periodSelectSlider;
+- private javax.swing.JButton pollIntervalBtn;
+- private javax.swing.JSpinner pollIntervalSpinner;
+- private javax.swing.JButton resetStatsBtn;
+- private javax.swing.JButton sampleSizeBtn1;
+- private javax.swing.JSpinner sampleSizeSpinner;
+- private javax.swing.ButtonGroup seriesSelectBtnGroup;
+- private javax.swing.JRadioButton timedoutTxnBtn;
+- private org.jfree.beans.JPieChart txnPieChart;
+- // End of variables declaration//GEN-END:variables
+-
+- /**
+- * @return the frame
+- */
+- public JFrame getFrame() {
+- return frame;
+- }
+-
+- private void setDefaultCloseOperation(int operation) {
+- frame.setDefaultCloseOperation(operation);
+- }
+-
+- private Container getContentPane() {
+- return frame.getContentPane();
+- }
+-
+- private void setJMenuBar(JMenuBar menuBar) {
+- frame.setJMenuBar(menuBar);
+- }
+-
+- private void pack() {
+- }
+-}
+diff -Naur jboss-jts-4.16.2.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfPlugin.java jboss-jts-4.16.2.Final-work/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfPlugin.java
+--- jboss-jts-4.16.2.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfPlugin.java 2012-01-19 02:36:02.000000000 -0500
++++ jboss-jts-4.16.2.Final-work/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfPlugin.java 1969-12-31 19:00:00.000000000 -0500
+@@ -1,89 +0,0 @@
+-/*
+- * JBoss, Home of Professional Open Source
+- * Copyright 2011, Red Hat, Inc. and/or its affiliates,
+- * and individual contributors as indicated by the @author tags.
+- * See the copyright.txt in the distribution for a
+- * full listing of individual contributors.
+- * This copyrighted material is made available to anyone wishing to use,
+- * modify, copy, or redistribute it subject to the terms and conditions
+- * of the GNU Lesser General Public License, v. 2.1.
+- * This program is distributed in the hope that it will be useful, but WITHOUT A
+- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+- * You should have received a copy of the GNU Lesser General Public License,
+- * v.2.1 along with this distribution; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+- * MA 02110-1301, USA.
+- *
+- * (C) 2011,
+- * @author JBoss, by Red Hat.
+- */
+-package com.arjuna.ats.arjuna.tools.stats;
+-
+-import java.beans.PropertyChangeEvent;
+-import java.beans.PropertyChangeListener;
+-import java.util.LinkedHashMap;
+-import java.util.Map;
+-
+-import javax.swing.JFrame;
+-import javax.swing.JPanel;
+-import javax.swing.SwingWorker;
+-
+-import com.sun.tools.jconsole.JConsoleContext;
+-import com.sun.tools.jconsole.JConsoleContext.ConnectionState;
+-import com.sun.tools.jconsole.JConsolePlugin;
+-
+-public class TxPerfPlugin extends JConsolePlugin implements PropertyChangeListener
+-{
+- private TxPerfGraph graph;
+- private Map<String, JPanel> tabs;
+-
+- public TxPerfPlugin() {
+- // register itself as a listener
+- addContextPropertyChangeListener(this);
+- }
+-
+- /*
+- * Returns a TxPerf tab to be added in JConsole.
+- */
+- public synchronized Map<String, JPanel> getTabs() {
+- if (tabs == null) {
+- graph = new TxPerfGraph(new JFrame("TxPerf"));
+-
+- graph.setMBeanServerConnection(
+- getContext().getMBeanServerConnection());
+- // use LinkedHashMap if you want a predictable order
+- // of the tabs to be added in JConsole
+- tabs = new LinkedHashMap<String, JPanel>();
+- tabs.put("TxPerf", graph);
+- }
+- return tabs;
+- }
+-
+- public void propertyChange(PropertyChangeEvent ev) {
+- String prop = ev.getPropertyName();
+- if (prop == null ? JConsoleContext.CONNECTION_STATE_PROPERTY == null : prop.equals(JConsoleContext.CONNECTION_STATE_PROPERTY)) {
+- ConnectionState oldState = (ConnectionState)ev.getOldValue();
+- ConnectionState newState = (ConnectionState)ev.getNewValue();
+- // JConsole supports disconnection and reconnection
+- // The MBeanServerConnection will become invalid when
+- // disconnected. Need to use the new MBeanServerConnection object
+- // created at reconnection time.
+- if (newState == ConnectionState.CONNECTED && graph != null) {
+- graph.setMBeanServerConnection(
+- getContext().getMBeanServerConnection());
+- }
+- }
+- }
+-
+- @Override
+- public void dispose() {
+- graph.dispose();
+- super.dispose();
+- }
+-
+- @Override
+- public SwingWorker<?,?> newSwingWorker() {
+- return graph.newSwingWorker();
+- }
+-}
diff --git a/jboss-jts-4.16.2.Final-pom.patch b/jboss-jts-4.16.2.Final-pom.patch
new file mode 100644
index 0000000..f5a5bae
--- /dev/null
+++ b/jboss-jts-4.16.2.Final-pom.patch
@@ -0,0 +1,16 @@
+--- jbossjta.pom 2012-03-23 11:41:40.153000681 +0100
++++ jbossjta.pom.new 2012-03-23 11:41:49.740000690 +0100
+@@ -278,13 +278,6 @@
+ <version>2.0.5312</version>
+ </dependency>
+
+- <!-- HornetQ Journal based object store requires HornetQ core,
+- at least until HORNETQ-274 is done -->
+- <dependency>
+- <groupId>org.hornetq</groupId>
+- <artifactId>hornetq-core</artifactId>
+- </dependency>
+-
+ <dependency>
+ <groupId>org.jboss.netty</groupId>
+ <artifactId>netty</artifactId>
diff --git a/jboss-jts-4.16.2.Final-publican.patch b/jboss-jts-4.16.2.Final-publican.patch
new file mode 100644
index 0000000..ec5e7c5
--- /dev/null
+++ b/jboss-jts-4.16.2.Final-publican.patch
@@ -0,0 +1,231 @@
+diff -Naur jboss-jts-4.16.2.Final/ArjunaCore/docs/development_guide/en-US/ArjunaCore_Development_Guide.ent jboss-jts-4.16.2.Final-work/ArjunaCore/docs/development_guide/en-US/ArjunaCore_Development_Guide.ent
+--- jboss-jts-4.16.2.Final/ArjunaCore/docs/development_guide/en-US/ArjunaCore_Development_Guide.ent 2012-02-22 12:51:12.740000002 +0100
++++ jboss-jts-4.16.2.Final-work/ArjunaCore/docs/development_guide/en-US/ArjunaCore_Development_Guide.ent 2012-02-22 12:51:27.919000001 +0100
+@@ -2,3 +2,6 @@
+ <!ENTITY BOOKID "ArjunaCore_Development_Guide">
+ <!ENTITY YEAR "2011">
+ <!ENTITY HOLDER "jboss.org">
++<!ENTITY BZURL "https://bugzilla.redhat.com">
++<!ENTITY BZCOMPONENT "jboss-jts">
++<!ENTITY BZPRODUCT "Fedora">
+diff -Naur jboss-jts-4.16.2.Final/ArjunaCore/docs/development_guide/publican.cfg jboss-jts-4.16.2.Final-work/ArjunaCore/docs/development_guide/publican.cfg
+--- jboss-jts-4.16.2.Final/ArjunaCore/docs/development_guide/publican.cfg 2012-02-22 12:51:12.694000002 +0100
++++ jboss-jts-4.16.2.Final-work/ArjunaCore/docs/development_guide/publican.cfg 2012-02-22 12:51:27.819000001 +0100
+@@ -3,6 +3,6 @@
+
+ xml_lang: en-US
+ type: Book
+-brand: jboss-community
++brand: JBoss
+ tmp_dir: target/publican
+
+diff -Naur jboss-jts-4.16.2.Final/ArjunaCore/docs/failure_recovery_guide/en-US/ArjunaCore_Failure_Recovery_Guide.ent jboss-jts-4.16.2.Final-work/ArjunaCore/docs/failure_recovery_guide/en-US/ArjunaCore_Failure_Recovery_Guide.ent
+--- jboss-jts-4.16.2.Final/ArjunaCore/docs/failure_recovery_guide/en-US/ArjunaCore_Failure_Recovery_Guide.ent 2012-02-22 12:51:12.692000002 +0100
++++ jboss-jts-4.16.2.Final-work/ArjunaCore/docs/failure_recovery_guide/en-US/ArjunaCore_Failure_Recovery_Guide.ent 2012-02-22 12:51:27.817000001 +0100
+@@ -4,4 +4,7 @@
+ <!ENTITY YEAR "2011">
+ <!ENTITY HOLDER "JBoss.org">
+ <!ENTITY APPSERVER "JBoss Application Server">
++<!ENTITY BZURL "https://bugzilla.redhat.com">
++<!ENTITY BZCOMPONENT "jboss-jts">
++<!ENTITY BZPRODUCT "Fedora">
+ <!-- <!ENTITY APPSERVER "Enterprise Application Platform Server"> -->
+diff -Naur jboss-jts-4.16.2.Final/ArjunaCore/docs/failure_recovery_guide/publican.cfg jboss-jts-4.16.2.Final-work/ArjunaCore/docs/failure_recovery_guide/publican.cfg
+--- jboss-jts-4.16.2.Final/ArjunaCore/docs/failure_recovery_guide/publican.cfg 2012-02-22 12:51:12.675000002 +0100
++++ jboss-jts-4.16.2.Final-work/ArjunaCore/docs/failure_recovery_guide/publican.cfg 2012-02-22 12:51:27.799000001 +0100
+@@ -3,6 +3,6 @@
+
+ xml_lang: en-US
+ type: Book
+-brand: jboss-community
++brand: JBoss
+ tmp_dir: target/publican
+
+diff -Naur jboss-jts-4.16.2.Final/ArjunaJTA/docs/administration_guide/en-US/JBossJTA_Administration_Guide.ent jboss-jts-4.16.2.Final-work/ArjunaJTA/docs/administration_guide/en-US/JBossJTA_Administration_Guide.ent
+--- jboss-jts-4.16.2.Final/ArjunaJTA/docs/administration_guide/en-US/JBossJTA_Administration_Guide.ent 2012-02-22 12:51:15.731000001 +0100
++++ jboss-jts-4.16.2.Final-work/ArjunaJTA/docs/administration_guide/en-US/JBossJTA_Administration_Guide.ent 2012-02-22 12:51:31.234000002 +0100
+@@ -2,3 +2,6 @@
+ <!ENTITY BOOKID "JBossJTA_Administration_Guide">
+ <!ENTITY YEAR "2011">
+ <!ENTITY HOLDER "JBoss.org">
++<!ENTITY BZURL "https://bugzilla.redhat.com">
++<!ENTITY BZCOMPONENT "jboss-jts">
++<!ENTITY BZPRODUCT "Fedora">
+diff -Naur jboss-jts-4.16.2.Final/ArjunaJTA/docs/administration_guide/publican.cfg jboss-jts-4.16.2.Final-work/ArjunaJTA/docs/administration_guide/publican.cfg
+--- jboss-jts-4.16.2.Final/ArjunaJTA/docs/administration_guide/publican.cfg 2012-02-22 12:51:15.728000001 +0100
++++ jboss-jts-4.16.2.Final-work/ArjunaJTA/docs/administration_guide/publican.cfg 2012-02-22 12:51:31.232000002 +0100
+@@ -3,5 +3,5 @@
+
+ xml_lang: en-US
+ type: Book
+-brand: jboss-community
++brand: JBoss
+ tmp_dir: target/publican
+diff -Naur jboss-jts-4.16.2.Final/ArjunaJTA/docs/development_guide/en-US/JBossJTA_Development_Guide.ent jboss-jts-4.16.2.Final-work/ArjunaJTA/docs/development_guide/en-US/JBossJTA_Development_Guide.ent
+--- jboss-jts-4.16.2.Final/ArjunaJTA/docs/development_guide/en-US/JBossJTA_Development_Guide.ent 2012-02-22 12:51:15.753000001 +0100
++++ jboss-jts-4.16.2.Final-work/ArjunaJTA/docs/development_guide/en-US/JBossJTA_Development_Guide.ent 2012-02-22 12:51:31.257000002 +0100
+@@ -2,3 +2,6 @@
+ <!ENTITY BOOKID "JBossJTA_Development_Guide">
+ <!ENTITY YEAR "2011">
+ <!ENTITY HOLDER "JBoss, Inc.">
++<!ENTITY BZURL "https://bugzilla.redhat.com">
++<!ENTITY BZCOMPONENT "jboss-jts">
++<!ENTITY BZPRODUCT "Fedora">
+diff -Naur jboss-jts-4.16.2.Final/ArjunaJTA/docs/development_guide/publican.cfg jboss-jts-4.16.2.Final-work/ArjunaJTA/docs/development_guide/publican.cfg
+--- jboss-jts-4.16.2.Final/ArjunaJTA/docs/development_guide/publican.cfg 2012-02-22 12:51:15.751000001 +0100
++++ jboss-jts-4.16.2.Final-work/ArjunaJTA/docs/development_guide/publican.cfg 2012-02-22 12:51:31.255000002 +0100
+@@ -3,5 +3,5 @@
+
+ xml_lang: en-US
+ type: Book
+-brand: jboss-community
++brand: JBoss
+ tmp_dir: target/publican
+diff -Naur jboss-jts-4.16.2.Final/ArjunaJTA/docs/installation_guide/en-US/JBossJTA_Installation_Guide.ent jboss-jts-4.16.2.Final-work/ArjunaJTA/docs/installation_guide/en-US/JBossJTA_Installation_Guide.ent
+--- jboss-jts-4.16.2.Final/ArjunaJTA/docs/installation_guide/en-US/JBossJTA_Installation_Guide.ent 2012-02-22 12:51:15.742000001 +0100
++++ jboss-jts-4.16.2.Final-work/ArjunaJTA/docs/installation_guide/en-US/JBossJTA_Installation_Guide.ent 2012-02-22 12:51:31.246000002 +0100
+@@ -2,3 +2,6 @@
+ <!ENTITY BOOKID "JBossJTA_Installation_Guide">
+ <!ENTITY YEAR "2011">
+ <!ENTITY HOLDER "JBoss.org">
++<!ENTITY BZURL "https://bugzilla.redhat.com">
++<!ENTITY BZCOMPONENT "jboss-jts">
++<!ENTITY BZPRODUCT "Fedora">
+diff -Naur jboss-jts-4.16.2.Final/ArjunaJTA/docs/installation_guide/publican.cfg jboss-jts-4.16.2.Final-work/ArjunaJTA/docs/installation_guide/publican.cfg
+--- jboss-jts-4.16.2.Final/ArjunaJTA/docs/installation_guide/publican.cfg 2012-02-22 12:51:15.741000001 +0100
++++ jboss-jts-4.16.2.Final-work/ArjunaJTA/docs/installation_guide/publican.cfg 2012-02-22 12:51:31.245000002 +0100
+@@ -3,5 +3,5 @@
+
+ xml_lang: en-US
+ type: Book
+-brand: jboss-community
++brand: JBoss
+ tmp_dir: target/publican
+diff -Naur jboss-jts-4.16.2.Final/ArjunaJTA/docs/quick_start/en-US/JBossJTA_Quick_Start_Guide.ent jboss-jts-4.16.2.Final-work/ArjunaJTA/docs/quick_start/en-US/JBossJTA_Quick_Start_Guide.ent
+--- jboss-jts-4.16.2.Final/ArjunaJTA/docs/quick_start/en-US/JBossJTA_Quick_Start_Guide.ent 2012-02-22 12:51:15.777000001 +0100
++++ jboss-jts-4.16.2.Final-work/ArjunaJTA/docs/quick_start/en-US/JBossJTA_Quick_Start_Guide.ent 2012-02-22 12:51:31.281000002 +0100
+@@ -4,4 +4,7 @@
+ <!ENTITY YEAR "2011">
+ <!ENTITY HOLDER "JBoss.org">
+ <!ENTITY APPSERVER "JBoss Application Server">
++<!ENTITY BZURL "https://bugzilla.redhat.com">
++<!ENTITY BZCOMPONENT "jboss-jts">
++<!ENTITY BZPRODUCT "Fedora">
+ <!-- <!ENTITY APPSERVER "Enterprise Application Platform Server"> -->
+diff -Naur jboss-jts-4.16.2.Final/ArjunaJTA/docs/quick_start/publican.cfg jboss-jts-4.16.2.Final-work/ArjunaJTA/docs/quick_start/publican.cfg
+--- jboss-jts-4.16.2.Final/ArjunaJTA/docs/quick_start/publican.cfg 2012-02-22 12:51:15.773000001 +0100
++++ jboss-jts-4.16.2.Final-work/ArjunaJTA/docs/quick_start/publican.cfg 2012-02-22 12:51:31.277000002 +0100
+@@ -3,5 +3,5 @@
+
+ xml_lang: en-US
+ type: Book
+-brand: jboss-community
++brand: JBoss
+ tmp_dir: target/publican
+diff -Naur jboss-jts-4.16.2.Final/docs/development_guide/en-US/Development_Guide.ent jboss-jts-4.16.2.Final-work/docs/development_guide/en-US/Development_Guide.ent
+--- jboss-jts-4.16.2.Final/docs/development_guide/en-US/Development_Guide.ent 2012-02-22 12:51:12.644000002 +0100
++++ jboss-jts-4.16.2.Final-work/docs/development_guide/en-US/Development_Guide.ent 2012-02-22 12:51:27.763000001 +0100
+@@ -4,4 +4,7 @@
+ <!ENTITY YEAR "2011">
+ <!ENTITY HOLDER "JBoss.org">
+ <!ENTITY APPSERVER "JBoss Application Server">
++<!ENTITY BZURL "https://bugzilla.redhat.com">
++<!ENTITY BZCOMPONENT "jboss-jts">
++<!ENTITY BZPRODUCT "Fedora">
+ <!-- <!ENTITY APPSERVER "Enterprise Application Platform Server"> -->
+diff -Naur jboss-jts-4.16.2.Final/docs/development_guide/publican.cfg jboss-jts-4.16.2.Final-work/docs/development_guide/publican.cfg
+--- jboss-jts-4.16.2.Final/docs/development_guide/publican.cfg 2012-02-22 12:51:12.618000002 +0100
++++ jboss-jts-4.16.2.Final-work/docs/development_guide/publican.cfg 2012-02-22 12:51:27.734000001 +0100
+@@ -3,5 +3,5 @@
+
+ xml_lang: en-US
+ type: Book
+-brand: jboss-community
++brand: JBoss
+ tmp_dir: target/publican
+diff -Naur jboss-jts-4.16.2.Final/docs/failure_recovery_guide/en-US/Failure_Recovery_Guide.ent jboss-jts-4.16.2.Final-work/docs/failure_recovery_guide/en-US/Failure_Recovery_Guide.ent
+--- jboss-jts-4.16.2.Final/docs/failure_recovery_guide/en-US/Failure_Recovery_Guide.ent 2012-02-22 12:51:12.594000002 +0100
++++ jboss-jts-4.16.2.Final-work/docs/failure_recovery_guide/en-US/Failure_Recovery_Guide.ent 2012-02-22 12:51:27.702000001 +0100
+@@ -4,4 +4,7 @@
+ <!ENTITY YEAR "2011">
+ <!ENTITY HOLDER "JBoss.org">
+ <!ENTITY APPSERVER "JBoss Application Server">
++<!ENTITY BZURL "https://bugzilla.redhat.com">
++<!ENTITY BZCOMPONENT "jboss-jts">
++<!ENTITY BZPRODUCT "Fedora">
+ <!-- <!ENTITY APPSERVER "Enterprise Application Platform Server"> -->
+diff -Naur jboss-jts-4.16.2.Final/docs/failure_recovery_guide/publican.cfg jboss-jts-4.16.2.Final-work/docs/failure_recovery_guide/publican.cfg
+--- jboss-jts-4.16.2.Final/docs/failure_recovery_guide/publican.cfg 2012-02-22 12:51:12.593000002 +0100
++++ jboss-jts-4.16.2.Final-work/docs/failure_recovery_guide/publican.cfg 2012-02-22 12:51:27.701000001 +0100
+@@ -3,6 +3,6 @@
+
+ xml_lang: en-US
+ type: Book
+-brand: jboss-community
++brand: JBoss
+ tmp_dir: target/publican
+
+diff -Naur jboss-jts-4.16.2.Final/docs/release_notes/en-US/Release_Notes.ent jboss-jts-4.16.2.Final-work/docs/release_notes/en-US/Release_Notes.ent
+--- jboss-jts-4.16.2.Final/docs/release_notes/en-US/Release_Notes.ent 2012-02-22 12:51:12.650000002 +0100
++++ jboss-jts-4.16.2.Final-work/docs/release_notes/en-US/Release_Notes.ent 2012-02-22 12:51:27.771000001 +0100
+@@ -2,3 +2,6 @@
+ <!ENTITY BOOKID "4.16_JBoss_Transactions_Release_Notes">
+ <!ENTITY YEAR "2011">
+ <!ENTITY HOLDER "JBoss.org">
++<!ENTITY BZURL "https://bugzilla.redhat.com">
++<!ENTITY BZCOMPONENT "jboss-jts">
++<!ENTITY BZPRODUCT "Fedora">
+diff -Naur jboss-jts-4.16.2.Final/docs/release_notes/publican.cfg jboss-jts-4.16.2.Final-work/docs/release_notes/publican.cfg
+--- jboss-jts-4.16.2.Final/docs/release_notes/publican.cfg 2012-02-22 12:51:12.648000002 +0100
++++ jboss-jts-4.16.2.Final-work/docs/release_notes/publican.cfg 2012-02-22 12:51:27.769000001 +0100
+@@ -3,5 +3,5 @@
+
+ xml_lang: en-US
+ type: Article
+-brand: jboss-community
++brand: JBoss
+ tmp_dir: ../build/release_notes
+diff -Naur jboss-jts-4.16.2.Final/docs/transactions_overview_guide/en-US/Transactions_Overview_Guide.ent jboss-jts-4.16.2.Final-work/docs/transactions_overview_guide/en-US/Transactions_Overview_Guide.ent
+--- jboss-jts-4.16.2.Final/docs/transactions_overview_guide/en-US/Transactions_Overview_Guide.ent 2012-02-22 12:51:12.586000002 +0100
++++ jboss-jts-4.16.2.Final-work/docs/transactions_overview_guide/en-US/Transactions_Overview_Guide.ent 2012-02-22 12:51:27.695000001 +0100
+@@ -4,4 +4,7 @@
+ <!ENTITY YEAR "2011">
+ <!ENTITY HOLDER "JBoss.org">
+ <!ENTITY APPSERVER "JBoss Application Server">
++<!ENTITY BZURL "https://bugzilla.redhat.com">
++<!ENTITY BZCOMPONENT "jboss-jts">
++<!ENTITY BZPRODUCT "Fedora">
+ <!-- <!ENTITY APPSERVER "Enterprise Application Platform Server"> -->
+diff -Naur jboss-jts-4.16.2.Final/docs/transactions_overview_guide/publican.cfg jboss-jts-4.16.2.Final-work/docs/transactions_overview_guide/publican.cfg
+--- jboss-jts-4.16.2.Final/docs/transactions_overview_guide/publican.cfg 2012-02-22 12:51:12.576000002 +0100
++++ jboss-jts-4.16.2.Final-work/docs/transactions_overview_guide/publican.cfg 2012-02-22 12:51:27.685000001 +0100
+@@ -3,6 +3,6 @@
+
+ xml_lang: en-US
+ type: Book
+-brand: jboss-community
++brand: JBoss
+ tmp_dir: target/publican
+
+diff -Naur jboss-jts-4.16.2.Final/docs/txbridge_guide/en-US/Transaction_Bridging_Guide.ent jboss-jts-4.16.2.Final-work/docs/txbridge_guide/en-US/Transaction_Bridging_Guide.ent
+--- jboss-jts-4.16.2.Final/docs/txbridge_guide/en-US/Transaction_Bridging_Guide.ent 2012-02-22 12:51:12.658000002 +0100
++++ jboss-jts-4.16.2.Final-work/docs/txbridge_guide/en-US/Transaction_Bridging_Guide.ent 2012-02-22 12:51:27.780000001 +0100
+@@ -4,4 +4,7 @@
+ <!ENTITY YEAR "2011">
+ <!ENTITY HOLDER "JBoss.org">
+ <!ENTITY APPSERVER "JBoss Application Server">
++<!ENTITY BZURL "https://bugzilla.redhat.com">
++<!ENTITY BZCOMPONENT "jboss-jts">
++<!ENTITY BZPRODUCT "Fedora">
+ <!-- <!ENTITY APPSERVER "Enterprise Application Platform Server"> -->
+diff -Naur jboss-jts-4.16.2.Final/docs/txbridge_guide/publican.cfg jboss-jts-4.16.2.Final-work/docs/txbridge_guide/publican.cfg
+--- jboss-jts-4.16.2.Final/docs/txbridge_guide/publican.cfg 2012-02-22 12:51:12.654000002 +0100
++++ jboss-jts-4.16.2.Final-work/docs/txbridge_guide/publican.cfg 2012-02-22 12:51:27.776000001 +0100
+@@ -3,6 +3,6 @@
+
+ xml_lang: en-US
+ type: Book
+-brand: jboss-community
++brand: JBoss
+ tmp_dir: target/publican
+
diff --git a/jboss-jts.spec b/jboss-jts.spec
new file mode 100644
index 0000000..2ee9cc4
--- /dev/null
+++ b/jboss-jts.spec
@@ -0,0 +1,220 @@
+%global namedreltag .Final
+%global namedversion %{version}%{?namedreltag}
+
+Name: jboss-jts
+Version: 4.16.2
+Release: 3%{?dist}
+Summary: Distributed Transaction Manager
+Group: Development/Libraries
+License: LGPLv2+
+URL: https://community.jboss.org/wiki/JBossJTS
+
+# svn export http://anonsvn.jboss.org/repos/labs/labs/jbosstm/tags/JBOSSTS_4_16_2_Final/ jboss-jts-4.16.2
+# find jboss-jts-4.16.2 -name '*.jar' -delete
+# tar cafJ jboss-jts-4.16.2.tar.xz jboss-jts-4.16.2
+Source0: %{name}-%{namedversion}.tar.xz
+
+Source1: https://repository.jboss.org/nexus/service/local/repositories/releases/content/org/jboss/jbossts/jbossjta/%{namedversion}/jbossjta-%{namedversion}.pom
+Source2: https://repository.jboss.org/nexus/service/local/repositories/releases/content/org/jboss/jbossts/jbossjta-integration/%{namedversion}/jbossjta-integration-%{namedversion}.pom
+
+# Patched Ant xml files
+# Removed com.arjuna.ats.jta.distributed.SimpleIsolatedServers test
+# Removed some tests as they fail with Byteman
+Patch0: %{name}-%{namedversion}-build.patch
+
+# Added support for JBoss publican style shipped in Fedora
+Patch1: %{name}-%{namedversion}-publican.patch
+
+# Removed ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfGraph.java because we don't have orson packaged
+Patch2: %{name}-%{namedversion}-orson.patch
+
+# Removed ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/hornetq/* classes because we don't have hornetq
+Patch3: %{name}-%{namedversion}-hornetq.patch
+
+# Patch to remove hornetq dependency from the pom (SOURCE0)
+Patch4: %{name}-%{namedversion}-pom.patch
+
+# Patch to remove hornetq dependency from the integration pom (SOURCE1)
+Patch5: %{name}-%{namedversion}-integration-pom.patch
+
+BuildArch: noarch
+
+BuildRequires: jpackage-utils
+BuildRequires: java-devel
+BuildRequires: junit
+BuildRequires: ant
+BuildRequires: ant-junit
+BuildRequires: ant-contrib
+BuildRequires: emma
+BuildRequires: byteman
+BuildRequires: jboss-logging
+BuildRequires: jboss-logging-tools
+BuildRequires: jboss-connector-1.6-api
+BuildRequires: jboss-transaction-1.1-api
+BuildRequires: jboss-transaction-spi
+BuildRequires: jfreechart
+BuildRequires: publican-jboss
+BuildRequires: java-service-wrapper
+
+Requires: jpackage-utils
+Requires: java
+Requires: byteman
+Requires: emma
+Requires: jboss-logging
+Requires: jboss-logging-tools
+Requires: jboss-connector-1.6-api
+Requires: jboss-transaction-1.1-api
+Requires: jboss-transaction-spi
+Requires: jfreechart
+Requires: java-service-wrapper
+
+
+%description
+A set of JBoss modules that fully supports ACID transactions
+spread across multiple resource managers and application servers.
+It implements a Distributed Transaction Manager (DTM) with support
+for two-phase commit (2PC) across XA resource managers, JBoss
+server instances, and CORBA OTS resources.
+
+JBossJTS implements the Java Transaction Service (JTS) and CORBA
+Transaction Service (OTS) specifications.
+
+
+%package javadoc
+Summary: Javadocs for %{name}
+Group: Documentation
+Requires: jpackage-utils
+
+
+%description javadoc
+This package contains the API documentation for %{name}.
+
+
+%prep
+
+# Extract the source:
+%setup -q -n %{name}-%{namedversion}
+
+# Put the POM files in place now, as they require patching:
+cp %{SOURCE1} jbossjta.pom
+cp %{SOURCE2} jbossjta-integration.pom
+
+# Apply the patches:
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p0
+%patch5 -p0
+
+
+%build
+
+# Replace jar files with symlinks to their actual locations:
+while read jar_name jar_path
+do
+ jar_file=$(build-classpath ${jar_name})
+ jar_dir=$(dirname ${jar_path})
+ if [ ! -d ${jar_dir} ]
+ then
+ mkdir -p ${jar_dir}
+ fi
+ ln -s ${jar_file} ${jar_path}
+done <<'.'
+junit common/lib/ext/junit.jar
+junit ext/junit.jar
+emma ext/emma.jar
+emma_ant ext/emma_ant.jar
+jboss-logging ext/jboss-logging.jar
+jboss-logging-processor ext/jboss-logging-processor.jar
+jboss-connector-1.6-api ext/ironjacamar-spec-api.jar
+jboss-transaction-1.1-api ext/jboss-transaction-api_1.1_spec.jar
+byteman/byteman ext/byteman.jar
+byteman/byteman-bmunit ext/byteman-bmunit.jar
+byteman/byteman-dtest ext/byteman-dtest.jar
+byteman/byteman-install ext/byteman-install.jar
+byteman/byteman-submit ext/byteman-submit.jar
+jboss-transaction-spi ext/jboss-transaction-spi.jar
+jfreechart/jfreechart ext/jfreechart-1.0.6.jar
+.
+
+# The above loop does not work for java service wrapper as the jar file is not
+# installed in the expected location:
+ln -s %{_libdir}/java-service-wrapper/wrapper.jar ext/wrapper.jar
+
+# Build the binaries:
+ant jbossjta
+
+# Build the documentation:
+ant \
+ -f docs/build.xml \
+ install.docs \
+ install.common.docs
+
+# Move the HTML documentation to the same directory that contains the PDF
+# files:
+documents='
+development_guide
+failure_recovery_guide
+transactions_overview_guide
+txbridge_guide
+'
+for document in ${documents}
+do
+ mkdir -p docs/build/install/docs/${document}
+ mv docs/${document}/target/publican/en-US/html/* docs/build/install/docs/${document}
+done
+
+# Release notes are placed in a different directory, so move them to the same
+# directory than the rest of the documentation:
+mv docs/build/release_notes/en-US/pdf/*.pdf docs/build/install/docs/.
+mkdir -p docs/build/install/docs/release_notes
+cp -rp docs/build/release_notes/en-US/html/* docs/build/install/docs/release_notes
+
+
+%install
+
+# Jar files:
+install -d -m 755 %{buildroot}%{_javadir}/%{name}
+install -pm 644 install/lib/jbossjta.jar %{buildroot}%{_javadir}/%{name}/jbossjta.jar
+install -pm 644 install/lib/jbossjta-integration.jar %{buildroot}%{_javadir}/%{name}/jbossjta-integration.jar
+
+# No POM's for these files:
+install -pm 644 install/services/lib/jbossjta-services.jar %{buildroot}%{_javadir}/%{name}/jbossjta-services.jar
+
+# POM files:
+install -d -m 755 %{buildroot}%{_mavenpomdir}
+install -pm 644 jbossjta.pom %{buildroot}%{_mavenpomdir}/JPP.%{name}-jbossjta.pom
+install -pm 644 jbossjta-integration.pom %{buildroot}%{_mavenpomdir}/JPP.%{name}-jbossjta-integration.pom
+
+# Dependencies map:
+%add_maven_depmap JPP.%{name}-jbossjta.pom %{name}/jbossjta.jar
+%add_maven_depmap JPP.%{name}-jbossjta-integration.pom %{name}/jbossjta-integration.jar
+
+# Javadoc files:
+install -d -m 755 %{buildroot}%{_javadocdir}/%{name}
+cp -rp install/htdocs/* %{buildroot}%{_javadocdir}/%{name}
+
+
+%files
+%{_mavenpomdir}/*
+%{_mavendepmapfragdir}/*
+%{_javadir}/*
+%doc docs/build/install/docs/*
+
+
+%files javadoc
+%{_javadocdir}/%{name}
+
+
+%changelog
+* Tue Mar 20 2012 Juan Hernandez <juan.hernandez at redhat.com> 4.16.2-3
+- Use the namedversion macro in the source URLs
+- Fixed the version numbers in the changelog
+
+* Tue Mar 20 2012 Juan Hernandez <juan.hernandez at redhat.com> 4.16.2-2
+- Cleanup of the spec file
+
+* Mon Nov 21 2011 Marek Goldmann <mgoldman at redhat.com> 4.16.2-1
+- Initial packaging
+
diff --git a/jbossjta-4.16.2.Final.pom b/jbossjta-4.16.2.Final.pom
new file mode 100644
index 0000000..27ec332
--- /dev/null
+++ b/jbossjta-4.16.2.Final.pom
@@ -0,0 +1,437 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <!--
+ JBoss, Home of Professional Open Source
+ Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ as indicated by the @author tags.
+ See the copyright.txt in the distribution for a
+ full listing of individual contributors.
+ This copyrighted material is made available to anyone wishing to use,
+ modify, copy, or redistribute it subject to the terms and conditions
+ of the GNU Lesser General Public License, v. 2.1.
+ This program is distributed in the hope that it will be useful, but WITHOUT A
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ You should have received a copy of the GNU Lesser General Public License,
+ v.2.1 along with this distribution; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ MA 02110-1301, USA.
+
+ (C) 2009,
+ @author JBoss Inc. (jonathan.halliday at redhat.com)
+ -->
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.jbossts</groupId>
+ <artifactId>jbossjta</artifactId>
+ <packaging>jar</packaging>
+ <version>4.16.2.Final</version>
+ <name>JBossTS jbossjta</name>
+
+ <description>JBossTS - JBoss Transaction Service. JTA, JTS and XTS (WS-AT, WS-BA)</description>
+
+ <url>http://www.jboss.org/jbosstm/</url>
+ <issueManagement>
+ <system>JIRA</system>
+ <url>https://jira.jboss.org/jira/browse/JBTM/</url>
+ </issueManagement>
+ <ciManagement>
+ <system>hudson</system>
+ <url>http://hudson.qa.jboss.com/hudson/view/JBossTS/</url>
+ </ciManagement>
+
+ <developers>
+
+ <developer>
+ <id>jhalliday</id>
+ <name>Jonathan Halliday</name>
+ <email>jonathan.halliday at redhat.com</email>
+ <organization>JBoss</organization>
+ <organizationUrl>http://www.jboss.org/</organizationUrl>
+ <roles>
+ <role>project lead</role>
+ </roles>
+ <timezone>0</timezone>
+ </developer>
+
+ <developer>
+ <id>adinn</id>
+ <name>Andrew Dinn</name>
+ <email>adinn at redhat.com</email>
+ <organization>JBoss</organization>
+ <organizationUrl>http://www.jboss.org/</organizationUrl>
+ <roles>
+ <role>XTS lead</role>
+ </roles>
+ <timezone>0</timezone>
+ </developer>
+
+ <developer>
+ <id>mmusgrov</id>
+ <name>Michael Musgrove</name>
+ <email>mmusgrov at redhat.com</email>
+ <organization>JBoss</organization>
+ <organizationUrl>http://www.jboss.org/</organizationUrl>
+ <roles>
+ <role>Core Developer</role>
+ </roles>
+ <timezone>0</timezone>
+ </developer>
+
+ <developer>
+ <id>mark.little at jboss.com</id>
+ <name>Mark Little</name>
+ <email>mlittle at redhat.com</email>
+ <organization>JBoss</organization>
+ <organizationUrl>http://www.jboss.org/</organizationUrl>
+ <roles>
+ <role>JBoss CTO</role>
+ </roles>
+ <timezone>0</timezone>
+ </developer>
+
+ <developer>
+ <id>istudens at redhat.com</id>
+ <name>Ivo Studensky</name>
+ <email>istudens at redhat.com</email>
+ <organization>JBoss</organization>
+ <organizationUrl>http://www.jboss.org/</organizationUrl>
+ <roles>
+ <role>QA lead</role>
+ </roles>
+ <timezone>0</timezone>
+ </developer>
+
+ </developers>
+
+ <licenses>
+ <license>
+ <name>LGPL 2.1</name>
+ <url>http://www.gnu.org/licenses/lgpl-2.1.html</url>
+ </license>
+ </licenses>
+
+ <scm>
+ <connection>scm:svn:http://anonsvn.jboss.org/repos/labs/labs/jbosstm/</connection>
+ <developerConnection>scm:svn:https://svn.jboss.org/repos/labs/labs/jbosstm/</developerConnection>
+ <url>http://fisheye.jboss.org/browse/JBossTS/</url>
+ </scm>
+
+ <repositories>
+ <repository>
+ <id>jboss-public-repository-group</id>
+ <name>JBoss Public Maven Repository Group</name>
+ <url>https://repository.jboss.org/nexus/content/groups/public/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+
+ <configuration>
+ <outputDirectory>@extdir@</outputDirectory>
+ <overWriteReleases>false</overWriteReleases>
+ <overWriteSnapshots>false</overWriteSnapshots>
+ <overWriteIfNewer>true</overWriteIfNewer>
+ <excludeTransitive>true</excludeTransitive>
+ <stripVersion>true</stripVersion>
+ </configuration>
+
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencyManagement>
+ <dependencies>
+
+ <dependency>
+ <!-- https://repository.jboss.org/nexus/service/local/repositories/releases/content/org/jboss/as/jboss-as-parent/7.1.0.Beta1b/jboss-as-parent-7.1.0.Beta1b.pom -->
+ <groupId>org.jboss.as</groupId>
+ <artifactId>jboss-as-parent</artifactId>
+ <version>7.1.0.Beta1b</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+
+ <!--
+ We mostly get our dependency *versions* transitively though the AS pom above.
+ Thus dependencies here should not specify a version unless they are not used
+ in the AS or we explicitly need a different version.
+ -->
+
+ <!-- combined deps for the entire JBossTS. At some point we need to modularize this for different builds -->
+
+ <!-- XTS also requires commons-codec (transitive via httpclient?) and commons-httpclient to compile the localjunit module. needed for test only, not XTS runtime dep. -->
+ <!--<dependency>-->
+ <!--<groupId>commons-codec</groupId>-->
+ <!--<artifactId>commons-codec</artifactId>-->
+ <!--</dependency>-->
+
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.1-jbossorg-1</version>
+ </dependency>
+
+ <!-- commons-logging, jcl-over-slf4j, slf4j-api, slf4j-simple all just test time deps for localjunit? -->
+
+ <!--<dependency>-->
+ <!--<groupId>commons-logging</groupId>-->
+ <!--<artifactId>commons-logging</artifactId>-->
+ <!--</dependency>-->
+
+ <!--<dependency>-->
+ <!--<groupId>org.slf4j</groupId>-->
+ <!--<artifactId>jcl-over-slf4j</artifactId>-->
+ <!--</dependency>-->
+
+ <!--<dependency>-->
+ <!--<groupId>org.slf4j</groupId>-->
+ <!--<artifactId>slf4j-api</artifactId>-->
+ <!--</dependency>-->
+
+ <!--<dependency>-->
+ <!--<groupId>org.slf4j</groupId>-->
+ <!--<artifactId>slf4j-simple</artifactId>-->
+ <!--</dependency>-->
+
+ <!-- JTA (local: ArjunaJTA/jta and remote: ArjunaJTS/jtax) need JTA and JCA (for tx inflow) apis. -->
+
+ <dependency>
+ <!-- JTA API -->
+ <groupId>org.jboss.spec.javax.transaction</groupId>
+ <artifactId>jboss-transaction-api_1.1_spec</artifactId>
+ </dependency>
+
+ <dependency>
+ <!-- JCA API -->
+ <groupId>org.jboss.ironjacamar</groupId>
+ <artifactId>ironjacamar-spec-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <!-- unit tests use junit4 and some use byteman -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <!--<version>4.8.1</version>-->
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.byteman</groupId>
+ <artifactId>byteman</artifactId>
+ <version>${byteman-version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.byteman</groupId>
+ <artifactId>byteman-install</artifactId>
+ <version>${byteman-version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.byteman</groupId>
+ <artifactId>byteman-submit</artifactId>
+ <version>${byteman-version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.byteman</groupId>
+ <artifactId>byteman-bmunit</artifactId>
+ <version>${byteman-version}</version>
+ <scope>test</scope>
+ </dependency>
+ <!-- txbridge uses the dtest addon -->
+ <dependency>
+ <groupId>org.jboss.byteman</groupId>
+ <artifactId>byteman-dtest</artifactId>
+ <version>${byteman-version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- build system uses emma for code coverage metrics -->
+ <dependency>
+ <groupId>emma</groupId>
+ <artifactId>emma</artifactId>
+ <version>2.0.5312</version>
+ </dependency>
+
+ <dependency>
+ <groupId>emma</groupId>
+ <artifactId>emma_ant</artifactId>
+ <version>2.0.5312</version>
+ </dependency>
+
+ <!-- HornetQ Journal based object store requires HornetQ core,
+ at least until HORNETQ-274 is done -->
+ <dependency>
+ <groupId>org.hornetq</groupId>
+ <artifactId>hornetq-core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.netty</groupId>
+ <artifactId>netty</artifactId>
+ <!--<version>3.2.0.Final</version>-->
+ </dependency>
+
+ <!-- installation as a service requires the wrapper, but is an optional deployment model -->
+ <dependency>
+ <groupId>tanukisoft</groupId>
+ <artifactId>wrapper</artifactId>
+ <version>3.2.3</version>
+ </dependency>
+
+ <!-- JTS requires jacorb -->
+ <dependency>
+ <groupId>jacorb</groupId>
+ <artifactId>jacorb</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>jacorb</groupId>
+ <artifactId>idl</artifactId>
+ <version>2.3.1jboss.patch01-brew</version><!-- TODO AS7 -->
+ </dependency>
+
+ <!-- atsintegration (i.e. the JBossAS glue code) requires some app server bits. -->
+
+ <dependency>
+ <groupId>org.jboss.logmanager</groupId>
+ <artifactId>jboss-logmanager</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jboss-transaction-spi</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.integration</groupId>
+ <artifactId>jboss-corba-ots-spi</artifactId>
+ <version>6.0.0.CR1</version><!-- TODO AS7 src includes newer version of this, so its pom does not. -->
+ </dependency>
+
+ <!-- qa test suite - JBossAS integration code. (no longer used)
+ Also txbrige test suite - replace with org.jboss.as.server.Bootstrap (see AS7 ServerInModuleStartupTestCase for example) or arq -->
+ <dependency>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-server-manager</artifactId>
+ <version>1.0.4.Final</version><!-- TODO AS7 -->
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.spec.javax.ejb</groupId>
+ <artifactId>jboss-ejb-api_3.1_spec</artifactId>
+ </dependency>
+
+ <!--remoting not actually used except by obsolete qa/as tests? -->
+ <dependency>
+ <groupId>org.jboss.remoting</groupId>
+ <artifactId>jboss-remoting</artifactId>
+ <version>2.5.3</version><!-- TODO AS7 -->
+ </dependency>
+
+ <!-- naming not actually used? -->
+ <!--<dependency>-->
+ <!--<groupId>org.jboss.naming</groupId>-->
+ <!--<artifactId>jnp-client</artifactId>-->
+ <!--</dependency>-->
+
+
+ <!-- XTS: -->
+
+ <dependency>
+ <groupId>org.jboss.spec.javax.servlet</groupId>
+ <artifactId>jboss-servlet-api_3.0_spec</artifactId>
+ </dependency>
+
+ <!-- test time dep only - XTS TestRunnerXMLServlet -->
+ <dependency>
+ <groupId>dom4j</groupId>
+ <artifactId>dom4j</artifactId>
+ <version>1.6.1</version>
+ </dependency>
+
+
+ <!--
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ </dependency>
+ -->
+ <!--<dependency>-->
+ <!--<groupId>org.jboss.logging</groupId>-->
+ <!--<artifactId>jboss-logging-spi</artifactId>-->
+ <!--<version>2.2.0.CR1</version>-->
+ <!--</dependency>-->
+
+ <!-- https://repository.jboss.org/nexus/content/groups/public-jboss/org/jboss/logging/jboss-logging/ -->
+ <dependency>
+ <groupId>org.jboss.logging</groupId>
+ <artifactId>jboss-logging</artifactId>
+ </dependency>
+
+
+ <!-- https://repository.jboss.org/nexus/content/groups/public-jboss/org/jboss/logging/jboss-logging-processor/ from beta5 -->
+ <!-- https://repository.jboss.org/nexus/content/groups/public-jboss/org/jboss/logging/jboss-logging-tools/ -->
+ <dependency>
+ <groupId>org.jboss.logging</groupId>
+ <artifactId>jboss-logging-processor</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.logging</groupId>
+ <artifactId>jboss-logging-generator</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <!--<dependency>-->
+ <!--<groupId>stax</groupId>-->
+ <!--<artifactId>stax-api</artifactId>-->
+ <!--</dependency>-->
+
+ <!--<dependency>-->
+ <!--<groupId>org.jboss.ws.native</groupId>-->
+ <!--<artifactId>jbossws-native-core</artifactId>-->
+ <!--</dependency>-->
+
+ <dependency>
+ <groupId>org.jboss.ws</groupId>
+ <artifactId>jbossws-api</artifactId>
+ </dependency>
+
+ <!--
+ <dependency>
+ <groupId>javax.xml.ws</groupId>
+ <artifactId>jaxws-api</artifactId>
+ </dependency>
+ -->
+ <!-- txbridge demo -->
+ <dependency>
+ <groupId>org.hibernate.javax.persistence</groupId>
+ <artifactId>hibernate-jpa-2.0-api</artifactId>
+ </dependency>
+
+
+ </dependencies>
+
+ <properties>
+ <byteman-version>1.6.0</byteman-version>
+ </properties>
+</project>
diff --git a/jbossjta-integration-4.16.2.Final.pom b/jbossjta-integration-4.16.2.Final.pom
new file mode 100644
index 0000000..d05441a
--- /dev/null
+++ b/jbossjta-integration-4.16.2.Final.pom
@@ -0,0 +1,437 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <!--
+ JBoss, Home of Professional Open Source
+ Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ as indicated by the @author tags.
+ See the copyright.txt in the distribution for a
+ full listing of individual contributors.
+ This copyrighted material is made available to anyone wishing to use,
+ modify, copy, or redistribute it subject to the terms and conditions
+ of the GNU Lesser General Public License, v. 2.1.
+ This program is distributed in the hope that it will be useful, but WITHOUT A
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ You should have received a copy of the GNU Lesser General Public License,
+ v.2.1 along with this distribution; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ MA 02110-1301, USA.
+
+ (C) 2009,
+ @author JBoss Inc. (jonathan.halliday at redhat.com)
+ -->
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.jbossts</groupId>
+ <artifactId>jbossjta-integration</artifactId>
+ <packaging>jar</packaging>
+ <version>4.16.2.Final</version>
+ <name>JBossTS jbossjta-integration</name>
+
+ <description>JBossTS - JBoss Transaction Service. JTA, JTS and XTS (WS-AT, WS-BA)</description>
+
+ <url>http://www.jboss.org/jbosstm/</url>
+ <issueManagement>
+ <system>JIRA</system>
+ <url>https://jira.jboss.org/jira/browse/JBTM/</url>
+ </issueManagement>
+ <ciManagement>
+ <system>hudson</system>
+ <url>http://hudson.qa.jboss.com/hudson/view/JBossTS/</url>
+ </ciManagement>
+
+ <developers>
+
+ <developer>
+ <id>jhalliday</id>
+ <name>Jonathan Halliday</name>
+ <email>jonathan.halliday at redhat.com</email>
+ <organization>JBoss</organization>
+ <organizationUrl>http://www.jboss.org/</organizationUrl>
+ <roles>
+ <role>project lead</role>
+ </roles>
+ <timezone>0</timezone>
+ </developer>
+
+ <developer>
+ <id>adinn</id>
+ <name>Andrew Dinn</name>
+ <email>adinn at redhat.com</email>
+ <organization>JBoss</organization>
+ <organizationUrl>http://www.jboss.org/</organizationUrl>
+ <roles>
+ <role>XTS lead</role>
+ </roles>
+ <timezone>0</timezone>
+ </developer>
+
+ <developer>
+ <id>mmusgrov</id>
+ <name>Michael Musgrove</name>
+ <email>mmusgrov at redhat.com</email>
+ <organization>JBoss</organization>
+ <organizationUrl>http://www.jboss.org/</organizationUrl>
+ <roles>
+ <role>Core Developer</role>
+ </roles>
+ <timezone>0</timezone>
+ </developer>
+
+ <developer>
+ <id>mark.little at jboss.com</id>
+ <name>Mark Little</name>
+ <email>mlittle at redhat.com</email>
+ <organization>JBoss</organization>
+ <organizationUrl>http://www.jboss.org/</organizationUrl>
+ <roles>
+ <role>JBoss CTO</role>
+ </roles>
+ <timezone>0</timezone>
+ </developer>
+
+ <developer>
+ <id>istudens at redhat.com</id>
+ <name>Ivo Studensky</name>
+ <email>istudens at redhat.com</email>
+ <organization>JBoss</organization>
+ <organizationUrl>http://www.jboss.org/</organizationUrl>
+ <roles>
+ <role>QA lead</role>
+ </roles>
+ <timezone>0</timezone>
+ </developer>
+
+ </developers>
+
+ <licenses>
+ <license>
+ <name>LGPL 2.1</name>
+ <url>http://www.gnu.org/licenses/lgpl-2.1.html</url>
+ </license>
+ </licenses>
+
+ <scm>
+ <connection>scm:svn:http://anonsvn.jboss.org/repos/labs/labs/jbosstm/</connection>
+ <developerConnection>scm:svn:https://svn.jboss.org/repos/labs/labs/jbosstm/</developerConnection>
+ <url>http://fisheye.jboss.org/browse/JBossTS/</url>
+ </scm>
+
+ <repositories>
+ <repository>
+ <id>jboss-public-repository-group</id>
+ <name>JBoss Public Maven Repository Group</name>
+ <url>https://repository.jboss.org/nexus/content/groups/public/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+
+ <configuration>
+ <outputDirectory>@extdir@</outputDirectory>
+ <overWriteReleases>false</overWriteReleases>
+ <overWriteSnapshots>false</overWriteSnapshots>
+ <overWriteIfNewer>true</overWriteIfNewer>
+ <excludeTransitive>true</excludeTransitive>
+ <stripVersion>true</stripVersion>
+ </configuration>
+
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencyManagement>
+ <dependencies>
+
+ <dependency>
+ <!-- https://repository.jboss.org/nexus/service/local/repositories/releases/content/org/jboss/as/jboss-as-parent/7.1.0.Beta1b/jboss-as-parent-7.1.0.Beta1b.pom -->
+ <groupId>org.jboss.as</groupId>
+ <artifactId>jboss-as-parent</artifactId>
+ <version>7.1.0.Beta1b</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+
+ <!--
+ We mostly get our dependency *versions* transitively though the AS pom above.
+ Thus dependencies here should not specify a version unless they are not used
+ in the AS or we explicitly need a different version.
+ -->
+
+ <!-- combined deps for the entire JBossTS. At some point we need to modularize this for different builds -->
+
+ <!-- XTS also requires commons-codec (transitive via httpclient?) and commons-httpclient to compile the localjunit module. needed for test only, not XTS runtime dep. -->
+ <!--<dependency>-->
+ <!--<groupId>commons-codec</groupId>-->
+ <!--<artifactId>commons-codec</artifactId>-->
+ <!--</dependency>-->
+
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.1-jbossorg-1</version>
+ </dependency>
+
+ <!-- commons-logging, jcl-over-slf4j, slf4j-api, slf4j-simple all just test time deps for localjunit? -->
+
+ <!--<dependency>-->
+ <!--<groupId>commons-logging</groupId>-->
+ <!--<artifactId>commons-logging</artifactId>-->
+ <!--</dependency>-->
+
+ <!--<dependency>-->
+ <!--<groupId>org.slf4j</groupId>-->
+ <!--<artifactId>jcl-over-slf4j</artifactId>-->
+ <!--</dependency>-->
+
+ <!--<dependency>-->
+ <!--<groupId>org.slf4j</groupId>-->
+ <!--<artifactId>slf4j-api</artifactId>-->
+ <!--</dependency>-->
+
+ <!--<dependency>-->
+ <!--<groupId>org.slf4j</groupId>-->
+ <!--<artifactId>slf4j-simple</artifactId>-->
+ <!--</dependency>-->
+
+ <!-- JTA (local: ArjunaJTA/jta and remote: ArjunaJTS/jtax) need JTA and JCA (for tx inflow) apis. -->
+
+ <dependency>
+ <!-- JTA API -->
+ <groupId>org.jboss.spec.javax.transaction</groupId>
+ <artifactId>jboss-transaction-api_1.1_spec</artifactId>
+ </dependency>
+
+ <dependency>
+ <!-- JCA API -->
+ <groupId>org.jboss.ironjacamar</groupId>
+ <artifactId>ironjacamar-spec-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <!-- unit tests use junit4 and some use byteman -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <!--<version>4.8.1</version>-->
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.byteman</groupId>
+ <artifactId>byteman</artifactId>
+ <version>${byteman-version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.byteman</groupId>
+ <artifactId>byteman-install</artifactId>
+ <version>${byteman-version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.byteman</groupId>
+ <artifactId>byteman-submit</artifactId>
+ <version>${byteman-version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.byteman</groupId>
+ <artifactId>byteman-bmunit</artifactId>
+ <version>${byteman-version}</version>
+ <scope>test</scope>
+ </dependency>
+ <!-- txbridge uses the dtest addon -->
+ <dependency>
+ <groupId>org.jboss.byteman</groupId>
+ <artifactId>byteman-dtest</artifactId>
+ <version>${byteman-version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- build system uses emma for code coverage metrics -->
+ <dependency>
+ <groupId>emma</groupId>
+ <artifactId>emma</artifactId>
+ <version>2.0.5312</version>
+ </dependency>
+
+ <dependency>
+ <groupId>emma</groupId>
+ <artifactId>emma_ant</artifactId>
+ <version>2.0.5312</version>
+ </dependency>
+
+ <!-- HornetQ Journal based object store requires HornetQ core,
+ at least until HORNETQ-274 is done -->
+ <dependency>
+ <groupId>org.hornetq</groupId>
+ <artifactId>hornetq-core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.netty</groupId>
+ <artifactId>netty</artifactId>
+ <!--<version>3.2.0.Final</version>-->
+ </dependency>
+
+ <!-- installation as a service requires the wrapper, but is an optional deployment model -->
+ <dependency>
+ <groupId>tanukisoft</groupId>
+ <artifactId>wrapper</artifactId>
+ <version>3.2.3</version>
+ </dependency>
+
+ <!-- JTS requires jacorb -->
+ <dependency>
+ <groupId>jacorb</groupId>
+ <artifactId>jacorb</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>jacorb</groupId>
+ <artifactId>idl</artifactId>
+ <version>2.3.1jboss.patch01-brew</version><!-- TODO AS7 -->
+ </dependency>
+
+ <!-- atsintegration (i.e. the JBossAS glue code) requires some app server bits. -->
+
+ <dependency>
+ <groupId>org.jboss.logmanager</groupId>
+ <artifactId>jboss-logmanager</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jboss-transaction-spi</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.integration</groupId>
+ <artifactId>jboss-corba-ots-spi</artifactId>
+ <version>6.0.0.CR1</version><!-- TODO AS7 src includes newer version of this, so its pom does not. -->
+ </dependency>
+
+ <!-- qa test suite - JBossAS integration code. (no longer used)
+ Also txbrige test suite - replace with org.jboss.as.server.Bootstrap (see AS7 ServerInModuleStartupTestCase for example) or arq -->
+ <dependency>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-server-manager</artifactId>
+ <version>1.0.4.Final</version><!-- TODO AS7 -->
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.spec.javax.ejb</groupId>
+ <artifactId>jboss-ejb-api_3.1_spec</artifactId>
+ </dependency>
+
+ <!--remoting not actually used except by obsolete qa/as tests? -->
+ <dependency>
+ <groupId>org.jboss.remoting</groupId>
+ <artifactId>jboss-remoting</artifactId>
+ <version>2.5.3</version><!-- TODO AS7 -->
+ </dependency>
+
+ <!-- naming not actually used? -->
+ <!--<dependency>-->
+ <!--<groupId>org.jboss.naming</groupId>-->
+ <!--<artifactId>jnp-client</artifactId>-->
+ <!--</dependency>-->
+
+
+ <!-- XTS: -->
+
+ <dependency>
+ <groupId>org.jboss.spec.javax.servlet</groupId>
+ <artifactId>jboss-servlet-api_3.0_spec</artifactId>
+ </dependency>
+
+ <!-- test time dep only - XTS TestRunnerXMLServlet -->
+ <dependency>
+ <groupId>dom4j</groupId>
+ <artifactId>dom4j</artifactId>
+ <version>1.6.1</version>
+ </dependency>
+
+
+ <!--
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ </dependency>
+ -->
+ <!--<dependency>-->
+ <!--<groupId>org.jboss.logging</groupId>-->
+ <!--<artifactId>jboss-logging-spi</artifactId>-->
+ <!--<version>2.2.0.CR1</version>-->
+ <!--</dependency>-->
+
+ <!-- https://repository.jboss.org/nexus/content/groups/public-jboss/org/jboss/logging/jboss-logging/ -->
+ <dependency>
+ <groupId>org.jboss.logging</groupId>
+ <artifactId>jboss-logging</artifactId>
+ </dependency>
+
+
+ <!-- https://repository.jboss.org/nexus/content/groups/public-jboss/org/jboss/logging/jboss-logging-processor/ from beta5 -->
+ <!-- https://repository.jboss.org/nexus/content/groups/public-jboss/org/jboss/logging/jboss-logging-tools/ -->
+ <dependency>
+ <groupId>org.jboss.logging</groupId>
+ <artifactId>jboss-logging-processor</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.logging</groupId>
+ <artifactId>jboss-logging-generator</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <!--<dependency>-->
+ <!--<groupId>stax</groupId>-->
+ <!--<artifactId>stax-api</artifactId>-->
+ <!--</dependency>-->
+
+ <!--<dependency>-->
+ <!--<groupId>org.jboss.ws.native</groupId>-->
+ <!--<artifactId>jbossws-native-core</artifactId>-->
+ <!--</dependency>-->
+
+ <dependency>
+ <groupId>org.jboss.ws</groupId>
+ <artifactId>jbossws-api</artifactId>
+ </dependency>
+
+ <!--
+ <dependency>
+ <groupId>javax.xml.ws</groupId>
+ <artifactId>jaxws-api</artifactId>
+ </dependency>
+ -->
+ <!-- txbridge demo -->
+ <dependency>
+ <groupId>org.hibernate.javax.persistence</groupId>
+ <artifactId>hibernate-jpa-2.0-api</artifactId>
+ </dependency>
+
+
+ </dependencies>
+
+ <properties>
+ <byteman-version>1.6.0</byteman-version>
+ </properties>
+</project>
diff --git a/sources b/sources
index e69de29..3609431 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+5831ce6f38e42699f2b30b7f982221db jboss-jts-4.16.2.Final.tar.xz
More information about the scm-commits
mailing list