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