Author: rmannibucau
Date: Wed Jan 9 21:36:54 2013
New Revision: 1431100
URL: http://svn.apache.org/viewvc?rev=1431100&view=rev
Log:
reverting enhancing in webappclassloader (since javaagent does it everywhere
and it cannot be propagated now) + keeping the minor fixes which were in the
patch == scanning of embeddable + algo to guess if a resource is a datasource
or not
Removed:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/EnhanceableClassLoader.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java?rev=1431100&r1=1431099&r2=1431100&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
Wed Jan 9 21:36:54 2013
@@ -18,30 +18,22 @@ package org.apache.openejb.assembler.cla
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.persistence.PersistenceUnitInfoImpl;
-import org.apache.openejb.util.LogCategory;
-import org.apache.openejb.util.Logger;
-import org.apache.openejb.util.classloader.EnhanceableClassLoader;
import javax.persistence.EntityManagerFactory;
import javax.persistence.ValidationMode;
-import javax.persistence.spi.ClassTransformer;
import javax.persistence.spi.PersistenceProvider;
-import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Callable;
public class EntityManagerFactoryCallable implements
Callable<EntityManagerFactory> {
public static final String OPENEJB_JPA_INIT_ENTITYMANAGER =
"openejb.jpa.init-entitymanager";
- public static final String OPENEJB_ENHANCE_OPENJPA =
"openejb.openjpa.auto-enhancing";
private final String persistenceProviderClassName;
private final PersistenceUnitInfoImpl unitInfo;
private ClassLoader appClassLoader;
- public EntityManagerFactoryCallable(final String
persistenceProviderClassName,
- final PersistenceUnitInfoImpl unitInfo,
- final ClassLoader cl) {
+ public EntityManagerFactoryCallable(String persistenceProviderClassName,
PersistenceUnitInfoImpl unitInfo, ClassLoader cl) {
this.persistenceProviderClassName = persistenceProviderClassName;
this.unitInfo = unitInfo;
this.appClassLoader = cl;
@@ -60,33 +52,11 @@ public class EntityManagerFactoryCallabl
if (!ValidationMode.NONE.equals(unitInfo.getValidationMode())) {
properties.put("javax.persistence.validator.ValidatorFactory",
new ValidatorFactoryWrapper());
}
-
EntityManagerFactory emf =
persistenceProvider.createContainerEntityManagerFactory(unitInfo, properties);
- if (isTrue(unitInfo, OPENEJB_ENHANCE_OPENJPA, false)) {
- if (!unitInfo.excludeUnlistedClasses()) {
- Logger.getInstance(LogCategory.OPENJPA,
EntityManagerFactoryCallable.class)
- .warning("Auto OpenJPA enhancing only works when
JPA classes are provided " +
- "either in persistence or through
openejb.jpa.auto-scan");
- }
-
- try {
- final Collection<ClassTransformer> transformers =
unitInfo.getTransformers();
-
- if (appClassLoader instanceof EnhanceableClassLoader) {
- final EnhanceableClassLoader enhanceableClassLoader =
(EnhanceableClassLoader) appClassLoader;
- enhanceableClassLoader.setTransformers(transformers,
unitInfo.getManagedClassNames());
- }
- } catch (Exception e) {
- Logger.getInstance(LogCategory.OPENJPA,
EntityManagerFactoryCallable.class)
- .warning("Can't enhance persistence unit " +
unitInfo.getId(), e);
- } catch (Error er) {
- Logger.getInstance(LogCategory.OPENJPA,
EntityManagerFactoryCallable.class)
- .warning("Can't enhance persistence unit " +
unitInfo.getId(), er);
- }
- }
-
- if (isTrue(unitInfo, OPENEJB_JPA_INIT_ENTITYMANAGER, false)) {
+ if ((unitInfo.getProperties() != null
+ &&
"true".equalsIgnoreCase(unitInfo.getProperties().getProperty(OPENEJB_JPA_INIT_ENTITYMANAGER)))
+ ||
SystemInstance.get().getOptions().get(OPENEJB_JPA_INIT_ENTITYMANAGER, false)) {
emf.createEntityManager().close();
}
@@ -104,11 +74,6 @@ public class EntityManagerFactoryCallabl
}
}
- private static boolean isTrue(final PersistenceUnitInfoImpl unitInfo,
final String key, final boolean defaultValue) {
- return (unitInfo.getProperties() != null &&
"true".equalsIgnoreCase(unitInfo.getProperties().getProperty(key)))
- || SystemInstance.get().getOptions().get(key,
defaultValue);
- }
-
public PersistenceUnitInfoImpl getUnitInfo() {
return unitInfo;
}
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1431100&r1=1431099&r2=1431100&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
Wed Jan 9 21:36:54 2013
@@ -1512,10 +1512,11 @@ public class AnnotationDeployer implemen
&&
"true".equalsIgnoreCase(pu.getProperties().getProperty(OPENEJB_JPA_AUTO_SCAN)))
{
final String packageName =
pu.getProperties().getProperty(OPENEJB_JPA_AUTO_SCAN_PACKAGE);
+ // no need of meta currently since JPA providers
doesn't support it
final List<Class<?>> classes = new
ArrayList<Class<?>>();
classes.addAll(finder.findAnnotatedClasses(Entity.class));
-
classes.addAll(finder.findAnnotatedClasses(MappedSuperclass.class));
classes.addAll(finder.findAnnotatedClasses(Embeddable.class));
+
classes.addAll(finder.findAnnotatedClasses(MappedSuperclass.class));
final List<String> existingClasses = pu.getClazz();
for (Class<?> clazz : classes) {
final String name = clazz.getName();
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java?rev=1431100&r1=1431099&r2=1431100&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
Wed Jan 9 21:36:54 2013
@@ -654,6 +654,7 @@ class AppInfoBuilder {
PersistenceProviderProperties.apply(appModule.getClassLoader(), info);
+
// Persistence Unit Root Url
appInfo.persistenceUnits.add(info);
}
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java?rev=1431100&r1=1431099&r2=1431100&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java
Wed Jan 9 21:36:54 2013
@@ -35,8 +35,6 @@ import java.net.URI;
import java.net.URL;
import java.security.ProtectionDomain;
import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
import java.util.List;
import java.util.Properties;
@@ -133,8 +131,6 @@ public class PersistenceUnitInfoImpl imp
/** does it need to be created lazily (not in constructor) */
private boolean lazilyInitialized;
- private Collection<ClassTransformer> transformers = new
HashSet<ClassTransformer>();
-
public PersistenceUnitInfoImpl() {
this.persistenceClassLoaderHandler = null;
}
@@ -289,7 +285,6 @@ public class PersistenceUnitInfoImpl imp
PersistenceClassFileTransformer classFileTransformer = new
PersistenceClassFileTransformer(classTransformer);
persistenceClassLoaderHandler.addTransformer(id, classLoader,
classFileTransformer);
}
- transformers.add(classTransformer);
}
public ClassLoader getNewTempClassLoader() {
@@ -482,8 +477,4 @@ public class PersistenceUnitInfoImpl imp
public void setNonJtaDataSourceName(String nonJtaDataSourceName) {
this.nonJtaDataSourceName = nonJtaDataSourceName;
}
-
- public Collection<ClassTransformer> getTransformers() {
- return transformers;
- }
}
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java?rev=1431100&r1=1431099&r2=1431100&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
Wed Jan 9 21:36:54 2013
@@ -85,7 +85,7 @@ public class URLClassLoaderFirst extends
}
// JSE classes?
- if (shouldTestSystemLoading(name)) {
+ if (canBeLoadedFromSystem(name)) {
try {
clazz = system.loadClass(name);
if (clazz != null) {
@@ -158,10 +158,6 @@ public class URLClassLoaderFirst extends
return null;
}
- protected boolean shouldTestSystemLoading(final String name) {
- return canBeLoadedFromSystem(name);
- }
-
// we skip webapp enrichment jars since we want to load them from the
webapp or lib
// Note: this is not a real limitation since it is first fail it will be
done later
public static boolean canBeLoadedFromSystem(final String name) {
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java?rev=1431100&r1=1431099&r2=1431100&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
Wed Jan 9 21:36:54 2013
@@ -18,7 +18,6 @@ package org.apache.tomee.catalina;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
-import org.apache.catalina.loader.ResourceEntry;
import org.apache.catalina.loader.WebappClassLoader;
import org.apache.openejb.ClassLoaderUtil;
import org.apache.openejb.OpenEJB;
@@ -27,22 +26,15 @@ import org.apache.openejb.classloader.We
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
-import org.apache.openejb.util.classloader.EnhanceableClassLoader;
import org.apache.openejb.util.classloader.URLClassLoaderFirst;
-import javax.persistence.spi.ClassTransformer;
import java.io.File;
import java.io.IOException;
-import java.lang.instrument.IllegalClassFormatException;
import java.net.MalformedURLException;
import java.net.URL;
-import java.security.CodeSource;
-import java.util.Collection;
import java.util.Enumeration;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-public class LazyStopWebappClassLoader extends WebappClassLoader implements
EnhanceableClassLoader {
+public class LazyStopWebappClassLoader extends WebappClassLoader {
private static final Logger LOGGER =
Logger.getInstance(LogCategory.OPENEJB,
LazyStopWebappClassLoader.class.getName());
public static final String TOMEE_WEBAPP_FIRST = "tomee.webapp-first";
@@ -50,7 +42,6 @@ public class LazyStopWebappClassLoader e
private boolean restarting = false;
private volatile Context relatedContext;
private boolean forceStopPhase =
Boolean.parseBoolean(SystemInstance.get().getProperty("tomee.webappclassloader.force-stop-phase",
"false"));
- private final Map<String, Collection<ClassTransformer>> transformers = new
ConcurrentHashMap<String, Collection<ClassTransformer>>();
private ClassLoaderConfigurer configurer = null;
public LazyStopWebappClassLoader() {
@@ -83,7 +74,7 @@ public class LazyStopWebappClassLoader e
||
"org.apache.openejb.eclipselink.JTATransactionController".equals(name)
||
"org.apache.tomee.mojarra.TomEEInjectionProvider".equals(name)) {
// don't load them from system classloader (breaks all in embedded
mode and no sense in other cases)
- synchronized (this) {
+ synchronized (system) {
final ClassLoader old = system;
system = NoClassClassLoader.INSTANCE;
try {
@@ -104,39 +95,6 @@ public class LazyStopWebappClassLoader e
return super.loadClass(name);
}
}
-
- if (transformers.keySet().contains(name)) {
- final String path = name.replace('.', '/').concat(".class");
- final ResourceEntry entry = findResourceInternal(name, path);
- Class<?> clazz = entry.loadedClass;
- if (clazz != null) {
- return clazz;
- }
-
- if (entry.binaryContent != null) {
- synchronized (this) {
- final CodeSource codeSource = new
CodeSource(entry.codeBase, entry.certificates);
- try {
- final byte[] enhanced =
Helper.enhance(transformers.get(name), this, name, null, null,
entry.binaryContent);
- entry.loadedClass = defineClass(name, enhanced, 0,
enhanced.length, codeSource);
- } catch (IllegalClassFormatException e) {
- LOGGER.error("Can't enhance " + name, e);
- try {
- entry.loadedClass = defineClass(name,
entry.binaryContent, 0, entry.binaryContent.length, codeSource);
- } catch (UnsupportedClassVersionError ucve) {
- throw new UnsupportedClassVersionError(
- ucve.getLocalizedMessage() + " " +
sm.getString("webappClassLoader.wrongVersion", name));
- }
- }
- entry.binaryContent = null;
- entry.source = null;
- entry.codeBase = null;
- entry.manifest = null;
- entry.certificates = null;
- }
- }
- }
-
return super.loadClass(name);
}
@@ -235,16 +193,6 @@ public class LazyStopWebappClassLoader e
return "LazyStop" + super.toString();
}
- @Override
- public void setTransformers(final Collection<ClassTransformer>
transformers, final Collection<String> classes) {
- if (getParent() instanceof EnhanceableClassLoader) {
- ((EnhanceableClassLoader)
getParent()).setTransformers(transformers, classes);
- }
- for (String clazz : classes) {
- this.transformers.put(clazz, transformers);
- }
- }
-
private static class NoClassClassLoader extends ClassLoader {
private static final NoClassClassLoader INSTANCE = new
NoClassClassLoader();