private CtMethod valuesMethod() { if (valuesMethod == null) { valuesMethod = getFactory().Core().createMethod(); valuesMethod.setParent(this); valuesMethod.addModifier(ModifierKind.PUBLIC); valuesMethod.addModifier(ModifierKind.STATIC); valuesMethod.setSimpleName("values"); valuesMethod.setImplicit(true); valuesMethod.setType(factory.Type().createArrayReference(getReference())); } return valuesMethod; }
private CtMethod valueOfMethod() { if (valueOfMethod == null) { valueOfMethod = getFactory().Core().createMethod(); valueOfMethod.setParent(this); valueOfMethod.addModifier(ModifierKind.PUBLIC); valueOfMethod.addModifier(ModifierKind.STATIC); valueOfMethod.setSimpleName("valueOf"); valueOfMethod.setImplicit(true); valueOfMethod.addThrownType( getFactory().Type().createReference(IllegalArgumentException.class)); valueOfMethod.setType(getReference()); factory.Method().createParameter(valueOfMethod, factory.Type().STRING, "name"); } return valueOfMethod; }
@Override public boolean visit(MethodDeclaration methodDeclaration, ClassScope scope) { CtMethod<Object> m = factory.Core().createMethod(); m.setSimpleName(CharOperation.charToString(methodDeclaration.selector)); if (methodDeclaration.binding != null) { m.setExtendedModifiers(getModifiers(methodDeclaration.binding.modifiers, true, true)); } for (CtExtendedModifier extendedModifier : getModifiers(methodDeclaration.modifiers, false, true)) { m.addModifier(extendedModifier.getKind()); // avoid to keep implicit AND explicit modifier of the same kind. } m.setDefaultMethod(methodDeclaration.isDefaultMethod()); context.enter(m, methodDeclaration); // Create block if (!methodDeclaration.isAbstract() && (methodDeclaration.modifiers & ClassFileConstants.AccNative) == 0) { context.enter(getFactory().Core().createBlock(), methodDeclaration); context.exit(methodDeclaration); } // We consider the receiver as a standard argument (i.e. as a parameter) Receiver receiver = methodDeclaration.receiver; if (receiver != null) { receiver.traverse(this, methodDeclaration.scope); } return true; }
private CtMethod<Void> initAfterClassMethod(Factory factory) { final CtMethod<Void> afterClassMethod = factory.createMethod(); afterClassMethod.setType(factory.Type().VOID_PRIMITIVE); afterClassMethod.addModifier(ModifierKind.PUBLIC); afterClassMethod.addModifier(ModifierKind.STATIC); afterClassMethod.setSimpleName("afterClass"); final CtAnnotation annotation = factory.createAnnotation(); annotation.setAnnotationType(factory.Annotation().create(this.getFullQualifiedNameOfAnnotationAfterClass()).getReference()); afterClassMethod.addAnnotation(annotation); afterClassMethod.setBody(factory.createBlock()); return afterClassMethod; } }