[jboss-svn-commits] JBL Code SVN: r27402 - in labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src: main/java/uk/ac/ncl/sdia/a8905943/aspects and 11 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jul 1 14:00:14 EDT 2009


Author: whitingjr
Date: 2009-07-01 14:00:14 -0400 (Wed, 01 Jul 2009)
New Revision: 27402

Added:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningFieldAspect.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/FieldUtils.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/HandleUtils.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/exception/
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/exception/FieldNotFoundException.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionHelper.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/STMTransaction.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/VersioningField.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/log4j.xml
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/handle/
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/handle/JUnitTestFieldUtils.java
Removed:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/resources/log4j.xml
Modified:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningAspectImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/factory/TransactionFactory.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/model/Car.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/versioning-aop.xml
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestVersioningAspectImpl.java
Log:
updated 

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningAspectImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningAspectImpl.java	2009-07-01 17:40:15 UTC (rev 27401)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningAspectImpl.java	2009-07-01 18:00:14 UTC (rev 27402)
@@ -10,6 +10,7 @@
 import org.jboss.aop.joinpoint.FieldWriteInvocation;
 import org.jboss.aop.joinpoint.MethodInvocation;
 
+import uk.ac.ncl.sdia.a8905943.factory.TransactionFactory;
 import uk.ac.ncl.sdia.a8905943.spec.VersioningAspect;
 
 /**
@@ -18,6 +19,7 @@
  * 
  * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
  * @version $Revision: 1.1 $
+ * @deprecated do not use this, instead use the field annotation
  */
 public class VersioningAspectImpl implements VersioningAspect
 {
@@ -33,31 +35,47 @@
          logger.info("Versioning aspect called for field write invocation");
       }
       // TODO: jrw do something
-      
       return null;
    }
    
    public Object read(MethodInvocation methodInvocation)
+      throws Throwable
    {
-      
-   // TODO:jrw complete implementation of this method
+      // TODO:jrw complete implementation of this method
       if (logger.isInfoEnabled())
       {
          logger.info("Versioning aspect called for field read invocation");
       }
       // TODO: jrw do something
-      return null;
+      // check whether a transaction is running
+      final Object readable = TransactionFactory.getCurrentTransaction().readField();
+      
+      // set the field with the value
+      if (null == readable)
+      {
+         
+      }
+      else
+      {
+         
+      }
+      
+      // delegate following operations
+      // notify the scheduler a read operation is being attempted.
+      // depending on the transaction status and level (top/...) get either the shared visible value or, the isolated value associated with this transaction.
+      // if no transaction exists, do I start one or expect there one to exist already ? 
+      return methodInvocation.invokeNext();
    }
    public Object write(MethodInvocation methodInvocation)
+      throws Throwable
    {
-      
    // TODO:jrw complete implementation of this method
       if (logger.isInfoEnabled())
       {
          logger.info("Versioning aspect called for field write invocation");
       }
       // TODO: jrw do something
-      return null;
+      return methodInvocation.invokeNext();
    }
 
 }

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningFieldAspect.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningFieldAspect.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningFieldAspect.java	2009-07-01 18:00:14 UTC (rev 27402)
@@ -0,0 +1,58 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.aspects;
+
+import java.lang.reflect.Field;
+
+import org.apache.log4j.Logger;
+import org.jboss.aop.joinpoint.FieldReadInvocation;
+
+import uk.ac.ncl.sdia.a8905943.factory.TransactionFactory;
+import uk.ac.ncl.sdia.a8905943.handle.FieldUtils;
+import uk.ac.ncl.sdia.a8905943.handle.HandleUtils;
+
+public final class VersioningFieldAspect
+{
+   private static final Logger logger = Logger.getLogger(VersioningFieldAspect.class);
+
+   public Object readField( FieldReadInvocation readInvocation)
+      throws Throwable
+   {
+      Object returnValue = null;
+   // TODO:jrw complete implementation of this method
+      if (logger.isInfoEnabled())
+      {
+         logger.info("Versioning aspect called for field read invocation");
+      }
+      // TODO: jrw do something
+      FieldUtils fieldUtils = new FieldUtils();
+      HandleUtils handleUtils = new HandleUtils();
+      Field idField = fieldUtils.findIdField(readInvocation.getTargetObject().getClass());
+      Long id = fieldUtils.getValue(idField, readInvocation.getTargetObject() );
+      long handle = handleUtils.getHandle(readInvocation.getTargetObject().getClass(), id, idField.getName());
+      // check whether a transaction is running, if not start one
+
+      final Object readable = TransactionFactory.getCurrentTransaction().readField();
+      
+      if (null == readable)
+      {
+         returnValue = readInvocation.invokeNext();
+      }
+      else
+      {
+         returnValue = readable;
+      }
+      
+      // delegate following operations
+      // notify the scheduler a read operation is being attempted.
+      // depending on the transaction status and level (top/...) get either the shared visible value or, the isolated value associated with this transaction.
+      // if no transaction exists, do I start one or expect there one to exist already ? 
+       
+      return returnValue;
+   }
+   
+}

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/factory/TransactionFactory.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/factory/TransactionFactory.java	2009-07-01 17:40:15 UTC (rev 27401)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/factory/TransactionFactory.java	2009-07-01 18:00:14 UTC (rev 27402)
@@ -1,6 +1,6 @@
 package uk.ac.ncl.sdia.a8905943.factory;
 
