You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2014/07/06 17:49:43 UTC

svn commit: r1608229 - in /tomee/tomee/branches/tomee-1.7.x: ./ container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/JpaTest.java

Author: andygumbrecht
Date: Sun Jul  6 15:49:43 2014
New Revision: 1608229

URL: http://svn.apache.org/r1608229
Log:
Merged revision(s) 1608226 from tomee/tomee/trunk:
preventing openjpa to refine classes - can be skipped with openejb.openjpa.canRedefine set to true but breaks cmp on java 7 otherwise in embedded mode at least
........

Modified:
    tomee/tomee/branches/tomee-1.7.x/   (props changed)
    tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/JpaTest.java

Propchange: tomee/tomee/branches/tomee-1.7.x/
------------------------------------------------------------------------------
  Merged /tomee/tomee/trunk:r1608226

Modified: tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1608229&r1=1608228&r2=1608229&view=diff
==============================================================================
--- tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Sun Jul  6 15:49:43 2014
@@ -185,6 +185,7 @@ import java.io.Serializable;
 import java.lang.instrument.ClassFileTransformer;
 import java.lang.instrument.Instrumentation;
 import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 import java.net.MalformedURLException;
@@ -208,6 +209,7 @@ import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.locks.ReentrantLock;
+import java.util.logging.Level;
 
 @SuppressWarnings({"UnusedDeclaration", "UnqualifiedFieldAccess", "UnqualifiedMethodAccess"})
 public class Assembler extends AssemblerTool implements org.apache.openejb.spi.Assembler, JndiConstants {
@@ -2698,6 +2700,20 @@ public class Assembler extends Assembler
     }
 
     private static class PersistenceClassLoaderHandlerImpl implements PersistenceClassLoaderHandler {
+        static {
+            final boolean hack = "true".equalsIgnoreCase(System.getProperty("openejb.openjpa.canRedefine", "false"));
+            if (!hack) {
+                try { // hack for java 7 (was fine before)
+                    final Class<?> classRedefinerClass = ParentClassLoaderFinder.Helper.get().loadClass("org.apache.openjpa.enhance.ClassRedefiner");
+                    final Field field = classRedefinerClass.getDeclaredField("_canRedefine");
+                    field.setAccessible(true);
+                    field.set(null, Boolean.FALSE);
+                } catch (final Throwable e) {
+                    // use JUL and not openejb Logger
+                    java.util.logging.Logger.getLogger(PersistenceClassLoaderHandlerImpl.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+                }
+            }
+        }
 
         private static final AtomicBoolean logged = new AtomicBoolean(false);
 

Modified: tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/JpaTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/JpaTest.java?rev=1608229&r1=1608228&r2=1608229&view=diff
==============================================================================
--- tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/JpaTest.java (original)
+++ tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/JpaTest.java Sun Jul  6 15:49:43 2014
@@ -19,6 +19,7 @@ package org.apache.openejb.core.cmp.jpa;
 
 import junit.framework.TestCase;
 import org.apache.geronimo.transaction.manager.GeronimoTransactionManager;
+import org.apache.openejb.core.ParentClassLoaderFinder;
 import org.apache.openejb.core.TempClassLoader;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.persistence.PersistenceClassLoaderHandler;
@@ -42,6 +43,7 @@ import javax.sql.DataSource;
 import javax.transaction.TransactionManager;
 import javax.transaction.TransactionSynchronizationRegistry;
 import java.lang.instrument.ClassFileTransformer;
+import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.sql.Connection;
 import java.sql.SQLException;
@@ -56,6 +58,18 @@ import static org.apache.xbean.asm5.Opco
 import static org.apache.xbean.asm5.Opcodes.ACC_TRANSIENT;
 
 public class JpaTest extends TestCase {
+
+    static {
+        try {
+            final Class<?> classRedefinerClass = ParentClassLoaderFinder.Helper.get().loadClass("org.apache.openjpa.enhance.ClassRedefiner");
+            final Field field = classRedefinerClass.getDeclaredField("_canRedefine");
+            field.setAccessible(true);
+            field.set(null, Boolean.FALSE);
+        } catch (final Exception e) {
+//Ignore
+        }
+    }
+
     //    private static final String PERSISTENCE_PROVIDER = "org.apache.cayenne.jpa.Provider";
     private static final String PERSISTENCE_PROVIDER = "org.apache.openjpa.persistence.PersistenceProviderImpl";
 
@@ -89,6 +103,7 @@ public class JpaTest extends TestCase {
     public static class MockInitialContextFactory implements InitialContextFactory {
         private static ImmutableContext immutableContext;
 
+        @SuppressWarnings("unchecked")
         public static void install(final Map bindings) throws NamingException {
             immutableContext = new ImmutableContext(bindings);
             System.setProperty(Context.INITIAL_CONTEXT_FACTORY, MockInitialContextFactory.class.getName());
@@ -210,9 +225,8 @@ public class JpaTest extends TestCase {
         unitInfo.getManagedClassNames().add("org.apache.openejb.core.cmp.jpa.Employee");
 
         final PersistenceProvider persistenceProvider = (PersistenceProvider) getClass().getClassLoader().loadClass(PERSISTENCE_PROVIDER).newInstance();
-        final EntityManagerFactory emf = persistenceProvider.createContainerEntityManagerFactory(unitInfo, new HashMap());
 
-        return emf;
+        return persistenceProvider.createContainerEntityManagerFactory(unitInfo, new HashMap());
     }
 
     private static void set(final Object instance, final String parameterName, final Class type, final Object value) throws Exception {
@@ -328,6 +342,7 @@ public class JpaTest extends TestCase {
         try {
             statement.close();
         } catch (final SQLException e) {
+            //Ignore
         }
     }
 
@@ -338,9 +353,11 @@ public class JpaTest extends TestCase {
         try {
             connection.close();
         } catch (final SQLException e) {
+            //Ignore
         }
     }
 
+    @SuppressWarnings("UnusedDeclaration")
     public static byte[] addNewField(final byte[] origBytes) {
         final ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES);