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);
+
}
}