[jboss-svn-commits] JBL Code SVN: r18777 - in labs/jbosstm/trunk: XTS and 9 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Mar 8 14:18:45 EST 2008


Author: jhalliday
Date: 2008-03-08 14:18:44 -0500 (Sat, 08 Mar 2008)
New Revision: 18777

Added:
   labs/jbosstm/trunk/common/lib/ext/commons-logging-1.1.jar
   labs/jbosstm/trunk/ext/commons-logging-1.1.jar
Removed:
   labs/jbosstm/trunk/common/lib/ext/commons-logging.jar
   labs/jbosstm/trunk/ext/commons-logging.jar
Modified:
   labs/jbosstm/trunk/ArjunaCore/scripts/setup-env.bat
   labs/jbosstm/trunk/ArjunaCore/scripts/setup-env.sh
   labs/jbosstm/trunk/ArjunaCore/scripts/withorb-setup-env.bat
   labs/jbosstm/trunk/ArjunaCore/scripts/withorb-setup-env.sh
   labs/jbosstm/trunk/ArjunaCore/scripts/withoutorb-setup-env.bat
   labs/jbosstm/trunk/ArjunaCore/scripts/withoutorb-setup-env.sh
   labs/jbosstm/trunk/XTS/WS-C/build.xml
   labs/jbosstm/trunk/XTS/WS-T/build.xml
   labs/jbosstm/trunk/XTS/WSCF/build.xml
   labs/jbosstm/trunk/XTS/build.xml
   labs/jbosstm/trunk/XTS/coordinator/build.xml
   labs/jbosstm/trunk/XTS/demo/xts-build.xml
   labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/DefaultLog.java
   labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/jakarta/JakartaLogFactory.java
   labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/jakarta/JakartaRelevelingLogFactory.java
   labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/jakarta/Log4JLogger.java
   labs/jbosstm/trunk/ext/Readme
   labs/jbosstm/trunk/ext/third_party_licenses.txt
Log:
Updated commons-logging from 1.0.3 to 1.1.0, including changes to the modified apache classes that reside in the com.arjuna namespace.
Updated build and run scripts to reflect new logging .jar name.
Changed log factories to be better behaved in environments that also override the factory settings, such as JBossAS.
See JBTM-325 for discussion.


Modified: labs/jbosstm/trunk/ArjunaCore/scripts/setup-env.bat
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/scripts/setup-env.bat	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/ArjunaCore/scripts/setup-env.bat	2008-03-08 19:18:44 UTC (rev 18777)
@@ -45,7 +45,7 @@
 set PRODUCT_CLASSPATH=%PRODUCT_CLASSPATH%;%JBOSSTS_HOME%\etc\
 
 set EXT_CLASSPATH=%JBOSSTS_HOME%\lib\ext\jbossts-common.jar
-set EXT_CLASSPATH=%EXT_CLASSPATH%;%JBOSSTS_HOME%\lib\ext\commons-logging.jar
+set EXT_CLASSPATH=%EXT_CLASSPATH%;%JBOSSTS_HOME%\lib\ext\commons-logging-1.1.jar
 set EXT_CLASSPATH=%EXT_CLASSPATH%;%JBOSSTS_HOME%\lib\ext\concurrent.jar
 set EXT_CLASSPATH=%EXT_CLASSPATH%;%JBOSSTS_HOME%\lib\ext\connector-api.jar
 set EXT_CLASSPATH=%EXT_CLASSPATH%;%JBOSSTS_HOME%\lib\ext\jdbc2_0-stdext.jar

Modified: labs/jbosstm/trunk/ArjunaCore/scripts/setup-env.sh
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/scripts/setup-env.sh	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/ArjunaCore/scripts/setup-env.sh	2008-03-08 19:18:44 UTC (rev 18777)
@@ -76,7 +76,7 @@
 PRODUCT_CLASSPATH="$PRODUCT_CLASSPATH$CPS$JBOSSTS_HOME/etc/"
 
 EXT_CLASSPATH="$JBOSSTS_HOME/lib/ext/jbossts-common.jar"
-EXT_CLASSPATH="$EXT_CLASSPATH$CPS$JBOSSTS_HOME/lib/ext/commons-logging.jar"
+EXT_CLASSPATH="$EXT_CLASSPATH$CPS$JBOSSTS_HOME/lib/ext/commons-logging-1.1.jar"
 EXT_CLASSPATH="$EXT_CLASSPATH$CPS$JBOSSTS_HOME/lib/ext/concurrent.jar"
 EXT_CLASSPATH="$EXT_CLASSPATH$CPS$JBOSSTS_HOME/lib/ext/connector-api.jar"
 EXT_CLASSPATH="$EXT_CLASSPATH$CPS$JBOSSTS_HOME/lib/ext/jdbc2_0-stdext.jar"

Modified: labs/jbosstm/trunk/ArjunaCore/scripts/withorb-setup-env.bat
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/scripts/withorb-setup-env.bat	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/ArjunaCore/scripts/withorb-setup-env.bat	2008-03-08 19:18:44 UTC (rev 18777)
@@ -42,7 +42,7 @@
 set PRODUCT_CLASSPATH=%PRODUCT_CLASSPATH%;%@HOME_DIRECTORY@%\etc\
 
 set EXT_CLASSPATH=%@HOME_DIRECTORY@%\lib\ext\jbossts-common.jar
-set EXT_CLASSPATH=%EXT_CLASSPATH%;%@HOME_DIRECTORY@%\lib\ext\commons-logging.jar
+set EXT_CLASSPATH=%EXT_CLASSPATH%;%@HOME_DIRECTORY@%\lib\ext\commons-logging-1.1.jar
 set EXT_CLASSPATH=%EXT_CLASSPATH%;%@HOME_DIRECTORY@%\lib\ext\concurrent.jar
 set EXT_CLASSPATH=%EXT_CLASSPATH%;%@HOME_DIRECTORY@%\lib\ext\connector-api.jar
 set EXT_CLASSPATH=%EXT_CLASSPATH%;%@HOME_DIRECTORY@%\lib\ext\jdbc2_0-stdext.jar

Modified: labs/jbosstm/trunk/ArjunaCore/scripts/withorb-setup-env.sh
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/scripts/withorb-setup-env.sh	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/ArjunaCore/scripts/withorb-setup-env.sh	2008-03-08 19:18:44 UTC (rev 18777)
@@ -74,7 +74,7 @@
 PRODUCT_CLASSPATH="$PRODUCT_CLASSPATH$CPS$@HOME_DIRECTORY@/etc/"
 
 EXT_CLASSPATH="$@HOME_DIRECTORY@/lib/ext/jbossts-common.jar"
-EXT_CLASSPATH="$EXT_CLASSPATH$CPS$@HOME_DIRECTORY@/lib/ext/commons-logging.jar"
+EXT_CLASSPATH="$EXT_CLASSPATH$CPS$@HOME_DIRECTORY@/lib/ext/commons-logging-1.1.jar"
 EXT_CLASSPATH="$EXT_CLASSPATH$CPS$@HOME_DIRECTORY@/lib/ext/concurrent.jar"
 EXT_CLASSPATH="$EXT_CLASSPATH$CPS$@HOME_DIRECTORY@/lib/ext/connector-api.jar"
 EXT_CLASSPATH="$EXT_CLASSPATH$CPS$@HOME_DIRECTORY@/lib/ext/jdbc2_0-stdext.jar"

Modified: labs/jbosstm/trunk/ArjunaCore/scripts/withoutorb-setup-env.bat
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/scripts/withoutorb-setup-env.bat	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/ArjunaCore/scripts/withoutorb-setup-env.bat	2008-03-08 19:18:44 UTC (rev 18777)
@@ -41,7 +41,7 @@
 set PRODUCT_CLASSPATH=%PRODUCT_CLASSPATH%;%@HOME_DIRECTORY@%\etc\
 
 set EXT_CLASSPATH=%@HOME_DIRECTORY@%\lib\ext\jbossts-common.jar
-set EXT_CLASSPATH=%EXT_CLASSPATH%;%@HOME_DIRECTORY@%\lib\ext\commons-logging.jar
+set EXT_CLASSPATH=%EXT_CLASSPATH%;%@HOME_DIRECTORY@%\lib\ext\commons-logging-1.1.jar
 set EXT_CLASSPATH=%EXT_CLASSPATH%;%@HOME_DIRECTORY@%\lib\ext\concurrent.jar
 set EXT_CLASSPATH=%EXT_CLASSPATH%;%@HOME_DIRECTORY@%\lib\ext\connector-api.jar
 set EXT_CLASSPATH=%EXT_CLASSPATH%;%@HOME_DIRECTORY@%\lib\ext\jdbc2_0-stdext.jar

Modified: labs/jbosstm/trunk/ArjunaCore/scripts/withoutorb-setup-env.sh
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/scripts/withoutorb-setup-env.sh	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/ArjunaCore/scripts/withoutorb-setup-env.sh	2008-03-08 19:18:44 UTC (rev 18777)
@@ -66,7 +66,7 @@
 PRODUCT_CLASSPATH="$PRODUCT_CLASSPATH$CPS$@HOME_DIRECTORY@/etc/"
 
 EXT_CLASSPATH="$@HOME_DIRECTORY@/lib/ext/jbossts-common.jar"
-EXT_CLASSPATH="$EXT_CLASSPATH$CPS$@HOME_DIRECTORY@/lib/ext/commons-logging.jar"
+EXT_CLASSPATH="$EXT_CLASSPATH$CPS$@HOME_DIRECTORY@/lib/ext/commons-logging-1.1.jar"
 EXT_CLASSPATH="$EXT_CLASSPATH$CPS$@HOME_DIRECTORY@/lib/ext/concurrent.jar"
 EXT_CLASSPATH="$EXT_CLASSPATH$CPS$@HOME_DIRECTORY@/lib/ext/connector-api.jar"
 EXT_CLASSPATH="$EXT_CLASSPATH$CPS$@HOME_DIRECTORY@/lib/ext/jdbc2_0-stdext.jar"

Modified: labs/jbosstm/trunk/XTS/WS-C/build.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/build.xml	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/XTS/WS-C/build.xml	2008-03-08 19:18:44 UTC (rev 18777)
@@ -64,7 +64,7 @@
     <property name="com.arjuna.buildsystem.lib.jars" value="buildsystem.jar"/>
 
     <property name="jta.lib.jars" value="jbossjta.jar"/>
