You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ma...@apache.org on 2010/01/28 13:30:49 UTC
svn commit: r904063 - in /incubator/aries/trunk/jpa: jpa-container-context/
jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/
jpa-container/
jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/ ...
Author: mahrwald
Date: Thu Jan 28 12:30:48 2010
New Revision: 904063
URL: http://svn.apache.org/viewvc?rev=904063&view=rev
Log:
ARIES-131 Add persistence.xml and EntityManager proxying for JPA2
Added:
incubator/aries/trunk/jpa/jpa-container/src/test/resources/file22/
incubator/aries/trunk/jpa/jpa-container/src/test/resources/file22/META-INF/
incubator/aries/trunk/jpa/jpa-container/src/test/resources/file22/META-INF/persistence.xml
Modified:
incubator/aries/trunk/jpa/jpa-container-context/pom.xml
incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManager.java
incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAPersistenceContextRegistry.java
incubator/aries/trunk/jpa/jpa-container/pom.xml
incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.java
incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/JPAHandler.java
incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/PersistenceUnitImpl.java
incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/SchemaLocatingHandler.java
incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/PersistenceUnitInfoImpl.java
incubator/aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/jpa/container/parsing/PersistenceXMLParsingTest.java
Modified: incubator/aries/trunk/jpa/jpa-container-context/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container-context/pom.xml?rev=904063&r1=904062&r2=904063&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container-context/pom.xml (original)
+++ incubator/aries/trunk/jpa/jpa-container-context/pom.xml Thu Jan 28 12:30:48 2010
@@ -113,9 +113,9 @@
<instructions>
<Bundle-SymbolicName>${pom.groupId}.container.context</Bundle-SymbolicName>
<Import-Package>
- javax.persistence;version="[1.0.0,1.2.0)",
- javax.persistence.criteria;version="[1.1.0,1.2.0)";resolution:=optional,
- javax.persistence.metamodel;version="[1.1.0,1.2.0)";resolution:=optional,
+ javax.persistence;version="[1.0.0,2.1.0)",
+ javax.persistence.criteria;version="[1.1.0,2.1.0)";resolution:=optional,
+ javax.persistence.metamodel;version="[1.1.0,2.1.0)";resolution:=optional,
*
</Import-Package>
<_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
Modified: incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManager.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManager.java?rev=904063&r1=904062&r2=904063&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManager.java (original)
+++ incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManager.java Thu Jan 28 12:30:48 2010
@@ -49,7 +49,7 @@
public void clear()
{
- EntityManager em = reg.getCurrentPersistenceContext(emf, props);
+ EntityManager em = reg.getCurrentOrNoPersistenceContext(emf, props);
if(em != null)
em.clear();
}
@@ -62,7 +62,7 @@
public boolean contains(Object arg0)
{
- EntityManager em = reg.getCurrentPersistenceContext(emf, props);
+ EntityManager em = reg.getCurrentOrNoPersistenceContext(emf, props);
if(em != null)
return em.contains(arg0);
else
@@ -71,57 +71,33 @@
public Query createNamedQuery(String arg0)
{
- EntityManager em = reg.getCurrentPersistenceContext(emf, props);
- if(em == null)
- em = emf.createEntityManager(props);
-
- return em.createNamedQuery(arg0);
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).createNamedQuery(arg0);
}
public Query createNativeQuery(String arg0)
{
- EntityManager em = reg.getCurrentPersistenceContext(emf, props);
- if(em == null)
- em = emf.createEntityManager(props);
-
- return em.createNativeQuery(arg0);
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).createNativeQuery(arg0);
}
@SuppressWarnings("unchecked")
public Query createNativeQuery(String arg0, Class arg1)
{
- EntityManager em = reg.getCurrentPersistenceContext(emf, props);
- if(em == null)
- em = emf.createEntityManager(props);
-
- return em.createNativeQuery(arg0, arg1);
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).createNativeQuery(arg0, arg1);
}
public Query createNativeQuery(String arg0, String arg1)
{
- EntityManager em = reg.getCurrentPersistenceContext(emf, props);
- if(em == null)
- em = emf.createEntityManager(props);
-
- return em.createNativeQuery(arg0, arg1);
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).createNativeQuery(arg0, arg1);
}
public Query createQuery(String arg0)
{
- EntityManager em = reg.getCurrentPersistenceContext(emf, props);
- if(em == null)
- em = emf.createEntityManager(props);
-
- return em.createQuery(arg0);
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).createQuery(arg0);
}
public <T> T find(Class<T> arg0, Object arg1)
{
- EntityManager em = reg.getCurrentPersistenceContext(emf, props);
- if(em == null)
- em = emf.createEntityManager(props);
-
- return em.find(arg0, arg1);
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).find(arg0, arg1);
}
public void flush()
@@ -131,29 +107,17 @@
public Object getDelegate()
{
- EntityManager em = reg.getCurrentPersistenceContext(emf, props);
- if(em == null)
- em = emf.createEntityManager(props);
-
- return em.getDelegate();
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).getDelegate();
}
public FlushModeType getFlushMode()
{
- EntityManager em = reg.getCurrentPersistenceContext(emf, props);
- if(em == null)
- em = emf.createEntityManager(props);
-
- return em.getFlushMode();
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).getFlushMode();
}
public <T> T getReference(Class<T> arg0, Object arg1)
{
- EntityManager em = reg.getCurrentPersistenceContext(emf, props);
- if(em == null)
- em = emf.createEntityManager(props);
-
- return em.getReference(arg0, arg1);
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).getReference(arg0, arg1);
}
public EntityTransaction getTransaction()
@@ -199,118 +163,104 @@
public void setFlushMode(FlushModeType arg0)
{
- EntityManager em = reg.getCurrentPersistenceContext(emf, props);
- if(em == null)
- em = emf.createEntityManager(props);
-
- em.setFlushMode(arg0);
+ reg.getCurrentOrDetachedPersistenceContext(emf, props).setFlushMode(arg0);
}
public <T> TypedQuery<T> createNamedQuery(String arg0, Class<T> arg1)
{
- // TODO Auto-generated method stub
- return null;
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).createNamedQuery(arg0, arg1);
}
public <T> TypedQuery<T> createQuery(CriteriaQuery<T> arg0)
{
- // TODO Auto-generated method stub
- return null;
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).createQuery(arg0);
}
public <T> TypedQuery<T> createQuery(String arg0, Class<T> arg1)
{
- // TODO Auto-generated method stub
- return null;
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).createQuery(arg0, arg1);
}
public void detach(Object arg0)
{
- // TODO Auto-generated method stub
-
+ reg.getCurrentOrDetachedPersistenceContext(emf, props).detach(arg0);
}
public <T> T find(Class<T> arg0, Object arg1, Map<String, Object> arg2)
{
- // TODO Auto-generated method stub
- return null;
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).find(arg0, arg1, arg2);
}
public <T> T find(Class<T> arg0, Object arg1, LockModeType arg2)
{
- // TODO Auto-generated method stub
- return null;
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).find(arg0, arg1, arg2);
}
public <T> T find(Class<T> arg0, Object arg1, LockModeType arg2, Map<String, Object> arg3)
{
- // TODO Auto-generated method stub
- return null;
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).find(arg0, arg1, arg2, arg3);
}
public CriteriaBuilder getCriteriaBuilder()
{
- // TODO Auto-generated method stub
- return null;
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).getCriteriaBuilder();
}
public EntityManagerFactory getEntityManagerFactory()
{
- // TODO Auto-generated method stub
- return null;
+ return emf;
}
public LockModeType getLockMode(Object arg0)
{
- // TODO Auto-generated method stub
- return null;
+ return reg.getCurrentPersistenceContext(emf, props).getLockMode(arg0);
}
public Metamodel getMetamodel()
{
- // TODO Auto-generated method stub
- return null;
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).getMetamodel();
}
public Map<String, Object> getProperties()
{
- // TODO Auto-generated method stub
- return null;
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).getProperties();
}
public void lock(Object arg0, LockModeType arg1, Map<String, Object> arg2)
{
- // TODO Auto-generated method stub
-
+ reg.getCurrentPersistenceContext(emf, props).lock(arg0, arg1, arg2);
}
public void refresh(Object arg0, Map<String, Object> arg1)
{
- // TODO Auto-generated method stub
-
+ reg.getCurrentPersistenceContext(emf, props).refresh(arg0, arg1);
}
public void refresh(Object arg0, LockModeType arg1)
{
- // TODO Auto-generated method stub
-
+ reg.getCurrentPersistenceContext(emf, props).refresh(arg0, arg1);
}
public void refresh(Object arg0, LockModeType arg1, Map<String, Object> arg2)
{
- // TODO Auto-generated method stub
-
+ reg.getCurrentPersistenceContext(emf, props).refresh(arg0, arg1, arg2);
}
public void setProperty(String arg0, Object arg1)
- {
- // TODO Auto-generated method stub
-
+ {
+ /*
+ * TODO: check this
+ * We don't update props because the changed property should only be visible to the
+ * EntityManager of the current transaction !?
+ */
+ EntityManager em = reg.getCurrentOrNoPersistenceContext(emf, props);
+ if (em != null) {
+ em.setProperty(arg0, arg1);
+ }
}
public <T> T unwrap(Class<T> arg0)
{
- // TODO Auto-generated method stub
- return null;
+ return reg.getCurrentOrDetachedPersistenceContext(emf, props).unwrap(arg0);
}
}
Modified: incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAPersistenceContextRegistry.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAPersistenceContextRegistry.java?rev=904063&r1=904062&r2=904063&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAPersistenceContextRegistry.java (original)
+++ incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAPersistenceContextRegistry.java Thu Jan 28 12:30:48 2010
@@ -53,7 +53,8 @@
* automatically be closed when the transaction completes.
*
* @param persistenceUnit The peristence unit to create the persitence context from
- * @param properties Any properties that should be passed on the call to {@code createEntityManager()}
+ * @param properties Any properties that should be passed on the call to {@code createEntityManager()}.
+ * The properties are NOT used for retrieving an already created persistence context.
*
* @return A persistence context associated with the current transaction. Note that this will
* need to be wrappered to obey the JPA spec by throwing the correct exceptions
@@ -92,7 +93,45 @@
return toReturn;
}
+
+ /**
+ * Get the persistence context for the current transaction if a transaction is active.
+ * {@link getCurrentPersistenceContext}
+ *
+ * Otherwise return a freshly created persistence context that is not associated with any
+ * transaction.
+ *
+ * @param persistenceUnit
+ * @param properties
+ * @return An {@link EntityManager} object
+ */
+ public EntityManager getCurrentOrDetachedPersistenceContext(EntityManagerFactory persistenceUnit, Map<?,?> properties)
+ {
+ if (tranRegistry.getTransactionKey() != null)
+ return getCurrentPersistenceContext(persistenceUnit, properties);
+ else
+ return persistenceUnit.createEntityManager(properties);
+ }
+
+ /**
+ * Get the persistence context for the current transaction if a transaction is active.
+ * {@link getCurrentPersistenceContext}
+ *
+ * Otherwise return null;
+ *
+ * @param persistenceUnit
+ * @param properties
+ * @return The {@link EntityManager} object or null if there is no active transaction.
+ */
+ public EntityManager getCurrentOrNoPersistenceContext(EntityManagerFactory persistenceUnit, Map<?,?> properties)
+ {
+ if (tranRegistry.getTransactionKey() != null)
+ return getCurrentPersistenceContext(persistenceUnit, properties);
+ else
+ return null;
+ }
+
/**
* Provide a {@link TransactionSynchronizationRegistry} to use
* @param tranRegistry
Modified: incubator/aries/trunk/jpa/jpa-container/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/pom.xml?rev=904063&r1=904062&r2=904063&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/pom.xml (original)
+++ incubator/aries/trunk/jpa/jpa-container/pom.xml Thu Jan 28 12:30:48 2010
@@ -104,6 +104,8 @@
<Import-Package>
javax.persistence;version="[1.0.0,2.1.0)",
javax.persistence.spi;version="[1.0.0,2.1.0)",
+ javax.persistence.criteria;version="[1.1.0,2.1.0)";resolution:=optional,
+ javax.persistence.metamodel;version="[1.1.0,2.1.0)";resolution:=optional,
*
</Import-Package>
<Export-Package>
Modified: incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.java?rev=904063&r1=904062&r2=904063&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.java (original)
+++ incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/ParsedPersistenceUnit.java Thu Jan 28 12:30:48 2010
@@ -62,6 +62,14 @@
/** A {@link Boolean} indicating whether unlisted classes should be excluded */
public static final String EXCLUDE_UNLISTED_CLASSES = "org.apache.aries.jpa.exclude.unlisted";
+ /* JPA 2 extensions */
+
+ /** The caching type of the persistence unit. This will only be available for JPA2 persistence units. */
+ public static final String SHARED_CACHE_MODE = "org.apache.aries.jpa2.shared.cache.mode";
+ /** The validation mode of the persistence unit. This will only be available for JPA2 persistence units. */
+ public static final String VALIDATION_MODE = "org.apache.aries.jpa2.validation.mode";
+
+
/* End of Map keys */
/** This property is used in the JPA properties to indicate a provider version range */
Modified: incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/JPAHandler.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/JPAHandler.java?rev=904063&r1=904062&r2=904063&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/JPAHandler.java (original)
+++ incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/JPAHandler.java Thu Jan 28 12:30:48 2010
@@ -106,6 +106,10 @@
pu.addClassName(s);
else if("exclude-unlisted-classes".equals(elementName))
pu.setExcludeUnlisted(Boolean.parseBoolean(s));
+ else if ("2.0".equals(jpaVersion) && "shared-cache-mode".equals(elementName))
+ pu.setSharedCacheMode(s);
+ else if ("2.0".equals(jpaVersion) && "validation-mode".equals(elementName))
+ pu.setValidationMode(s);
}
@Override
Modified: incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/PersistenceUnitImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/PersistenceUnitImpl.java?rev=904063&r1=904062&r2=904063&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/PersistenceUnitImpl.java (original)
+++ incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/PersistenceUnitImpl.java Thu Jan 28 12:30:48 2010
@@ -184,6 +184,22 @@
provider = providerRef;
}
+ /**
+ * @param sharedCacheMode
+ */
+ public void setSharedCacheMode(String sharedCacheMode)
+ {
+ metadata.put(SHARED_CACHE_MODE, sharedCacheMode);
+ }
+
+ /**
+ * @param validationMode
+ */
+ public void setValidationMode(String validationMode)
+ {
+ metadata.put(VALIDATION_MODE, validationMode);
+ }
+
public String toString()
{
return "Persistence unit " + metadata.get(UNIT_NAME) + " in bundle "
Modified: incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/SchemaLocatingHandler.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/SchemaLocatingHandler.java?rev=904063&r1=904062&r2=904063&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/SchemaLocatingHandler.java (original)
+++ incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/impl/SchemaLocatingHandler.java Thu Jan 28 12:30:48 2010
@@ -88,11 +88,19 @@
if("1.0".equals(type)) {
try{
schemaURL = new URL("http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd");
- }catch(Exception e){
+ }catch(Exception e) {
//will not occur with fixed url above.
}
+ } else if ("2.0".equals(type)) {
+ try {
+ //TODO use proper schema location
+ schemaURL = new URL("http://svn.apache.org/repos/asf/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/persistence_2_0-xsd.rsrc");
+ } catch (Exception e) {
+ //will not occur with fixed url above
+ }
}
- //TODO handle JPA 2.0
+
+
if(schemaURL != null){
schema = schemaFactory.newSchema(schemaURL);
}
Modified: incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/PersistenceUnitInfoImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/PersistenceUnitInfoImpl.java?rev=904063&r1=904062&r2=904063&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/PersistenceUnitInfoImpl.java (original)
+++ incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/PersistenceUnitInfoImpl.java Thu Jan 28 12:30:48 2010
@@ -163,8 +163,12 @@
}
public SharedCacheMode getSharedCacheMode() {
- // TODO This needs to be supported once we parse JPA 2.0 xml
- return SharedCacheMode.UNSPECIFIED;
+ String s = (String) unit.getPersistenceXmlMetadata().get(ParsedPersistenceUnit.SHARED_CACHE_MODE);
+
+ if (s == null)
+ return SharedCacheMode.UNSPECIFIED;
+ else
+ return SharedCacheMode.valueOf(s);
}
public PersistenceUnitTransactionType getTransactionType() {
@@ -178,8 +182,13 @@
}
public ValidationMode getValidationMode() {
- // TODO This needs to be supported once we parse JPA 2.0 xml
- return ValidationMode.AUTO;
+ String s = (String) unit.getPersistenceXmlMetadata().get(ParsedPersistenceUnit.VALIDATION_MODE);
+
+ if (s == null)
+ return ValidationMode.AUTO;
+ else
+ return ValidationMode.valueOf(s);
+
}
}
\ No newline at end of file
Modified: incubator/aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/jpa/container/parsing/PersistenceXMLParsingTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/jpa/container/parsing/PersistenceXMLParsingTest.java?rev=904063&r1=904062&r2=904063&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/jpa/container/parsing/PersistenceXMLParsingTest.java (original)
+++ incubator/aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/jpa/container/parsing/PersistenceXMLParsingTest.java Thu Jan 28 12:30:48 2010
@@ -235,6 +235,36 @@
is.close();
}
}
+
+ @Test
+ public void testJPA2() throws Exception
+ {
+ InputStream is = null;
+ try {
+ String location = "file22/META-INF/persistence.xml";
+ is = getClass().getClassLoader().getResourceAsStream(location);
+ PersistenceDescriptor descriptor = new PersistenceDescriptorImpl(location, is);
+
+ Bundle b = Skeleton.newMock(Bundle.class);
+ List<ParsedPersistenceUnit> parsedUnits = getList(PersistenceDescriptorParser.parse(b, descriptor));
+
+ assertEquals(2, parsedUnits.size());
+
+ ParsedPersistenceUnit customUnit = parsedUnits.get(0);
+ assertEquals("ENABLE_SELECTIVE", customUnit.getPersistenceXmlMetadata().get(ParsedPersistenceUnit.SHARED_CACHE_MODE));
+ assertEquals("CALLBACK", customUnit.getPersistenceXmlMetadata().get(ParsedPersistenceUnit.VALIDATION_MODE));
+
+
+ ParsedPersistenceUnit defaultUnit = parsedUnits.get(1);
+ assertNull(defaultUnit.getPersistenceXmlMetadata().get(ParsedPersistenceUnit.SHARED_CACHE_MODE));
+ assertNull(defaultUnit.getPersistenceXmlMetadata().get(ParsedPersistenceUnit.VALIDATION_MODE));
+
+
+ } finally {
+ if (is != null)
+ is.close();
+ }
+ }
/**
* Sort a Collection of ParsedPersistenceUnit into alphabetical order (by unit name)
Added: incubator/aries/trunk/jpa/jpa-container/src/test/resources/file22/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/test/resources/file22/META-INF/persistence.xml?rev=904063&view=auto
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/test/resources/file22/META-INF/persistence.xml (added)
+++ incubator/aries/trunk/jpa/jpa-container/src/test/resources/file22/META-INF/persistence.xml Thu Jan 28 12:30:48 2010
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
+ <persistence-unit name="default" />
+
+ <persistence-unit name="custom" transaction-type="JTA">
+ <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
+ <validation-mode>CALLBACK</validation-mode>
+ </persistence-unit>
+</persistence>
\ No newline at end of file