@Override public AnnotationSource<JavaAnnotationSource> addAnnotation( final Class<? extends java.lang.annotation.Annotation> clazz) { if (parent.requiresImport(clazz)) { parent.addImport(clazz); } return annotations.addAnnotation(this, member, clazz.getSimpleName()); }
public AnnotationElementImpl(final JavaAnnotationSource parent, final Object internal) { this.parent = parent; ast = ((ASTNode) parent.getInternal()).getAST(); member = (AnnotationTypeMemberDeclaration) internal; }
@Override public JavaAnnotationSource getOrigin() { return parent.getOrigin(); }
private static AnnotationTypeMemberDeclaration parseElement(JavaAnnotationSource parent, String declaration) { if (!declaration.trim().endsWith(";")) { declaration = declaration + ";"; } String stub = "public @interface Stub { " + declaration + " }"; JavaAnnotationSource temp = (JavaAnnotationSource) Roaster.parse(stub); List<AnnotationElementSource> fields = temp.getAnnotationElements(); AnnotationTypeMemberDeclaration newField = (AnnotationTypeMemberDeclaration) fields.get(0).getInternal(); return (AnnotationTypeMemberDeclaration) ASTNode.copySubtree(((ASTNode) parent.getInternal()).getAST(), newField); }
@Override public <T extends Enum<T>> DefaultValue setEnumArray(T... values) { Assert.notNull(values, "null array not accepted"); final List<String> literals = new ArrayList<String>(); for (Enum<?> value : values) { Assert.notNull(value, "null value not accepted"); getOrigin().addImport(value.getDeclaringClass()); literals.add(value.getDeclaringClass().getSimpleName() + "." + value.name()); } return setLiteral(literals.size() == 1 ? literals.get(0) : String.format("{%s}", Strings.join(literals, ","))); }
@Override public DefaultValue setLiteral(String value) { if (value == null) { member.setDefault(null); } else { String stub = "public @interface Stub { String stub() default " + value + "; }"; JavaAnnotationSource temp = (JavaAnnotationSource) Roaster.parse(stub); AnnotationTypeMemberDeclaration internal = (AnnotationTypeMemberDeclaration) temp.getAnnotationElements() .get(0).getInternal(); member.setDefault((Expression) ASTNode.copySubtree(ast, internal.getDefault())); } return this; }
private Class<?> resolveTypeLiteral(TypeLiteral typeLiteral) { final Type<JavaAnnotationSource> type = new TypeImpl<JavaAnnotationSource>(getOrigin(), typeLiteral.getType()); if (type.isPrimitive()) { final Class<?>[] primitiveTypes = { boolean.class, byte.class, short.class, int.class, long.class, float.class, double.class }; for (Class<?> c : primitiveTypes) { if (c.getSimpleName().equals(type.getName())) { return c; } } return null; } final String classname = type.getQualifiedName(); try { return Class.forName(getOrigin().resolveType(classname)); } catch (ClassNotFoundException e) { return null; } } }
public void visit(JavaAnnotationSource javaAnnoSource) { for (AnnotationSource annoSource : javaAnnoSource.getAnnotations()) { visit(annoSource); } }
private static AnnotationTypeMemberDeclaration parseElement(JavaAnnotationSource parent, String declaration) { if (!declaration.trim().endsWith(";")) { declaration = declaration + ";"; } String stub = "public @interface Stub { " + declaration + " }"; JavaAnnotationSource temp = (JavaAnnotationSource) Roaster.parse(stub); List<AnnotationElementSource> fields = temp.getAnnotationElements(); AnnotationTypeMemberDeclaration newField = (AnnotationTypeMemberDeclaration) fields.get(0).getInternal(); return (AnnotationTypeMemberDeclaration) ASTNode.copySubtree(((ASTNode) parent.getInternal()).getAST(), newField); }
@Override public <T extends Enum<T>> DefaultValue setEnumArray(T... values) { Assert.notNull(values, "null array not accepted"); final List<String> literals = new ArrayList<String>(); for (Enum<?> value : values) { Assert.notNull(value, "null value not accepted"); getOrigin().addImport(value.getDeclaringClass()); literals.add(value.getDeclaringClass().getSimpleName() + "." + value.name()); } return setLiteral(literals.size() == 1 ? literals.get(0) : String.format("{%s}", Strings.join(literals, ","))); }
@Override public DefaultValue setLiteral(String value) { if (value == null) { member.setDefault(null); } else { String stub = "public @interface Stub { String stub() default " + value + "; }"; JavaAnnotationSource temp = (JavaAnnotationSource) Roaster.parse(stub); AnnotationTypeMemberDeclaration internal = (AnnotationTypeMemberDeclaration) temp.getAnnotationElements() .get(0).getInternal(); member.setDefault((Expression) ASTNode.copySubtree(ast, internal.getDefault())); } return this; }
private Class<?> resolveTypeLiteral(TypeLiteral typeLiteral) { final Type<JavaAnnotationSource> type = new TypeImpl<JavaAnnotationSource>(getOrigin(), typeLiteral.getType()); if (type.isPrimitive()) { final Class<?>[] primitiveTypes = { boolean.class, byte.class, short.class, int.class, long.class, float.class, double.class }; for (Class<?> c : primitiveTypes) { if (c.getSimpleName().equals(type.getName())) { return c; } } return null; } final String classname = type.getQualifiedName(); try { return Class.forName(getOrigin().resolveType(classname)); } catch (ClassNotFoundException e) { return null; } } }
@Override public AnnotationElementSource setType(final Class<?> clazz) { if (parent.requiresImport(clazz)) { parent.addImport(clazz); } return setType(clazz.getSimpleName()); }
private static AnnotationTypeMemberDeclaration parseElement(JavaAnnotationSource parent, String declaration) { if (!declaration.trim().endsWith(";")) { declaration = declaration + ";"; } String stub = "public @interface Stub { " + declaration + " }"; JavaAnnotationSource temp = (JavaAnnotationSource) Roaster.parse(stub); List<AnnotationElementSource> fields = temp.getAnnotationElements(); AnnotationTypeMemberDeclaration newField = (AnnotationTypeMemberDeclaration) fields.get(0).getInternal(); return (AnnotationTypeMemberDeclaration) ASTNode.copySubtree(((ASTNode) parent.getInternal()).getAST(), newField); }
public AnnotationElementImpl(final JavaAnnotationSource parent, final Object internal) { this.parent = parent; ast = ((ASTNode) parent.getInternal()).getAST(); member = (AnnotationTypeMemberDeclaration) internal; }
@Override public <T extends Enum<T>> DefaultValue setEnumArray(T... values) { Assert.notNull(values, "null array not accepted"); final List<String> literals = new ArrayList<String>(); for (Enum<?> value : values) { Assert.notNull(value, "null value not accepted"); getOrigin().addImport(value.getDeclaringClass()); literals.add(value.getDeclaringClass().getSimpleName() + "." + value.name()); } return setLiteral(literals.size() == 1 ? literals.get(0) : String.format("{%s}", Strings.join(literals, ","))); }
@Override public JavaAnnotationSource getOrigin() { return parent.getOrigin(); }
@Override public DefaultValue setLiteral(String value) { if (value == null) { member.setDefault(null); } else { String stub = "public @interface Stub { String stub() default " + value + "; }"; JavaAnnotationSource temp = (JavaAnnotationSource) Roaster.parse(stub); AnnotationTypeMemberDeclaration internal = (AnnotationTypeMemberDeclaration) temp.getAnnotationElements() .get(0).getInternal(); member.setDefault((Expression) ASTNode.copySubtree(ast, internal.getDefault())); } return this; }
private Class<?> resolveTypeLiteral(TypeLiteral typeLiteral) { final Type<JavaAnnotationSource> type = new TypeImpl<JavaAnnotationSource>(getOrigin(), typeLiteral.getType()); if (type.isPrimitive()) { final Class<?>[] primitiveTypes = { boolean.class, byte.class, short.class, int.class, long.class, float.class, double.class }; for (Class<?> c : primitiveTypes) { if (c.getSimpleName().equals(type.getName())) { return c; } } return null; } final String classname = type.getQualifiedName(); try { return Class.forName(getOrigin().resolveType(classname)); } catch (ClassNotFoundException e) { return null; } } }
@Override public AnnotationSource<JavaAnnotationSource> addAnnotation(final Class<? extends java.lang.annotation.Annotation> clazz) { if (parent.requiresImport(clazz)) { parent.addImport(clazz); } return annotations.addAnnotation(this, member, clazz.getSimpleName()); }