AnnotationVisitor annotationV; annotationV = visitor.visitAnnotation(key, Type.getType(nestedAnnotation.getKey()).getDescriptor()); visitAnnotationFields(annotationV, nestedAnnotation.getValue()); annotationV.visitEnd(); AnnotationVisitor arrayV = visitor.visitArray(key); for (int i = 0; i < values.length; i++) { Map<String, Object> map = new HashMap<String, Object>(); visitAnnotationFields(arrayV, map); arrayV.visitEnd(); } else if (value.getClass().isEnum()) { visitor.visitEnum(key, ci(value.getClass()), value.toString()); } else if (value instanceof Class) { visitor.visit(key, Type.getType((Class) value)); } else { visitor.visit(key, value);
private void addClassAnnotations() { if (classAnnotations != null && !classAnnotations.isEmpty()) { for (Map.Entry<Class,Map<String,Object>> entry : classAnnotations.entrySet()) { Class annoType = entry.getKey(); Map<String,Object> fields = entry.getValue(); AnnotationVisitor av = cw.visitAnnotation(ci(annoType), true); CodegenUtils.visitAnnotationFields(av, fields); av.visitEnd(); } } }
private static ClassWriter createJavaMethodCtor(String namePath, String sup, String parameterDesc) { ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES); String sourceFile = namePath.substring(namePath.lastIndexOf('/') + 1) + ".gen"; cw.visit(RubyInstanceConfig.JAVA_VERSION, ACC_PUBLIC + ACC_SUPER, namePath, null, sup, null); cw.visitSource(sourceFile, null); AnnotationVisitor av = cw.visitAnnotation(ci(DynamicMethod.Version.class), true); av.visit("version", 0); av.visitEnd(); SkinnyMethodAdapter mv = new SkinnyMethodAdapter(cw, ACC_PUBLIC, "<init>", JAVA_SUPER_SIG, null, null); mv.start(); mv.aloadMany(0, 1, 2, 3); mv.invokespecial(sup, "<init>", JAVA_SUPER_SIG); mv.aload(0); mv.ldc(parameterDesc.toString()); mv.invokevirtual(p(JavaMethod.class), "setParameterDesc", sig(void.class, String.class)); mv.voidreturn(); mv.end(); return cw; }
private void addClassAnnotations() { if (classAnnotations != null && !classAnnotations.isEmpty()) { for (Map.Entry<Class,Map<String,Object>> entry : classAnnotations.entrySet()) { Class annoType = entry.getKey(); Map<String,Object> fields = entry.getValue(); AnnotationVisitor av = cw.visitAnnotation(ci(annoType), true); CodegenUtils.visitAnnotationFields(av, fields); av.visitEnd(); } } }
private static ClassWriter createJavaMethodCtor(String namePath, String sup, String parameterDesc) { ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES); String sourceFile = namePath.substring(namePath.lastIndexOf('/') + 1) + ".gen"; cw.visit(RubyInstanceConfig.JAVA_VERSION, ACC_PUBLIC + ACC_SUPER, namePath, null, sup, null); cw.visitSource(sourceFile, null); AnnotationVisitor av = cw.visitAnnotation(ci(DynamicMethod.Version.class), true); av.visit("version", 0); av.visitEnd(); SkinnyMethodAdapter mv = new SkinnyMethodAdapter(cw, ACC_PUBLIC, "<init>", JAVA_SUPER_SIG, null, null); mv.start(); mv.aloadMany(0, 1, 2, 3); mv.invokespecial(sup, "<init>", JAVA_SUPER_SIG); mv.aload(0); mv.ldc(parameterDesc.toString()); mv.invokevirtual(p(JavaMethod.class), "setParameterDesc", sig(void.class, String.class)); mv.voidreturn(); mv.end(); return cw; }
AnnotationVisitor annotationV; annotationV = visitor.visitAnnotation(key, Type.getType(nestedAnnotation.getKey()).getDescriptor()); visitAnnotationFields(annotationV, nestedAnnotation.getValue()); annotationV.visitEnd(); AnnotationVisitor arrayV = visitor.visitArray(key); for (int i = 0; i < values.length; i++) { Map<String, Object> map = new HashMap<String, Object>(); visitAnnotationFields(arrayV, map); arrayV.visitEnd(); } else if (value.getClass().isEnum()) { visitor.visitEnum(key, ci(value.getClass()), value.toString()); } else if (value instanceof Class) { visitor.visit(key, Type.getType((Class) value)); } else { visitor.visit(key, value);
public void visitParameterAnnotationWithFields(int param, String name, boolean visible, Map<String,Object> fields) { AnnotationVisitor visitor = visitParameterAnnotation(param, name, visible); visitAnnotationFields(visitor, fields); visitor.visitEnd(); }
AnnotationVisitor annotationV; annotationV = visitor.visitAnnotation(key, Type.getType(nestedAnnotation.getKey()).getDescriptor()); visitAnnotationFields(annotationV, nestedAnnotation.getValue()); annotationV.visitEnd(); AnnotationVisitor arrayV = visitor.visitArray(key); for (int i = 0; i < values.length; i++) { Map<String, Object> map = new HashMap<String, Object>(); visitAnnotationFields(arrayV, map); arrayV.visitEnd(); } else if (value.getClass().isEnum()) { visitor.visitEnum(key, ci(value.getClass()), value.toString()); } else if (value instanceof Class) { visitor.visit(key, Type.getType((Class) value)); } else { visitor.visit(key, value);
public void visitAnnotationWithFields(String name, boolean visible, Map<String,Object> fields) { AnnotationVisitor visitor = visitAnnotation(name, visible); visitAnnotationFields(visitor, fields); visitor.visitEnd(); }
AnnotationVisitor annotationV; annotationV = visitor.visitAnnotation(key, Type.getType(nestedAnnotation.getKey()).getDescriptor()); visitAnnotationFields(annotationV, nestedAnnotation.getValue()); annotationV.visitEnd(); AnnotationVisitor arrayV = visitor.visitArray(key); for (int i = 0; i < values.length; i++) { Map<String, Object> map = new HashMap<String, Object>(); visitAnnotationFields(arrayV, map); arrayV.visitEnd(); } else if (value.getClass().isEnum()) { visitor.visitEnum(key, ci(value.getClass()), value.toString()); } else if (value instanceof Class) { visitor.visit(key, Type.getType((Class) value)); } else { visitor.visit(key, value);
public void visitParameterAnnotationWithFields(int param, String name, boolean visible, Map<String,Object> fields) { AnnotationVisitor visitor = visitParameterAnnotation(param, name, visible); visitAnnotationFields(visitor, fields); visitor.visitEnd(); }
public void visitAnnotationWithFields(String name, boolean visible, Map<String,Object> fields) { AnnotationVisitor visitor = visitAnnotation(name, visible); visitAnnotationFields(visitor, fields); visitor.visitEnd(); }
public void visitParameterAnnotationWithFields(int param, String name, boolean visible, Map<String,Object> fields) { AnnotationVisitor visitor = visitParameterAnnotation(param, name, visible); visitAnnotationFields(visitor, fields); visitor.visitEnd(); }
public void visitParameterAnnotationWithFields(int param, String name, boolean visible, Map<String,Object> fields) { AnnotationVisitor visitor = visitParameterAnnotation(param, name, visible); visitAnnotationFields(visitor, fields); visitor.visitEnd(); }
public void visitAnnotationWithFields(String name, boolean visible, Map<String,Object> fields) { AnnotationVisitor visitor = visitAnnotation(name, visible); visitAnnotationFields(visitor, fields); visitor.visitEnd(); }
public void visitAnnotationWithFields(String name, boolean visible, Map<String,Object> fields) { AnnotationVisitor visitor = visitAnnotation(name, visible); visitAnnotationFields(visitor, fields); visitor.visitEnd(); }