OPENJPA-2911 getPCBytecode now returns ClassNodeTracker

This commit is contained in:
Mark Struberg 2023-07-17 19:32:20 +02:00
parent 11367cfbea
commit 37c114c724
9 changed files with 14 additions and 25 deletions

View File

@ -26,7 +26,6 @@ import java.util.Map;
import org.apache.openjpa.jdbc.conf.JDBCConfiguration; import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
import org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl; import org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl;
import org.apache.openjpa.jdbc.identifier.DBIdentifier;
import org.apache.openjpa.jdbc.meta.ClassMapping; import org.apache.openjpa.jdbc.meta.ClassMapping;
import org.apache.openjpa.jdbc.meta.MappingRepository; import org.apache.openjpa.jdbc.meta.MappingRepository;
import org.apache.openjpa.jdbc.schema.Column; import org.apache.openjpa.jdbc.schema.Column;

View File

@ -19,7 +19,6 @@
package org.apache.openjpa.junit5.internal; package org.apache.openjpa.junit5.internal;
import org.apache.openjpa.conf.OpenJPAConfigurationImpl; import org.apache.openjpa.conf.OpenJPAConfigurationImpl;
import org.apache.openjpa.enhance.AsmAdaptor;
import org.apache.openjpa.enhance.PCEnhancer; import org.apache.openjpa.enhance.PCEnhancer;
import org.apache.openjpa.enhance.PersistenceCapable; import org.apache.openjpa.enhance.PersistenceCapable;
import org.apache.openjpa.lib.log.JULLogFactory; import org.apache.openjpa.lib.log.JULLogFactory;
@ -28,17 +27,16 @@ import org.apache.openjpa.lib.log.LogFactoryImpl;
import org.apache.openjpa.lib.log.SLF4JLogFactory; import org.apache.openjpa.lib.log.SLF4JLogFactory;
import org.apache.openjpa.meta.MetaDataRepository; import org.apache.openjpa.meta.MetaDataRepository;
import org.apache.openjpa.persistence.PersistenceMetaDataFactory; import org.apache.openjpa.persistence.PersistenceMetaDataFactory;
import org.apache.openjpa.util.asm.AsmHelper;
import org.apache.openjpa.util.asm.ClassNodeTracker;
import org.apache.xbean.asm9.AnnotationVisitor; import org.apache.xbean.asm9.AnnotationVisitor;
import org.apache.xbean.asm9.ClassReader; import org.apache.xbean.asm9.ClassReader;
import org.apache.xbean.asm9.Type; import org.apache.xbean.asm9.Type;
import org.apache.xbean.asm9.shade.commons.EmptyVisitor; import org.apache.xbean.asm9.shade.commons.EmptyVisitor;
import org.apache.xbean.finder.ClassLoaders; import org.apache.xbean.finder.ClassLoaders;
import serp.bytecode.BCClass;
import serp.bytecode.Project; import serp.bytecode.Project;
import jakarta.persistence.Embeddable;
import jakarta.persistence.Entity;
import jakarta.persistence.MappedSuperclass;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
@ -275,8 +273,8 @@ public class OpenJPADirectoriesEnhancer implements Runnable {
if (enhancer.run() == PCEnhancer.ENHANCE_NONE) { if (enhancer.run() == PCEnhancer.ENHANCE_NONE) {
return null; return null;
} }
final BCClass pcb = enhancer.getPCBytecode(); final ClassNodeTracker cnt = enhancer.getPCBytecode();
return AsmAdaptor.toByteArray(pcb, pcb.toByteArray()); return AsmHelper.toByteArray(cnt);
} catch (final IOException e) { } catch (final IOException e) {
throw new IllegalStateException(e); throw new IllegalStateException(e);
} finally { } finally {

View File

@ -32,8 +32,9 @@ import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.lib.util.Options; import org.apache.openjpa.lib.util.Options;
import org.apache.openjpa.meta.MetaDataRepository; import org.apache.openjpa.meta.MetaDataRepository;
import org.apache.openjpa.util.GeneralException; import org.apache.openjpa.util.GeneralException;
import org.apache.openjpa.util.asm.AsmHelper;
import org.apache.openjpa.util.asm.ClassNodeTracker;
import serp.bytecode.BCClass;
import serp.bytecode.Project; import serp.bytecode.Project;
@ -153,9 +154,8 @@ public class PCClassFileTransformer
if (enhancer.run() == PCEnhancer.ENHANCE_NONE) if (enhancer.run() == PCEnhancer.ENHANCE_NONE)
return null; return null;
BCClass pcb = enhancer.getPCBytecode(); ClassNodeTracker cnt = enhancer.getPCBytecode();
returnBytes = AsmAdaptor.toByteArray(pcb, pcb.toByteArray()); return AsmHelper.toByteArray(cnt);
return returnBytes;
} finally { } finally {
AccessController.doPrivileged(J2DoPrivHelper.setContextClassLoaderAction(oldLoader)); AccessController.doPrivileged(J2DoPrivHelper.setContextClassLoaderAction(oldLoader));
} }