-import javax.transaction.Transaction;
+import uk.ac.ncl.sdia.a8905943.spec.STMTransaction;
 
 /**
  * The purpose of this object is to get a transaction object.
@@ -10,7 +10,7 @@
 public class TransactionFactory
 {
 
-   public static Transaction getCurrentTransaction()
+   public static STMTransaction getCurrentTransaction()
    {
       //TODO: complete implementation
       return null;

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/FieldUtils.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/FieldUtils.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/FieldUtils.java	2009-07-01 18:00:14 UTC (rev 27402)
@@ -0,0 +1,67 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.handle;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+
+import javax.persistence.Id;
+
+import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+
+
+import uk.ac.ncl.sdia.a8905943.handle.exception.FieldNotFoundException;
+
+public class FieldUtils
+{
+   private static Logger logger = Logger.getLogger(FieldUtils.class );
+   /**
+    * This method will try to find the id column. Assumes there is only one.
+    */
+   public Field findIdField(Class entityClass)
+      throws FieldNotFoundException
+   {
+      Field returnValue = null;
+      
+      //assuming the entity has an id column
+      for (Field field : entityClass.getDeclaredFields())
+      {
+         for (Annotation annotation : field.getAnnotations())
+         {
+            if (annotation instanceof Id)
+            {
+               // success, found our id field
+               returnValue = field;
+            }
+         }
+      }
+      if (null == returnValue)
+      {
+         throw new FieldNotFoundException("Expected entity class ["+entityClass.getName()+"] does not contain a field annotated with Id.");
+      }
+      return returnValue;
+   }
+   
+   public Long getValue(Field idField, Object entity)
+      throws FieldNotFoundException
+   {
+      // TODO this needs changing to be more elegant and robust
+      Long returnValue = null;
+      try
+      {
+         Object object = PropertyUtils.getSimpleProperty(entity, idField.getName());
+         returnValue = (Long)object; // assumption here the id field is Long type
+      }
+      catch (Exception e)
+      {
+         logger.error(e.getMessage(), e);
+      }
+      return returnValue; 
+   }
+}

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/HandleUtils.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/HandleUtils.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/HandleUtils.java	2009-07-01 18:00:14 UTC (rev 27402)
@@ -0,0 +1,32 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.handle;
+
+import java.lang.reflect.Field;
+
+import org.apache.commons.lang.builder.HashCodeBuilder;
+
+public class HandleUtils
+{
+
+   public long getHandle(Class entity, String id, Field field )
+   {
+      return new HashCodeBuilder(17, 37).append(entity.getName()).append(id).append(field.getName()).toHashCode();
+   }
+   public long getHandle(Class entity, Long id, String fieldName )
+   {
+      return new HashCodeBuilder(17, 37).append(entity.getName()).append(id).append(fieldName).toHashCode();
+   }
+   public long getHandle(Class entity, String entityId, int fieldIndex)
+   {
+      return new HashCodeBuilder(17, 37).append(entity.getName()).append(entityId).append(fieldIndex).toHashCode();
+   }
+   public long getHandle(Class entity, int fieldIndex)
+   {
+      return new HashCodeBuilder(17, 37).append(entity.getName()).append(fieldIndex).toHashCode();
+   }
+}

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/exception/FieldNotFoundException.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/exception/FieldNotFoundException.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/exception/FieldNotFoundException.java	2009-07-01 18:00:14 UTC (rev 27402)
@@ -0,0 +1,21 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.handle.exception;
+
+public class FieldNotFoundException extends Exception
+{
+
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 943260319165545739L;
+   public FieldNotFoundException()
+   {
+   }
+   public FieldNotFoundException(String message)
+   {
+      super(message);
+   }
+}

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionHelper.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionHelper.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionHelper.java	2009-07-01 18:00:14 UTC (rev 27402)
@@ -0,0 +1,12 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.impl;
+
+public class TransactionHelper
+{
+   
+}

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionImpl.java	2009-07-01 17:40:15 UTC (rev 27401)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionImpl.java	2009-07-01 18:00:14 UTC (rev 27402)
@@ -15,16 +15,18 @@
 import javax.transaction.xa.XAResource;
 
 import uk.ac.ncl.sdia.a8905943.model.TransactionStatus;
+import uk.ac.ncl.sdia.a8905943.spec.STMTransaction;
 /**
  * The purpose of this object is to perform the transaction functionality.
  * 
  * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
  * @version $Revision: 1.1 $
  */
