mirror of https://github.com/apache/openjpa.git
Tolerate container failure better, now that we can handle non-enhanced types.
git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@563705 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
63c3748900
commit
b7fe66357b
|
@ -37,6 +37,7 @@ import org.apache.openjpa.kernel.Bootstrap;
|
||||||
import org.apache.openjpa.kernel.BrokerFactory;
|
import org.apache.openjpa.kernel.BrokerFactory;
|
||||||
import org.apache.openjpa.lib.conf.ConfigurationProvider;
|
import org.apache.openjpa.lib.conf.ConfigurationProvider;
|
||||||
import org.apache.openjpa.lib.conf.Configurations;
|
import org.apache.openjpa.lib.conf.Configurations;
|
||||||
|
import org.apache.openjpa.lib.util.Localizer;
|
||||||
import org.apache.openjpa.meta.MetaDataModes;
|
import org.apache.openjpa.meta.MetaDataModes;
|
||||||
import org.apache.openjpa.meta.MetaDataRepository;
|
import org.apache.openjpa.meta.MetaDataRepository;
|
||||||
import org.apache.openjpa.util.ClassResolver;
|
import org.apache.openjpa.util.ClassResolver;
|
||||||
|
@ -53,6 +54,9 @@ public class PersistenceProviderImpl
|
||||||
|
|
||||||
static final String CLASS_TRANSFORMER_OPTIONS = "ClassTransformerOptions";
|
static final String CLASS_TRANSFORMER_OPTIONS = "ClassTransformerOptions";
|
||||||
|
|
||||||
|
private static final Localizer _loc = Localizer.forPackage(
|
||||||
|
PersistenceProviderImpl.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the entity manager specified by <code>name</code>, applying
|
* Loads the entity manager specified by <code>name</code>, applying
|
||||||
* the properties in <code>m</code> as overrides to the properties defined
|
* the properties in <code>m</code> as overrides to the properties defined
|
||||||
|
@ -91,10 +95,16 @@ public class PersistenceProviderImpl
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
// add enhancer
|
// add enhancer
|
||||||
|
Exception transformerException = null;
|
||||||
String ctOpts = (String) Configurations.getProperty
|
String ctOpts = (String) Configurations.getProperty
|
||||||
(CLASS_TRANSFORMER_OPTIONS, pui.getProperties());
|
(CLASS_TRANSFORMER_OPTIONS, pui.getProperties());
|
||||||
pui.addTransformer(new ClassTransformerImpl(cp, ctOpts,
|
try {
|
||||||
pui.getNewTempClassLoader()));
|
pui.addTransformer(new ClassTransformerImpl(cp, ctOpts,
|
||||||
|
pui.getNewTempClassLoader()));
|
||||||
|
} catch (Exception e) {
|
||||||
|
// fail gracefully
|
||||||
|
transformerException = e;
|
||||||
|
}
|
||||||
|
|
||||||
// if the BrokerImpl hasn't been specified, switch to the
|
// if the BrokerImpl hasn't been specified, switch to the
|
||||||
// non-finalizing one, since anything claiming to be a container
|
// non-finalizing one, since anything claiming to be a container
|
||||||
|
@ -107,6 +117,11 @@ public class PersistenceProviderImpl
|
||||||
|
|
||||||
BrokerFactory factory = Bootstrap.newBrokerFactory(cp,
|
BrokerFactory factory = Bootstrap.newBrokerFactory(cp,
|
||||||
pui.getClassLoader());
|
pui.getClassLoader());
|
||||||
|
if (transformerException != null)
|
||||||
|
factory.getConfiguration().getLog(
|
||||||
|
OpenJPAConfiguration.LOG_RUNTIME).warn(
|
||||||
|
_loc.get("transformer-registration-error", pui),
|
||||||
|
transformerException);
|
||||||
return OpenJPAPersistence.toEntityManagerFactory(factory);
|
return OpenJPAPersistence.toEntityManagerFactory(factory);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw PersistenceExceptions.toPersistenceException(e);
|
throw PersistenceExceptions.toPersistenceException(e);
|
||||||
|
|
|
@ -125,6 +125,9 @@ no-setter-for-getter: No setter was found for method {0} in type {1} while \
|
||||||
searching for persistent properties. This method will be ignored. If you \
|
searching for persistent properties. This method will be ignored. If you \
|
||||||
intended for this to be persistent, please add a corresponding setter, \
|
intended for this to be persistent, please add a corresponding setter, \
|
||||||
or switch to field access for this type hierarchy.
|
or switch to field access for this type hierarchy.
|
||||||
|
transformer-registration-error: An error occurred while registering a \
|
||||||
|
ClassTransformer with {0}. The error is logged along with this warning. \
|
||||||
|
Load-time class transformation will not be available.
|
||||||
|
|
||||||
EntityManagerFactory-name: EntityManagerFactory implementation
|
EntityManagerFactory-name: EntityManagerFactory implementation
|
||||||
EntityManagerFactory-desc: Allows extension of standard \
|
EntityManagerFactory-desc: Allows extension of standard \
|
||||||
|
|
Loading…
Reference in New Issue