use of org.apache.cxf.common.util.OpcodesProxy in project cxf by apache.
the class WrapperHelperClassGenerator method addSignature.
private boolean addSignature(Method[] setMethods, Method[] getMethods, ASMHelper asmhelper, ASMHelper.ClassWriter cw) {
OpcodesProxy opCodes = asmhelper.getOpCodes();
String sig = computeSignature(setMethods, getMethods);
ASMHelper.MethodVisitor mv = cw.visitMethod(opCodes.ACC_PUBLIC, "getSignature", "()Ljava/lang/String;", null, null);
mv.visitCode();
mv.visitLdcInsn(sig);
ASMHelper.Label l0 = asmhelper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(100, l0);
mv.visitInsn(opCodes.ARETURN);
mv.visitMaxs(0, 0);
mv.visitEnd();
return true;
}
use of org.apache.cxf.common.util.OpcodesProxy in project cxf by apache.
the class NamespaceClassGenerator method doCreateEclipseNamespaceMapper.
/*
// This is the "prototype" for the ASM generated class below
public static class MapNamespacePrefixMapper2
extends org.eclipse.persistence.internal.oxm.record.namespaces.MapNamespacePrefixMapper {
String[] nsctxt;
public MapNamespacePrefixMapper2(Map<String, String> foo) {
super(foo);
}
public String[] getPreDeclaredNamespaceUris() {
String[] sup = super.getPreDeclaredNamespaceUris();
if (nsctxt == null) {
return sup;
}
List<String> s = new ArrayList<>(Arrays.asList(sup));
for (int x = 1; x < nsctxt.length; x = x + 2) {
s.remove(nsctxt[x]);
}
return s.toArray(new String[s.size()]);
}
public void setContextualNamespaceDecls(String[] f) {
nsctxt = f;
}
public String[] getContextualNamespaceDecls() {
return nsctxt;
}
}
*/
// CHECKSTYLE:OFF
// bunch of really long ASM based methods that cannot be shortened easily
private byte[] doCreateEclipseNamespaceMapper() {
OpcodesProxy Opcodes = helper.getOpCodes();
String slashedName = "org/apache/cxf/jaxb/EclipseNamespaceMapper";
ASMHelper.ClassWriter cw = helper.createClassWriter();
if (cw == null) {
return null;
}
String superName = "org/eclipse/persistence/internal/oxm/record/namespaces/MapNamespacePrefixMapper";
ASMHelper.FieldVisitor fv;
ASMHelper.MethodVisitor mv;
cw.visit(Opcodes.V1_6, Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_SUPER, slashedName, null, superName, null);
cw.visitSource("EclipseNamespaceMapper.java", null);
fv = cw.visitField(Opcodes.ACC_PRIVATE, "nsctxt", "[Ljava/lang/String;", null, null);
fv.visitEnd();
mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "(Ljava/util/Map;)V", "(Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V", null);
mv.visitCode();
ASMHelper.Label l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitVarInsn(Opcodes.ALOAD, 1);
mv.visitMethodInsn(Opcodes.INVOKESPECIAL, superName, "<init>", "(Ljava/util/Map;)V", false);
ASMHelper.Label l1 = helper.createLabel();
mv.visitLabel(l1);
mv.visitInsn(Opcodes.RETURN);
ASMHelper.Label l2 = helper.createLabel();
mv.visitLabel(l2);
mv.visitMaxs(0, 0);
mv.visitEnd();
mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "setContextualNamespaceDecls", "([Ljava/lang/String;)V", null, null);
mv.visitCode();
l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(47, l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitVarInsn(Opcodes.ALOAD, 1);
mv.visitFieldInsn(Opcodes.PUTFIELD, slashedName, "nsctxt", "[Ljava/lang/String;");
l1 = helper.createLabel();
mv.visitLabel(l1);
mv.visitLineNumber(48, l1);
mv.visitInsn(Opcodes.RETURN);
l2 = helper.createLabel();
mv.visitLabel(l2);
mv.visitLocalVariable("this", "L" + slashedName + ";", null, l0, l2, 0);
mv.visitLocalVariable("contextualNamespaceDecls", "[Ljava/lang/String;", null, l0, l2, 1);
mv.visitMaxs(0, 0);
mv.visitEnd();
mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "getContextualNamespaceDecls", "()[Ljava/lang/String;", null, null);
mv.visitCode();
l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(51, l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, slashedName, "nsctxt", "[Ljava/lang/String;");
mv.visitInsn(Opcodes.ARETURN);
l1 = helper.createLabel();
mv.visitLabel(l1);
mv.visitLocalVariable("this", "L" + slashedName + ";", null, l0, l1, 0);
mv.visitMaxs(0, 0);
mv.visitEnd();
mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "getPreDeclaredNamespaceUris", "()[Ljava/lang/String;", null, null);
mv.visitCode();
l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(1036, l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitMethodInsn(Opcodes.INVOKESPECIAL, superName, "getPreDeclaredNamespaceUris", "()[Ljava/lang/String;", false);
mv.visitVarInsn(Opcodes.ASTORE, 1);
l1 = helper.createLabel();
mv.visitLabel(l1);
mv.visitLineNumber(1037, l1);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, slashedName, "nsctxt", "[Ljava/lang/String;");
l2 = helper.createLabel();
mv.visitJumpInsn(Opcodes.IFNONNULL, l2);
ASMHelper.Label l3 = helper.createLabel();
mv.visitLabel(l3);
mv.visitLineNumber(1038, l3);
mv.visitVarInsn(Opcodes.ALOAD, 1);
mv.visitInsn(Opcodes.ARETURN);
mv.visitLabel(l2);
mv.visitLineNumber(1040, l2);
mv.visitFrame(Opcodes.F_APPEND, 1, new Object[] { "[Ljava/lang/String;" }, 0, null);
mv.visitTypeInsn(Opcodes.NEW, "java/util/ArrayList");
mv.visitInsn(Opcodes.DUP);
mv.visitVarInsn(Opcodes.ALOAD, 1);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/util/Arrays", "asList", "([Ljava/lang/Object;)Ljava/util/List;", false);
mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/util/ArrayList", "<init>", "(Ljava/util/Collection;)V", false);
mv.visitVarInsn(Opcodes.ASTORE, 2);
ASMHelper.Label l4 = helper.createLabel();
mv.visitLabel(l4);
mv.visitLineNumber(1041, l4);
mv.visitInsn(Opcodes.ICONST_1);
mv.visitVarInsn(Opcodes.ISTORE, 3);
ASMHelper.Label l5 = helper.createLabel();
mv.visitLabel(l5);
ASMHelper.Label l6 = helper.createLabel();
mv.visitJumpInsn(Opcodes.GOTO, l6);
ASMHelper.Label l7 = helper.createLabel();
mv.visitLabel(l7);
mv.visitLineNumber(1042, l7);
mv.visitFrame(Opcodes.F_APPEND, 2, new Object[] { "java/util/List", Opcodes.INTEGER }, 0, null);
mv.visitVarInsn(Opcodes.ALOAD, 2);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, slashedName, "nsctxt", "[Ljava/lang/String;");
mv.visitVarInsn(Opcodes.ILOAD, 3);
mv.visitInsn(Opcodes.AALOAD);
mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "remove", "(Ljava/lang/Object;)Z", true);
mv.visitInsn(Opcodes.POP);
ASMHelper.Label l8 = helper.createLabel();
mv.visitLabel(l8);
mv.visitLineNumber(1041, l8);
mv.visitIincInsn(3, 2);
mv.visitLabel(l6);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitVarInsn(Opcodes.ILOAD, 3);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, slashedName, "nsctxt", "[Ljava/lang/String;");
mv.visitInsn(Opcodes.ARRAYLENGTH);
mv.visitJumpInsn(Opcodes.IF_ICMPLT, l7);
ASMHelper.Label l9 = helper.createLabel();
mv.visitLabel(l9);
mv.visitLineNumber(1044, l9);
mv.visitVarInsn(Opcodes.ALOAD, 2);
mv.visitVarInsn(Opcodes.ALOAD, 2);
mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "size", "()I", true);
mv.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/String");
mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "toArray", "([Ljava/lang/Object;)[Ljava/lang/Object;", true);
mv.visitTypeInsn(Opcodes.CHECKCAST, "[Ljava/lang/String;");
mv.visitInsn(Opcodes.ARETURN);
ASMHelper.Label l10 = helper.createLabel();
mv.visitLabel(l10);
mv.visitLocalVariable("this", "L" + slashedName + ";", null, l0, l10, 0);
mv.visitLocalVariable("sup", "[Ljava/lang/String;", null, l1, l10, 1);
mv.visitLocalVariable("s", "Ljava/util/List;", "Ljava/util/List<Ljava/lang/String;>;", l4, l10, 2);
mv.visitLocalVariable("x", "I", null, l5, l9, 3);
mv.visitMaxs(0, 0);
mv.visitEnd();
cw.visitEnd();
return cw.toByteArray();
}
use of org.apache.cxf.common.util.OpcodesProxy in project cxf by apache.
the class CorbaFixedAnyImplGenerator method addWriteOverride.
private void addWriteOverride(ASMHelper helper, ASMHelper.ClassWriter cw) {
OpcodesProxy opCodes = helper.getOpCodes();
ASMHelper.MethodVisitor mv = cw.visitMethod(opCodes.ACC_PUBLIC, "write_value", "(Lorg/omg/CORBA/portable/OutputStream;)V", null, null);
mv.visitCode();
ASMHelper.Label l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(61, l0);
mv.visitVarInsn(opCodes.ALOAD, 0);
mv.visitFieldInsn(opCodes.GETFIELD, "org/apache/cxf/binding/corba/utils/FixedAnyImpl", "obj", "Lorg/omg/CORBA/portable/Streamable;");
ASMHelper.Label l1 = helper.createLabel();
mv.visitJumpInsn(opCodes.IFNULL, l1);
ASMHelper.Label l2 = helper.createLabel();
mv.visitLabel(l2);
mv.visitLineNumber(62, l2);
mv.visitVarInsn(opCodes.ALOAD, 0);
mv.visitFieldInsn(opCodes.GETFIELD, "org/apache/cxf/binding/corba/utils/FixedAnyImpl", "obj", "Lorg/omg/CORBA/portable/Streamable;");
ASMHelper.Label l3 = helper.createLabel();
mv.visitVarInsn(opCodes.ALOAD, 1);
mv.visitMethodInsn(opCodes.INVOKEINTERFACE, "org/omg/CORBA/portable/Streamable", "_write", "(Lorg/omg/CORBA/portable/OutputStream;)V", true);
mv.visitJumpInsn(opCodes.GOTO, l3);
mv.visitLabel(l1);
mv.visitLineNumber(64, l1);
mv.visitVarInsn(opCodes.ALOAD, 0);
mv.visitVarInsn(opCodes.ALOAD, 1);
mv.visitMethodInsn(opCodes.INVOKESPECIAL, "com/sun/corba/se/impl/corba/AnyImpl", "write_value", "(Lorg/omg/CORBA/portable/OutputStream;)V", false);
mv.visitLabel(l3);
mv.visitLineNumber(66, l3);
mv.visitInsn(opCodes.RETURN);
ASMHelper.Label l4 = helper.createLabel();
mv.visitLabel(l4);
mv.visitLocalVariable("this", "Lorg/apache/cxf/binding/corba/utils/FixedAnyImpl;", null, l0, l4, 0);
mv.visitLocalVariable("os", "Lorg/omg/CORBA/portable/OutputStream;", null, l0, l4, 1);
mv.visitMaxs(0, 0);
mv.visitEnd();
}
use of org.apache.cxf.common.util.OpcodesProxy in project cxf by apache.
the class CorbaFixedAnyImplGenerator method addFixedAnyConstructor.
private void addFixedAnyConstructor(ASMHelper helper, ASMHelper.ClassWriter cw) {
OpcodesProxy opCodes = helper.getOpCodes();
ASMHelper.MethodVisitor mv = cw.visitMethod(opCodes.ACC_PUBLIC, "<init>", "(Lorg/omg/CORBA/ORB;)V", null, null);
mv.visitCode();
ASMHelper.Label l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(36, l0);
mv.visitVarInsn(opCodes.ALOAD, 0);
mv.visitVarInsn(opCodes.ALOAD, 1);
mv.visitTypeInsn(opCodes.CHECKCAST, "com/sun/corba/se/spi/orb/ORB");
mv.visitMethodInsn(opCodes.INVOKESPECIAL, "com/sun/corba/se/impl/corba/AnyImpl", "<init>", "(Lcom/sun/corba/se/spi/orb/ORB;)V", false);
ASMHelper.Label l1 = helper.createLabel();
mv.visitLabel(l1);
mv.visitLineNumber(37, l1);
mv.visitInsn(opCodes.RETURN);
ASMHelper.Label l2 = helper.createLabel();
mv.visitLabel(l2);
mv.visitLocalVariable("this", "Lorg/apache/cxf/binding/corba/utils/FixedAnyImpl;", null, l0, l2, 0);
mv.visitLocalVariable("orb", "Lorg/omg/CORBA/ORB;", null, l0, l2, 1);
mv.visitMaxs(0, 0);
mv.visitEnd();
mv = cw.visitMethod(opCodes.ACC_PUBLIC, "<init>", "(Lorg/omg/CORBA/ORB;Lorg/omg/CORBA/Any;)V", null, null);
mv.visitCode();
l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(39, l0);
mv.visitVarInsn(opCodes.ALOAD, 0);
mv.visitVarInsn(opCodes.ALOAD, 1);
mv.visitTypeInsn(opCodes.CHECKCAST, "com/sun/corba/se/spi/orb/ORB");
mv.visitVarInsn(opCodes.ALOAD, 2);
mv.visitMethodInsn(opCodes.INVOKESPECIAL, "com/sun/corba/se/impl/corba/AnyImpl", "<init>", "(Lcom/sun/corba/se/spi/orb/ORB;Lorg/omg/CORBA/Any;)V", false);
l1 = helper.createLabel();
mv.visitLabel(l1);
mv.visitLineNumber(40, l1);
mv.visitInsn(opCodes.RETURN);
l2 = helper.createLabel();
mv.visitLabel(l2);
mv.visitLocalVariable("this", "Lorg/apache/cxf/binding/corba/utils/FixedAnyImpl;", null, l0, l2, 0);
mv.visitLocalVariable("orb", "Lorg/omg/CORBA/ORB;", null, l0, l2, 1);
mv.visitLocalVariable("any", "Lorg/omg/CORBA/Any;", null, l0, l2, 2);
mv.visitMaxs(0, 0);
mv.visitEnd();
}
use of org.apache.cxf.common.util.OpcodesProxy in project cxf by apache.
the class CorbaFixedAnyImplGenerator method addInsertOverride.
private void addInsertOverride(ASMHelper helper, ASMHelper.ClassWriter cw) {
OpcodesProxy opCodes = helper.getOpCodes();
ASMHelper.MethodVisitor mv = cw.visitMethod(opCodes.ACC_PUBLIC, "insert_Streamable", "(Lorg/omg/CORBA/portable/Streamable;)V", null, null);
mv.visitCode();
ASMHelper.Label l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(43, l0);
mv.visitVarInsn(opCodes.ALOAD, 0);
mv.visitVarInsn(opCodes.ALOAD, 1);
mv.visitMethodInsn(opCodes.INVOKESPECIAL, "com/sun/corba/se/impl/corba/AnyImpl", "insert_Streamable", "(Lorg/omg/CORBA/portable/Streamable;)V", false);
ASMHelper.Label l1 = helper.createLabel();
mv.visitLabel(l1);
mv.visitLineNumber(44, l1);
mv.visitVarInsn(opCodes.ALOAD, 0);
mv.visitVarInsn(opCodes.ALOAD, 1);
mv.visitFieldInsn(opCodes.PUTFIELD, "org/apache/cxf/binding/corba/utils/FixedAnyImpl", "obj", "Lorg/omg/CORBA/portable/Streamable;");
ASMHelper.Label l2 = helper.createLabel();
mv.visitLabel(l2);
mv.visitLineNumber(45, l2);
mv.visitInsn(opCodes.RETURN);
ASMHelper.Label l3 = helper.createLabel();
mv.visitLabel(l3);
mv.visitLocalVariable("this", "Lorg/apache/cxf/binding/corba/utils/FixedAnyImpl;", null, l0, l3, 0);
mv.visitLocalVariable("s", "Lorg/omg/CORBA/portable/Streamable;", null, l0, l3, 1);
mv.visitMaxs(0, 0);
mv.visitEnd();
}
Aggregations