You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@onami.apache.org by sc...@apache.org on 2014/05/05 07:41:24 UTC

svn commit: r1592452 - in /onami/sandbox/persist/src: main/java/org/apache/onami/persist/ test/java/org/apache/onami/persist/

Author: sclassen
Date: Mon May  5 05:41:23 2014
New Revision: 1592452

URL: http://svn.apache.org/r1592452
Log:
onami-persist: code cleanup

Added:
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllPersistenceUnits.java   (with props)
    onami/sandbox/persist/src/test/java/org/apache/onami/persist/AllPersistenceUnitsTest.java   (with props)
Removed:
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceAnnotation.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceUnitContainer.java
    onami/sandbox/persist/src/test/java/org/apache/onami/persist/PersistenceUnitContainerTest.java
Modified:
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/AggregatedException.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllPersistenceServices.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllUnitsOfWork.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/AnnotatedPersistenceUnitBuilder.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/AnnotationHolder.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/ApplicationManagedEntityManagerFactoryProvider.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/ContainerManagedEntityManagerFactoryProvider.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactoryFactory.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactorySource.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactorySourceByJndiLookup.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactorySourceViaProvider.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerProviderImpl.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/JndiLookupHelper.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceFilter.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceModule.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceService.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceUnitModule.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/ResourceLocalTransactionFacadeFactory.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/TransactionFacade.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/TransactionalAnnotationHelper.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/TransactionalAnnotationReader.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/TxnInterceptor.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/UnannotatedPersistenceUnitBuilder.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/UnconfiguredPersistenceUnitBuilder.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/UnitOfWork.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/UserTransactionFacade.java
    onami/sandbox/persist/src/main/java/org/apache/onami/persist/UserTransactionProviderByJndiLookup.java
    onami/sandbox/persist/src/test/java/org/apache/onami/persist/PersistenceFilterTest.java

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/AggregatedException.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/AggregatedException.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/AggregatedException.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/AggregatedException.java Mon May  5 05:41:23 2014
@@ -34,23 +34,24 @@ class AggregatedException
     extends RuntimeException
 {
 
-    private static final Throwable[] EMPTY = new Throwable[0];
-
     private static final long serialVersionUID = 1L;
 
+
     /**
      * Builder for AggregatedException
      */
     static class Builder
     {
 
+        private static final Throwable[] EMPTY = new Throwable[0];
+
         /**
-         * list of causes for the aggregated exception
+         * list of causes for the aggregated exception.
          */
         private List<Throwable> causes = new ArrayList<Throwable>();
 
         /**
-         * Add an exception to the list of aggregated exceptions
+         * Adds an exception to the list of aggregated exceptions.
          *
          * @param cause the exception to add
          */
@@ -62,7 +63,7 @@ class AggregatedException
         /**
          * Throws a runtime exception if the builder has causes.
          *
-         * @param msg the message to of the aggregated exception.
+         * @param msg the message of the aggregated exception.
          */
         void throwRuntimeExceptionIfHasCauses( String msg )
         {
@@ -82,10 +83,10 @@ class AggregatedException
         /**
          * Converts the collected causes into a runtime exception
          *
-         * @param msg the message to of the aggregated exception.
+         * @param msg the message of the aggregated exception.
          * @return the exception to throw
          */
-        RuntimeException getRuntimeException( String msg )
+        private RuntimeException getRuntimeException( String msg )
         {
             if ( causes.size() == 1 )
             {
@@ -110,11 +111,16 @@ class AggregatedException
     private final int numCauses;
 
     /**
-     * @return the number of causes collected into this exception
+     * Constructor.
+     *
+     * @param message the message
+     * @param causes  all the causes
      */
-    public int getNumCauses()
+    private AggregatedException( String message, Throwable[] causes )
     {
-        return numCauses;
+        super( message );
+        this.causes = causes;
+        this.numCauses = this.causes.length;
     }
 
     /**
@@ -126,16 +132,11 @@ class AggregatedException
     }
 
     /**
-     * Constructor.
-     *
-     * @param message the message
-     * @param causes  all the causes
+     * @return the number of causes collected into this exception
      */
-    private AggregatedException( String message, Throwable[] causes )
+    public int getNumCauses()
     {
-        super( message );
-        this.causes = causes;
-        this.numCauses = this.causes.length;
+        return numCauses;
     }
 
     /**
@@ -157,14 +158,7 @@ class AggregatedException
             for ( int i = 0; i < numCauses; i++ )
             {
                 s.println( "Cause " + ( i + 1 ) + ":" );
-                if ( causes[i] == null )
-                {
-                    s.println( "<null>" );
-                }
-                else
-                {
-                    causes[i].printStackTrace( s );
-                }
+                causes[i].printStackTrace( s );
             }
         }
     }
@@ -188,14 +182,7 @@ class AggregatedException
             for ( int i = 0; i < numCauses; i++ )
             {
                 s.println( "Cause " + ( i + 1 ) + ":" );
-                if ( causes[i] == null )
-                {
-                    s.println( "<null>" );
-                }
-                else
-                {
-                    causes[i].printStackTrace( s );
-                }
+                causes[i].printStackTrace( s );
             }
         }
     }

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllPersistenceServices.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllPersistenceServices.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllPersistenceServices.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllPersistenceServices.java Mon May  5 05:41:23 2014
@@ -26,12 +26,12 @@ public interface AllPersistenceServices
 {
 
     /**
-     * Calls {@link PersistenceService#start()} on all stopped persistence services.
+     * Calls {@link PersistenceService#start()} on all persistence services which are not running.
      */
     void startAllStoppedPersistenceServices();
 
     /**
      * Calls {@link PersistenceService#stop()} on all persistence services.
      */
-    void stopAllRunningPersistenceServices();
+    void stopAllPersistenceServices();
 }

Added: onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllPersistenceUnits.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllPersistenceUnits.java?rev=1592452&view=auto
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllPersistenceUnits.java (added)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllPersistenceUnits.java Mon May  5 05:41:23 2014
@@ -0,0 +1,157 @@
+package org.apache.onami.persist;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import static org.apache.onami.persist.Preconditions.checkNotNull;
+
+/**
+ * All persistence units. This is a convenience wrapper for multiple persistence units.
+ */
+@Singleton
+class AllPersistenceUnits
+    implements AllPersistenceServices, AllUnitsOfWork
+{
+
+    /**
+     * Collection of all known persistence services.
+     */
+    private final Set<PersistenceService> persistenceServices = new HashSet<PersistenceService>();
+
+    /**
+     * Collection of all known units of work.
+     */
+    private final Set<UnitOfWork> unitsOfWork = new HashSet<UnitOfWork>();
+
+    /**
+     * Adds a persistence service and a unit of work to this collection.
+     *
+     * @param ps  the persistence service to add. Must not be {@code null}.
+     * @param uow the unit of work to add. Must not be {@code null}.
+     */
+    @Inject
+    void add( PersistenceService ps, UnitOfWork uow )
+    {
+        checkNotNull( ps );
+        checkNotNull( uow );
+        persistenceServices.add( ps );
+        unitsOfWork.add( uow );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    // @Override
+    public void startAllStoppedPersistenceServices()
+    {
+        AggregatedException.Builder exceptionBuilder = new AggregatedException.Builder();
+        for ( PersistenceService ps : persistenceServices )
+        {
+            try
+            {
+                if ( !ps.isRunning() )
+                {
+                    ps.start();
+                }
+            }
+            catch ( Exception e )
+            {
+                exceptionBuilder.add( e );
+            }
+        }
+        exceptionBuilder.throwRuntimeExceptionIfHasCauses(
+            "multiple exception occurred while starting the persistence service" );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    // @Override
+    public void stopAllPersistenceServices()
+    {
+        AggregatedException.Builder exceptionBuilder = new AggregatedException.Builder();
+        for ( PersistenceService ps : persistenceServices )
+        {
+            try
+            {
+                ps.stop();
+            }
+            catch ( Exception e )
+            {
+                exceptionBuilder.add( e );
+            }
+        }
+        exceptionBuilder.throwRuntimeExceptionIfHasCauses(
+            "multiple exception occurred while stopping the persistence service" );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    // @Override
+    public void beginAllInactiveUnitsOfWork()
+    {
+        AggregatedException.Builder exceptionBuilder = new AggregatedException.Builder();
+        for ( UnitOfWork unitOfWork : unitsOfWork )
+        {
+            try
+            {
+                if ( !unitOfWork.isActive() )
+                {
+                    unitOfWork.begin();
+                }
+            }
+            catch ( Exception e )
+            {
+                exceptionBuilder.add( e );
+            }
+        }
+        exceptionBuilder.throwRuntimeExceptionIfHasCauses(
+            "multiple exception occurred while starting the unit of work" );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    // @Override
+    public void endAllUnitsOfWork()
+    {
+        AggregatedException.Builder exceptionBuilder = new AggregatedException.Builder();
+        for ( UnitOfWork unitOfWork : unitsOfWork )
+        {
+            try
+            {
+                unitOfWork.end();
+            }
+            catch ( Exception e )
+            {
+                exceptionBuilder.add( e );
+            }
+        }
+        exceptionBuilder.throwRuntimeExceptionIfHasCauses(
+            "multiple exception occurred while ending the unit of work" );
+    }
+
+}

Propchange: onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllPersistenceUnits.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllPersistenceUnits.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllPersistenceUnits.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllUnitsOfWork.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllUnitsOfWork.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllUnitsOfWork.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/AllUnitsOfWork.java Mon May  5 05:41:23 2014
@@ -26,12 +26,12 @@ public interface AllUnitsOfWork
 {
 
     /**
-     * Calls {@link UnitOfWork#begin()} on all units of work which are not active
+     * Calls {@link UnitOfWork#begin()} on all units of work which are not active.
      */
     void beginAllInactiveUnitsOfWork();
 
     /**
-     * Calls {@link UnitOfWork#end()} on all units of work
+     * Calls {@link UnitOfWork#end()} on all units of work.
      */
     void endAllUnitsOfWork();
 }

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/AnnotatedPersistenceUnitBuilder.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/AnnotatedPersistenceUnitBuilder.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/AnnotatedPersistenceUnitBuilder.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/AnnotatedPersistenceUnitBuilder.java Mon May  5 05:41:23 2014
@@ -25,23 +25,69 @@ import com.google.inject.TypeLiteral;
 
 import javax.transaction.UserTransaction;
 
+/**
+ * 3rd step of the persistence unit builder process.
+ * Define the transaction type.
+ */
 public interface AnnotatedPersistenceUnitBuilder
     extends UnconfiguredPersistenceUnitBuilder
 {
+
+    /**
+     * Mark the persistence unit to use resource local transactions.
+     *
+     * @return the next builder step.
+     */
     UnconfiguredPersistenceUnitBuilder useLocalTransaction();
 
+    /**
+     * Mark the persistence unit to use JTA transactions.
+     *
+     * @param userTransaction the instance of the UserTransaction object to use.
+     * @return the next builder step.
+     */
     UnconfiguredPersistenceUnitBuilder useGlobalTransaction( UserTransaction userTransaction );
 
+    /**
+     * Mark the persistence unit to use JTA transactions.
+     *
+     * @param utJndiName the JNDI name to use for looking up the user transaction instance.
+     * @return the next builder step.
+     */
     UnconfiguredPersistenceUnitBuilder useGlobalTransactionWithJndiName( String utJndiName );
 
+    /**
+     * Mark the persistence unit to use JTA transactions.
+     *
+     * @param utProvider a provider to retrieve the user transaction instance.
+     * @return the next builder step.
+     */
     UnconfiguredPersistenceUnitBuilder useGlobalTransactionProvidedBy( Provider<UserTransaction> utProvider );
 
+    /**
+     * Mark the persistence unit to use JTA transactions.
+     *
+     * @param utProviderClass a provider to retrieve the user transaction instance.
+     * @return the next builder step.
+     */
     UnconfiguredPersistenceUnitBuilder useGlobalTransactionProvidedBy(
         Class<? extends Provider<UserTransaction>> utProviderClass );
 
+    /**
+     * Mark the persistence unit to use JTA transactions.
+     *
+     * @param utProviderType a provider to retrieve the user transaction instance.
+     * @return the next builder step.
+     */
     UnconfiguredPersistenceUnitBuilder useGlobalTransactionProvidedBy(
         TypeLiteral<? extends Provider<UserTransaction>> utProviderType );
 
+    /**
+     * Mark the persistence unit to use JTA transactions.
+     *
+     * @param utProviderKey a provider to retrieve the user transaction instance.
+     * @return the next builder step.
+     */
     UnconfiguredPersistenceUnitBuilder useGlobalTransactionProvidedBy(
         Key<? extends Provider<UserTransaction>> utProviderKey );
 }

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/AnnotationHolder.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/AnnotationHolder.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/AnnotationHolder.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/AnnotationHolder.java Mon May  5 05:41:23 2014
@@ -24,7 +24,7 @@ import java.lang.annotation.Annotation;
 /**
  * Object to hold the annotation of a persistence unit. may contain {@code null}.
  */
-public class AnnotationHolder
+class AnnotationHolder
 {
 
     /**
@@ -45,7 +45,8 @@ public class AnnotationHolder
     /**
      * @return the annotation for the current persistence unit. May return {@code null}.
      */
-    Class<? extends Annotation> getAnnotation() {
+    Class<? extends Annotation> getAnnotation()
+    {
         return annotation;
     }
 }

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/ApplicationManagedEntityManagerFactoryProvider.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/ApplicationManagedEntityManagerFactoryProvider.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/ApplicationManagedEntityManagerFactoryProvider.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/ApplicationManagedEntityManagerFactoryProvider.java Mon May  5 05:41:23 2014
@@ -30,8 +30,6 @@ import static org.apache.onami.persist.P
 /**
  * Implementation of {@link PersistenceService} and {@link EntityManagerFactoryProvider} for
  * application managed persistence units.
- * <p/>
- * This class is a singleton and all methods of the {@link PersistenceService} interface are synchronized.
  */
 @Singleton
 class ApplicationManagedEntityManagerFactoryProvider
@@ -78,7 +76,7 @@ class ApplicationManagedEntityManagerFac
      * {@inheritDoc}
      */
     // @Override
-    public synchronized void start()
+    public void start()
     {
         if ( isRunning() )
         {
@@ -91,7 +89,7 @@ class ApplicationManagedEntityManagerFac
      * {@inheritDoc}
      */
     // @Override
-    public synchronized boolean isRunning()
+    public boolean isRunning()
     {
         return null != emf;
     }
@@ -100,7 +98,7 @@ class ApplicationManagedEntityManagerFac
      * {@inheritDoc}
      */
     // @Override
-    public synchronized void stop()
+    public void stop()
     {
         if ( isRunning() )
         {

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/ContainerManagedEntityManagerFactoryProvider.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/ContainerManagedEntityManagerFactoryProvider.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/ContainerManagedEntityManagerFactoryProvider.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/ContainerManagedEntityManagerFactoryProvider.java Mon May  5 05:41:23 2014
@@ -29,9 +29,7 @@ import static org.apache.onami.persist.P
 
 /**
  * Implementation of {@link PersistenceService} and {@link EntityManagerFactoryProvider} for
- * container managed entity manager factories.
- * <p/>
- * This class is a singleton and all methods of the {@link PersistenceService} interface are synchronized.
+ * container managed persistence units.
  */
 @Singleton
 class ContainerManagedEntityManagerFactoryProvider
@@ -78,7 +76,7 @@ class ContainerManagedEntityManagerFacto
      * {@inheritDoc}
      */
     // @Override
-    public synchronized void start()
+    public void start()
     {
         if ( isRunning() )
         {
@@ -92,7 +90,7 @@ class ContainerManagedEntityManagerFacto
      * {@inheritDoc}
      */
     // @Override
-    public synchronized boolean isRunning()
+    public boolean isRunning()
     {
         return null != emf;
     }
@@ -101,12 +99,12 @@ class ContainerManagedEntityManagerFacto
      * {@inheritDoc}
      */
     // @Override
-    public synchronized void stop()
+    public void stop()
     {
         emf = null;
         // the entity manager factory must NOT be closed:
-        // - because it was created by the container and it is therefore the responsibility of the container to close it
-        // - because we cannot know if another part of the application has obtained the same instance over JNDI
+        // - it was created by the container and it is therefore the responsibility of the container to close it
+        // - we cannot know if another part of the application has obtained the same instance
     }
 
 }

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactoryFactory.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactoryFactory.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactoryFactory.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactoryFactory.java Mon May  5 05:41:23 2014
@@ -49,7 +49,8 @@ class EntityManagerFactoryFactory
      * Constructor.
      *
      * @param puName     the name of the persistence unit as defined in the persistence.xml. Must not be {@code null}.
-     * @param properties the additional properties. Theses override the ones defined in the persistence.xml. Must not be {@code null}.
+     * @param properties the additional properties. Theses override the ones defined in the persistence.xml.
+     *                   Must not be {@code null}.
      */
     @Inject
     EntityManagerFactoryFactory( @ForApplicationManaged String puName,

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactorySource.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactorySource.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactorySource.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactorySource.java Mon May  5 05:41:23 2014
@@ -24,10 +24,10 @@ import javax.persistence.EntityManagerFa
 
 /**
  * Source for {@link EntityManagerFactory}.
- *
+ * <p/>
  * A source indicates that the instance is not created within the instance (compared to factory)
  */
-public interface EntityManagerFactorySource
+interface EntityManagerFactorySource
 {
 
     /**

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactorySourceByJndiLookup.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactorySourceByJndiLookup.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactorySourceByJndiLookup.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactorySourceByJndiLookup.java Mon May  5 05:41:23 2014
@@ -35,8 +35,14 @@ class EntityManagerFactorySourceByJndiLo
     implements EntityManagerFactorySource
 {
 
+    /**
+     * The JNDI name of the persistence unit.
+     */
     private final String jndiName;
 
+    /**
+     * Helper for JNDI lookup.
+     */
     private final JndiLookupHelper jndiLookupHelper;
 
     /**

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactorySourceViaProvider.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactorySourceViaProvider.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactorySourceViaProvider.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerFactorySourceViaProvider.java Mon May  5 05:41:23 2014
@@ -30,7 +30,8 @@ import javax.persistence.EntityManagerFa
  * The sourced instance is provided by guice.
  */
 @Singleton
-public class EntityManagerFactorySourceViaProvider implements EntityManagerFactorySource
+class EntityManagerFactorySourceViaProvider
+    implements EntityManagerFactorySource
 {
     private final Provider<EntityManagerFactory> emfProvider;
 

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerProviderImpl.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerProviderImpl.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerProviderImpl.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/EntityManagerProviderImpl.java Mon May  5 05:41:23 2014
@@ -55,7 +55,7 @@ class EntityManagerProviderImpl
     /**
      * Constructor.
      *
-     * @param emfProvider the provider for {@link javax.persistence.EntityManagerFactory}. Must not be {@code null}.
+     * @param emfProvider the provider for {@link EntityManagerFactory}. Must not be {@code null}.
      * @param properties  additional properties to be set on every {@link EntityManager} which is created.
      */
     @Inject

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/JndiLookupHelper.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/JndiLookupHelper.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/JndiLookupHelper.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/JndiLookupHelper.java Mon May  5 05:41:23 2014
@@ -45,12 +45,12 @@ public class JndiLookupHelper
         try
         {
             final InitialContext ctx = new InitialContext();
-            final T emf = (T) ctx.lookup( jndiName );
+            final T result = (T) ctx.lookup( jndiName );
 
-            Preconditions.checkNotNull( emf, "lookup for " + type.getSimpleName() + " with JNDI name '" + jndiName
+            Preconditions.checkNotNull( result, "lookup for " + type.getSimpleName() + " with JNDI name '" + jndiName
                 + "' returned null" );
 
-            return emf;
+            return result;
         }
         catch ( NamingException e )
         {

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceFilter.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceFilter.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceFilter.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceFilter.java Mon May  5 05:41:23 2014
@@ -40,7 +40,7 @@ import static org.apache.onami.persist.P
  * <pre>
  *  public class MyModule extends ServletModule {
  *    public void configure() {
- *      // bind your persistence units here
+ *      // other bindings
  *
  *      filter("/*").through(PersistenceFilter.class);
  *    }
@@ -54,7 +54,7 @@ public class PersistenceFilter
     /**
      * Container of all known persistence unit and units of work.
      */
-    private final PersistenceUnitContainer persistenceUnitsContainer;
+    private final AllPersistenceUnits persistenceUnitsContainer;
 
     /**
      * Constructor.
@@ -62,7 +62,7 @@ public class PersistenceFilter
      * @param persistenceUnitsContainer container of all known persistence unit and units of work.
      */
     @Inject
-    PersistenceFilter( PersistenceUnitContainer persistenceUnitsContainer )
+    PersistenceFilter( AllPersistenceUnits persistenceUnitsContainer )
     {
         checkNotNull( persistenceUnitsContainer );
         this.persistenceUnitsContainer = persistenceUnitsContainer;
@@ -102,6 +102,6 @@ public class PersistenceFilter
     // @Override
     public void destroy()
     {
-        persistenceUnitsContainer.stopAllRunningPersistenceServices();
+        persistenceUnitsContainer.stopAllPersistenceServices();
     }
 }

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceModule.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceModule.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceModule.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceModule.java Mon May  5 05:41:23 2014
@@ -49,10 +49,11 @@ public abstract class PersistenceModule
     extends AbstractModule
 {
 
+    /**
+     * List of configurators. Each configurator can be used to build a {@link PersistenceUnitModule}.
+     */
     private List<PersistenceUnitModuleConfigurator> configurators;
 
-    private final PersistenceUnitContainer container = new PersistenceUnitContainer();
-
     private final Matcher<AnnotatedElement> transactionalMatcher = annotatedWith( Transactional.class );
 
     private final Matcher<Object> anyMatcher = any();
@@ -79,6 +80,10 @@ public abstract class PersistenceModule
     {
         configurePersistence();
 
+        final AllPersistenceUnits container = new AllPersistenceUnits();
+        bind( AllPersistenceServices.class ).toInstance( container );
+        bind( AllUnitsOfWork.class ).toInstance( container );
+
         for ( PersistenceUnitModuleConfigurator config : configurators )
         {
             final PersistenceUnitModule pu = config.createPuModule();

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceService.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceService.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceService.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceService.java Mon May  5 05:41:23 2014
@@ -33,10 +33,10 @@ public interface PersistenceService
      * If you are using onami-persist in a web container {@link PersistenceFilter} will call this
      * method upon initialization of the web application.
      *
-     * @throws IllegalArgumentException if the service is already running.
+     * @throws IllegalStateException if the service is already running.
      */
     void start()
-        throws IllegalArgumentException;
+        throws IllegalStateException;
 
     /**
      * @return {@code true} if the underlying persistence engine is running.

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceUnitModule.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceUnitModule.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceUnitModule.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/PersistenceUnitModule.java Mon May  5 05:41:23 2014
@@ -51,7 +51,7 @@ class PersistenceUnitModule
     /**
      * Persistence unit container which can be passed in from the outside for adding this persistence unit to it.
      */
-    private PersistenceUnitContainer container;
+    private AllPersistenceUnits container;
 
     /**
      * Constructor.
@@ -78,7 +78,7 @@ class PersistenceUnitModule
      *
      * @param container the container to which to add the persistence unit.
      */
-    void setPersistenceUnitContainer( PersistenceUnitContainer container )
+    void setPersistenceUnitContainer( AllPersistenceUnits container )
     {
         this.container = container;
     }

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/ResourceLocalTransactionFacadeFactory.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/ResourceLocalTransactionFacadeFactory.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/ResourceLocalTransactionFacadeFactory.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/ResourceLocalTransactionFacadeFactory.java Mon May  5 05:41:23 2014
@@ -71,7 +71,7 @@ class ResourceLocalTransactionFacadeFact
     /**
      * TransactionFacade representing an inner (nested) transaction.
      * Starting and committing a transaction has no effect.
-     * This Facade will set the rollbackOnly flag in case of a roll back.
+     * This facade will set the rollbackOnly flag in case of a roll back.
      */
     private static class Inner
         implements TransactionFacade
@@ -113,9 +113,8 @@ class ResourceLocalTransactionFacadeFact
 
     /**
      * TransactionFacade representing an outer transaction.
-     * This Facade starts and ends the transaction.
-     * If an inner transaction has set the rollbackOnly flag the transaction will be rolled back
-     * in any case.
+     * This facade starts and ends the transaction.
+     * If an inner transaction has set the rollbackOnly flag the transaction will be rolled back in any case.
      */
     private static class Outer
         implements TransactionFacade

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/TransactionFacade.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/TransactionFacade.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/TransactionFacade.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/TransactionFacade.java Mon May  5 05:41:23 2014
@@ -20,8 +20,8 @@ package org.apache.onami.persist;
  */
 
 /**
- * Interface which hides away the details of inner (nested) and outer transactions as well
- * as the details between {@link javax.persistence.EntityTransaction} and {@link javax.transaction.UserTransaction}.
+ * Interface which hides away the details of inner (nested) and outer transactions as well as the details between
+ * {@link javax.persistence.EntityTransaction} and {@link javax.transaction.UserTransaction}.
  */
 interface TransactionFacade
 {
@@ -29,25 +29,22 @@ interface TransactionFacade
     /**
      * Starts a transaction.
      * <p/>
-     * The first call to begin will start the actual transaction. Subsequent calls will start a
-     * 'nested' transaction.
+     * The first call to begin will start the outer transaction. Subsequent calls will start a inner transaction.
      */
     void begin();
 
     /**
      * Commits a transaction.
      * <p/>
-     * Only the actual transaction can be committed. Calls to commit on nested transactions have
-     * no effect.
+     * Only the outer transaction can be committed. Calls to commit on inner transactions have no effect.
      */
     void commit();
 
     /**
      * Rolls a transaction back.
      * <p/>
-     * Only the actual transaction can be rolled back. Calls to rollback on nested transactions will
-     * set the onlyRollBack flag on the actual transaction. Setting this flag wil cause an actual
-     * transaction to be rolled back in any case.
+     * Only the outer transaction can be rolled back. Calls to rollback on inner transactions will set the rollbackOnly
+     * flag on the outer transaction. Setting this flag wil cause an outer transaction to be rolled back in any case.
      */
     void rollback();
 

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/TransactionalAnnotationHelper.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/TransactionalAnnotationHelper.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/TransactionalAnnotationHelper.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/TransactionalAnnotationHelper.java Mon May  5 05:41:23 2014
@@ -38,7 +38,7 @@ class TransactionalAnnotationHelper
     /**
      * Annotation of the persistence unit.
      */
-    private final Class<? extends Annotation> puAnntoation;
+    private final Class<? extends Annotation> puAnnotation;
 
     /**
      * Reader for {@link Transactional @Transactional} annotations.
@@ -54,7 +54,7 @@ class TransactionalAnnotationHelper
     @Inject
     TransactionalAnnotationHelper( AnnotationHolder annotationHolder, TransactionalAnnotationReader txnAnnoReader )
     {
-        this.puAnntoation = annotationHolder.getAnnotation();
+        this.puAnnotation = annotationHolder.getAnnotation();
         this.txnAnnoReader = checkNotNull( txnAnnoReader, "txnAnnoReader is mandatory!" );
     }
 
@@ -66,9 +66,9 @@ class TransactionalAnnotationHelper
      * @param methodInvocation the method invocation which may be wrapped in a transaction.
      * @return {@code true} if the current persistence unit participates in a transaction for the given method.
      */
-    public boolean persistenceUnitParticipatesInTransactionFor( MethodInvocation methodInvocation )
+    boolean persistenceUnitParticipatesInTransactionFor( MethodInvocation methodInvocation )
     {
-        return puAnntoation == null || participates( methodInvocation );
+        return puAnnotation == null || participates( methodInvocation );
     }
 
     /**
@@ -82,7 +82,7 @@ class TransactionalAnnotationHelper
     {
         final Transactional transactional = txnAnnoReader.readAnnotationFrom( methodInvocation );
         final Class<? extends Annotation>[] onUnits = transactional.onUnits();
-        return isEmpty( onUnits ) || contains( onUnits, puAnntoation );
+        return isEmpty( onUnits ) || contains( onUnits, puAnnotation );
     }
 
     /**
@@ -115,7 +115,7 @@ class TransactionalAnnotationHelper
      * @param exc              the exception which was thrown
      * @return {@code true} if the transaction needs to be rolled back.
      */
-    public boolean isRollbackNecessaryFor( MethodInvocation methodInvocation, Throwable exc )
+    boolean isRollbackNecessaryFor( MethodInvocation methodInvocation, Throwable exc )
     {
         final Transactional transactional = txnAnnoReader.readAnnotationFrom( methodInvocation );
         return isRollbackNecessaryFor( transactional, exc );
@@ -130,32 +130,26 @@ class TransactionalAnnotationHelper
      */
     private boolean isRollbackNecessaryFor( Transactional transactional, Throwable exc )
     {
-        for ( Class<? extends Exception> rollbackOn : transactional.rollbackOn() )
-        {
-            if ( rollbackOn.isInstance( exc ) )
-            {
-                return isNotIgnoredForRollback( transactional, exc );
-            }
-        }
-        return false;
+        return containsSuper( transactional.rollbackOn(), exc ) && !containsSuper( transactional.ignore(), exc );
     }
 
     /**
-     * Decides if a rollback is not performed for the given transactional annotation and a thrown exception.
+     * Decides if the array of classes contains a super class of exc.
      *
-     * @param transactional the transactional annotation of the method during which an exception was thrown.
-     * @param exc           the exception which was thrown
-     * @return {@code true} if the transaction needs to be rolled back.
+     * @param classes the classes in which to look fore
+     * @param exc     the class to search for
+     * @return {@code true} when the array contains a super class of exc.
      */
-    private boolean isNotIgnoredForRollback( Transactional transactional, Throwable exc )
+    private boolean containsSuper( Class<? extends Exception>[] classes, Throwable exc )
     {
-        for ( Class<? extends Exception> ignore : transactional.ignore() )
+        for ( Class<? extends Exception> c : classes )
         {
-            if ( ignore.isInstance( exc ) )
+            if ( c.isInstance( exc ) )
             {
-                return false;
+                return true;
             }
         }
-        return true;
+        return false;
     }
+
 }

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/TransactionalAnnotationReader.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/TransactionalAnnotationReader.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/TransactionalAnnotationReader.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/TransactionalAnnotationReader.java Mon May  5 05:41:23 2014
@@ -31,7 +31,7 @@ import java.lang.reflect.Method;
 class TransactionalAnnotationReader
 {
     /**
-     * Constant holding the a transactional instance with all default values.
+     * Constant holding a transactional instance with all default values.
      */
     private static final Transactional DEFAULT_TRANSACTIONAL =
         DefaultTransactional.class.getAnnotation( Transactional.class );

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/TxnInterceptor.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/TxnInterceptor.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/TxnInterceptor.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/TxnInterceptor.java Mon May  5 05:41:23 2014
@@ -24,7 +24,7 @@ import org.aopalliance.intercept.MethodI
 import org.aopalliance.intercept.MethodInvocation;
 
 /**
- * Interceptor for methods and classes annotated with @{@link Transactional} annotation.
+ * Interceptor for methods and classes annotated with {@link Transactional @Transactional} annotation.
  */
 class TxnInterceptor
     implements MethodInterceptor
@@ -69,6 +69,14 @@ class TxnInterceptor
 
     }
 
+    /**
+     * Decides if the current persistence unit participates in a transaction for the given method invocation.
+     * For a detailed description of when a persistence unit participates see the documentation at the
+     * {@link Transactional @Transactional} annotation.
+     *
+     * @param methodInvocation the method invocation which may be wrapped in a transaction.
+     * @return {@code true} if the current persistence unit participates in a transaction for the given method.
+     */
     private boolean persistenceUnitParticipatesInTransactionFor( MethodInvocation methodInvocation )
     {
         return txnAnnotationHelper.persistenceUnitParticipatesInTransactionFor( methodInvocation );
@@ -104,18 +112,20 @@ class TxnInterceptor
         {
             if ( weStartedTheUnitOfWork )
             {
-                endUnitOfWorkAndThrow( originalException );
+                endUnitOfWork( originalException );
             }
         }
     }
 
     /**
-     * Ends the unit of work and throws the original exception if not null.
+     * Ends the unit of work. If an exception occurs while ending the unit of work it is neglected in preference of an
+     * original exception.
      *
-     * @param originalException the original transaction to throw if not null.
-     * @throws Throwable the original exception or an exception which occurred when closing the unit of work.
+     * @param originalException the original exception. will be thrown in preference to an exception occurring during
+     *                          execution of this method.
+     * @throws Throwable if an exception happened while ending the unit of work.
      */
-    private void endUnitOfWorkAndThrow( Throwable originalException )
+    private void endUnitOfWork( Throwable originalException )
         throws Throwable
     {
         try
@@ -205,6 +215,13 @@ class TxnInterceptor
         }
     }
 
+    /**
+     * Decides if a rollback is necessary for the given method invocation and a thrown exception.
+     *
+     * @param methodInvocation the method invocation during which an exception was thrown.
+     * @param exc              the exception which was thrown
+     * @return {@code true} if the transaction needs to be rolled back.
+     */
     private boolean isRollbackNecessaryFor( MethodInvocation methodInvocation, Throwable exc )
     {
         return txnAnnotationHelper.isRollbackNecessaryFor( methodInvocation, exc );

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/UnannotatedPersistenceUnitBuilder.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/UnannotatedPersistenceUnitBuilder.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/UnannotatedPersistenceUnitBuilder.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/UnannotatedPersistenceUnitBuilder.java Mon May  5 05:41:23 2014
@@ -21,8 +21,19 @@ package org.apache.onami.persist;
 
 import java.lang.annotation.Annotation;
 
+/**
+ * 2nd step of the persistence unit builder process.
+ * Define an annotation
+ */
 public interface UnannotatedPersistenceUnitBuilder
     extends AnnotatedPersistenceUnitBuilder
 {
+
+    /**
+     * Defines an annotation for the persistence unit.
+     *
+     * @param annotation the annotation to use when referencing the persistence unit.
+     * @return the next builder step.
+     */
     AnnotatedPersistenceUnitBuilder annotatedWith( Class<? extends Annotation> annotation );
 }

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/UnconfiguredPersistenceUnitBuilder.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/UnconfiguredPersistenceUnitBuilder.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/UnconfiguredPersistenceUnitBuilder.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/UnconfiguredPersistenceUnitBuilder.java Mon May  5 05:41:23 2014
@@ -21,7 +21,17 @@ package org.apache.onami.persist;
 
 import java.util.Properties;
 
+/**
+ * 4th step of the persistence unit builder process.
+ * Define properties.
+ */
 public interface UnconfiguredPersistenceUnitBuilder
 {
+
+    /**
+     * Defines additional properties to use. These properties overrule the ones defined in the persistence.xml
+     *
+     * @param properties the properties to use for the persistence unit.
+     */
     void setProperties( Properties properties );
 }

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/UnitOfWork.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/UnitOfWork.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/UnitOfWork.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/UnitOfWork.java Mon May  5 05:41:23 2014
@@ -61,10 +61,9 @@ public interface UnitOfWork
 
     /**
      * Starts the unit of work.
-     * When the unit of work has already been started for the current thread an
-     * {@link IllegalStateException} is thrown.
+     * When a unit of work has already been started for the current thread an {@link IllegalStateException} is thrown.
      *
-     * @throws IllegalStateException if the unit of work is already running for this thread.
+     * @throws IllegalStateException if a unit of work is already active for this thread.
      */
     void begin()
         throws IllegalStateException;

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/UserTransactionFacade.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/UserTransactionFacade.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/UserTransactionFacade.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/UserTransactionFacade.java Mon May  5 05:41:23 2014
@@ -177,10 +177,10 @@ class UserTransactionFacade
     }
 
     /**
+     * Retries several times when the status is {@link Status#STATUS_UNKNOWN}.
+     * Will abort retrying after approximately one second.
+     *
      * @see {@link javax.transaction.UserTransaction#getStatus()}.
-     *      <p/>
-     *      Retries several times when the status is {@link Status#STATUS_UNKNOWN}.
-     *      Will abort retrying after aproximatly one second.
      */
     private int getStatus()
     {

Modified: onami/sandbox/persist/src/main/java/org/apache/onami/persist/UserTransactionProviderByJndiLookup.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/main/java/org/apache/onami/persist/UserTransactionProviderByJndiLookup.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/main/java/org/apache/onami/persist/UserTransactionProviderByJndiLookup.java (original)
+++ onami/sandbox/persist/src/main/java/org/apache/onami/persist/UserTransactionProviderByJndiLookup.java Mon May  5 05:41:23 2014
@@ -30,7 +30,7 @@ import static org.apache.onami.persist.P
  * Provider fro {@link UserTransaction} which retrieves the value from the JNDI context.
  */
 @Singleton
-public class UserTransactionProviderByJndiLookup
+class UserTransactionProviderByJndiLookup
     implements Provider<UserTransaction>
 {
 

Added: onami/sandbox/persist/src/test/java/org/apache/onami/persist/AllPersistenceUnitsTest.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/test/java/org/apache/onami/persist/AllPersistenceUnitsTest.java?rev=1592452&view=auto
==============================================================================
--- onami/sandbox/persist/src/test/java/org/apache/onami/persist/AllPersistenceUnitsTest.java (added)
+++ onami/sandbox/persist/src/test/java/org/apache/onami/persist/AllPersistenceUnitsTest.java Mon May  5 05:41:23 2014
@@ -0,0 +1,244 @@
+package org.apache.onami.persist;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.*;
+
+/**
+ * Test for {@link AllPersistenceUnits}.
+ */
+public class AllPersistenceUnitsTest
+{
+    private AllPersistenceUnits sut;
+
+    private PersistenceService ps1;
+
+    private PersistenceService ps2;
+
+    private UnitOfWork uow1;
+
+    private UnitOfWork uow2;
+
+    @Before
+    public void setUp()
+        throws Exception
+    {
+        sut = new AllPersistenceUnits();
+
+        ps1 = mock( PersistenceService.class );
+        ps2 = mock( PersistenceService.class );
+
+        uow1 = mock( UnitOfWork.class );
+        uow2 = mock( UnitOfWork.class );
+
+        sut.add( ps1, uow1 );
+        sut.add( ps2, uow2 );
+    }
+
+    @Test
+    public void shouldStartOnAllPersistenceServices()
+        throws Exception
+    {
+        // when
+        sut.startAllStoppedPersistenceServices();
+
+        // then
+        verify( ps1 ).start();
+        verify( ps2 ).start();
+    }
+
+    @Test
+    public void shouldStartOnRunningPersistenceServices()
+        throws Exception
+    {
+        // given
+        doReturn( true ).when( ps1 ).isRunning();
+        doReturn( true ).when( ps2 ).isRunning();
+
+        // when
+        sut.startAllStoppedPersistenceServices();
+
+        // then
+        verify( ps1, never() ).start();
+        verify( ps2, never() ).start();
+    }
+
+    @Test
+    public void shouldStartOnAllPersistenceServicesEvenInCaseOfException()
+        throws Exception
+    {
+        // given
+        doThrow( new RuntimeException() ).when( ps1 ).start();
+        doThrow( new RuntimeException() ).when( ps2 ).start();
+
+        // when
+        try
+        {
+            sut.startAllStoppedPersistenceServices();
+        }
+
+        // then
+        catch ( AggregatedException e )
+        {
+            verify( ps1 ).start();
+            verify( ps2 ).start();
+            assertThat( e.getNumCauses(), is( 2 ) );
+            return;
+        }
+
+        fail( "must throw AggregatedException" );
+    }
+
+    @Test
+    public void shouldStopOnAllPersistenceServices()
+        throws Exception
+    {
+        // when
+        sut.stopAllPersistenceServices();
+
+        // then
+        verify( ps1 ).stop();
+        verify( ps2 ).stop();
+    }
+
+    @Test
+    public void shouldStopOnAllPersistenceServicesEvenInCaseOfException()
+        throws Exception
+    {
+        // given
+        doThrow( new RuntimeException() ).when( ps1 ).stop();
+        doThrow( new RuntimeException() ).when( ps2 ).stop();
+
+        // when
+        try
+        {
+            sut.stopAllPersistenceServices();
+        }
+
+        // then
+        catch ( AggregatedException e )
+        {
+            verify( ps1 ).stop();
+            verify( ps2 ).stop();
+            assertThat( e.getNumCauses(), is( 2 ) );
+            return;
+        }
+
+        fail( "must throw AggregatedException" );
+    }
+
+    @Test
+    public void shouldBeginOnAllUnitsOfWork()
+        throws Exception
+    {
+        // when
+        sut.beginAllInactiveUnitsOfWork();
+
+        // then
+        verify( uow1 ).begin();
+        verify( uow2 ).begin();
+    }
+
+    @Test
+    public void shouldNotBeginOnActiveUnitsOfWork()
+        throws Exception
+    {
+        // given
+        doReturn( true ).when( uow1 ).isActive();
+        doReturn( true ).when( uow2 ).isActive();
+
+        // when
+        sut.beginAllInactiveUnitsOfWork();
+
+        // then
+        verify( uow1, never() ).begin();
+        verify( uow2, never() ).begin();
+    }
+
+    @Test
+    public void shouldBeginOnAllUnitsOfWorkEvenInCaseOfException()
+        throws Exception
+    {
+        // given
+        doThrow( new RuntimeException() ).when( uow1 ).begin();
+        doThrow( new RuntimeException() ).when( uow2 ).begin();
+
+        // when
+        try
+        {
+            sut.beginAllInactiveUnitsOfWork();
+        }
+
+        // then
+        catch ( AggregatedException e )
+        {
+            verify( uow1 ).begin();
+            verify( uow2 ).begin();
+            assertThat( e.getNumCauses(), is( 2 ) );
+            return;
+        }
+
+        fail( "must throw AggregatedException" );
+    }
+
+    @Test
+    public void shouldEndOnAllUnitsOfWork()
+        throws Exception
+    {
+        // when
+        sut.endAllUnitsOfWork();
+
+        // then
+        verify( uow1 ).end();
+        verify( uow2 ).end();
+    }
+
+    @Test
+    public void shouldEndOnAllUnitsOfWorkEvenInCaseOfException()
+        throws Exception
+    {
+        // given
+        doThrow( new RuntimeException() ).when( uow1 ).end();
+        doThrow( new RuntimeException() ).when( uow2 ).end();
+
+        // when
+        try
+        {
+            sut.endAllUnitsOfWork();
+        }
+
+        // then
+        catch ( AggregatedException e )
+        {
+            verify( uow1 ).end();
+            verify( uow2 ).end();
+            assertThat( e.getNumCauses(), is( 2 ) );
+            return;
+        }
+
+        fail( "must throw AggregatedException" );
+    }
+}

Propchange: onami/sandbox/persist/src/test/java/org/apache/onami/persist/AllPersistenceUnitsTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: onami/sandbox/persist/src/test/java/org/apache/onami/persist/AllPersistenceUnitsTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: onami/sandbox/persist/src/test/java/org/apache/onami/persist/AllPersistenceUnitsTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: onami/sandbox/persist/src/test/java/org/apache/onami/persist/PersistenceFilterTest.java
URL: http://svn.apache.org/viewvc/onami/sandbox/persist/src/test/java/org/apache/onami/persist/PersistenceFilterTest.java?rev=1592452&r1=1592451&r2=1592452&view=diff
==============================================================================
--- onami/sandbox/persist/src/test/java/org/apache/onami/persist/PersistenceFilterTest.java (original)
+++ onami/sandbox/persist/src/test/java/org/apache/onami/persist/PersistenceFilterTest.java Mon May  5 05:41:23 2014
@@ -37,13 +37,13 @@ public class PersistenceFilterTest
 {
     private PersistenceFilter sut;
 
-    private PersistenceUnitContainer persistenceUnitsContainer;
+    private AllPersistenceUnits persistenceUnitsContainer;
 
     @Before
     public void setUp()
         throws Exception
     {
-        persistenceUnitsContainer = mock( PersistenceUnitContainer.class );
+        persistenceUnitsContainer = mock( AllPersistenceUnits.class );
         sut = new PersistenceFilter( persistenceUnitsContainer );
     }
 
@@ -59,7 +59,7 @@ public class PersistenceFilterTest
     public void destroyShouldStopService()
     {
         sut.destroy();
-        verify( persistenceUnitsContainer ).stopAllRunningPersistenceServices();
+        verify( persistenceUnitsContainer ).stopAllPersistenceServices();
     }
 
     @Test