-    <property name="jta.ext.jars" value="jbossts-common.jar commons-logging.jar"/>
+    <property name="jta.ext.jars" value="jbossts-common.jar commons-logging-1.1.jar"/>
     <!--
     <property name="xts.ext.jars" value="stax-api-1.0.jar wstx-asl-2.0.3.jar"/>
     -->

Modified: labs/jbosstm/trunk/XTS/WS-T/build.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/build.xml	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/XTS/WS-T/build.xml	2008-03-08 19:18:44 UTC (rev 18777)
@@ -68,7 +68,7 @@
     <property name="com.arjuna.buildsystem.lib.jars" value="buildsystem.jar"/>
 
     <property name="jta.lib.jars" value="jbossjta.jar"/>
-    <property name="jta.ext.jars" value="jbossts-common.jar commons-logging.jar"/>
+    <property name="jta.ext.jars" value="jbossts-common.jar commons-logging-1.1.jar"/>
     <!--
     <property name="xts.ext.jars" value="stax-api-1.0.jar wstx-asl-2.0.3.jar"/>
     <property name="xts.ext.compile.jars" value="servlet.jar"/>

Modified: labs/jbosstm/trunk/XTS/WSCF/build.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WSCF/build.xml	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/XTS/WSCF/build.xml	2008-03-08 19:18:44 UTC (rev 18777)
@@ -49,7 +49,7 @@
 
     <property name="jta.lib.jars" value="jbossjta.jar"/>
     <property name="jta.ext.jars" value="jbossts-common.jar"/>
-    <property name="jta.ext.compile.jars" value="commons-logging.jar jta-1_1-classes.zip"/>
+    <property name="jta.ext.compile.jars" value="commons-logging-1.1.jar jta-1_1-classes.zip"/>
     <property name="xts.ext.compile.jars" value="servlet.jar stax-api-1.0.jar"/>
 
     <property name="wsas.libs" value="wsas.jar"/>

Modified: labs/jbosstm/trunk/XTS/build.xml
===================================================================
--- labs/jbosstm/trunk/XTS/build.xml	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/XTS/build.xml	2008-03-08 19:18:44 UTC (rev 18777)
@@ -42,7 +42,7 @@
 
     <property name="com.arjuna.buildsystem.lib.jars" value="buildsystem.jar"/>
     <property name="com.arjuna.jta.install.lib.jars" value="jbossjta.jar"/>
-    <property name="com.arjuna.jta.install.ext.jars" value="jbossts-common.jar commons-logging.jar"/>
+    <property name="com.arjuna.jta.install.ext.jars" value="jbossts-common.jar commons-logging-1.1.jar"/>
     <property name="com.arjuna.xts.ext.jars" value="jaxrpc.jar saaj-api.jar servlet.jar stax-api-1.0.jar wstx-asl-2.0.3.jar"/>
 
 	<!-- Set internal property defaults -->

Modified: labs/jbosstm/trunk/XTS/coordinator/build.xml
===================================================================
--- labs/jbosstm/trunk/XTS/coordinator/build.xml	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/XTS/coordinator/build.xml	2008-03-08 19:18:44 UTC (rev 18777)
@@ -48,7 +48,7 @@
     <property name="lib.dir" location="${xts.home}/lib"/>
     <property name="ext.dir" location="${lib.dir}/ext"/>
 
-    <property name="ext.package" value="jbossjta.jar jbossts-common.jar commons-logging.jar stax-api-1.0.jar wstx-asl-2.0.3.jar"/>
+    <property name="ext.package" value="jbossjta.jar jbossts-common.jar commons-logging-1.1.jar stax-api-1.0.jar wstx-asl-2.0.3.jar"/>
 
     <!-- ================================================================== -->
 

Modified: labs/jbosstm/trunk/XTS/demo/xts-build.xml
===================================================================
--- labs/jbosstm/trunk/XTS/demo/xts-build.xml	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/XTS/demo/xts-build.xml	2008-03-08 19:18:44 UTC (rev 18777)
@@ -84,7 +84,7 @@
     <property name="jboss.client.libs" value="jbossall-client.jar jboss-jaxws.jar"/>
     <property name="ext.compile" value="${ext.libs} wstx-asl-2.0.3.jar jaxrpc.jar servlet.jar"/>
 
-    <property name="ext.package" value="${ext.libs} jbossts-common.jar commons-logging.jar stax-api-1.0.jar"/>
+    <property name="ext.package" value="${ext.libs} jbossts-common.jar commons-logging-1.1.jar stax-api-1.0.jar"/>
 
     <!-- ================================================================== -->
 

Modified: labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/DefaultLog.java
===================================================================
--- labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/DefaultLog.java	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/DefaultLog.java	2008-03-08 19:18:44 UTC (rev 18777)
@@ -1,74 +1,38 @@
 /*
  * This file has been copied from the Apache Commons Logging project
- * and was formerly called org.apache.commons.logging.impl.SimpleLog.
+ * release version 1.1.0 and then modified.
+ * It was formerly called org.apache.commons.logging.impl.SimpleLog.
  *
- * It was added into the source on 13th January 2004.
+ * Apart from the package and class name changes, the modifications
+ * relate to configuration properties and use of a file rather than
+ * System.out for default logging.
  */
+
+
 /*
- * $Header$
- * $Revision: 2344 $
- * $Date: 2006-03-30 14:58:07 +0100 (Thu, 30 Mar 2006) $
+ * Copyright 2001-2004 The Apache Software Foundation.
  *
- * ====================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
  *
- * The Apache Software License, Version 1.1
+ *      http://www.apache.org/licenses/LICENSE-2.0
  *
- * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Commons", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache at apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 
-package com.arjuna.common.internal.util.logging;
+//package org.apache.commons.logging.impl;  // apache version
+package com.arjuna.common.internal.util.logging; // Red Hat modification
 
-import java.io.*;
+import java.io.InputStream;
+import java.io.Serializable;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.security.AccessController;
@@ -98,11 +62,17 @@
  *     Set to <code>true</code> if you want the Log instance name to be
  *     included in output messages. Defaults to <code>false</code>.</li>
  * <li><code>org.apache.commons.logging.simplelog.showShortLogname</code> -
- *     Set to <code>true</code> if you want the last componet of the name to be
+ *     Set to <code>true</code> if you want the last component of the name to be
  *     included in output messages. Defaults to <code>true</code>.</li>
  * <li><code>org.apache.commons.logging.simplelog.showdatetime</code> -
  *     Set to <code>true</code> if you want the current date and time
- *     to be included in output messages. Default is false.</li>
+ *     to be included in output messages. Default is <code>false</code>.</li>
+ * <li><code>org.apache.commons.logging.simplelog.dateTimeFormat</code> -
+ *     The date and time format to be used in the output messages.
+ *     The pattern describing the date and time format is the same that is
+ *     used in <code>java.text.SimpleDateFormat</code>. If the format is not
+ *     specified or is invalid, the default format is used.
+ *     The default format is <code>yyyy/MM/dd HH:mm:ss:SSS zzz</code>.</li>
  * </ul>
  *
  * <p>In addition to looking for system properties with the names specified
@@ -114,72 +84,49 @@
  * @author Rod Waldhoff
  * @author Robert Burrell Donkin
  *
- * @version $Id: DefaultLog.java 2344 2006-03-30 13:58:07Z  $
+ * @version (apache version) Id: SimpleLog.java 399221 2006-05-03 09:20:24Z dennisl
  */
