You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/07/06 17:39:15 UTC
svn commit: r1608226 - in /tomee/tomee/trunk/container/openejb-core/src:
main/java/org/apache/openejb/assembler/classic/Assembler.java
test/java/org/apache/openejb/core/cmp/jpa/JpaTest.java
Author: rmannibucau
Date: Sun Jul 6 15:39:14 2014
New Revision: 1608226
URL: http://svn.apache.org/r1608226
Log:
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/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/JpaTest.java
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1608226&r1=1608225&r2=1608226&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Sun Jul 6 15:39:14 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/trunk/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/JpaTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/JpaTest.java?rev=1608226&r1=1608225&r2=1608226&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/JpaTest.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/JpaTest.java Sun Jul 6 15:39:14 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,17 @@ 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) {
+
+ }
+ }
+
// private static final String PERSISTENCE_PROVIDER = "org.apache.cayenne.jpa.Provider";
private static final String PERSISTENCE_PROVIDER = "org.apache.openjpa.persistence.PersistenceProviderImpl";