[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