View File

@ -100,7 +100,6 @@ import org.apache.openjpa.util.StringId;
import org.apache.openjpa.util.UserException; import org.apache.openjpa.util.UserException;
import org.apache.openjpa.util.asm.AsmHelper; import org.apache.openjpa.util.asm.AsmHelper;
import org.apache.openjpa.util.asm.ClassNodeTracker; import org.apache.openjpa.util.asm.ClassNodeTracker;
import org.apache.openjpa.util.asm.ClassWriterTracker;
import org.apache.xbean.asm9.Opcodes; import org.apache.xbean.asm9.Opcodes;
import org.apache.xbean.asm9.Type; import org.apache.xbean.asm9.Type;
import org.apache.xbean.asm9.tree.*; import org.apache.xbean.asm9.tree.*;
@ -378,8 +377,8 @@ public class PCEnhancer {
* Return the bytecode representation of the persistence-capable class * Return the bytecode representation of the persistence-capable class
* being manipulated. * being manipulated.
*/ */
public BCClass getPCBytecode() { public ClassNodeTracker getPCBytecode() {
return _pc; return pc;
} }
/** /**

View File

@ -124,7 +124,8 @@ class InterfaceImplGenerator {
iface)).setFatal(true); iface)).setFatal(true);
try { try {
// load the Class<?> for real. // load the Class<?> for real.
impl = Class.forName(enhancer.getPCBytecode().getName(), true, enhLoader); String pcClassName = enhancer.getPCBytecode().getClassNode().name.replace("/", ".");
impl = Class.forName(pcClassName, true, enhLoader);
} catch (Throwable t) { } catch (Throwable t) {
throw new InternalException(_loc.get("interface-load2", iface, throw new InternalException(_loc.get("interface-load2", iface,
enhLoader), t).setFatal(true); enhLoader), t).setFatal(true);

View File

@ -20,8 +20,6 @@ package org.apache.openjpa.util.asm;
import java.io.IOException; import java.io.IOException;
import serp.bytecode.BCClass;
/** /**
* Control how enhanced bytecode is written. * Control how enhanced bytecode is written.
* *

View File

@ -59,8 +59,7 @@ public class TestEnhancementWithMultiplePUs
assertEquals(PCEnhancer.ENHANCE_PC, enhancer.run()); assertEquals(PCEnhancer.ENHANCE_PC, enhancer.run());
assertTrue(Arrays.asList(enhancer.getPCBytecode().getInterfaceNames()).contains( assertTrue(enhancer.getPCBytecode().getClassNode().interfaces.contains(Type.getInternalName(PersistenceCapable.class)));
PersistenceCapable.class.getName()));
} }
private BCClass assertNotPC(ClassLoader loader, Project project, private BCClass assertNotPC(ClassLoader loader, Project project,

View File

@ -18,8 +18,6 @@
*/ */
package org.apache.openjpa.persistence; package org.apache.openjpa.persistence;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.HashMap; import java.util.HashMap;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;

View File

@ -23,9 +23,6 @@ import java.math.BigInteger;
import java.sql.Date; import java.sql.Date;
import java.sql.Time; import java.sql.Time;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;