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.JDBCConfigurationImpl;
import org.apache.openjpa.jdbc.identifier.DBIdentifier;
import org.apache.openjpa.jdbc.meta.ClassMapping;
import org.apache.openjpa.jdbc.meta.MappingRepository;
import org.apache.openjpa.jdbc.schema.Column;

View File

@ -19,7 +19,6 @@
package org.apache.openjpa.junit5.internal;
import org.apache.openjpa.conf.OpenJPAConfigurationImpl;
import org.apache.openjpa.enhance.AsmAdaptor;
import org.apache.openjpa.enhance.PCEnhancer;
import org.apache.openjpa.enhance.PersistenceCapable;
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.meta.MetaDataRepository;
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.ClassReader;
import org.apache.xbean.asm9.Type;
import org.apache.xbean.asm9.shade.commons.EmptyVisitor;
import org.apache.xbean.finder.ClassLoaders;
import serp.bytecode.BCClass;
import serp.bytecode.Project;
import jakarta.persistence.Embeddable;
import jakarta.persistence.Entity;
import jakarta.persistence.MappedSuperclass;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
@ -275,8 +273,8 @@ public class OpenJPADirectoriesEnhancer implements Runnable {
if (enhancer.run() == PCEnhancer.ENHANCE_NONE) {
return null;
}
final BCClass pcb = enhancer.getPCBytecode();
return AsmAdaptor.toByteArray(pcb, pcb.toByteArray());
final ClassNodeTracker cnt = enhancer.getPCBytecode();
return AsmHelper.toByteArray(cnt);
} catch (final IOException e) {
throw new IllegalStateException(e);
} 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.meta.MetaDataRepository;
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;
@ -153,9 +154,8 @@ public class PCClassFileTransformer
if (enhancer.run() == PCEnhancer.ENHANCE_NONE)
return null;
BCClass pcb = enhancer.getPCBytecode();
returnBytes = AsmAdaptor.toByteArray(pcb, pcb.toByteArray());
return returnBytes;
ClassNodeTracker cnt = enhancer.getPCBytecode();
return AsmHelper.toByteArray(cnt);
} finally {
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.asm.AsmHelper;
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.Type;
import org.apache.xbean.asm9.tree.*;
@ -378,8 +377,8 @@ public class PCEnhancer {
* Return the bytecode representation of the persistence-capable class
* being manipulated.
*/
public BCClass getPCBytecode() {
return _pc;
public ClassNodeTracker getPCBytecode() {
return pc;
}
/**

View File

@ -124,7 +124,8 @@ class InterfaceImplGenerator {
iface)).setFatal(true);
try {
// 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) {
throw new InternalException(_loc.get("interface-load2", iface,
enhLoader), t).setFatal(true);

View File

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

View File

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

View File

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

View File

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