You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by dr...@apache.org on 2011/05/25 22:40:58 UTC

svn commit: r1127674 - in /tapestry/tapestry5/trunk/tapestry-jpa/src: main/java/org/apache/tapestry5/internal/jpa/ main/java/org/apache/tapestry5/jpa/ test/java/org/example/app1/services/ test/java/org/example/app3/services/ test/resources/

Author: drobiazko
Date: Wed May 25 20:40:56 2011
New Revision: 1127674

URL: http://svn.apache.org/viewvc?rev=1127674&view=rev
Log:
Fluent API for TapestryPersistenceUnitInfo

Removed:
    tapestry/tapestry5/trunk/tapestry-jpa/src/test/resources/jndi-datasource-persistence-unit.xml
Modified:
    tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/EntityManagerSourceImpl.java
    tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/PersistenceContentHandler.java
    tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/PersistenceUnitInfoImpl.java
    tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/jpa/TapestryPersistenceUnitInfo.java
    tapestry/tapestry5/trunk/tapestry-jpa/src/test/java/org/example/app1/services/AppModule.java
    tapestry/tapestry5/trunk/tapestry-jpa/src/test/java/org/example/app3/services/AppModule.java

Modified: tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/EntityManagerSourceImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/EntityManagerSourceImpl.java?rev=1127674&r1=1127673&r2=1127674&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/EntityManagerSourceImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/EntityManagerSourceImpl.java Wed May 25 20:40:56 2011
@@ -53,23 +53,7 @@ public class EntityManagerSourceImpl imp
         super();
         this.logger = logger;
 
-        List<TapestryPersistenceUnitInfo> persistenceUnitInfos = null;
-        final PersistenceParser parser = new PersistenceParser();
-
-        InputStream inputStream = null;
-        try
-        {
-            inputStream = persistenceDescriptor.openStream();
-            persistenceUnitInfos = parser.parse(inputStream);
-        }
-        catch(Exception e)
-        {
-            throw new RuntimeException(e);
-        }
-        finally
-        {
-            InternalUtils.close(inputStream);
-        }
+        List<TapestryPersistenceUnitInfo> persistenceUnitInfos = parsePersistenceUnitInfos(persistenceDescriptor);
 
          final Map<String, PersistenceUnitConfigurer> remainingConfigurations = configure(configuration, persistenceUnitInfos);
 
@@ -81,6 +65,33 @@ public class EntityManagerSourceImpl imp
         this.persistenceUnitInfos = persistenceUnitInfos;
     }
 
