use of org.apache.cxf.common.util.ASMHelper.MethodVisitor in project cxf by apache.
the class JAXBUtils method createNamespaceWrapperInternal.
private static Class<?> createNamespaceWrapperInternal(ASMHelper helper, ClassWriter cw, String postFix, Class<?> ref) {
String className = "org.apache.cxf.jaxb.NamespaceMapper" + postFix;
String superName = "com/sun/xml/" + ("RI".equals(postFix) ? "" : "internal/") + "bind/marshaller/NamespacePrefixMapper";
String postFixedName = "org/apache/cxf/jaxb/NamespaceMapper" + postFix;
FieldVisitor fv;
MethodVisitor mv;
cw.visit(Opcodes.V1_6, Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_SUPER, postFixedName, null, superName, null);
cw.visitSource("NamespaceMapper.java", null);
fv = cw.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_FINAL, "nspref", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;", null);
fv.visitEnd();
fv = cw.visitField(Opcodes.ACC_PRIVATE, "nsctxt", "[Ljava/lang/String;", null, null);
fv.visitEnd();
fv = cw.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_FINAL + Opcodes.ACC_STATIC, "EMPTY_STRING", "[Ljava/lang/String;", null, null);
fv.visitEnd();
mv = cw.visitMethod(Opcodes.ACC_STATIC, "<clinit>", "()V", null, null);
mv.visitCode();
Label l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(30, l0);
mv.visitInsn(Opcodes.ICONST_0);
mv.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/String");
mv.visitFieldInsn(Opcodes.PUTSTATIC, postFixedName, "EMPTY_STRING", "[Ljava/lang/String;");
mv.visitInsn(Opcodes.RETURN);
mv.visitMaxs(1, 0);
mv.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();
l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(32, l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitMethodInsn(Opcodes.INVOKESPECIAL, superName, "<init>", "()V", false);
Label l1 = helper.createLabel();
mv.visitLabel(l1);
mv.visitLineNumber(29, l1);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETSTATIC, postFixedName, "EMPTY_STRING", "[Ljava/lang/String;");
mv.visitFieldInsn(Opcodes.PUTFIELD, postFixedName, "nsctxt", "[Ljava/lang/String;");
Label l2 = helper.createLabel();
mv.visitLabel(l2);
mv.visitLineNumber(33, l2);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitVarInsn(Opcodes.ALOAD, 1);
mv.visitFieldInsn(Opcodes.PUTFIELD, postFixedName, "nspref", "Ljava/util/Map;");
Label l3 = helper.createLabel();
mv.visitLabel(l3);
mv.visitLineNumber(34, l3);
mv.visitInsn(Opcodes.RETURN);
Label l4 = helper.createLabel();
mv.visitLabel(l4);
mv.visitLocalVariable("this", "L" + postFixedName + ";", null, l0, l4, 0);
mv.visitLocalVariable("nspref", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;", l0, l4, 1);
mv.visitMaxs(2, 2);
mv.visitEnd();
mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "getPreferredPrefix", "(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;", null, null);
mv.visitCode();
l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(39, l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, postFixedName, "nspref", "Ljava/util/Map;");
mv.visitVarInsn(Opcodes.ALOAD, 1);
mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", true);
mv.visitTypeInsn(Opcodes.CHECKCAST, "java/lang/String");
mv.visitVarInsn(Opcodes.ASTORE, 4);
l1 = helper.createLabel();
mv.visitLabel(l1);
mv.visitLineNumber(40, l1);
mv.visitVarInsn(Opcodes.ALOAD, 4);
l2 = helper.createLabel();
mv.visitJumpInsn(Opcodes.IFNULL, l2);
l3 = helper.createLabel();
mv.visitLabel(l3);
mv.visitLineNumber(41, l3);
mv.visitVarInsn(Opcodes.ALOAD, 4);
mv.visitInsn(Opcodes.ARETURN);
mv.visitLabel(l2);
mv.visitLineNumber(43, l2);
mv.visitFrame(Opcodes.F_APPEND, 1, new Object[] { "java/lang/String" }, 0, null);
mv.visitVarInsn(Opcodes.ALOAD, 2);
mv.visitInsn(Opcodes.ARETURN);
l4 = helper.createLabel();
mv.visitLabel(l4);
mv.visitLocalVariable("this", "L" + postFixedName + ";", null, l0, l4, 0);
mv.visitLocalVariable("namespaceUri", "Ljava/lang/String;", null, l0, l4, 1);
mv.visitLocalVariable("suggestion", "Ljava/lang/String;", null, l0, l4, 2);
mv.visitLocalVariable("requirePrefix", "Z", null, l0, l4, 3);
mv.visitLocalVariable("prefix", "Ljava/lang/String;", null, l1, l4, 4);
mv.visitMaxs(2, 5);
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, postFixedName, "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" + postFixedName + ";", null, l0, l2, 0);
mv.visitLocalVariable("contextualNamespaceDecls", "[Ljava/lang/String;", null, l0, l2, 1);
mv.visitMaxs(2, 2);
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, postFixedName, "nsctxt", "[Ljava/lang/String;");
mv.visitInsn(Opcodes.ARETURN);
l1 = helper.createLabel();
mv.visitLabel(l1);
mv.visitLocalVariable("this", "L" + postFixedName + ";", null, l0, l1, 0);
mv.visitMaxs(1, 1);
mv.visitEnd();
cw.visitEnd();
byte[] bts = cw.toByteArray();
return helper.loadClass(className, ref, bts);
}
use of org.apache.cxf.common.util.ASMHelper.MethodVisitor in project cxf by apache.
the class JAXBContextInitializer method createFactory.
@SuppressWarnings("unused")
private Object createFactory(Class<?> cls, Constructor<?> contructor) {
String newClassName = cls.getName() + "Factory";
ASMHelper helper = new ASMHelper();
ClassWriter cw = helper.createClassWriter();
MethodVisitor mv;
cw.visit(Opcodes.V1_6, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, ASMHelper.periodToSlashes(newClassName), null, "java/lang/Object", null);
cw.visitSource(cls.getSimpleName() + "Factory" + ".java", null);
mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "()V", null, null);
mv.visitCode();
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
mv.visitInsn(Opcodes.RETURN);
mv.visitMaxs(1, 1);
mv.visitEnd();
mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "create" + cls.getSimpleName(), "()L" + ASMHelper.periodToSlashes(cls.getName()) + ";", null, null);
mv.visitCode();
String name = cls.getName().replace(".", "/");
mv.visitTypeInsn(Opcodes.NEW, name);
mv.visitInsn(Opcodes.DUP);
StringBuilder paraString = new StringBuilder("(");
for (Class<?> paraClass : contructor.getParameterTypes()) {
mv.visitInsn(Opcodes.ACONST_NULL);
paraString.append("Ljava/lang/Object;");
}
paraString.append(")V");
mv.visitMethodInsn(Opcodes.INVOKESPECIAL, name, "<init>", paraString.toString(), false);
mv.visitInsn(Opcodes.ARETURN);
mv.visitMaxs(1, 1);
mv.visitEnd();
cw.visitEnd();
Class<?> factoryClass = helper.loadClass(newClassName, cls, cw.toByteArray());
try {
return factoryClass.newInstance();
} catch (Exception e) {
// ignore
}
return null;
}
use of org.apache.cxf.common.util.ASMHelper.MethodVisitor in project cxf by apache.
the class JAXBExtensionHelper method createExtensionClass.
// CHECKSTYLE:OFF - very complicated ASM code
private static Class<?> createExtensionClass(Class<?> cls, QName qname, ClassLoader loader) {
String className = ASMHelper.periodToSlashes(cls.getName());
ASMHelper helper = new ASMHelper();
Class<?> extClass = helper.findClass(className + "Extensibility", loader);
if (extClass != null) {
return extClass;
}
ClassWriter cw = helper.createClassWriter();
FieldVisitor fv;
MethodVisitor mv;
AnnotationVisitor av0;
cw.visit(Opcodes.V1_6, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER + Opcodes.ACC_SYNTHETIC, className + "Extensibility", null, className, new String[] { "javax/wsdl/extensions/ExtensibilityElement" });
cw.visitSource(cls.getSimpleName() + "Extensibility.java", null);
fv = cw.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_FINAL + Opcodes.ACC_STATIC, "WSDL_REQUIRED", "Ljavax/xml/namespace/QName;", null, null);
fv.visitEnd();
fv = cw.visitField(0, "qn", "Ljavax/xml/namespace/QName;", null, null);
fv.visitEnd();
boolean hasAttributes = false;
try {
Method m = cls.getDeclaredMethod("getOtherAttributes");
if (m != null && m.getReturnType() == Map.class) {
hasAttributes = true;
}
} catch (Throwable t) {
// ignore
}
if (hasAttributes) {
mv = cw.visitMethod(Opcodes.ACC_STATIC, "<clinit>", "()V", null, null);
mv.visitCode();
Label l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(64, l0);
mv.visitTypeInsn(Opcodes.NEW, "javax/xml/namespace/QName");
mv.visitInsn(Opcodes.DUP);
mv.visitLdcInsn("http://schemas.xmlsoap.org/wsdl/");
mv.visitLdcInsn("required");
mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "javax/xml/namespace/QName", "<init>", "(Ljava/lang/String;Ljava/lang/String;)V", false);
mv.visitFieldInsn(Opcodes.PUTSTATIC, className + "Extensibility", "WSDL_REQUIRED", "Ljavax/xml/namespace/QName;");
mv.visitInsn(Opcodes.RETURN);
mv.visitMaxs(4, 0);
mv.visitEnd();
} else {
fv = cw.visitField(Opcodes.ACC_PRIVATE, "required", "Ljava/lang/Boolean;", null, null);
fv.visitEnd();
}
mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "()V", null, null);
mv.visitCode();
Label l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(33, l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitMethodInsn(Opcodes.INVOKESPECIAL, className, "<init>", "()V", false);
Label l1 = helper.createLabel();
mv.visitLabel(l1);
mv.visitLineNumber(31, l1);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitTypeInsn(Opcodes.NEW, "javax/xml/namespace/QName");
mv.visitInsn(Opcodes.DUP);
mv.visitLdcInsn(qname.getNamespaceURI());
mv.visitLdcInsn(qname.getLocalPart());
mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "javax/xml/namespace/QName", "<init>", "(Ljava/lang/String;Ljava/lang/String;)V", false);
mv.visitFieldInsn(Opcodes.PUTFIELD, className + "Extensibility", "qn", "Ljavax/xml/namespace/QName;");
Label l2 = helper.createLabel();
mv.visitLabel(l2);
mv.visitLineNumber(34, l2);
mv.visitInsn(Opcodes.RETURN);
Label l3 = helper.createLabel();
mv.visitLabel(l3);
mv.visitLocalVariable("this", "L" + className + "Extensibility;", null, l0, l3, 0);
mv.visitMaxs(5, 1);
mv.visitEnd();
mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "setElementType", "(Ljavax/xml/namespace/QName;)V", null, null);
mv.visitCode();
l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(37, l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitVarInsn(Opcodes.ALOAD, 1);
mv.visitFieldInsn(Opcodes.PUTFIELD, className + "Extensibility", "qn", "Ljavax/xml/namespace/QName;");
l1 = helper.createLabel();
mv.visitLabel(l1);
mv.visitLineNumber(38, l1);
mv.visitInsn(Opcodes.RETURN);
l2 = helper.createLabel();
mv.visitLabel(l2);
mv.visitLocalVariable("this", "L" + className + "Extensibility;", null, l0, l2, 0);
mv.visitLocalVariable("elementType", "Ljavax/xml/namespace/QName;", null, l0, l2, 1);
mv.visitMaxs(2, 2);
mv.visitEnd();
mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "getElementType", "()Ljavax/xml/namespace/QName;", null, null);
av0 = mv.visitAnnotation("Ljavax/xml/bind/annotation/XmlTransient;", true);
av0.visitEnd();
mv.visitCode();
l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(40, l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, className + "Extensibility", "qn", "Ljavax/xml/namespace/QName;");
mv.visitInsn(Opcodes.ARETURN);
l1 = helper.createLabel();
mv.visitLabel(l1);
mv.visitLocalVariable("this", "L" + className + "Extensibility;", null, l0, l1, 0);
mv.visitMaxs(1, 1);
mv.visitEnd();
if (hasAttributes) {
mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "getRequired", "()Ljava/lang/Boolean;", null, null);
mv.visitCode();
l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(66, l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, className + "Extensibility", "getOtherAttributes", "()Ljava/util/Map;", false);
mv.visitFieldInsn(Opcodes.GETSTATIC, className + "Extensibility", "WSDL_REQUIRED", "Ljavax/xml/namespace/QName;");
mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", true);
mv.visitTypeInsn(Opcodes.CHECKCAST, "java/lang/String");
mv.visitVarInsn(Opcodes.ASTORE, 1);
l1 = helper.createLabel();
mv.visitLabel(l1);
mv.visitLineNumber(67, l1);
mv.visitVarInsn(Opcodes.ALOAD, 1);
l2 = helper.createLabel();
mv.visitJumpInsn(Opcodes.IFNONNULL, l2);
mv.visitInsn(Opcodes.ACONST_NULL);
l3 = helper.createLabel();
mv.visitJumpInsn(Opcodes.GOTO, l3);
mv.visitLabel(l2);
mv.visitFrame(Opcodes.F_APPEND, 1, new Object[] { "java/lang/String" }, 0, null);
mv.visitVarInsn(Opcodes.ALOAD, 1);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Boolean", "valueOf", "(Ljava/lang/String;)Ljava/lang/Boolean;", false);
mv.visitLabel(l3);
mv.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] { "java/lang/Boolean" });
mv.visitInsn(Opcodes.ARETURN);
Label l4 = helper.createLabel();
mv.visitLabel(l4);
mv.visitLocalVariable("this", "L" + className + "Extensibility;", null, l0, l4, 0);
mv.visitLocalVariable("s", "Ljava/lang/String;", null, l1, l4, 1);
mv.visitMaxs(2, 2);
mv.visitEnd();
mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "setRequired", "(Ljava/lang/Boolean;)V", null, null);
mv.visitCode();
l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(76, l0);
mv.visitVarInsn(Opcodes.ALOAD, 1);
l1 = helper.createLabel();
mv.visitJumpInsn(Opcodes.IFNONNULL, l1);
l2 = helper.createLabel();
mv.visitLabel(l2);
mv.visitLineNumber(77, l2);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, className + "Extensibility", "getOtherAttributes", "()Ljava/util/Map;", false);
mv.visitFieldInsn(Opcodes.GETSTATIC, className + "Extensibility", "WSDL_REQUIRED", "Ljavax/xml/namespace/QName;");
mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Map", "remove", "(Ljava/lang/Object;)Ljava/lang/Object;", true);
mv.visitInsn(Opcodes.POP);
l3 = helper.createLabel();
mv.visitLabel(l3);
mv.visitLineNumber(78, l3);
l4 = helper.createLabel();
mv.visitJumpInsn(Opcodes.GOTO, l4);
mv.visitLabel(l1);
mv.visitLineNumber(79, l1);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, className + "Extensibility", "getOtherAttributes", "()Ljava/util/Map;", false);
mv.visitFieldInsn(Opcodes.GETSTATIC, className + "Extensibility", "WSDL_REQUIRED", "Ljavax/xml/namespace/QName;");
mv.visitVarInsn(Opcodes.ALOAD, 1);
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Boolean", "toString", "()Ljava/lang/String;", false);
mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Map", "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", true);
mv.visitInsn(Opcodes.POP);
mv.visitLabel(l4);
mv.visitLineNumber(81, l4);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitInsn(Opcodes.RETURN);
Label l5 = helper.createLabel();
mv.visitLabel(l5);
mv.visitLocalVariable("this", "L" + className + "Extensibility;", null, l0, l5, 0);
mv.visitLocalVariable("b", "Ljava/lang/Boolean;", null, l0, l5, 1);
mv.visitMaxs(3, 2);
mv.visitEnd();
} else {
mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "getRequired", "()Ljava/lang/Boolean;", null, null);
mv.visitCode();
l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(68, l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, className + "Extensibility", "required", "Ljava/lang/Boolean;");
mv.visitInsn(Opcodes.ARETURN);
l1 = helper.createLabel();
mv.visitLabel(l1);
mv.visitLocalVariable("this", "L" + className + "Extensibility;", null, l0, l1, 0);
mv.visitMaxs(1, 1);
mv.visitEnd();
mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "setRequired", "(Ljava/lang/Boolean;)V", null, null);
mv.visitCode();
l0 = helper.createLabel();
mv.visitLabel(l0);
mv.visitLineNumber(71, l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitVarInsn(Opcodes.ALOAD, 1);
mv.visitFieldInsn(Opcodes.PUTFIELD, className + "Extensibility", "required", "Ljava/lang/Boolean;");
l1 = helper.createLabel();
mv.visitLabel(l1);
mv.visitLineNumber(72, l1);
mv.visitInsn(Opcodes.RETURN);
l2 = helper.createLabel();
mv.visitLabel(l2);
mv.visitLocalVariable("this", "L" + className + "Extensibility;", null, l0, l2, 0);
mv.visitLocalVariable("b", "Ljava/lang/Boolean;", null, l0, l2, 1);
mv.visitMaxs(2, 2);
mv.visitEnd();
}
cw.visitEnd();
byte[] bytes = cw.toByteArray();
return helper.loadClass(className + "Extensibility", loader, bytes);
}
use of org.apache.cxf.common.util.ASMHelper.MethodVisitor in project cxf by apache.
the class CorbaAnyHelper method addWriteOverride.
private static void addWriteOverride(ASMHelper helper, ClassWriter cw) {
MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "write_value", "(Lorg/omg/CORBA/portable/OutputStream;)V", null, null);
mv.visitCode();
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;");
Label l1 = helper.createLabel();
mv.visitJumpInsn(Opcodes.IFNULL, l1);
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;");
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);
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(2, 2);
mv.visitEnd();
}
use of org.apache.cxf.common.util.ASMHelper.MethodVisitor in project cxf by apache.
the class CorbaAnyHelper method addInsertOverride.
private static void addInsertOverride(ASMHelper helper, ClassWriter cw) {
MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "insert_Streamable", "(Lorg/omg/CORBA/portable/Streamable;)V", null, null);
mv.visitCode();
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);
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;");
Label l2 = helper.createLabel();
mv.visitLabel(l2);
mv.visitLineNumber(45, l2);
mv.visitInsn(Opcodes.RETURN);
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(2, 2);
mv.visitEnd();
}
Aggregations