You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@excalibur.apache.org by ha...@apache.org on 2004/07/10 06:42:12 UTC

svn commit: rev 22785 - in excalibur/branches/fortress-experiments: container-api/src/java/org/apache/avalon/fortress/attributes/qdox container-impl/src/java/org/apache/avalon/fortress/impl container-impl/src/java/org/apache/avalon/fortress/impl/handler examples/src/java/org/apache/avalon/fortress/examples/interceptors examples/src/java/org/apache/avalon/fortress/examples/interceptors/business/interceptors

Author: hammett
Date: Fri Jul  9 21:42:11 2004
New Revision: 22785

Modified:
   excalibur/branches/fortress-experiments/container-api/src/java/org/apache/avalon/fortress/attributes/qdox/QDoxSerializer.java
   excalibur/branches/fortress-experiments/container-impl/src/java/org/apache/avalon/fortress/impl/InterceptorEnabledContainer.java
   excalibur/branches/fortress-experiments/container-impl/src/java/org/apache/avalon/fortress/impl/handler/ComponentFactory.java
   excalibur/branches/fortress-experiments/examples/src/java/org/apache/avalon/fortress/examples/interceptors/Main.java
   excalibur/branches/fortress-experiments/examples/src/java/org/apache/avalon/fortress/examples/interceptors/business/interceptors/TransactionalInterceptor.java
Log:
Few fixes.

Modified: excalibur/branches/fortress-experiments/container-api/src/java/org/apache/avalon/fortress/attributes/qdox/QDoxSerializer.java
==============================================================================
--- excalibur/branches/fortress-experiments/container-api/src/java/org/apache/avalon/fortress/attributes/qdox/QDoxSerializer.java	(original)
+++ excalibur/branches/fortress-experiments/container-api/src/java/org/apache/avalon/fortress/attributes/qdox/QDoxSerializer.java	Fri Jul  9 21:42:11 2004
@@ -171,7 +171,7 @@
                 {
                     final AttributeInfo info = attributes[i];
                     
-                    if (name.equalsIgnoreCase( name ))
+                    if (name.equalsIgnoreCase( info.getName() ))
                     {
                         attribute = info;
                         break;

Modified: excalibur/branches/fortress-experiments/container-impl/src/java/org/apache/avalon/fortress/impl/InterceptorEnabledContainer.java
==============================================================================
--- excalibur/branches/fortress-experiments/container-impl/src/java/org/apache/avalon/fortress/impl/InterceptorEnabledContainer.java	(original)
+++ excalibur/branches/fortress-experiments/container-impl/src/java/org/apache/avalon/fortress/impl/InterceptorEnabledContainer.java	Fri Jul  9 21:42:11 2004
@@ -159,8 +159,8 @@
      */
     public void dispose()
     {
-        ContainerUtil.dispose( m_manager );
         super.dispose();
+        ContainerUtil.dispose( m_manager );
     }
     
     ///

Modified: excalibur/branches/fortress-experiments/container-impl/src/java/org/apache/avalon/fortress/impl/handler/ComponentFactory.java
==============================================================================
--- excalibur/branches/fortress-experiments/container-impl/src/java/org/apache/avalon/fortress/impl/handler/ComponentFactory.java	(original)
+++ excalibur/branches/fortress-experiments/container-impl/src/java/org/apache/avalon/fortress/impl/handler/ComponentFactory.java	Fri Jul  9 21:42:11 2004
@@ -255,12 +255,12 @@
             getLogger().debug(message);
         }
 
-        if (getCreatedClass().equals(component.getClass()))
+        if ( component.getClass().getName().startsWith( "$Proxy" ) || getCreatedClass().equals(component.getClass()))
         {
             ContainerUtil.shutdown(component);
 
-            raiseComponentDestroyedEvent( component );
             m_extManager.executeDestructionExtensions(component, m_context);
+            raiseComponentDestroyedEvent( component );
 
             if (m_dispose.isActive())
             {

Modified: excalibur/branches/fortress-experiments/examples/src/java/org/apache/avalon/fortress/examples/interceptors/Main.java
==============================================================================
--- excalibur/branches/fortress-experiments/examples/src/java/org/apache/avalon/fortress/examples/interceptors/Main.java	(original)
+++ excalibur/branches/fortress-experiments/examples/src/java/org/apache/avalon/fortress/examples/interceptors/Main.java	Fri Jul  9 21:42:11 2004
@@ -68,8 +68,10 @@
         }
         catch( SecurityException ex )
         {
-            
+            ex.printStackTrace();
         }
+        
+        manager.release( persistenceManager );
         
         ContainerUtil.dispose( cm );
     }

Modified: excalibur/branches/fortress-experiments/examples/src/java/org/apache/avalon/fortress/examples/interceptors/business/interceptors/TransactionalInterceptor.java
==============================================================================
--- excalibur/branches/fortress-experiments/examples/src/java/org/apache/avalon/fortress/examples/interceptors/business/interceptors/TransactionalInterceptor.java	(original)
+++ excalibur/branches/fortress-experiments/examples/src/java/org/apache/avalon/fortress/examples/interceptors/business/interceptors/TransactionalInterceptor.java	Fri Jul  9 21:42:11 2004
@@ -21,14 +21,24 @@
 import java.lang.reflect.Method;
 
 import org.apache.avalon.fortress.ExtendedMetaInfo;
+import org.apache.avalon.fortress.attributes.AttributeInfo;
 import org.apache.avalon.fortress.impl.interceptor.AbstractInterceptor;
 
 /**
+ * This is a blank space with hypothetical code service as
+ * a recipe for a TransactionalInterceptor. 
+ * 
+ * Basically pick up your favorite implementation of JTA (Java Transaction API)
+ * and access the User Transaction from here. Adjust the transaction according the
+ * transaction attribute (required, supported, requiresnew and so on)
+ * That it, painless transaction management for your classes.
+ * 
+ * You can also you the same approach for OJB, Hibernate and similar frameworks. 
+ * 
  * @author <a href="mailto:dev@excalibur.apache.org">Excalibur Development Team</a>
  */
 public class TransactionalInterceptor extends AbstractInterceptor
 {
-
     /**
      * Document me!
      *  
@@ -37,8 +47,24 @@
     public Object intercept(Object instance, ExtendedMetaInfo meta, Method method, Object[] args)
         throws IllegalAccessException, IllegalArgumentException, InvocationTargetException
     {
-        // TODO Auto-generated method stub
-        return super.intercept(instance, meta, method, args);
-    }
+        AttributeInfo transactionMode = 
+            meta.getAttributeForMethod( "transaction.required", method );
+        
+        // TransactionManager.getTransaction().beginTransaction();
+        
+        Object retValue = null;
+        
+        try
+        {
+            retValue = super.intercept(instance, meta, method, args);
 
+            // TransactionManager.getTransaction().commit();
+        }
+        catch(Exception ex)
+        {
+            // TransactionManager.getTransaction().rollback();
+        }
+        
+        return retValue;
+    }
 }

---------------------------------------------------------------------
To unsubscribe, e-mail: scm-unsubscribe@excalibur.apache.org
For additional commands, e-mail: scm-help@excalibur.apache.org