+    private List<TapestryPersistenceUnitInfo> parsePersistenceUnitInfos(Resource persistenceDescriptor)
+    {
+        List<TapestryPersistenceUnitInfo> persistenceUnitInfos = CollectionFactory.newList();
+
+        if(persistenceDescriptor.exists())
+        {
+            final PersistenceParser parser = new PersistenceParser();
+
+            InputStream inputStream = null;
+            try
+            {
+                inputStream = persistenceDescriptor.openStream();
+                persistenceUnitInfos = parser.parse(inputStream);
+            }
+            catch(Exception e)
+            {
+                throw new RuntimeException(e);
+            }
+            finally
+            {
+                InternalUtils.close(inputStream);
+            }
+
+        }
+        return persistenceUnitInfos;
+    }
+
     private Map<String, PersistenceUnitConfigurer> configure(Map<String, PersistenceUnitConfigurer> configuration, List<TapestryPersistenceUnitInfo> persistenceUnitInfos)
     {
         final Map<String, PersistenceUnitConfigurer> remainingConfigurations = CollectionFactory.newMap(configuration);
@@ -107,8 +118,7 @@ public class EntityManagerSourceImpl imp
     {
         for(Entry<String, PersistenceUnitConfigurer> entry: remainingConfigurations.entrySet())
         {
-            final PersistenceUnitInfoImpl info = new PersistenceUnitInfoImpl();
-            info.setPersistenceUnitName(entry.getKey());
+            final PersistenceUnitInfoImpl info = new PersistenceUnitInfoImpl(entry.getKey());
 
             final PersistenceUnitConfigurer configurer = entry.getValue();
             configurer.configure(info);

Modified: tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/PersistenceContentHandler.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/PersistenceContentHandler.java?rev=1127674&r1=1127673&r2=1127674&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/PersistenceContentHandler.java (original)
+++ tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/PersistenceContentHandler.java Wed May 25 20:40:56 2011
@@ -86,8 +86,7 @@ public class PersistenceContentHandler i
         {
             if (ELEMENT_PERSISTENCE_UNIT.equals(localName))
             {
-                persistenceUnitInfo = new PersistenceUnitInfoImpl();
-                persistenceUnitInfo.setPersistenceUnitName(atts.getValue(ATTRIBUTE_NAME));
+                persistenceUnitInfo = new PersistenceUnitInfoImpl(atts.getValue(ATTRIBUTE_NAME));
                 persistenceUnitInfo
                         .setPersistenceXMLSchemaVersion(atts.getValue(ATTRIBUTE_VERSION));
 
@@ -95,7 +94,7 @@ public class PersistenceContentHandler i
 
                 if (transactionType != null)
                 {
-                    persistenceUnitInfo.setTransactionType(PersistenceUnitTransactionType
+                    persistenceUnitInfo.transactionType(PersistenceUnitTransactionType
                             .valueOf(transactionType));
                 }
             }
@@ -119,7 +118,7 @@ public class PersistenceContentHandler i
         {
             if (ELEMENT_PROVIDER.equals(localName))
             {
-                persistenceUnitInfo.setPersistenceProviderClassName(string);
+                persistenceUnitInfo.persistenceProviderClassName(string);
             }
             else if (ELEMENT_CLASS.equals(localName))
             {
@@ -127,11 +126,11 @@ public class PersistenceContentHandler i
             }
             else if (ELEMENT_CACHING.equals(localName))
             {
-                persistenceUnitInfo.setSharedCacheMode(toEnum(SharedCacheMode.class, string));
+                persistenceUnitInfo.sharedCacheMode(toEnum(SharedCacheMode.class, string));
             }
             else if (ELEMENT_VALIDATION_MODE.equals(localName))
             {
-                persistenceUnitInfo.setValidationMode(toEnum(ValidationMode.class, string));
+                persistenceUnitInfo.validationMode(toEnum(ValidationMode.class, string));
             }
             else if (ELEMENT_MAPPING_FILE.equals(localName))
             {
@@ -139,11 +138,11 @@ public class PersistenceContentHandler i
             }
             else if (ELEMENT_NON_JTA_DATA_SOURCE.equals(localName))
             {
-                persistenceUnitInfo.setNonJtaDataSource(lookupDataSource(string));
+                persistenceUnitInfo.nonJtaDataSource(string);
             }
             else if (ELEMENT_JTA_DATA_SOURCE.equals(localName))
             {
-                persistenceUnitInfo.setJtaDataSource(lookupDataSource(string));
+                persistenceUnitInfo.jtaDataSource(string);
             }
             else if (ELEMENT_PERSISTENCE_UNIT.equals(localName))
             {
@@ -188,22 +187,4 @@ public class PersistenceContentHandler i
     {
         return Enum.valueOf(enumType, value);
     }
-
-    private DataSource lookupDataSource(final String name)
-    {
-        try
-        {
-            // TODO: Create InitialContext with environment properties?
-            final Context initContext = new InitialContext();
-
-            final Context envContext = (Context) initContext.lookup("java:comp/env");
-
-            return (DataSource) envContext.lookup(name);
-        }
-        catch (final NamingException e)
-        {
-            throw new RuntimeException(e);
-        }
-
-    }
 }

Modified: tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/PersistenceUnitInfoImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/PersistenceUnitInfoImpl.java?rev=1127674&r1=1127673&r2=1127674&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/PersistenceUnitInfoImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/PersistenceUnitInfoImpl.java Wed May 25 20:40:56 2011
@@ -21,6 +21,9 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Properties;
 
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
 import javax.persistence.SharedCacheMode;
 import javax.persistence.ValidationMode;
 import javax.persistence.spi.ClassTransformer;
@@ -55,20 +58,18 @@ public class PersistenceUnitInfoImpl imp
 
     private final Properties properties = new Properties();
 
-    /**
-     * {@inheritDoc}
-     */
-    public String getPersistenceUnitName()
+
+    public PersistenceUnitInfoImpl(String persistenceUnitName)
     {
-        return persistenceUnitName;
+        this.persistenceUnitName = persistenceUnitName;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void setPersistenceUnitName(final String persistenceUnitName)
+    public String getPersistenceUnitName()
     {
-        this.persistenceUnitName = persistenceUnitName;
+        return persistenceUnitName;
     }
 
     /**
@@ -82,9 +83,11 @@ public class PersistenceUnitInfoImpl imp
     /**
      * {@inheritDoc}
      */
-    public void setPersistenceProviderClassName(final String persistenceProviderClassName)
+    public TapestryPersistenceUnitInfo persistenceProviderClassName(final String persistenceProviderClassName)
     {
         this.persistenceProviderClassName = persistenceProviderClassName;
+
+        return this;
     }
 
     /**
@@ -98,9 +101,11 @@ public class PersistenceUnitInfoImpl imp
     /**
      * {@inheritDoc}
      */
-    public void setTransactionType(final PersistenceUnitTransactionType transactionType)
+    public TapestryPersistenceUnitInfo transactionType(final PersistenceUnitTransactionType transactionType)
     {
         this.transactionType = transactionType;
+
+        return this;
     }
 
     /**
@@ -122,17 +127,21 @@ public class PersistenceUnitInfoImpl imp
     /**
      * {@inheritDoc}
      */
-    public void setNonJtaDataSource(final DataSource nonJtaDataSource)
+    public TapestryPersistenceUnitInfo nonJtaDataSource(final String nonJtaDataSource)
     {
-        this.nonJtaDataSource = nonJtaDataSource;
+        this.nonJtaDataSource = lookupDataSource(nonJtaDataSource);
+
+        return this;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void setJtaDataSource(final DataSource jtaDataSource)
+    public TapestryPersistenceUnitInfo jtaDataSource(final String jtaDataSource)
     {
-        this.jtaDataSource = jtaDataSource;
+        this.jtaDataSource =  lookupDataSource(jtaDataSource);
+
+        return this;
     }
 
     /**
@@ -146,10 +155,19 @@ public class PersistenceUnitInfoImpl imp
     /**
      * {@inheritDoc}
      */
-    public void addMappingFileName(final String fileName)
+    public TapestryPersistenceUnitInfo addMappingFileName(final String fileName)
     {
         mappingFilesNames.add(fileName);
 
+        return this;
+
+    }
+
+    public TapestryPersistenceUnitInfo addProperty(String name, String value)
+    {
+        getProperties().put(name, value);
+
+        return this;
     }
 
     /**
@@ -179,17 +197,21 @@ public class PersistenceUnitInfoImpl imp
     /**
      * {@inheritDoc}
      */
-    public void addManagedClassName(final String className)
+    public TapestryPersistenceUnitInfo addManagedClassName(final String className)
     {
         managedClassNames.add(className);
+
+        return this;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void addManagedClass(final Class<?> clazz)
+    public TapestryPersistenceUnitInfo addManagedClass(final Class<?> clazz)
     {
         addManagedClassName(clazz.getName());
+
+        return this;
     }
 
     /**
@@ -211,9 +233,11 @@ public class PersistenceUnitInfoImpl imp
     /**
      * {@inheritDoc}
      */
-    public void setSharedCacheMode(final SharedCacheMode cacheMode)
+    public TapestryPersistenceUnitInfo sharedCacheMode(final SharedCacheMode cacheMode)
     {
         sharedCacheMode = cacheMode;
+
+        return this;
     }
 
     /**
@@ -227,9 +251,11 @@ public class PersistenceUnitInfoImpl imp
     /**
      * {@inheritDoc}
      */
-    public void setValidationMode(final ValidationMode validationMode)
+    public TapestryPersistenceUnitInfo validationMode(final ValidationMode validationMode)
     {
         this.validationMode = validationMode;
+
+        return this;
     }
 
     /**
@@ -277,4 +303,23 @@ public class PersistenceUnitInfoImpl imp
         return getClassLoader();
     }
 
+
+    private DataSource lookupDataSource(final String name)
+    {
+        try
+        {
+            // TODO: Create InitialContext with environment properties?
+            final Context initContext = new InitialContext();
+
+            final Context envContext = (Context) initContext.lookup("java:comp/env");
+
+            return (DataSource) envContext.lookup(name);
+        }
+        catch (final NamingException e)
+        {
+            throw new RuntimeException(e);
+        }
+
+    }
+
 }

Modified: tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/jpa/TapestryPersistenceUnitInfo.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/jpa/TapestryPersistenceUnitInfo.java?rev=1127674&r1=1127673&r2=1127674&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/jpa/TapestryPersistenceUnitInfo.java (original)
+++ tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/jpa/TapestryPersistenceUnitInfo.java Wed May 25 20:40:56 2011
@@ -18,27 +18,26 @@ import javax.persistence.SharedCacheMode
 import javax.persistence.ValidationMode;
 import javax.persistence.spi.PersistenceUnitInfo;
 import javax.persistence.spi.PersistenceUnitTransactionType;
-import javax.sql.DataSource;
 
 public interface TapestryPersistenceUnitInfo extends PersistenceUnitInfo
 {
-    void setPersistenceUnitName(String persistenceUnitName);
+    TapestryPersistenceUnitInfo persistenceProviderClassName(String persistenceProviderClassName);
 
-    void setPersistenceProviderClassName(String persistenceProviderClassName);
+    TapestryPersistenceUnitInfo transactionType(PersistenceUnitTransactionType transactionType);
 
-    void setTransactionType(PersistenceUnitTransactionType transactionType);
+    TapestryPersistenceUnitInfo nonJtaDataSource(String nonJtaDataSource);
 
-    void setNonJtaDataSource(DataSource nonJtaDataSource);
+    TapestryPersistenceUnitInfo jtaDataSource(String jtaDataSource);
 
-    void setJtaDataSource(DataSource jtaDataSource);
+    TapestryPersistenceUnitInfo addManagedClassName(String className);
 
-    void addManagedClassName(String className);
+    TapestryPersistenceUnitInfo addManagedClass(Class<?> clazz);
 
-    void addManagedClass(Class<?> clazz);
+    TapestryPersistenceUnitInfo sharedCacheMode(SharedCacheMode cacheMode);
 
-    void setSharedCacheMode(SharedCacheMode cacheMode);
+    TapestryPersistenceUnitInfo validationMode(ValidationMode validationMode);
 
-    void setValidationMode(ValidationMode validationMode);
+    TapestryPersistenceUnitInfo addMappingFileName(String string);
 
-    void addMappingFileName(String string);
+    TapestryPersistenceUnitInfo addProperty(String name, String value);
 }

Modified: tapestry/tapestry5/trunk/tapestry-jpa/src/test/java/org/example/app1/services/AppModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-jpa/src/test/java/org/example/app1/services/AppModule.java?rev=1127674&r1=1127673&r2=1127674&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-jpa/src/test/java/org/example/app1/services/AppModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-jpa/src/test/java/org/example/app1/services/AppModule.java Wed May 25 20:40:56 2011
@@ -65,13 +65,11 @@ public class AppModule
         {
             public void configure(final TapestryPersistenceUnitInfo unitInfo)
             {
-                final Properties properties = unitInfo.getProperties();
-                properties.put("javax.persistence.jdbc.driver", "org.h2.Driver");
-                properties.put("javax.persistence.jdbc.url", "jdbc:h2:mem:test");
-                properties.put("eclipselink.ddl-generation", "create-tables");
-                properties.put("eclipselink.logging.level", "fine");
-
-                unitInfo.addManagedClass(Thang.class);
+                unitInfo.addProperty("javax.persistence.jdbc.driver", "org.h2.Driver")
+                        .addProperty("javax.persistence.jdbc.url", "jdbc:h2:mem:test")
+                        .addProperty("eclipselink.ddl-generation", "create-tables")
+                        .addProperty("eclipselink.logging.level", "fine")
+                        .addManagedClass(Thang.class);
             }
         };
 

Modified: tapestry/tapestry5/trunk/tapestry-jpa/src/test/java/org/example/app3/services/AppModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-jpa/src/test/java/org/example/app3/services/AppModule.java?rev=1127674&r1=1127673&r2=1127674&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-jpa/src/test/java/org/example/app3/services/AppModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-jpa/src/test/java/org/example/app3/services/AppModule.java Wed May 25 20:40:56 2011
@@ -19,8 +19,10 @@ import org.apache.tapestry5.ioc.annotati
 import org.apache.tapestry5.ioc.annotations.SubModule;
 import org.apache.tapestry5.ioc.services.ApplicationDefaults;
 import org.apache.tapestry5.ioc.services.SymbolProvider;
-import org.apache.tapestry5.jpa.JpaModule;
-import org.apache.tapestry5.jpa.JpaSymbols;
+import org.apache.tapestry5.jpa.*;
+import org.example.app1.AppConstants;
+import org.example.app1.entities.Thang;
+import org.example.app1.entities.User;
 
 @SubModule(JpaModule.class)
 public class AppModule
@@ -30,6 +32,28 @@ public class AppModule
     public static void provideFactoryDefaults(
             final MappedConfiguration<String, String> configuration)
     {
-        configuration.add(JpaSymbols.PERSISTENCE_DESCRIPTOR, "/jndi-datasource-persistence-unit.xml");
+        //META-INF/persistence.xml is already on the test classpath,
+        //so we need to pretend as if it doesn't exists
+        configuration.add(JpaSymbols.PERSISTENCE_DESCRIPTOR, "/does-not-exist.xml");
+    }
+
+    @Contribute(EntityManagerSource.class)
+    public static void configurePersistenceUnitInfos(
+            final MappedConfiguration<String, PersistenceUnitConfigurer> configuration)
+    {
+
+        final PersistenceUnitConfigurer configurer = new PersistenceUnitConfigurer()
+        {
+            public void configure(final TapestryPersistenceUnitInfo unitInfo)
+            {
+                unitInfo.nonJtaDataSource("jdbc/JPATest")
+                        .addMappingFileName("mappings.xml")
+                        .addProperty("eclipselink.ddl-generation", "create-tables")
+                        .addProperty("eclipselink.logging.level", "fine");
+            }
+        };
+
+        configuration.add("JndiDataSourcePersistenceUnit", configurer);
+
     }
 }