Author: awhite
Date: Tue Nov 7 10:37:33 2006
New Revision: 472193
URL: http://svn.apache.org/viewvc?view=rev&rev=472193
Log:
Fix recently-introduced bugs in conversion between JPA facades and underlying
components.
Modified:
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/DiscriminatorMappingInfo.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ValueMapDiscriminatorStrategy.java
incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/OpenJPAPersistence.java
incubator/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties
Modified:
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/DiscriminatorMappingInfo.java
URL:
http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/DiscriminatorMappingInfo.java?view=diff&rev=472193&r1=472192&r2=472193
==============================================================================
---
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/DiscriminatorMappingInfo.java
(original)
+++
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/DiscriminatorMappingInfo.java
Tue Nov 7 10:37:33 2006
@@ -79,7 +79,7 @@
}
}
if ("null".equalsIgnoreCase(_value))
- return (Discriminator.NULL);
+ return Discriminator.NULL;
// strip quotes
if (_value.length() > 0 && _value.charAt(0) == '\'')
Modified:
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ValueMapDiscriminatorStrategy.java
URL:
http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ValueMapDiscriminatorStrategy.java?view=diff&rev=472193&r1=472192&r2=472193
==============================================================================
---
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ValueMapDiscriminatorStrategy.java
(original)
+++
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ValueMapDiscriminatorStrategy.java
Tue Nov 7 10:37:33 2006
@@ -93,9 +93,8 @@
if (cls != null)
return cls;
throw new ClassNotFoundException(_loc.get("unknown-discrim-value",
- new Object[]{ str,
- disc.getClassMapping().getDescribedType().getName(),
- new TreeSet(_vals.keySet()) }).getMessage());
+ new Object[]{ str, disc.getClassMapping().getDescribedType().
+ getName(), new TreeSet(_vals.keySet()) }).getMessage());
}
/**
@@ -123,6 +122,8 @@
throw new MetaDataException(_loc.get("no-discrim-value",
disc.getClassMapping()));
+ // we set the value before mapping to use to calculate the template
+ // column's java type
disc.setValue(val);
super.map(adapt);
}
Modified:
incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/OpenJPAPersistence.java
URL:
http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/OpenJPAPersistence.java?view=diff&rev=472193&r1=472192&r2=472193
==============================================================================
---
incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/OpenJPAPersistence.java
(original)
+++
incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/OpenJPAPersistence.java
Tue Nov 7 10:37:33 2006
@@ -85,8 +85,17 @@
public static BrokerFactory toBrokerFactory(EntityManagerFactory emf) {
if (emf == null)
return null;
- emf = (EntityManagerFactory)
- ((OpenJPAEntityManagerFactory) emf).getUserObject(EMF_KEY);
+ if (!(emf instanceof EntityManagerFactoryImpl)) {
+ Class c = emf.getClass();
+ try {
+ // either cast here may fail
+ emf = (EntityManagerFactoryImpl) ((OpenJPAEntityManagerFactory)
+ emf).getUserObject(EMF_KEY);
+ } catch (ClassCastException cce) {
+ throw new ArgumentException(_loc.get
+ ("cant-convert-brokerfactory", c), null, null, false);
+ }
+ }
return ((EntityManagerFactoryImpl) emf).getBrokerFactory();
}
@@ -122,8 +131,18 @@
public static Broker toBroker(EntityManager em) {
if (em == null)
return null;
- em = (EntityManager) ((OpenJPAEntityManager) em).getUserObject(EM_KEY);
- return (em == null) ? null : ((EntityManagerImpl) em).getBroker();
+ if (!(em instanceof EntityManagerImpl)) {
+ Class c = em.getClass();
+ try {
+ // either cast here may fail
+ em = (EntityManagerImpl) ((OpenJPAEntityManager) em).
+ getUserObject(EM_KEY);
+ } catch (ClassCastException cce) {
+ throw new ArgumentException(_loc.get("cant-convert-broker", c),
+ null, null, false);
+ }
+ }
+ return ((EntityManagerImpl) em).getBroker();
}
/**
Modified:
incubator/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties
URL:
http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties?view=diff&rev=472193&r1=472192&r2=472193
==============================================================================
---
incubator/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties
(original)
+++
incubator/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties
Tue Nov 7 10:37:33 2006
@@ -90,6 +90,10 @@
to "{1}"
unrecognized-provider: WARNING: Found unrecognized persistence provider "{0}" \
in place of OpenJPA provider. This provider's properties will not be used.
+cant-convert-brokerfactory: Unable to convert EntityManagerFactory of type \
+ "{0}" into a BrokerFactory.
+cant-convert-broker: Unable to convert EntityManager of type "{0}" into a \
+ Broker.
EntityManagerFactory-name: EntityManagerFactory implementation
EntityManagerFactory-desc: Allows extension of standard \
org.apache.openjpa.persistence.EntityManagerFactoryImpl for custom
behavior.