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();
 


Reply via email to