-public class DefaultLog implements Log {
+public class DefaultLog implements Log, Serializable {
 
 
     // ------------------------------------------------------- Class Attributes
 
-    /** All system properties used by <code>Simple</code> start with this */
+    /** All system properties used by <code>SimpleLog</code> start with this */
     //static protected final String systemPrefix =
-    //    "com.arjuna.common.util.logging.";
+    //    "org.apache.commons.logging.simplelog.";
 
-   static final String LOG_ENABLED_PROPERTY = "com.arjuna.common.util.logging.default";
-   static final String LOG_LEVEL = "com.arjuna.common.util.logging.default.level";
-   static final String SHOW_LOG_NAME = "com.arjuna.common.util.logging.default.showLogName";
-   static final String SHOW_SHORT_LOG_NAME = "com.arjuna.common.util.logging.default.showShortLogName";
-   static final String SHOW_DATE = "com.arjuna.common.util.logging.default.showDate";
-   static final String LOG_FILE = "com.arjuna.common.util.logging.default.logFile";
-   static final String LOG_FILE_APPEND = "com.arjuna.common.util.logging.default.logFileAppend";
-   static final String LOG_FILE_DEFAULT = "error.log";
+    static final String LOG_ENABLED_PROPERTY = "com.arjuna.common.util.logging.default";
+    static final String LOG_LEVEL = "com.arjuna.common.util.logging.default.level";
+    static final String SHOW_LOG_NAME = "com.arjuna.common.util.logging.default.showLogName";
+    static final String SHOW_SHORT_LOG_NAME = "com.arjuna.common.util.logging.default.showShortLogName";
+    static final String SHOW_DATE = "com.arjuna.common.util.logging.default.showDate";
+    static final String LOG_FILE = "com.arjuna.common.util.logging.default.logFile";
+    static final String LOG_FILE_APPEND = "com.arjuna.common.util.logging.default.logFileAppend";
+    static final String LOG_FILE_DEFAULT = "error.log";
 
-
     /** Properties loaded from simplelog.properties */
     static protected final Properties simpleLogProps = new Properties();
 
+    /** The default format to use when formating dates */
+    static protected final String DEFAULT_DATE_TIME_FORMAT =
+        "yyyy/MM/dd HH:mm:ss:SSS zzz";
+
     /** Include the instance name in the log message? */
     static protected boolean showLogName = false;
     /** Include the short name ( last component ) of the logger in the log
-        message. Default to true - otherwise we'll be lost in a flood of
-        messages without knowing who sends them.
-    */
+     *  message. Defaults to true - otherwise we'll be lost in a flood of
+     *  messages without knowing who sends them.
+     */
     static protected boolean showShortName = true;
     /** Include the current time in the log message */
     static protected boolean showDateTime = true;
+    /** The date and time format to use in the log message */
+    static protected String dateTimeFormat = DEFAULT_DATE_TIME_FORMAT;
     /** Used to format times */
     static protected DateFormat dateFormatter = null;
 
     static PrintStream defaultLogFile = null;
 
-   static {
-       showLogName = getBooleanProperty( SHOW_LOG_NAME, showLogName);
-        showShortName = getBooleanProperty( SHOW_SHORT_LOG_NAME, showShortName);
-        showDateTime = getBooleanProperty( SHOW_DATE, showDateTime);
-        showLogName = getBooleanProperty( SHOW_LOG_NAME, showLogName);
-
-        //if(showDateTime) {
-            dateFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss:SSS zzz");
-        //}
-      String fileName = getStringProperty(LOG_FILE, LOG_FILE_DEFAULT);
-       boolean fileAppend = getBooleanProperty(LOG_FILE_APPEND, true);
-      try {
-         //File f = new File(fileName);
-         FileOutputStream fOut = new FileOutputStream(fileName, fileAppend);
-         defaultLogFile = new PrintStream(fOut, true);
-          defaultLogFile.println();
-          defaultLogFile.println();
-          defaultLogFile.println("---------------------------------------------------------------");
-          defaultLogFile.println("DEFAULT LOG, started " + dateFormatter.format(new Date()));
-          defaultLogFile.println("---------------------------------------------------------------");
-      }
-      catch (Exception e)
-      {
-         System.err.println("cannot set up default log for error messages to file " + fileName + ": " + e.getMessage());
-         e.printStackTrace();
-      }
-   }
-
     // ---------------------------------------------------- Log Level Constants
 
 
@@ -205,14 +152,14 @@
     // ------------------------------------------------------------ Initializer
 
     private static String getStringProperty(String name) {
-       String prop = commonPropertyManager.propertyManager.getProperty(name);
-            // if the property manager has no info set, use the system property
-            // and if this isn't set either, default to JAKARTA simple logging.
-            if (prop == null) {
-                prop = System.getProperty(name);
-            }
+        String prop = commonPropertyManager.propertyManager.getProperty(name);
+        // if the property manager has no info set, use the system property
+        // and if this isn't set either, default to JAKARTA simple logging.
+        if (prop == null) {
+            prop = System.getProperty(name);
+        }
         return (prop == null) ? simpleLogProps.getProperty(name) : prop;
-    }
+	}
 
     private static String getStringProperty(String name, String dephault) {
         String prop = getStringProperty(name);
@@ -224,22 +171,32 @@
         return (prop == null) ? dephault : "true".equalsIgnoreCase(prop);
     }
 
-    // initialize class attributes
-    // load properties file, if found.
-    // override with system properties.
+    // Initialize class attributes.
+    // Load properties file, if found.
+    // Override with system properties.
     static {
-        // add props from the resource simplelog.properties
-//        InputStream in = getResourceAsStream("simplelog.properties");
-//        if(null != in) {
-//            try {
-//                simpleLogProps.load(in);
-//                in.close();
-//            } catch(java.io.IOException e) {
-//                // ignored
-//            }
-//        }
 
+        showLogName = getBooleanProperty( SHOW_LOG_NAME, showLogName);
+        showShortName = getBooleanProperty( SHOW_SHORT_LOG_NAME, showShortName);
+        showDateTime = getBooleanProperty( SHOW_DATE, showDateTime);
+        dateFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss:SSS zzz");
 
+        String fileName = getStringProperty(LOG_FILE, LOG_FILE_DEFAULT);
+        boolean fileAppend = getBooleanProperty(LOG_FILE_APPEND, true);
+        try {
+            FileOutputStream fOut = new FileOutputStream(fileName, fileAppend);
+            defaultLogFile = new PrintStream(fOut, true);
+            defaultLogFile.println();
+            defaultLogFile.println();
+            defaultLogFile.println("---------------------------------------------------------------");
+            defaultLogFile.println("DEFAULT LOG, started " + dateFormatter.format(new Date()));
+            defaultLogFile.println("---------------------------------------------------------------");
+        }
+        catch (Exception e)
+        {
+            System.err.println("cannot set up default log for error messages to file " + fileName + ": " + e.getMessage());
+            e.printStackTrace();
+        }
     }
 
 
@@ -249,10 +206,10 @@
     protected String logName = null;
     /** The current log level */
     protected int currentLogLevel;
+    /** The short name of this simple log instance */
+    private String shortLogName = null;
 
-    private String prefix=null;
 
-
     // ------------------------------------------------------------ Constructor
 
     /**
@@ -264,30 +221,16 @@
 
         logName = name;
 
-        // set initial log level
+        // Set initial log level
         // Used to be: set default log level to ERROR
         // IMHO it should be lower, but at least info ( costin ).
-        setLevel(DefaultLog.LOG_LEVEL_DEBUG);
+        setLevel(DefaultLog.LOG_LEVEL_INFO);
 
-        // set log level from properties
-        /*String lvl = getStringProperty(systemPrefix + "log." + logName);
-        int i = String.valueOf(name).lastIndexOf(".");
-        while(null == lvl && i > -1) {
-            name = name.substring(0,i);
-            lvl = getStringProperty(systemPrefix + "log." + name);
-            i = String.valueOf(name).lastIndexOf(".");
-        }
-
+        // Set log level from properties
+        String lvl = commonPropertyManager.propertyManager.getProperty(LOG_LEVEL, null);
         if(null == lvl) {
-            lvl =  getStringProperty(systemPrefix + "defaultlog");
+            lvl =  System.getProperty(LOG_LEVEL + "info");
         }
-        */
-       String lvl = commonPropertyManager.propertyManager.getProperty(LOG_LEVEL, null);
-      // if the property manager has no info set, use the system property
-      // and if this isn't set either, default to false.
-      if (lvl == null) {
-                lvl = System.getProperty(LOG_LEVEL, "info");
-            }
 
         if("all".equalsIgnoreCase(lvl)) {
             setLevel(DefaultLog.LOG_LEVEL_ALL);
@@ -339,19 +282,23 @@
     /**
      * <p> Do the actual logging.
      * This method assembles the message
-     * and then prints to a file.
+     * and then calls <code>write()</code> to cause it to be written.</p>
+     *
+     * @param type One of the LOG_LEVEL_XXX constants defining the log level
+     * @param message The message itself (typically a String)
+     * @param t The exception whose stack trace should be logged
      */
     protected void log(int type, Object message, Throwable t) {
-        // use a string buffer for better performance
+        // Use a string buffer for better performance
         StringBuffer buf = new StringBuffer();
 
-        // append date-time if so configured
+        // Append date-time if so configured
         if(showDateTime) {
             buf.append(dateFormatter.format(new Date()));
             buf.append(" ");
         }
 
-        // append a readable representation of the log leve
+        // Append a readable representation of the log level
         switch(type) {
             case DefaultLog.LOG_LEVEL_TRACE: buf.append("[TRACE] "); break;
             case DefaultLog.LOG_LEVEL_DEBUG: buf.append("[DEBUG] "); break;
@@ -361,22 +308,23 @@
             case DefaultLog.LOG_LEVEL_FATAL: buf.append("[FATAL] "); break;
         }
 
-        // append the name of the log instance if so configured
+        // Append the name of the log instance if so configured
  	if( showShortName) {
-            if( prefix==null ) {
-                // cut all but the last component of the name for both styles
-                prefix = logName.substring( logName.lastIndexOf(".") +1) + " - ";
-                prefix = prefix.substring( prefix.lastIndexOf("/") +1) + "-";
+            if( shortLogName==null ) {
+                // Cut all but the last component of the name for both styles
+                shortLogName = logName.substring(logName.lastIndexOf(".") + 1);
+                shortLogName =
+                    shortLogName.substring(shortLogName.lastIndexOf("/") + 1);
             }
-            buf.append( prefix );
+            buf.append(String.valueOf(shortLogName)).append(" - ");
         } else if(showLogName) {
             buf.append(String.valueOf(logName)).append(" - ");
         }
 
-        // append the message
+        // Append the message
         buf.append(String.valueOf(message));
 
-        // append stack trace if not null
+        // Append stack trace if not null
         if(t != null) {
             buf.append(" <");
             buf.append(t.toString());
@@ -389,8 +337,25 @@
             buf.append(sw.toString());
         }
 
+        // Print to the appropriate destination
+        write(buf);
+
+    }
+
+
+    /**
+     * <p>Write the content of the message accumulated in the specified
+     * <code>StringBuffer</code> to the appropriate output destination.  The
+     * default implementation writes to <code>System.err</code>.</p>
+     *
+     * @param buffer A <code>StringBuffer</code> containing the accumulated
+     *  text to be logged
+     */
+    protected void write(StringBuffer buffer) {
+
         // print to log file.
-        defaultLogFile.println(buf.toString());
+        defaultLogFile.println(buffer.toString());
+
     }
 
 
@@ -410,7 +375,11 @@
 
 
     /**
-     * <p> Log a message with debug log level.</p>
+     * Logs a message with
+     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_DEBUG</code>.
+     *
+     * @param message to log
+     * @see org.apache.commons.logging.Log#debug(Object)
      */
     public final void debug(Object message) {
 
@@ -421,7 +390,12 @@
 
 
     /**
-     * <p> Log an error with debug log level.</p>
+     * Logs a message with
+     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_DEBUG</code>.
+     *
+     * @param message to log
+     * @param t log this cause
+     * @see org.apache.commons.logging.Log#debug(Object, Throwable)
      */
     public final void debug(Object message, Throwable t) {
 
@@ -432,7 +406,11 @@
 
 
     /**
-     * <p> Log a message with debug log level.</p>
+     * Logs a message with
+     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_TRACE</code>.
+     *
+     * @param message to log
+     * @see org.apache.commons.logging.Log#trace(Object)
      */
     public final void trace(Object message) {
 
@@ -443,7 +421,12 @@
 
 
     /**
-     * <p> Log an error with debug log level.</p>
+     * Logs a message with
+     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_TRACE</code>.
+     *
+     * @param message to log
+     * @param t log this cause
+     * @see org.apache.commons.logging.Log#trace(Object, Throwable)
      */
     public final void trace(Object message, Throwable t) {
 
@@ -454,7 +437,11 @@
 
 
     /**
-     * <p> Log a message with info log level.</p>
+     * Logs a message with
+     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_INFO</code>.
+     *
+     * @param message to log
+     * @see org.apache.commons.logging.Log#info(Object)
      */
     public final void info(Object message) {
 
@@ -465,7 +452,12 @@
 
 
     /**
-     * <p> Log an error with info log level.</p>
+     * Logs a message with
+     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_INFO</code>.
+     *
+     * @param message to log
+     * @param t log this cause
+     * @see org.apache.commons.logging.Log#info(Object, Throwable)
      */
     public final void info(Object message, Throwable t) {
 
@@ -476,7 +468,11 @@
 
 
     /**
-     * <p> Log a message with warn log level.</p>
+     * Logs a message with
+     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_WARN</code>.
+     *
+     * @param message to log
+     * @see org.apache.commons.logging.Log#warn(Object)
      */
     public final void warn(Object message) {
 
@@ -487,7 +483,12 @@
 
 
     /**
-     * <p> Log an error with warn log level.</p>
+     * Logs a message with
+     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_WARN</code>.
+     *
+     * @param message to log
+     * @param t log this cause
+     * @see org.apache.commons.logging.Log#warn(Object, Throwable)
      */
     public final void warn(Object message, Throwable t) {
 
@@ -498,7 +499,11 @@
 
 
     /**
-     * <p> Log a message with error log level.</p>
+     * Logs a message with
+     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_ERROR</code>.
+     *
+     * @param message to log
+     * @see org.apache.commons.logging.Log#error(Object)
      */
     public final void error(Object message) {
 
@@ -509,7 +514,12 @@
 
 
     /**
-     * <p> Log an error with error log level.</p>
+     * Logs a message with
+     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_ERROR</code>.
+     *
+     * @param message to log
+     * @param t log this cause
+     * @see org.apache.commons.logging.Log#error(Object, Throwable)
      */
     public final void error(Object message, Throwable t) {
 
@@ -520,7 +530,11 @@
 
 
     /**
-     * <p> Log a message with fatal log level.</p>
+     * Log a message with
+     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_FATAL</code>.
+     *
+     * @param message to log
+     * @see org.apache.commons.logging.Log#fatal(Object)
      */
     public final void fatal(Object message) {
 
@@ -531,7 +545,12 @@
 
 
     /**
-     * <p> Log an error with fatal log level.</p>
+     * Logs a message with
+     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_FATAL</code>.
+     *
+     * @param message to log
+     * @param t log this cause
+     * @see org.apache.commons.logging.Log#fatal(Object, Throwable)
      */
     public final void fatal(Object message, Throwable t) {
 
@@ -636,11 +655,13 @@
         if (classLoader == null) {
             try {
                 // Are we running on a JDK 1.2 or later system?
-                Method method = Thread.class.getMethod("getContextClassLoader", (Class[])null);
+                Method method = Thread.class.getMethod("getContextClassLoader",
+                        (Class[]) null);
 
                 // Get the thread context class loader (if there is one)
                 try {
-                    classLoader = (ClassLoader)method.invoke(Thread.currentThread(), (Object[])null);
+                    classLoader = (ClassLoader)method.invoke(Thread.currentThread(),
+                            (Object[]) null);
                 } catch (IllegalAccessException e) {
                     ;  // ignore
                 } catch (InvocationTargetException e) {

Modified: labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/jakarta/JakartaLogFactory.java
===================================================================
--- labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/jakarta/JakartaLogFactory.java	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/jakarta/JakartaLogFactory.java	2008-03-08 19:18:44 UTC (rev 18777)
@@ -52,10 +52,11 @@
     */
    public AbstractLogInterface getLog(Class clazz) throws LogConfigurationException
    {
+      Object oldConfig = null;
       try
       {
          // configure the underlying apache factory
-         setupLogger();
+         oldConfig = configureFactory();
          // get a new logger from the log subsystem's factory and wrap it into a LogInterface
          return new JakartaLogger(org.apache.commons.logging.LogFactory.getLog(clazz));
       }
@@ -63,6 +64,10 @@
       {
          throw new LogConfigurationException(lce.getMessage());
       }
+      finally
+      {
+          resetFactory(oldConfig);
+      }
    }
 
    /**
@@ -78,10 +83,11 @@
     */
    public AbstractLogInterface getLog(String name) throws LogConfigurationException
    {
+      Object oldConfig = null;
       try
       {
          // configure the underlying apache factory
-         setupLogger();
+         oldConfig = configureFactory();
          // get a new logger from the log subsystem's factory and wrap it into a LogInterface
          return new JakartaLogger(org.apache.commons.logging.LogFactory.getLog(name));
       }
@@ -89,13 +95,37 @@
       {
          throw new LogConfigurationException(lce.getMessage());
       }
+      finally
+      {
+          resetFactory(oldConfig);
+      }
    }
 
+   /*
+        Note: the apache LogFactory configuration is basically global to the JVM (actually the classloader)
+        This braindead design decision has the potential to cause trouble, since multiple users may each
+        set factory attributes and there is no thread safety.  This occurs e.g. when we run embedded in
+        JBossAS.  To minimise the risks (we can't eliminate then entirely without using an isolated classloader)
+        we set the configuration we need on each factory use and reset it afterwards, so as to try and
+        minimise interference with anything else that may be overriding the same factory attributes.
+    */
+
+
    /**
     * Install our custom logger by setting the factory attribute
     */
-   private void setupLogger()
+   private Object configureFactory()
    {
-	   org.apache.commons.logging.LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", Log4JLogger.class.getName());
+       Object oldValue = org.apache.commons.logging.LogFactory.getFactory().getAttribute("org.apache.commons.logging.Log");
+       org.apache.commons.logging.LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", Log4JLogger.class.getName());
+       return oldValue;
    }
+
+   /**
+     * Restore the factory configuration to the provided value.
+     */
+   private void resetFactory(Object value)
+   {
+           org.apache.commons.logging.LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", value);
+   }
 }

Modified: labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/jakarta/JakartaRelevelingLogFactory.java
===================================================================
--- labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/jakarta/JakartaRelevelingLogFactory.java	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/jakarta/JakartaRelevelingLogFactory.java	2008-03-08 19:18:44 UTC (rev 18777)
@@ -43,17 +43,22 @@
     */
    public AbstractLogInterface getLog(Class clazz) throws LogConfigurationException
    {
+      Object oldConfig = null;
       try
       {
          // configure the underlying apache factory
-         setupLogger();
-		 // get a new logger from the log subsystem's factory and wrap it into a LogInterface
-		 return new JakartaRelevelingLogger(org.apache.commons.logging.LogFactory.getLog(clazz));
+         oldConfig = configureFactory();
+         // get a new logger from the log subsystem's factory and wrap it into a LogInterface
+          return new JakartaRelevelingLogger(org.apache.commons.logging.LogFactory.getLog(clazz));
       }
       catch (org.apache.commons.logging.LogConfigurationException lce)
       {
          throw new LogConfigurationException(lce.getMessage());
       }
+      finally
+      {
+          resetFactory(oldConfig);
+      }
    }
 
    /**
@@ -69,24 +74,49 @@
     */
    public AbstractLogInterface getLog(String name) throws LogConfigurationException
    {
+      Object oldConfig = null;
       try
       {
          // configure the underlying apache factory
-         setupLogger();
+         oldConfig = configureFactory();
          // get a new logger from the log subsystem's factory and wrap it into a LogInterface
-         return new JakartaRelevelingLogger(org.apache.commons.logging.LogFactory.getLog(name));
+          return new JakartaRelevelingLogger(org.apache.commons.logging.LogFactory.getLog(name));
       }
       catch (org.apache.commons.logging.LogConfigurationException lce)
       {
          throw new LogConfigurationException(lce.getMessage());
       }
+      finally
+      {
+          resetFactory(oldConfig);
+      }
    }
 
+   /*
+        Note: the apache LogFactory configuration is basically global to the JVM (actually the classloader)
+        This braindead design decision has the potential to cause trouble, since multiple users may each
+        set factory attributes and there is no thread safety.  This occurs e.g. when we run embedded in
+        JBossAS.  To minimise the risks (we can't eliminate then entirely without using an isolated classloader)
+        we set the configuration we need on each factory use and reset it afterwards, so as to try and
+        minimise interference with anything else that may be overriding the same factory attributes.
+    */
+
+
    /**
     * Install our custom logger by setting the factory attribute
     */
-   private void setupLogger()
+   private Object configureFactory()
    {
-	   org.apache.commons.logging.LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", Log4JLogger.class.getName());
+       Object oldValue = org.apache.commons.logging.LogFactory.getFactory().getAttribute("org.apache.commons.logging.Log");
+       org.apache.commons.logging.LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", Log4JLogger.class.getName());
+       return oldValue;
    }
+
+   /**
+     * Restore the factory configuration to the provided value.
+     */
+   private void resetFactory(Object value)
+   {
+           org.apache.commons.logging.LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", value);
+   }
 }

Modified: labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/jakarta/Log4JLogger.java
===================================================================
--- labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/jakarta/Log4JLogger.java	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/jakarta/Log4JLogger.java	2008-03-08 19:18:44 UTC (rev 18777)
@@ -1,27 +1,11 @@
 /*
  * This file has been copied from the Apache Commons Logging project
+ * release version 1.1.0 and then modified.
  *
- * Header: /home/cvspublic/jakarta-commons/logging/src/java/org/apache/commons/logging/impl/Log4JLogger.java,v 1.3 2003/04/02 01:29:38 craigmcc Exp
- * Revision: 1.3
- * Date: 2003/04/02 01:29:38
- */
-/*
- * $Header$
- * $Id: Log4JLogger.java 2344 2006-03-30 13:58:07Z  $s
- *
- * Modified by Thomas Rischbeck
- * Arjuna Technologies Ltd.
- * 02-July-2003, 14:19
- *
- * NOTE:
- *
+ * Modified by Thomas Rischbeck Arjuna Technologies Ltd. 02-July-2003, 14:19
  * This class replaces the Log4j wrapper of the jakarta-commons logging framework.
  * This is necessary so that log4j is printing out correct location information.
- * It is important that this class appears in the classpath before the rest of the
- * jakarta-commons-logging classes!!!
- */
-
-/*
+ *
  * Modified by Jonathan Halliday (jonathan.halliday at redhat.com), February 2007.
  * We can't keep shipping this code in its original package (org.apache.commons.logging.impl)
  * as it creates classloader ordering hassle and prevents patching of the apache
@@ -35,99 +19,105 @@
  */
 
 /*
- * Header: /home/cvspublic/jakarta-commons/logging/src/java/org/apache/commons/logging/impl/Log4JLogger.java,v 1.3 2003/04/02 01:29:38 craigmcc Exp
- * Revision: 1.3
- * Date: 2003/04/02 01:29:38
+ * Copyright 2001-2004 The Apache Software Foundation.
  *
- * ====================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
  *
- * The Apache Software License, Version 1.1
+ *      http://www.apache.org/licenses/LICENSE-2.0
  *
- * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Commons", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache at apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 
-package com.arjuna.common.internal.util.logging.jakarta;
+//package org.apache.commons.logging.impl; // apache version
+package com.arjuna.common.internal.util.logging.jakarta; // Red Hat modification
 
-import org.apache.log4j.*;
+import java.io.Serializable;
 import org.apache.commons.logging.Log;
+import org.apache.log4j.Logger;
+import org.apache.log4j.Priority;
+import org.apache.log4j.Level;
 
 import com.arjuna.common.internal.util.logging.LogImpl;
 
 /**
- * <p>Implementation of {@link Log} that maps directly to a Log4J
- * <strong>Logger</strong>.  Initial configuration of the corresponding
- * Logger instances should be done in the usual manner, as outlined in
- * the Log4J documentation.</p>
+ * Implementation of {@link Log} that maps directly to a
+ * <strong>Logger</strong> for log4J version 1.2.
+ * <p>
+ * Initial configuration of the corresponding Logger instances should be done
+ * in the usual manner, as outlined in the Log4J documentation.
+ * <p>
+ * The reason this logger is distinct from the 1.3 logger is that in version 1.2
+ * of Log4J:
+ * <ul>
+ * <li>class Logger takes Priority parameters not Level parameters.
+ * <li>class Level extends Priority
+ * </ul>
+ * Log4J1.3 is expected to change Level so it no longer extends Priority, which is
+ * a non-binary-compatible change. The class generated by compiling this code against
+ * log4j 1.2 will therefore not run against log4j 1.3.
  *
  * @author <a href="mailto:sanders at apache.org">Scott Sanders</a>
  * @author Rod Waldhoff
  * @author Robert Burrell Donkin
- * @version $Id: Log4JLogger.java 2344 2006-03-30 13:58:07Z  $
+ * @version (apache version) Id: Log4JLogger.java 370672 2006-01-19 23:52:23Z skitching
  */
-public final class Log4JLogger implements Log {
 
+public class Log4JLogger implements Log, Serializable {
 
     // ------------------------------------------------------------- Attributes
 
     /** The fully qualified name of the Log4JLogger class. */
-    //private static final String FQCN = Log4JLogger.class.getName();
-   //TR !!! changed to support the Arjuna CLF wrapper:
-   private static final String FQCN = LogImpl.class.getName();
+    //private static final String FQCN = Log4JLogger.class.getName(); // apache version
+    private static final String FQCN = LogImpl.class.getName(); // Red Hat modification
 
     /** Log to this logger */
-    private Logger logger = null;
+    private transient Logger logger = null;
 
+    /** Logger name */
+    private String name = null;
 
+    private static Priority traceLevel;
+
+    // ------------------------------------------------------------
+    // Static Initializer.
+    //
+    // Note that this must come after the static variable declarations
+    // otherwise initialiser expressions associated with those variables
+    // will override any settings done here.
+    //
+    // Verify that log4j is available, and that it is version 1.2.
+    // If an ExceptionInInitializerError is generated, then LogFactoryImpl
+    // will treat that as meaning that the appropriate underlying logging
+    // library is just not present - if discovery is in progress then
+    // discovery will continue.
+    // ------------------------------------------------------------
+
+    static {
+        if (!Priority.class.isAssignableFrom(Level.class)) {
+            // nope, this is log4j 1.3, so force an ExceptionInInitializerError
+            throw new InstantiationError("Log4J 1.2 not available");
+        }
+
+        // Releases of log4j1.2 >= 1.2.12 have Priority.TRACE available, earlier
+        // versions do not. If TRACE is not available, then we have to map
+        // calls to Log.trace(...) onto the DEBUG level.
+
+        try {
+            traceLevel = (Priority) Level.class.getDeclaredField("TRACE").get(null);
+        } catch(Exception ex) {
+            // ok, trace not available
+            traceLevel = Priority.DEBUG;
+        }
+    }
+
+
     // ------------------------------------------------------------ Constructor
 
     public Log4JLogger() {
@@ -135,116 +125,177 @@
 
 
     /**
-     * Base constructor
+     * Base constructor.
      */
     public Log4JLogger(String name) {
-        this.logger=Logger.getLogger(name);
+        this.name = name;
+        this.logger = getLogger();
     }
 
-    /** For use with a log4j factory
+    /** For use with a log4j factory.
      */
     public Log4JLogger(Logger logger ) {
+        this.name = logger.getName();
         this.logger=logger;
     }
 
 
-    // ---------------------------------------------------------- Implmentation
+    // ---------------------------------------------------------
+    // Implementation
+    //
+    // Note that in the methods below the Priority class is used to define
+    // levels even though the Level class is supported in 1.2. This is done
+    // so that at compile time the call definitely resolves to a call to
+    // a method that takes a Priority rather than one that takes a Level.
+    //
+    // The Category class (and hence its subclass Logger) in version 1.2 only
+    // has methods that take Priority objects. The Category class (and hence
+    // Logger class) in version 1.3 has methods that take both Priority and
+    // Level objects. This means that if we use Level here, and compile
+    // against log4j 1.3 then calls would be bound to the versions of
+    // methods taking Level objects and then would fail to run against
+    // version 1.2 of log4j.
+    // ---------------------------------------------------------
 
 
     /**
-     * Log a message to the Log4j Logger with <code>TRACE</code> priority.
-     * Currently logs to <code>DEBUG</code> level in Log4J.
+     * Logs a message with <code>org.apache.log4j.Priority.TRACE</code>.
+     * When using a log4j version that does not support the <code>TRACE</code>
+     * level, the message will be logged at the <code>DEBUG</code> level.
+     *
+     * @param message to log
+     * @see org.apache.commons.logging.Log#trace(Object)
      */
     public void trace(Object message) {
-        logger.log(FQCN, Priority.DEBUG, message, null);
+        getLogger().log(FQCN, traceLevel, message, null );
     }
 
 
     /**
-     * Log an error to the Log4j Logger with <code>TRACE</code> priority.
-     * Currently logs to <code>DEBUG</code> level in Log4J.
+     * Logs a message with <code>org.apache.log4j.Priority.TRACE</code>.
+     * When using a log4j version that does not support the <code>TRACE</code>
+     * level, the message will be logged at the <code>DEBUG</code> level.
+     *
+     * @param message to log
+     * @param t log this cause
+     * @see org.apache.commons.logging.Log#trace(Object, Throwable)
      */
     public void trace(Object message, Throwable t) {
-        logger.log(FQCN, Priority.DEBUG, message, t );
+        getLogger().log(FQCN, traceLevel, message, t );
     }
 
 
     /**
-     * Log a message to the Log4j Logger with <code>DEBUG</code> priority.
+     * Logs a message with <code>org.apache.log4j.Priority.DEBUG</code>.
+     *
+     * @param message to log
+     * @see org.apache.commons.logging.Log#debug(Object)
      */
     public void debug(Object message) {
-        logger.log(FQCN, Priority.DEBUG, message, null);
+        getLogger().log(FQCN, Priority.DEBUG, message, null );
     }
 
     /**
-     * Log an error to the Log4j Logger with <code>DEBUG</code> priority.
+     * Logs a message with <code>org.apache.log4j.Priority.DEBUG</code>.
+     *
+     * @param message to log
+     * @param t log this cause
+     * @see org.apache.commons.logging.Log#debug(Object, Throwable)
      */
     public void debug(Object message, Throwable t) {
-        logger.log(FQCN, Priority.DEBUG, message, t );
+        getLogger().log(FQCN, Priority.DEBUG, message, t );
     }
 
 
     /**
-     * Log a message to the Log4j Logger with <code>INFO</code> priority.
+     * Logs a message with <code>org.apache.log4j.Priority.INFO</code>.
+     *
+     * @param message to log
+     * @see org.apache.commons.logging.Log#info(Object)
      */
     public void info(Object message) {
-        logger.log(FQCN, Priority.INFO, message, null );
+        getLogger().log(FQCN, Priority.INFO, message, null );
     }
 
 
     /**
-     * Log an error to the Log4j Logger with <code>INFO</code> priority.
+     * Logs a message with <code>org.apache.log4j.Priority.INFO</code>.
+     *
+     * @param message to log
+     * @param t log this cause
+     * @see org.apache.commons.logging.Log#info(Object, Throwable)
      */
     public void info(Object message, Throwable t) {
-        logger.log(FQCN, Priority.INFO, message, t );
+        getLogger().log(FQCN, Priority.INFO, message, t );
     }
 
 
     /**
-     * Log a message to the Log4j Logger with <code>WARN</code> priority.
+     * Logs a message with <code>org.apache.log4j.Priority.WARN</code>.
+     *
+     * @param message to log
+     * @see org.apache.commons.logging.Log#warn(Object)
      */
     public void warn(Object message) {
-        logger.log(FQCN, Priority.WARN, message, null );
+        getLogger().log(FQCN, Priority.WARN, message, null );
     }
 
 
     /**
-     * Log an error to the Log4j Logger with <code>WARN</code> priority.
+     * Logs a message with <code>org.apache.log4j.Priority.WARN</code>.
+     *
+     * @param message to log
+     * @param t log this cause
+     * @see org.apache.commons.logging.Log#warn(Object, Throwable)
      */
     public void warn(Object message, Throwable t) {
-        logger.log(FQCN, Priority.WARN, message, t );
+        getLogger().log(FQCN, Priority.WARN, message, t );
     }
 
 
     /**
-     * Log a message to the Log4j Logger with <code>ERROR</code> priority.
+     * Logs a message with <code>org.apache.log4j.Priority.ERROR</code>.
+     *
+     * @param message to log
+     * @see org.apache.commons.logging.Log#error(Object)
      */
     public void error(Object message) {
-        logger.log(FQCN, Priority.ERROR, message, null );
+        getLogger().log(FQCN, Priority.ERROR, message, null );
     }
 
 
     /**
-     * Log an error to the Log4j Logger with <code>ERROR</code> priority.
+     * Logs a message with <code>org.apache.log4j.Priority.ERROR</code>.
+     *
+     * @param message to log
+     * @param t log this cause
+     * @see org.apache.commons.logging.Log#error(Object, Throwable)
      */
     public void error(Object message, Throwable t) {
-        logger.log(FQCN, Priority.ERROR, message, t );
+        getLogger().log(FQCN, Priority.ERROR, message, t );
     }
 
 
     /**
-     * Log a message to the Log4j Logger with <code>FATAL</code> priority.
+     * Logs a message with <code>org.apache.log4j.Priority.FATAL</code>.
+     *
+     * @param message to log
+     * @see org.apache.commons.logging.Log#fatal(Object)
      */
     public void fatal(Object message) {
-        logger.log(FQCN, Priority.FATAL, message, null );
+        getLogger().log(FQCN, Priority.FATAL, message, null );
     }
 
 
     /**
-     * Log an error to the Log4j Logger with <code>FATAL</code> priority.
+     * Logs a message with <code>org.apache.log4j.Priority.FATAL</code>.
+     *
+     * @param message to log
+     * @param t log this cause
+     * @see org.apache.commons.logging.Log#fatal(Object, Throwable)
      */
     public void fatal(Object message, Throwable t) {
-        logger.log(FQCN, Priority.FATAL, message, t );
+        getLogger().log(FQCN, Priority.FATAL, message, t );
     }
 
 
@@ -252,6 +303,9 @@
      * Return the native Logger instance we are using.
      */
     public Logger getLogger() {
+        if (logger == null) {
+            logger = Logger.getLogger(name);
+        }
         return (this.logger);
     }
 
@@ -260,7 +314,7 @@
      * Check whether the Log4j Logger used is enabled for <code>DEBUG</code> priority.
      */
     public boolean isDebugEnabled() {
-        return logger.isDebugEnabled();
+        return getLogger().isDebugEnabled();
     }
 
 
@@ -268,7 +322,7 @@
      * Check whether the Log4j Logger used is enabled for <code>ERROR</code> priority.
      */
     public boolean isErrorEnabled() {
-        return logger.isEnabledFor(Priority.ERROR);
+        return getLogger().isEnabledFor(Priority.ERROR);
     }
 
 
@@ -276,7 +330,7 @@
      * Check whether the Log4j Logger used is enabled for <code>FATAL</code> priority.
      */
     public boolean isFatalEnabled() {
-        return logger.isEnabledFor(Priority.FATAL);
+        return getLogger().isEnabledFor(Priority.FATAL);
     }
 
 
@@ -284,22 +338,23 @@
      * Check whether the Log4j Logger used is enabled for <code>INFO</code> priority.
      */
     public boolean isInfoEnabled() {
-        return logger.isInfoEnabled();
+        return getLogger().isInfoEnabled();
     }
 
 
     /**
      * Check whether the Log4j Logger used is enabled for <code>TRACE</code> priority.
-     * For Log4J, this returns the value of <code>isDebugEnabled()</code>
+     * When using a log4j version that does not support the TRACE level, this call
+     * will report whether <code>DEBUG</code> is enabled or not.
      */
     public boolean isTraceEnabled() {
-        return logger.isDebugEnabled();
+        return getLogger().isEnabledFor(traceLevel);
     }
 
     /**
      * Check whether the Log4j Logger used is enabled for <code>WARN</code> priority.
      */
     public boolean isWarnEnabled() {
-        return logger.isEnabledFor(Priority.WARN);
+        return getLogger().isEnabledFor(Priority.WARN);
     }
 }

Added: labs/jbosstm/trunk/common/lib/ext/commons-logging-1.1.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/common/lib/ext/commons-logging-1.1.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Deleted: labs/jbosstm/trunk/common/lib/ext/commons-logging.jar
===================================================================
(Binary files differ)

Modified: labs/jbosstm/trunk/ext/Readme
===================================================================
--- labs/jbosstm/trunk/ext/Readme	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/ext/Readme	2008-03-08 19:18:44 UTC (rev 18777)
@@ -27,7 +27,7 @@
 "3rd party" libraries:
 
 classes12.jar		Oracle 9.2
-commons-logging.jar	Apache Jakarta Commons Logging Framework
+commons-logging-1.1.jar	Apache Jakarta Commons Logging Framework version 1.1.0
 connector-api.jar
 jdbc2_0-stdext.jar	JDBC 2.0
 jmxri.jar		JMX reference implementation

Added: labs/jbosstm/trunk/ext/commons-logging-1.1.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/ext/commons-logging-1.1.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Deleted: labs/jbosstm/trunk/ext/commons-logging.jar
===================================================================
(Binary files differ)

Modified: labs/jbosstm/trunk/ext/third_party_licenses.txt
===================================================================
--- labs/jbosstm/trunk/ext/third_party_licenses.txt	2008-03-07 22:47:02 UTC (rev 18776)
+++ labs/jbosstm/trunk/ext/third_party_licenses.txt	2008-03-08 19:18:44 UTC (rev 18777)
@@ -4,7 +4,215 @@
 ASSOCIATED WITH OTHER ELEMENTS OF THE SOFTWARE.
 LICENSE TERMS FOR APACHE XERXES AND APACHE XALAN THAT MAY ACCOMPANY THE ARJUNA SOFTWARE
 
+--------------------------------------------------------
 
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+--------------------------------------------------------
+
+
 The Apache Software LICENSE, Version 1.1
 THE TERMS AND CONDITIONS APPEARING BELOW APPLY ONLY TO THAT PORTION OF THE SOFTWARE THAT IS
 APACHE XERCES AND XALAN AND DO NOT OVERRIDE ANY ARJUNA SOFTWARE OR ANY OTHER PRODUCTS TERMS
@@ -1610,368 +1818,368 @@
 
 Licensee/Company: Entity receiving Software.
 
-Effective Date: Date of delivery of the Software to 
+Effective Date: Date of delivery of the Software to
 You.
 
-Software: Java(TM) Transaction API (JTA) Specification 
+Software: Java(TM) Transaction API (JTA) Specification
 1.1
 
-License Term:  Perpetual (subject to termination under 
+License Term:  Perpetual (subject to termination under
 the SLA)
 
 Licensed Unit: Software Copy
 
 Licensed unit Count: Unlimited
 
-Permitted Uses:   
+Permitted Uses:
 
-1. You may reproduce and use the Software for Your own 
-Individual, Commercial, or Research and Instructional 
-Use for the purposes of designing, developing, 
-testing, and running Your applets and application 
+1. You may reproduce and use the Software for Your own
+Individual, Commercial, or Research and Instructional
+Use for the purposes of designing, developing,
+testing, and running Your applets and application
 ("Programs").
 
-2. Subject to the terms and conditions of this 
-Agreement and restrictions and exceptions set forth in 
-the Software's documentation, You may reproduce and 
-distribute portions of Software identified as a 
-redistributable in the documentation 
+2. Subject to the terms and conditions of this
+Agreement and restrictions and exceptions set forth in
+the Software's documentation, You may reproduce and
+distribute portions of Software identified as a
+redistributable in the documentation
 ("Redistributable"), provided that:
 
-(a) You distribute Redistributable complete and 
-unmodified and only bundled as part of Your Programs, 
+(a) You distribute Redistributable complete and
+unmodified and only bundled as part of Your Programs,
 
-(b) Your Programs add significant and primary 
-functionality to the Redistributable, 
+(b) Your Programs add significant and primary
+functionality to the Redistributable,
 
-(c) You distribute Redistributable for the sole 
+(c) You distribute Redistributable for the sole
 purpose of running Your Programs,
 
-(d) You do not distribute additional software intended 
+(d) You do not distribute additional software intended
 to replace any component(s) of the Redistributable,
 
-(e) You do not remove or alter any proprietary legends 
+(e) You do not remove or alter any proprietary legends
 or notices contained in or on the Redistributable.
- 
-(f) You only distribute the Redistributable subject to 
-a license agreement that protects Sun's interests 
-consistent with the terms contained in this Agreement, 
+
+(f) You only distribute the Redistributable subject to
+a license agreement that protects Sun's interests
+consistent with the terms contained in this Agreement,
 and
 
-(g) You agree to defend and indemnify Sun and its 
-licensors from and against any damages, costs, 
-liabilities, settlement amounts and/or expenses  
-(including attorneys' fees) incurred in connection 
-with any claim, lawsuit or action by any third party 
-that arises or results from the use or distribution of 
+(g) You agree to defend and indemnify Sun and its
+licensors from and against any damages, costs,
+liabilities, settlement amounts and/or expenses
+(including attorneys' fees) incurred in connection
+with any claim, lawsuit or action by any third party
+that arises or results from the use or distribution of
 any and all Programs and/or Redistributable.
 
-3. Java Technology Restrictions.  You may not create, 
-modify, or change the behavior of, or authorize your 
-licensees to create, modify, or change the behavior 
-of, classes, interfaces, or subpackages that are in 
-any way identified as "java", "javax", "sun" or 
-similar convention as specified by Sun in any naming 
+3. Java Technology Restrictions.  You may not create,
+modify, or change the behavior of, or authorize your
+licensees to create, modify, or change the behavior
+of, classes, interfaces, or subpackages that are in
+any way identified as "java", "javax", "sun" or
+similar convention as specified by Sun in any naming
 convention designation.
 
 Sun Microsystems, Inc. ("Sun")
 SOFTWARE LICENSE AGREEMENT
 
-READ THE TERMS OF THIS AGREEMENT ("AGREEMENT") 
-CAREFULLY BEFORE OPENING SOFTWARE MEDIA PACKAGE. BY 
-OPENING SOFTWARE MEDIA PACKAGE, YOU AGREE TO THE TERMS 
-OF THIS AGREEMENT. IF YOU ARE ACCESSING SOFTWARE 
-ELECTRONICALLY, INDICATE YOUR ACCEPTANCE OF THESE 
-TERMS BY SELECTING THE "ACCEPT" BUTTON AT THE END OF 
-THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE 
-TERMS, PROMPTLY RETURN THE UNUSED SOFTWARE TO YOUR 
-PLACE OF PURCHASE FOR A REFUND OR, IF SOFTWARE IS 
-ACCESSED ELECTRONICALLY, SELECT THE "DECLINE" (OR 
-"EXIT") BUTTON AT THE END OF THIS AGREEMENT. IF YOU 
-HAVE SEPARATELY AGREED TO LICENSE TERMS ("MASTER 
-TERMS") FOR YOUR LICENSE TO THIS SOFTWARE, THEN 
-SECTIONS 1-5 OF THIS AGREEMENT ("SUPPLEMENTAL LICENSE 
-TERMS") SHALL SUPPLEMENT AND SUPERSEDE THE MASTER 
+READ THE TERMS OF THIS AGREEMENT ("AGREEMENT")
+CAREFULLY BEFORE OPENING SOFTWARE MEDIA PACKAGE. BY
+OPENING SOFTWARE MEDIA PACKAGE, YOU AGREE TO THE TERMS
+OF THIS AGREEMENT. IF YOU ARE ACCESSING SOFTWARE
+ELECTRONICALLY, INDICATE YOUR ACCEPTANCE OF THESE
+TERMS BY SELECTING THE "ACCEPT" BUTTON AT THE END OF
+THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE
+TERMS, PROMPTLY RETURN THE UNUSED SOFTWARE TO YOUR
+PLACE OF PURCHASE FOR A REFUND OR, IF SOFTWARE IS
+ACCESSED ELECTRONICALLY, SELECT THE "DECLINE" (OR
+"EXIT") BUTTON AT THE END OF THIS AGREEMENT. IF YOU
+HAVE SEPARATELY AGREED TO LICENSE TERMS ("MASTER
+TERMS") FOR YOUR LICENSE TO THIS SOFTWARE, THEN
+SECTIONS 1-5 OF THIS AGREEMENT ("SUPPLEMENTAL LICENSE
+TERMS") SHALL SUPPLEMENT AND SUPERSEDE THE MASTER
 TERMS IN RELATION TO THIS SOFTWARE.
 
 1.	Definitions.
 
-(a) 	"Entitlement" means the collective set of 
-applicable documents authorized by Sun evidencing your 
-obligation to pay associated fees (if any) for the 
-license, associated Services, and the authorized scope 
+(a) 	"Entitlement" means the collective set of
+applicable documents authorized by Sun evidencing your
+obligation to pay associated fees (if any) for the
+license, associated Services, and the authorized scope
 of use of Software under this Agreement.
 
-(b) 	"Licensed Unit" means the unit of measure by 
-which your use of Software and/or Service is licensed, 
+(b) 	"Licensed Unit" means the unit of measure by
+which your use of Software and/or Service is licensed,
 as described in your Entitlement.
 
-(c)	"Permitted Use" means the licensed Software 
-use(s) authorized in this Agreement as specified in 
-your Entitlement. The Permitted Use for any bundled 
-Sun software not specified in your Entitlement will be 
+(c)	"Permitted Use" means the licensed Software
+use(s) authorized in this Agreement as specified in
+your Entitlement. The Permitted Use for any bundled
+Sun software not specified in your Entitlement will be
 evaluation use as provided in Section 3.
 
-(d) 	"Service" means the service(s) that Sun or its 
-delegate will provide, if any, as selected in your 
-Entitlement and as further described in the applicable 
+(d) 	"Service" means the service(s) that Sun or its
+delegate will provide, if any, as selected in your
+Entitlement and as further described in the applicable
 service listings at www.sun.com/service/servicelist.
 
-(e) 	"Software" means the Sun software described in 
-your Entitlement. Also, certain software may be 
-included for evaluation use under Section 3. 
+(e) 	"Software" means the Sun software described in
+your Entitlement. Also, certain software may be
+included for evaluation use under Section 3.
 
-(f)	"You" and "Your" means the individual or legal 
-entity specified in the Entitlement, or for evaluation 
+(f)	"You" and "Your" means the individual or legal
+entity specified in the Entitlement, or for evaluation
 purposes, the entity performing the evaluation.
 
 2.	License Grant and Entitlement.
 
-Subject to the terms of your Entitlement, Sun grants 
-you a nonexclusive, nontransferable limited license to 
-use Software for its Permitted Use for the license 
-term. Your Entitlement will specify (a) Software 
-licensed, (b) the Permitted Use, (c) the license term, 
-and (d) the Licensed Units. 
+Subject to the terms of your Entitlement, Sun grants
+you a nonexclusive, nontransferable limited license to
+use Software for its Permitted Use for the license
+term. Your Entitlement will specify (a) Software
+licensed, (b) the Permitted Use, (c) the license term,
+and (d) the Licensed Units.
 
-Additionally, if your Entitlement includes Services, 
-then it will also specify the (e) Service and (f) 
-service term. 
+Additionally, if your Entitlement includes Services,
+then it will also specify the (e) Service and (f)
+service term.
 
-If your rights to Software or Services are limited in 
-duration and the date such rights begin is other than 
-the purchase date, your Entitlement will provide that 
+If your rights to Software or Services are limited in
+duration and the date such rights begin is other than
+the purchase date, your Entitlement will provide that
 beginning date(s).
 
-The Entitlement may be delivered to you in various 
-ways depending on the manner in which you obtain 
-Software and Services, for example, the Entitlement 
-may be provided in your receipt, invoice or your 
-contract with Sun or authorized Sun reseller. It may 
+The Entitlement may be delivered to you in various
+ways depending on the manner in which you obtain
+Software and Services, for example, the Entitlement
+may be provided in your receipt, invoice or your
+contract with Sun or authorized Sun reseller. It may
 also be in electronic format if you download Software.
 
 3.	Permitted Use.
 
-As selected in your Entitlement, one or more of the 
-following Permitted Uses will apply to your use of 
-Software. Unless you have an Entitlement that 
-expressly permits it, you may not use Software for any 
-of the other Permitted Uses. If you don't have an 
-Entitlement, or if your Entitlement doesn't cover 
-additional software delivered to you, then such 
+As selected in your Entitlement, one or more of the
+following Permitted Uses will apply to your use of
+Software. Unless you have an Entitlement that
+expressly permits it, you may not use Software for any
+of the other Permitted Uses. If you don't have an
+Entitlement, or if your Entitlement doesn't cover
+additional software delivered to you, then such
 software is for your Evaluation Use.
 
-(a) Evaluation Use. You may evaluate Software 
-internally for a period of 90 days from your first 
-use. 
+(a) Evaluation Use. You may evaluate Software
+internally for a period of 90 days from your first
+use.
 
-(b) Research and Instructional Use. You may use 
-Software internally to design, develop and test, and 
+(b) Research and Instructional Use. You may use
+Software internally to design, develop and test, and
 also to provide instruction on such uses.
 
-(c) Individual Use. You may use Software internally 
+(c) Individual Use. You may use Software internally
 for personal, individual use.
 
-(d) Commercial Use. You may use Software internally 
-for your own commercial purposes. 
+(d) Commercial Use. You may use Software internally
+for your own commercial purposes.
 
-(e) Service Provider Use. You may make Software 
-functionality accessible (but not by providing 
-Software itself or through outsourcing services) to 
-your end users in an extranet deployment, but not to 
+(e) Service Provider Use. You may make Software
+functionality accessible (but not by providing
+Software itself or through outsourcing services) to
+your end users in an extranet deployment, but not to
 your affiliated companies or to government agencies.
 
 4.	Licensed Units.
 
-Your Permitted Use is limited to the number of 
-Licensed Units stated in your Entitlement. If you 
-require additional Licensed Units, you will need 
+Your Permitted Use is limited to the number of
+Licensed Units stated in your Entitlement. If you
+require additional Licensed Units, you will need
 additional Entitlement(s).
 
 5.	Restrictions.
 
-(a) The copies of Software provided to you under this 
-Agreement are licensed, not sold, to you by Sun. Sun 
-reserves all rights not expressly granted. (b) You may 
-make a single archival copy of Software, but otherwise 
-may not copy, modify, or distribute Software. However 
-if the Sun documentation accompanying Software lists 
-specific portions of Software, such as header files, 
-class libraries, reference source code, and/or 
-redistributable files, that may be handled 
-differently, you may do so only as provided in the Sun 
-documentation. (c) You may not rent, lease, lend or 
-encumber Software. (d) Unless enforcement is 
-prohibited by applicable law, you may not decompile, 
-or reverse engineer Software. (e) The terms and 
-conditions of this Agreement will apply to any 
-Software updates, provided to you at Sun's discretion, 
-that replace and/or supplement the original Software, 
-unless such update contains a separate license. (f) 
-You may not publish or provide the results of any 
-benchmark or comparison tests run on Software to any 
-third party without the prior written consent of Sun. 
-(g) Software is confidential and copyrighted. (h) 
-Unless otherwise specified, if Software is delivered 
-with embedded or bundled software that enables 
-functionality of Software, you may not use such 
-software on a stand-alone basis or use any portion of 
-such software to interoperate with any program(s) 
-other than Software. (i) Software may contain programs 
-that perform automated collection of system data 
-and/or automated software updating services. System 
-data collected through such programs may be used by 
-Sun, its subcontractors, and its service delivery 
-partners for the purpose of providing you with remote 
-system services and/or improving Sun's software and 
-systems. (j) Software is not designed, licensed or 
-intended for use in the design, construction, 
-operation or maintenance of any nuclear facility and 
-Sun and its licensors disclaim any express or implied 
-warranty of fitness for such uses. (k) No right, title 
-or interest in or to any trademark, service mark, logo 
-or trade name of Sun or its licensors is granted under 
+(a) The copies of Software provided to you under this
+Agreement are licensed, not sold, to you by Sun. Sun
+reserves all rights not expressly granted. (b) You may
+make a single archival copy of Software, but otherwise
+may not copy, modify, or distribute Software. However
+if the Sun documentation accompanying Software lists
+specific portions of Software, such as header files,
+class libraries, reference source code, and/or
+redistributable files, that may be handled
+differently, you may do so only as provided in the Sun
+documentation. (c) You may not rent, lease, lend or
+encumber Software. (d) Unless enforcement is
+prohibited by applicable law, you may not decompile,
+or reverse engineer Software. (e) The terms and
+conditions of this Agreement will apply to any
+Software updates, provided to you at Sun's discretion,
+that replace and/or supplement the original Software,
+unless such update contains a separate license. (f)
+You may not publish or provide the results of any
+benchmark or comparison tests run on Software to any
+third party without the prior written consent of Sun.
+(g) Software is confidential and copyrighted. (h)
+Unless otherwise specified, if Software is delivered
+with embedded or bundled software that enables
+functionality of Software, you may not use such
+software on a stand-alone basis or use any portion of
+such software to interoperate with any program(s)
+other than Software. (i) Software may contain programs
+that perform automated collection of system data
+and/or automated software updating services. System
+data collected through such programs may be used by
+Sun, its subcontractors, and its service delivery
+partners for the purpose of providing you with remote
+system services and/or improving Sun's software and
+systems. (j) Software is not designed, licensed or
+intended for use in the design, construction,
+operation or maintenance of any nuclear facility and
+Sun and its licensors disclaim any express or implied
+warranty of fitness for such uses. (k) No right, title
+or interest in or to any trademark, service mark, logo
+or trade name of Sun or its licensors is granted under
 this Agreement.
 
-6.	Term and Termination. 
+6.	Term and Termination.
 
-The license and service term are set forth in your 
-Entitlement(s). Your rights under this Agreement will 
-terminate immediately without notice from Sun if you 
-materially breach it or take any action in derogation 
-of Sun's and/or its licensors' rights to Software. Sun 
-may terminate this Agreement should any Software 
-become, or in Sun's reasonable opinion likely to 
-become, the subject of a claim of intellectual 
-property infringement or trade secret 
-misappropriation. Upon termination, you will cease use 
-of, and destroy, Software and confirm compliance in 
-writing to Sun. Sections 1, 5, 6, 7, and 9-15 will 
+The license and service term are set forth in your
+Entitlement(s). Your rights under this Agreement will
+terminate immediately without notice from Sun if you
+materially breach it or take any action in derogation
+of Sun's and/or its licensors' rights to Software. Sun
+may terminate this Agreement should any Software
+become, or in Sun's reasonable opinion likely to
+become, the subject of a claim of intellectual
+property infringement or trade secret
+misappropriation. Upon termination, you will cease use
+of, and destroy, Software and confirm compliance in
+writing to Sun. Sections 1, 5, 6, 7, and 9-15 will
 survive termination of the Agreement.
 
 7.	Java Compatibility and Open Source.
 
-Software may contain Java technology. You may not 
-create additional classes to, or modifications of, the 
-Java technology, except under compatibility 
-requirements available under a separate agreement 
+Software may contain Java technology. You may not
+create additional classes to, or modifications of, the
+Java technology, except under compatibility
+requirements available under a separate agreement
 available at www.java.net.
 
-Sun supports and benefits from the global community of 
-open source developers, and thanks the community for 
-its important contributions and open standards-based 
-technology, which Sun has adopted into many of its 
+Sun supports and benefits from the global community of
+open source developers, and thanks the community for
+its important contributions and open standards-based
+technology, which Sun has adopted into many of its
 products.
 
-Please note that portions of Software may be provided 
-with notices and open source licenses from such 
-communities and third parties that govern the use of 
-those portions, and any licenses granted hereunder do 
-not alter any rights and obligations you may have 
-under such open source licenses, however, the 
-disclaimer of warranty and limitation of liability 
-provisions in this Agreement will apply to all 
+Please note that portions of Software may be provided
+with notices and open source licenses from such
+communities and third parties that govern the use of
+those portions, and any licenses granted hereunder do
+not alter any rights and obligations you may have
+under such open source licenses, however, the
+disclaimer of warranty and limitation of liability
+provisions in this Agreement will apply to all
 Software in this distribution.
 
-8. 	Limited Warranty. 
+8. 	Limited Warranty.
 
-Sun warrants to you that for a period of 90 days from 
-the date of purchase, as evidenced by a copy of the 
-receipt, the media on which Software is furnished (if 
-any) will be free of defects in materials and 
-workmanship under normal use. Except for the 
-foregoing, Software is provided "AS IS". Your 
-exclusive remedy and Sun's entire liability under this 
-limited warranty will be at Sun's option to replace 
-Software media or refund the fee paid for Software. 
-Some states do not allow limitations on certain 
-implied warranties, so the above may not apply to you. 
-This limited warranty gives you specific legal rights. 
+Sun warrants to you that for a period of 90 days from
+the date of purchase, as evidenced by a copy of the
+receipt, the media on which Software is furnished (if
+any) will be free of defects in materials and
+workmanship under normal use. Except for the
+foregoing, Software is provided "AS IS". Your
+exclusive remedy and Sun's entire liability under this
+limited warranty will be at Sun's option to replace
+Software media or refund the fee paid for Software.
+Some states do not allow limitations on certain
+implied warranties, so the above may not apply to you.
+This limited warranty gives you specific legal rights.
 You may have others, which vary from state to state.
 
-9.	Disclaimer of Warranty. 
+9.	Disclaimer of Warranty.
 
-UNLESS SPECIFIED IN THIS AGREEMENT, ALL EXPRESS OR 
-IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, 
-INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, 
-FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT 
-ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT THESE 
-DISCLAIMERS ARE HELD TO BE LEGALLY INVALID. 
+UNLESS SPECIFIED IN THIS AGREEMENT, ALL EXPRESS OR
+IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
+INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT
+ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT THESE
+DISCLAIMERS ARE HELD TO BE LEGALLY INVALID.
 
-10. 	Limitation of Liability. 
+10. 	Limitation of Liability.
 
-TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL 
-SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, 
-PROFIT OR DATA, OR FOR SPECIAL, INDIRECT, 
-CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER 
-CAUSED REGARDLESS OF THE THEORY OF LIABILITY, ARISING 
-OUT OF OR RELATED TO THE USE OF OR INABILITY TO USE 
-SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE 
-POSSIBILITY OF SUCH DAMAGES. In no event will Sun's 
-liability to you, whether in contract, tort (including 
-negligence), or otherwise, exceed the amount paid by 
-you for Software under this Agreement. The foregoing 
-limitations will apply even if the above stated 
-warranty fails of its essential purpose. Some states 
-do not allow the exclusion of incidental or 
-consequential damages, so some of the terms above may 
-not be applicable to you. 
+TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL
+SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE,
+PROFIT OR DATA, OR FOR SPECIAL, INDIRECT,
+CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
+CAUSED REGARDLESS OF THE THEORY OF LIABILITY, ARISING
+OUT OF OR RELATED TO THE USE OF OR INABILITY TO USE
+SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES. In no event will Sun's
+liability to you, whether in contract, tort (including
+negligence), or otherwise, exceed the amount paid by
+you for Software under this Agreement. The foregoing
+limitations will apply even if the above stated
+warranty fails of its essential purpose. Some states
+do not allow the exclusion of incidental or
+consequential damages, so some of the terms above may
+not be applicable to you.
 
-11. 	Export Regulations. 
+11. 	Export Regulations.
 
-All Software, documents, technical data, and any other 
-materials delivered under this Agreement are subject 
-to U.S. export control laws and may be subject to 
-export or import regulations in other countries. You 
-agree to comply strictly with these laws and 
-regulations and acknowledge that you have the 
-responsibility to obtain any licenses to export, 
-re-export, or import as may be required after delivery 
-to you. 
+All Software, documents, technical data, and any other
+materials delivered under this Agreement are subject
+to U.S. export control laws and may be subject to
+export or import regulations in other countries. You
+agree to comply strictly with these laws and
+regulations and acknowledge that you have the
+responsibility to obtain any licenses to export,
+re-export, or import as may be required after delivery
+to you.
 
-12. 	U.S. Government Restricted Rights. 
+12. 	U.S. Government Restricted Rights.
 
-If Software is being acquired by or on behalf of the 
-U.S. Government or by a U.S. Government prime 
-contractor or subcontractor (at any tier), then the 
-Government's rights in Software and accompanying 
-documentation will be only as set forth in this 
-Agreement; this is in accordance with 48 CFR 227.7201 
-through 227.7202-4 (for Department of Defense (DOD) 
-acquisitions) and with 48 CFR 2.101 and 12.212 (for 
-non-DOD acquisitions). 
+If Software is being acquired by or on behalf of the
+U.S. Government or by a U.S. Government prime
+contractor or subcontractor (at any tier), then the
+Government's rights in Software and accompanying
+documentation will be only as set forth in this
+Agreement; this is in accordance with 48 CFR 227.7201
+through 227.7202-4 (for Department of Defense (DOD)
+acquisitions) and with 48 CFR 2.101 and 12.212 (for
+non-DOD acquisitions).
 
-13. 	Governing Law. 
+13. 	Governing Law.
 
-Any action related to this Agreement will be governed 
-by California law and controlling U.S. federal law. No 
-choice of law rules of any jurisdiction will apply. 
+Any action related to this Agreement will be governed
+by California law and controlling U.S. federal law. No
+choice of law rules of any jurisdiction will apply.
 
-14. 	Severability. 
+14. 	Severability.
 
-If any provision of this Agreement is held to be 
-unenforceable, this Agreement will remain in effect 
-with the provision omitted, unless omission would 
-frustrate the intent of the parties, in which case 
+If any provision of this Agreement is held to be
+unenforceable, this Agreement will remain in effect
+with the provision omitted, unless omission would
+frustrate the intent of the parties, in which case
 this Agreement will immediately terminate.
 
-15. 	Integration. 
+15. 	Integration.
 
-This Agreement, including any terms contained in your 
-Entitlement, is the entire agreement between you and 
-Sun relating to its subject matter. It supersedes all 
-prior or contemporaneous oral or written 
-communications, proposals, representations and 
-warranties and prevails over any conflicting or 
-additional terms of any quote, order, acknowledgment, 
-or other communication between the parties relating to 
-its subject matter during the term of this Agreement. 
-No modification of this Agreement will be binding, 
-unless in writing and signed by an authorized 
+This Agreement, including any terms contained in your
+Entitlement, is the entire agreement between you and
+Sun relating to its subject matter. It supersedes all
+prior or contemporaneous oral or written
+communications, proposals, representations and
+warranties and prevails over any conflicting or
+additional terms of any quote, order, acknowledgment,
+or other communication between the parties relating to
+its subject matter during the term of this Agreement.
+No modification of this Agreement will be binding,
+unless in writing and signed by an authorized
 representative of each party.
 
-Please contact Sun Microsystems, Inc. 4150 Network 
-Circle, Santa Clara, California 95054 if you have 
+Please contact Sun Microsystems, Inc. 4150 Network
+Circle, Santa Clara, California 95054 if you have
 questions.
 
 --------------------------------------------------------------------------------------




More information about the jboss-svn-commits mailing list