-public class TransactionImpl implements Transaction {
+public class TransactionImpl implements STMTransaction{
 
 	private volatile TransactionStatus status;
 	private final AtomicReferenceFieldUpdater<Transaction, TransactionStatus> statusModifier = AtomicReferenceFieldUpdater.newUpdater(Transaction.class, TransactionStatus.class, "statusModifier");
+	private static final ThreadLocal<TransactionImpl> currentLocalTransaction = new ThreadLocal<TransactionImpl>();
 
 	@Override
 	public void commit() {
@@ -74,5 +76,19 @@
 		
 	}
 
+   @Override
+   public STMTransaction readField()
+   {
+      // FIXME readField
+      return null;
+   }
+
+   @Override
+   public STMTransaction writeField()
+   {
+      // FIXME writeField
+      return null;
+   }
+
 }
 

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/model/Car.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/model/Car.java	2009-07-01 17:40:15 UTC (rev 27401)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/model/Car.java	2009-07-01 18:00:14 UTC (rev 27402)
@@ -1,8 +1,11 @@
 package uk.ac.ncl.sdia.a8905943.model;
 
+import javax.persistence.Id;
+
 public class Car {
 
-   // fields should be private 
+   // fields should be private
+   @Id
    private Long id;
 	private String make;
    public Long getId()

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/STMTransaction.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/STMTransaction.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/STMTransaction.java	2009-07-01 18:00:14 UTC (rev 27402)
@@ -0,0 +1,23 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.spec;
+
+import javax.transaction.Transaction;
+
+/**
+ * Purpose of this object is for behaviour of a transaction that 
+ * uses memory to control changes.
+ * 
+ * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
+ * @version $Revision: 1.1 $
+ */
+public interface STMTransaction extends Transaction
+{
+   public STMTransaction readField();
+   public STMTransaction writeField();
+   
+}

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/VersioningField.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/VersioningField.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/VersioningField.java	2009-07-01 18:00:14 UTC (rev 27402)
@@ -0,0 +1,16 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.spec;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+ at Target ({ElementType.FIELD})
+public @interface VersioningField
+{
+
+}

Copied: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/log4j.xml (from rev 26975, labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/resources/log4j.xml)
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/log4j.xml	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/log4j.xml	2009-07-01 18:00:14 UTC (rev 27402)
@@ -0,0 +1,297 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+	<!--
+		=====================================================================
+	-->
+	<!--
+	-->
+	<!--
+		Log4j Configuration
+	-->
+	<!--
+	-->
+	<!--
+		=====================================================================
+	-->
+
+	<!--
+		$Id: log4j.xml 64096 2007-07-17 14:36:23Z stan.silvert at jboss.com $
+	-->
+
+	<!--
+		| For more configuration information and examples see the Jakarta
+		Log4j | owebsite: http://jakarta.apache.org/log4j
+	-->
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
+	debug="false">
+
+	<!-- ================================= -->
+	<!-- Preserve messages in a local file -->
+	<!-- ================================= -->
+
+	<!-- ============================== -->
+	<!-- Append messages to the console -->
+	<!-- ============================== -->
+
+	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+		<param name="Target" value="System.out" />
+		<param name="Threshold" value="INFO" />
+
+		<layout class="org.apache.log4j.PatternLayout">
+			<!-- The default pattern: Date Priority [Category] Message\n -->
+			<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n" />
+		</layout>
+	</appender>
+
+	<appender name="FILE" class="org.apache.log4j.FileAppender">
+		<param name="File" value="test.log" />
+		<param name="Append" value="true" />
+		<layout class="org.apache.log4j.PatternLayout">
+			<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n" />
+		</layout>
+	</appender>
+
+
+	<!-- ====================== -->
+	<!-- More Appender examples -->
+	<!-- ====================== -->
+
+	<!--
+		Buffer events and log them asynchronously <appender name="ASYNC"
+		class="org.apache.log4j.AsyncAppender"> <errorHandler
+		class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <appender-ref
+		ref="FILE"/> <appender-ref ref="CONSOLE"/> <appender-ref ref="SMTP"/>
+		</appender>
+	-->
+
+	<!--
+		EMail events to an administrator <appender name="SMTP"
+		class="org.apache.log4j.net.SMTPAppender"> <errorHandler
+		class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <param
+		name="Threshold" value="ERROR"/> <param name="To"
+		value="admin at myhost.domain.com"/> <param name="From"
+		value="nobody at myhost.domain.com"/> <param name="Subject" value="JBoss
+		Sever Errors"/> <param name="SMTPHost" value="localhost"/> <param
+		name="BufferSize" value="10"/> <layout
+		class="org.apache.log4j.PatternLayout"> <param
+		name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/> </layout>
+		</appender>
+	-->
+
+	<!--
+		Syslog events <appender name="SYSLOG"
+		class="org.apache.log4j.net.SyslogAppender"> <errorHandler
+		class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <param
+		name="Facility" value="LOCAL7"/> <param name="FacilityPrinting"
+		value="true"/> <param name="SyslogHost" value="localhost"/> <layout
+		class="org.apache.log4j.PatternLayout"> <param
+		name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/> </layout>
+		</appender>
+	-->
+
+	<!--
+		Log events to JMS (requires a topic to be created) <appender
+		name="JMS" class="org.apache.log4j.net.JMSAppender"> <errorHandler
+		class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <param
+		name="Threshold" value="ERROR"/> <param
+		name="TopicConnectionFactoryBindingName"
+		value="java:/ConnectionFactory"/> <param name="TopicBindingName"
+		value="topic/MyErrorsTopic"/> </appender>
+	-->
+
+	<!--
+		Log events through SNMP <appender name="TRAP_LOG"
+		class="org.apache.log4j.ext.SNMPTrapAppender"> <errorHandler
+		class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <param
+		name="ImplementationClassName"
+		value="org.apache.log4j.ext.JoeSNMPTrapSender"/> <param
+		name="ManagementHost" value="127.0.0.1"/> <param
+		name="ManagementHostTrapListenPort" value="162"/> <param
+		name="EnterpriseOID" value="1.3.6.1.4.1.24.0"/> <param
+		name="LocalIPAddress" value="127.0.0.1"/> <param
+		name="LocalTrapSendPort" value="161"/> <param name="GenericTrapType"
+		value="6"/> <param name="SpecificTrapType" value="12345678"/> <param
+		name="CommunityString" value="public"/> <param
+		name="ForwardStackTraceWithTrap" value="true"/> <param
+		name="Threshold" value="DEBUG"/> <param name="ApplicationTrapOID"
+		value="1.3.6.1.4.1.24.12.10.22.64"/> <layout
+		class="org.apache.log4j.PatternLayout"> <param
+		name="ConversionPattern" value="%d,%p,[%t],[%c],%m%n"/> </layout>
+		</appender>
+	-->
+
+	<!--
+		Emit events as JMX notifications <appender name="JMX"
+		class="org.jboss.monitor.services.JMXNotificationAppender">
+		<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+
+		<param name="Threshold" value="WARN"/> <param name="ObjectName"
+		value="jboss.system:service=Logging,type=JMXNotificationAppender"/>
+
+		<layout class="org.apache.log4j.PatternLayout"> <param
+		name="ConversionPattern" value="%d %-5p [%c] %m"/> </layout>
+		</appender>
+	-->
+
+	<!--
+		Security AUDIT Appender <appender name="AUDIT"
+		class="org.jboss.logging.appender.DailyRollingFileAppender">
+		<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+		<param name="File" value="${jboss.server.log.dir}/audit.log"/> <param
+		name="Append" value="true"/> <param name="DatePattern"
+		value="'.'yyyy-MM-dd"/> <layout
+		class="org.apache.log4j.PatternLayout"> <param
+		name="ConversionPattern" value="%d %-5p [%c] (%t:%x) %m%n"/> </layout>
+		</appender>
+	-->
+
+	<!-- ================ -->
+	<!-- Limit categories -->
+	<!-- ================ -->
+
+	<!-- Limit the org.apache category to INFO as its DEBUG is verbose -->
+	<category name="org.apache">
+		<priority value="INFO" />
+	</category>
+
+	<!--
+		Limit JSF logging to DEBUG. FINER and FINEST will not be logged
+	-->
+	<category name="javax.enterprise.resource.webcontainer.jsf">
+		<priority value="ERROR" />
+	</category>
+
+	<!-- Limit the jacorb category to WARN as its INFO is verbose -->
+	<category name="jacorb">
+		<priority value="WARN" />
+	</category>
+
+	<!-- Set the logging level of the JSF implementation -->
+	<category name="javax.enterprise.resource.webcontainer.jsf">
+		<priority value="ERROR" />
+	</category>
+
+	<!-- Limit the org.jgroups category to WARN as its INFO is verbose -->
+	<category name="org.jgroups">
+		<priority value="WARN" />
+	</category>
+
+	<!-- Limit the org.quartz category to INFO as its DEBUG is verbose -->
+	<category name="org.quartz">
+		<priority value="ERROR" />
+	</category>
+
+	<!--
+		Limit JBoss categories <category name="org.jboss"> <priority
+		value="INFO"/> </category>
+	-->
+
+	<!-- Limit the JSR77 categories -->
+	<category name="org.jboss.management">
+		<priority value="ERROR" />
+	</category>
+
+	<!--
+		Show the evolution of the DataSource pool in the logs
+		[inUse/Available/Max] <category
+		name="org.jboss.resource.connectionmanager.JBossManagedConnectionPool">
+		<priority value="TRACE"/> </category>
+	-->
+
+	<!--
+		Category specifically for Security Audit Provider <category
+		name="org.jboss.security.audit.providers.LogAuditProvider"
+		additivity="false"> <priority value="TRACE"/> <appender-ref
+		ref="AUDIT"/> </category>
+	-->
+
+	<!--
+		Limit the org.jboss.serial (jboss-serialization) to INFO as its DEBUG
+		is verbose
+	-->
+	<category name="org.jboss.serial">
+		<priority value="ERROR" />
+	</category>
+
+	<!--
+		Decrease the priority threshold for the org.jboss.varia category
+		<category name="org.jboss.varia"> <priority value="DEBUG"/>
+		</category>
+	-->
+
+	<!--
+		Enable JBossWS message tracing <category
+		name="org.jboss.ws.core.MessageTrace"> <priority value="TRACE"/>
+		</category>
+	-->
+
+	<!--
+		| An example of enabling the custom TRACE level priority that is used
+		| by the JBoss internals to diagnose low level details. This example |
+		turns on TRACE level msgs for the org.jboss.ejb.plugins package and
+		its | subpackages. This will produce A LOT of logging output. | |
+		Note: since jboss AS 4.2.x, the trace level is supported natively by |
+		log4j, so although the custom org.jboss.logging.XLevel priority will |
+		still work, there is no need to use it. The two examples that follow |
+		will both enable trace logging. <category name="org.jboss.system">
+		<priority value="TRACE" class="org.jboss.logging.XLevel"/> </category>
+		<category name="org.jboss.ejb.plugins"> <priority value="TRACE"/>
+		</category>
+	-->
+
+	<!--
+		| Logs these events to SNMP: - server starts/stops - cluster evolution
+		(node death/startup) - When an EJB archive is deployed (and associated
+		verified messages) - When an EAR archive is deployed <category
+		name="org.jboss.system.server.Server"> <priority value="INFO" />
+		<appender-ref ref="TRAP_LOG"/> </category> <category
+		name="org.jboss.ha.framework.interfaces.HAPartition.lifecycle">
+		<priority value="INFO" /> <appender-ref ref="TRAP_LOG"/> </category>
+
+		<category name="org.jboss.deployment.MainDeployer"> <priority
+		value="ERROR" /> <appender-ref ref="TRAP_LOG"/> </category> <category
+		name="org.jboss.ejb.EJBDeployer"> <priority value="INFO" />
+		<appender-ref ref="TRAP_LOG"/> </category> <category
+		name="org.jboss.deployment.EARDeployer"> <priority value="INFO" />
+		<appender-ref ref="TRAP_LOG"/> </category>
+	-->
+
+	<!-- Clustering logging -->
+	<!--
+		Uncomment the following to redirect the org.jgroups and org.jboss.ha
+		categories to a cluster.log file. <appender name="CLUSTER"
+		class="org.jboss.logging.appender.RollingFileAppender"> <errorHandler
+		class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <param
+		name="File" value="${jboss.server.log.dir}/cluster.log"/> <param
+		name="Append" value="false"/> <param name="MaxFileSize"
+		value="500KB"/> <param name="MaxBackupIndex" value="1"/> <layout
+		class="org.apache.log4j.PatternLayout"> <param
+		name="ConversionPattern" value="%d %-5p [%c] %m%n"/> </layout>
+		</appender> <category name="org.jgroups"> <priority value="DEBUG" />
+		<appender-ref ref="CLUSTER"/> </category> <category
+		name="org.jboss.ha"> <priority value="DEBUG" /> <appender-ref
+		ref="CLUSTER"/> </category>
+	-->
+	<category name="org.jboss.aop">
+		<priority value="TRACE" />
+		<appender-ref ref="CONSOLE" />
+	</category>
+	<category name="uk">
+		<priority value="DEBUG" />
+		<appender-ref ref="CONSOLE" />
+		<appender-ref ref="FILE" />
+	</category>
+
+
+	<!-- ======================= -->
+	<!-- Setup the Root category -->
+	<!-- ======================= -->
+
+	<root>
+		<priority value="DEBUG" />
+		<appender-ref ref="CONSOLE" />
+	</root>
+
+</log4j:configuration>

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/versioning-aop.xml
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/versioning-aop.xml	2009-07-01 17:40:15 UTC (rev 27401)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/versioning-aop.xml	2009-07-01 18:00:14 UTC (rev 27402)
@@ -2,18 +2,21 @@
 <aop xmlns="urn:jboss:aop-beans:1.0">
 
    <aspect class="uk.ac.ncl.sdia.a8905943.aspects.VersioningAspectImpl"/>
+   <aspect class="" scope=""/>
 
-	<!-- bean getter methods -->
-   <bind name="beanGetMethod" pointcut="execution(* uk.ac.ncl.sdia.a8905943.model.Car->get*(*))">
+	<!-- bean getter methods 
+   <bind name="beanGetMethod" pointcut="execution(* uk.ac.ncl.sdia.a8905943.model.Car->getMake())">
       <around aspect="uk.ac.ncl.sdia.a8905943.aspects.VersioningAspectImpl" name="read"/>
    </bind>
-   <!-- bean setter methods -->
-   <bind name="beanSetMethod" pointcut="execution(* uk.ac.ncl.sdia.a8905943.model.Car->set*(*))">
+   -->
+   <!-- bean setter methods 
+   <bind name="beanSetMethod" pointcut="execution(* uk.ac.ncl.sdia.a8905943.model.Car->setMake(*))">
       <around aspect="uk.ac.ncl.sdia.a8905943.aspects.VersioningAspectImpl" name="write"/>
    </bind>
-   
+   -->
    <!-- field access -->
    <bind name="fieldAccess" pointcut="set(* uk.ac.ncl.sdia.a8905943.model.Car->*)">
       <around aspect="uk.ac.ncl.sdia.a8905943.model.Car" name="version"/>
    </bind>
+    
 </aop>

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestVersioningAspectImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestVersioningAspectImpl.java	2009-07-01 17:40:15 UTC (rev 27401)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestVersioningAspectImpl.java	2009-07-01 18:00:14 UTC (rev 27402)
@@ -8,7 +8,6 @@
 
 import junit.framework.Assert;
 
-import org.apache.log4j.BasicConfigurator;
 import org.apache.log4j.Logger;
 import org.junit.Before;
 import org.junit.Test;
@@ -26,9 +25,12 @@
    @Test
    public void testCheckCarEntityModifiedFieldValuePreservedAfterAspectInvocation()
    {
+      logger.info("Invoking test.");
       Car car = new Car();
       String name = "Volvo";
+      logger.info("Calling setMake(");
       car.setMake(name);
+      logger.info("Returned from calling setMake(");
       Assert.assertNotNull(car.getMake());
       Assert.assertEquals(car.getMake(), name);
       Assert.assertNotNull(Thread.currentThread());
@@ -37,6 +39,5 @@
    @Before
    public void setUp()
    {
-      BasicConfigurator.configure();
    }
 }

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/handle/JUnitTestFieldUtils.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/handle/JUnitTestFieldUtils.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/handle/JUnitTestFieldUtils.java	2009-07-01 18:00:14 UTC (rev 27402)
@@ -0,0 +1,109 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.handle;
+
+import java.lang.reflect.Field;
+
+import javax.persistence.Id;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import uk.ac.ncl.sdia.a8905943.handle.exception.FieldNotFoundException;
+
+public class JUnitTestFieldUtils
+{
+
+   @Test public void checkIdFieldFound()
+      throws FieldNotFoundException
+   {
+      try
+      {
+         Long id = 2l;
+         Car car = new Car(id);
+         FieldUtils utils = new FieldUtils(); 
+         Field idField = utils.findIdField(car.getClass());
+         Assert.assertNotNull(idField);
+         Assert.assertEquals(Car.class.getDeclaredField("id"), idField);
+         Assert.assertEquals(id, utils.getValue(idField, car));
+      }
+      catch (NoSuchFieldException fnfe)
+      {
+         Assert.fail("Not expecting to have an exception thrown when finding the id field.");
+      }
+   }
+   @Test (expected=FieldNotFoundException.class)
+   public void checkExpectedExceptionThrown()
+      throws FieldNotFoundException
+   {
+      GreyImport car = new GreyImport();
+      FieldUtils utils =  new FieldUtils();
+      
+      Long id = utils.getValue(utils.findIdField(car.getClass()),car); 
+      Assert.fail();
+   }
+   
+   @Test
+   public void checkNullFieldBehaviour()
+      throws FieldNotFoundException
+   {
+      Car car = new Car(null);
+      FieldUtils util = new FieldUtils();
+      Long value = util.getValue(util.findIdField(car.getClass()), car);
+      Assert.assertNull(value);
+   }
+
+   
+   
+   /**
+    * 
+    * A typical car entity that has expected id annotated field. Not worried about
+    * bean accessor methods for the purpose of testing.
+    * 
+    * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
+    * @version $Revision: 1.1 $
+    */
+   public class Car 
+   {
+      @Id
+      private Long id;
+      public Car(Long id)
+      {
+         this.id = id; 
+      }
+      public Long getId()
+      {
+         return id;
+      }
+      public void setId(Long id)
+      {
+         this.id = id;
+      }
+   }
+   /**
+    * 
+    * An entity that doesn't have an annotated id field.
+    * 
+    * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
+    * @version $Revision: 1.1 $
+    */
+   public class GreyImport
+   {
+      private Long id;
+
+      public Long getId()
+      {
+         return id;
+      }
+
+      public void setId(Long id)
+      {
+         this.id = id;
+      } 
+   }
+}

Deleted: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/resources/log4j.xml
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/resources/log4j.xml	2009-07-01 17:40:15 UTC (rev 27401)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/resources/log4j.xml	2009-07-01 18:00:14 UTC (rev 27402)
@@ -1,301 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-
-<!-- ===================================================================== -->
-<!--                                                                       -->
-<!--  Log4j Configuration                                                  -->
-<!--                                                                       -->
-<!-- ===================================================================== -->
-
-<!-- $Id: log4j.xml 64096 2007-07-17 14:36:23Z stan.silvert at jboss.com $ -->
-
-<!--
-   | For more configuration information and examples see the Jakarta Log4j
-   | owebsite: http://jakarta.apache.org/log4j
- -->
-
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
-
-   <!-- ================================= -->
-   <!-- Preserve messages in a local file -->
-   <!-- ================================= -->
-
-      <!-- ============================== -->
-   <!-- Append messages to the console -->
-   <!-- ============================== -->
-
-   <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
-      <param name="Target" value="System.out"/>
-      <param name="Threshold" value="INFO"/>
-
-      <layout class="org.apache.log4j.PatternLayout">
-         <!-- The default pattern: Date Priority [Category] Message\n -->
-         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
-      </layout>
-   </appender>
-
-   <!-- ====================== -->
-   <!-- More Appender examples -->
-   <!-- ====================== -->
-
-   <!-- Buffer events and log them asynchronously
-   <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
-     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
-     <appender-ref ref="FILE"/>
-     <appender-ref ref="CONSOLE"/>
-     <appender-ref ref="SMTP"/>
-   </appender>
-   -->
-
-   <!-- EMail events to an administrator
-   <appender name="SMTP" class="org.apache.log4j.net.SMTPAppender">
-     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
-     <param name="Threshold" value="ERROR"/>
-     <param name="To" value="admin at myhost.domain.com"/>
-     <param name="From" value="nobody at myhost.domain.com"/>
-     <param name="Subject" value="JBoss Sever Errors"/>
-     <param name="SMTPHost" value="localhost"/>
-     <param name="BufferSize" value="10"/>
-     <layout class="org.apache.log4j.PatternLayout">
-       <param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/>
-     </layout>
-   </appender>
-   -->
-
-   <!-- Syslog events
-   <appender name="SYSLOG" class="org.apache.log4j.net.SyslogAppender">
-     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
-     <param name="Facility" value="LOCAL7"/>
-     <param name="FacilityPrinting" value="true"/>
-     <param name="SyslogHost" value="localhost"/>
-     <layout class="org.apache.log4j.PatternLayout">
-       <param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/>
-     </layout>
-   </appender>
-   -->
-
-   <!-- Log events to JMS (requires a topic to be created)
-   <appender name="JMS" class="org.apache.log4j.net.JMSAppender">
-     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
-     <param name="Threshold" value="ERROR"/>
-     <param name="TopicConnectionFactoryBindingName" value="java:/ConnectionFactory"/>
-     <param name="TopicBindingName" value="topic/MyErrorsTopic"/>
-   </appender>
-   -->
-
-   <!-- Log events through SNMP
-   <appender name="TRAP_LOG" class="org.apache.log4j.ext.SNMPTrapAppender">
-     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
-     <param name="ImplementationClassName" value="org.apache.log4j.ext.JoeSNMPTrapSender"/>
-     <param name="ManagementHost" value="127.0.0.1"/>
-     <param name="ManagementHostTrapListenPort" value="162"/>
-     <param name="EnterpriseOID" value="1.3.6.1.4.1.24.0"/>
-     <param name="LocalIPAddress" value="127.0.0.1"/>
-     <param name="LocalTrapSendPort" value="161"/>
-     <param name="GenericTrapType" value="6"/>
-     <param name="SpecificTrapType" value="12345678"/>
-     <param name="CommunityString" value="public"/>
-     <param name="ForwardStackTraceWithTrap" value="true"/>
-     <param name="Threshold" value="DEBUG"/>
-     <param name="ApplicationTrapOID" value="1.3.6.1.4.1.24.12.10.22.64"/>
-     <layout class="org.apache.log4j.PatternLayout">
-            <param name="ConversionPattern" value="%d,%p,[%t],[%c],%m%n"/>
-     </layout>
-   </appender>
-   -->
-
-   <!--  Emit events as JMX notifications
-   <appender name="JMX" class="org.jboss.monitor.services.JMXNotificationAppender">
-      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
-      
-      <param name="Threshold" value="WARN"/>
-      <param name="ObjectName" value="jboss.system:service=Logging,type=JMXNotificationAppender"/>
-      
-      <layout class="org.apache.log4j.PatternLayout">
-         <param name="ConversionPattern" value="%d %-5p [%c] %m"/>
-      </layout>
-   </appender>
-   -->
-
-   <!-- Security AUDIT Appender
-   <appender name="AUDIT" class="org.jboss.logging.appender.DailyRollingFileAppender">
-      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
-      <param name="File" value="${jboss.server.log.dir}/audit.log"/>
-      <param name="Append" value="true"/>
-      <param name="DatePattern" value="'.'yyyy-MM-dd"/>
-      <layout class="org.apache.log4j.PatternLayout">
-         <param name="ConversionPattern" value="%d %-5p [%c] (%t:%x) %m%n"/>
-      </layout>
-   </appender>
-   -->
-   
-   <!-- ================ -->
-   <!-- Limit categories -->
-   <!-- ================ -->
-
-   <!-- Limit the org.apache category to INFO as its DEBUG is verbose -->
-   <category name="org.apache">
-      <priority value="INFO"/>
-   </category>
-   
-   <!-- Limit JSF logging to DEBUG.  FINER and FINEST will not be logged -->
-   <category name="javax.enterprise.resource.webcontainer.jsf">
-     <priority value="ERROR" />
-   </category>
-
-   <!-- Limit the jacorb category to WARN as its INFO is verbose -->
-   <category name="jacorb">
-      <priority value="WARN"/>
-   </category>
-   
-   <!-- Set the logging level of the JSF implementation -->
-   <category name="javax.enterprise.resource.webcontainer.jsf">
-     <priority value="ERROR" />
-   </category>
-   
-   <!-- Limit the org.jgroups category to WARN as its INFO is verbose -->
-   <category name="org.jgroups">
-      <priority value="WARN"/>
-   </category>
-   
-   <!-- Limit the org.quartz category to INFO as its DEBUG is verbose -->
-   <category name="org.quartz">
-      <priority value="ERROR"/>
-   </category>
-   
-   <!-- Limit JBoss categories
-   <category name="org.jboss">
-      <priority value="INFO"/>
-   </category>
-   -->
-
-   <!-- Limit the JSR77 categories -->
-   <category name="org.jboss.management">
-      <priority value="ERROR"/>
-   </category>
-
-   <!-- Show the evolution of the DataSource pool in the logs [inUse/Available/Max]
-   <category name="org.jboss.resource.connectionmanager.JBossManagedConnectionPool">
-     <priority value="TRACE"/>
-   </category>
-   -->
-
-   <!-- Category specifically for Security Audit Provider 
-   <category name="org.jboss.security.audit.providers.LogAuditProvider" additivity="false">
-     <priority value="TRACE"/>
-     <appender-ref ref="AUDIT"/>
-   </category>
-   -->
-   
-   <!-- Limit the org.jboss.serial (jboss-serialization) to INFO as its DEBUG is verbose -->
-   <category name="org.jboss.serial">
-      <priority value="ERROR"/>
-   </category>
-  
-   <!-- Decrease the priority threshold for the org.jboss.varia category
-   <category name="org.jboss.varia">
-     <priority value="DEBUG"/>
-   </category>
-   -->
-   
-   <!-- Enable JBossWS message tracing
-   <category name="org.jboss.ws.core.MessageTrace">
-     <priority value="TRACE"/>
-   </category>
-   -->
-   
-   <!--
-      | An example of enabling the custom TRACE level priority that is used
-      | by the JBoss internals to diagnose low level details. This example
-      | turns on TRACE level msgs for the org.jboss.ejb.plugins package and its
-      | subpackages. This will produce A LOT of logging output.
-      |
-      | Note: since jboss AS 4.2.x, the trace level is supported natively by
-      | log4j, so although the custom org.jboss.logging.XLevel priority will
-      | still work, there is no need to use it. The two examples that follow
-      | will both enable trace logging.
-   <category name="org.jboss.system">
-     <priority value="TRACE" class="org.jboss.logging.XLevel"/>
-   </category>
-   <category name="org.jboss.ejb.plugins">
-     <priority value="TRACE"/>
-   </category>
-   -->
-  
-   <!--
-       | Logs these events to SNMP:
-           - server starts/stops
-           - cluster evolution (node death/startup)
-           - When an EJB archive is deployed (and associated verified messages)
-           - When an EAR archive is deployed
-      	 
-   <category name="org.jboss.system.server.Server">
-     <priority value="INFO" />
-     <appender-ref ref="TRAP_LOG"/>
-   </category>
-  
-   <category name="org.jboss.ha.framework.interfaces.HAPartition.lifecycle">
-     <priority value="INFO" />
-     <appender-ref ref="TRAP_LOG"/>
-   </category>
-
-   <category name="org.jboss.deployment.MainDeployer">
-     <priority value="ERROR" />
-     <appender-ref ref="TRAP_LOG"/>
-   </category>
-   
-   <category name="org.jboss.ejb.EJBDeployer">
-     <priority value="INFO" />
-     <appender-ref ref="TRAP_LOG"/>
-   </category>
-   
-   <category name="org.jboss.deployment.EARDeployer">
-     <priority value="INFO" />
-     <appender-ref ref="TRAP_LOG"/>
-   </category>
-   -->
-
-   <!-- Clustering logging -->
-   <!-- Uncomment the following to redirect the org.jgroups and
-      org.jboss.ha categories to a cluster.log file.
-
-   <appender name="CLUSTER" class="org.jboss.logging.appender.RollingFileAppender">
-     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
-     <param name="File" value="${jboss.server.log.dir}/cluster.log"/>
-     <param name="Append" value="false"/>
-     <param name="MaxFileSize" value="500KB"/>
-     <param name="MaxBackupIndex" value="1"/>
-
-     <layout class="org.apache.log4j.PatternLayout">
-       <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
-     </layout>
-   </appender>
-   <category name="org.jgroups">
-     <priority value="DEBUG" />
-     <appender-ref ref="CLUSTER"/>
-   </category>
-   <category name="org.jboss.ha">
-     <priority value="DEBUG" />
-     <appender-ref ref="CLUSTER"/>
-   </category>
-   -->
-   <category name="org.jboss.aop">
-     <priority value="INFO" />
-     <appender-ref ref="CONSOLE"/>
-   </category>
-   <category name="uk.ac.ncl.sdia.a8905943">
-     <priority value="DEBUG" />
-     <appender-ref ref="CONSOLE"/>
-   </category>
-   
-   
-   <!-- ======================= -->
-   <!-- Setup the Root category -->
-   <!-- ======================= -->
-
-   <root>
-   		<priority value="ERROR" />
-      <appender-ref ref="CONSOLE"/>
-   </root>
-
-</log4j:configuration>




More information about the jboss-svn-commits mailing list