private void addDelegateMethod(FieldNode fieldNode, ClassNode owner, Map ownMethods, Map.Entry e) { MethodNode method = (MethodNode) e.getValue(); if (!method.isPublic() || method.isStatic()) return; if (!ownMethods.containsKey(e.getKey())) { final ArgumentListExpression args = new ArgumentListExpression(); final Parameter[] params = method.getParameters(); final Parameter[] newParams = new Parameter[params.length]; for (int i = 0; i < newParams.length; i++) { Parameter newParam = new Parameter(nonGeneric(params[i].getType()), params[i].getName()); newParams[i] = newParam; args.addExpression(new VariableExpression(newParam)); } owner.addMethod(method.getName(), method.getModifiers() & (~ACC_ABSTRACT), nonGeneric(method.getReturnType()), newParams, method.getExceptions(), new ExpressionStatement( new MethodCallExpression( new FieldExpression(fieldNode), method.getName(), args))); } }
private void addDelegateMethod(FieldNode fieldNode, ClassNode owner, Map<String, MethodNode> ownMethods, Map.Entry<String, MethodNode> e, boolean deprecated) { MethodNode method = e.getValue(); if (!method.isPublic() || method.isStatic() || 0 != (method.getModifiers () & Opcodes.ACC_SYNTHETIC)) return; if (!method.getAnnotations(DEPRECATED_TYPE).isEmpty() && !deprecated) return; MethodNode existingNode = ownMethods.get(e.getKey()); // TODO work out why the code was null for super interfaces if (existingNode == null || existingNode.getCode() == null) { final ArgumentListExpression args = new ArgumentListExpression(); final Parameter[] params = method.getParameters(); final Parameter[] newParams = new Parameter[params.length]; for (int i = 0; i < newParams.length; i++) { Parameter newParam = new Parameter(nonGeneric(params[i].getType()), params[i].getName()); newParams[i] = newParam; args.addExpression(new VariableExpression(newParam)); } owner.addMethod(method.getName(), method.getModifiers() & (~ACC_ABSTRACT) & (~ACC_NATIVE), nonGeneric(method.getReturnType()), newParams, method.getExceptions(), new ExpressionStatement( new MethodCallExpression( new FieldExpression(fieldNode), method.getName(), args))); } }
owner.addMethod(getterName, ACC_PUBLIC, nonGeneric(prop.getType()), Parameter.EMPTY_ARRAY, null, ACC_PUBLIC, ClassHelper.VOID_TYPE, new Parameter[] {new Parameter(nonGeneric(prop.getType()), "value")}, null, new ExpressionStatement(
private void addGetterIfNeeded(FieldNode fieldNode, ClassNode owner, PropertyNode prop, String name) { String getterName = "get" + Verifier.capitalize(name); if (owner.getGetterMethod(getterName) == null) { owner.addMethod(getterName, ACC_PUBLIC, nonGeneric(prop.getType()), Parameter.EMPTY_ARRAY, null, new ReturnStatement( new PropertyExpression( new FieldExpression(fieldNode), name))); } }
private void addGetterIfNeeded(FieldNode fieldNode, ClassNode owner, PropertyNode prop, String name) { String getterName = "get" + Verifier.capitalize(name); if (owner.getGetterMethod(getterName) == null) { owner.addMethod(getterName, ACC_PUBLIC, nonGeneric(prop.getType()), Parameter.EMPTY_ARRAY, null, new ReturnStatement( new PropertyExpression( new VariableExpression(fieldNode), name))); } }
final Parameter[] newParams = new Parameter[params.length]; for (int i = 0; i < newParams.length; i++) { Parameter newParam = new Parameter(nonGeneric(params[i].getType()), params[i].getName()); newParam.setInitialExpression(params[i].getInitialExpression()); newParams[i] = newParam; nonGeneric(candidate.getReturnType()), newParams, candidate.getExceptions(),
private void addSetterIfNeeded(FieldNode fieldNode, ClassNode owner, PropertyNode prop, String name) { String setterName = "set" + Verifier.capitalize(name); if ((prop.getModifiers() & ACC_FINAL) != 0 && owner.getSetterMethod(setterName) == null) { owner.addMethod(setterName, ACC_PUBLIC, ClassHelper.VOID_TYPE, new Parameter[]{new Parameter(nonGeneric(prop.getType()), "value")}, null, new ExpressionStatement( new BinaryExpression( new PropertyExpression( new FieldExpression(fieldNode), name), Token.newSymbol(Types.EQUAL, -1, -1), new VariableExpression("value")))); } }
private void addSetterIfNeeded(FieldNode fieldNode, ClassNode owner, PropertyNode prop, String name) { String setterName = "set" + Verifier.capitalize(name); if ((prop.getModifiers() & ACC_FINAL) == 0 && owner.getSetterMethod(setterName) == null) { owner.addMethod(setterName, ACC_PUBLIC, ClassHelper.VOID_TYPE, new Parameter[]{new Parameter(nonGeneric(prop.getType()), "value")}, null, new ExpressionStatement( new BinaryExpression( new PropertyExpression( new VariableExpression(fieldNode), name), Token.newSymbol(Types.EQUAL, -1, -1), new VariableExpression("value")))); } }