@Override public String getName(final HasAnnotations annotated) { return ((MetaParameter) annotated).getName(); } },
private String ensureSafeLocalVariableName(String name, final MetaMethod method) { final MetaParameter[] params = method.getParameters(); if (params != null) { for (final MetaParameter param : params) { if (name.equals(param.getName())) { name = "_" + name; break; } } } return name; }
private String ensureSafeLocalVariableName(String name, final MetaMethod method) { final MetaParameter[] params = method.getParameters(); if (params != null) { for (final MetaParameter param : params) { if (name.equals(param.getName())) { name = "_" + name; break; } } } return name; }
@Override public String toString() { StringBuilder sbuf = new StringBuilder(); sbuf.append(super.toString()); sbuf.append(" - parameter ").append(field.getName()) .append(" could not be satisfied for type: ").append(injectedType.getFullyQualifiedName()).append("\n"); if (message.length() > 0) { sbuf.append(" Message: ").append(message).append("\n"); } return sbuf.toString(); }
public String hashString() { if (_hashString != null) return _hashString; return _hashString = MetaParameter.class.getName() + ":" + getName() + ":" + getType().getFullyQualifiedName(); }
public String hashString() { if (_hashString != null) return _hashString; return _hashString = MetaParameter.class.getName() + ":" + getName() + ":" + getType().getFullyQualifiedName(); }
public static Parameter[] of(MetaParameter[] parameters) { Parameter[] ps = new Parameter[parameters.length]; for (int i = 0; i < ps.length; i++) { String name = parameters[i].getName(); if (name == null) { name = "a" + i; } ps[i] = of(parameters[i].getType(), name); } return ps; }
public static Parameter[] of(MetaParameter[] parameters) { Parameter[] ps = new Parameter[parameters.length]; for (int i = 0; i < ps.length; i++) { String name = parameters[i].getName(); if (name == null) { name = "a" + i; } ps[i] = of(parameters[i].getType(), name); } return ps; }
private AnnotationWrapper createNamed(final HasAnnotations annotated) { final String rawName; if (annotated instanceof MetaClassMember) { rawName = ((MetaClassMember) annotated).getName(); } else if (annotated instanceof MetaClass) { rawName = ((MetaClass) annotated).getName(); } else if (annotated instanceof MetaParameter) { rawName = ((MetaParameter) annotated).getName(); } else { throw new RuntimeException("Unrecognized annotated type " + annotated.getClass().getName()); } return createNamed(CDIAnnotationUtils.formatDefaultElName(rawName)); }
public Integer getIndex() { if (index == null) { final MetaClassMember member = getDeclaringMember(); final MetaParameter[] params; if (member instanceof MetaMethod) { params = ((MetaMethod) member).getParameters(); } else if (member instanceof MetaConstructor) { params = ((MetaConstructor) member).getParameters(); } else { throw new RuntimeException("Not yet implemented!"); } for (int i = 0; i < params.length; i++) { if (params[i] == this || params[i].getName().equals(getName())) { index = i; return index; } } throw new RuntimeException("Could not find index of parameter " + getName() + " in " + getDeclaringMember().getName() + " in " + getDeclaringMember().getDeclaringClassName()); } return index; } }
public Integer getIndex() { if (index == null) { final MetaClassMember member = getDeclaringMember(); final MetaParameter[] params; if (member instanceof MetaMethod) { params = ((MetaMethod) member).getParameters(); } else if (member instanceof MetaConstructor) { params = ((MetaConstructor) member).getParameters(); } else { throw new RuntimeException("Not yet implemented!"); } for (int i = 0; i < params.length; i++) { if (params[i] == this || params[i].getName().equals(getName())) { index = i; return index; } } throw new RuntimeException("Could not find index of parameter " + getName() + " in " + getDeclaringMember().getName() + " in " + getDeclaringMember().getDeclaringClassName()); } return index; } }
private Object[] getParametersForInvocation(final MetaMethod method, final Object... prependedParams) { final int paramLength = method.getParameters().length + prependedParams.length; final Object[] params = new Object[paramLength]; for (int i = 0; i < prependedParams.length; i++) { params[i] = prependedParams[i]; } final MetaParameter[] declaredParams = method.getParameters(); for (int i = 0; i < declaredParams.length; i++) { params[prependedParams.length+i] = loadVariable(declaredParams[i].getName()); } return params; }
public static String getLocalVariableName(final MetaParameter param) { final MetaClassMember member = param.getDeclaringMember(); return member.getName() + "_" + param.getName() + "_" + param.getIndex(); }
private String annotatedName() { if (annotated instanceof MetaClassMember) { return ((MetaClassMember) annotated).getDeclaringClassName() + "_" + ((MetaClassMember) annotated).getName(); } else if (annotated instanceof MetaParameter) { final MetaClassMember declaringMember = ((MetaParameter) annotated).getDeclaringMember(); return declaringMember.getDeclaringClassName() + "_" + declaringMember.getName() + "_" + ((MetaParameter) annotated).getName(); } else { throw new RuntimeException("Not yet implemented!"); } }
private Parameter[] getParametersForDeclaration(final MetaMethod method) { final MetaParameter[] metaParams = method.getParameters(); final Parameter[] params = new Parameter[metaParams.length]; for (int i = 0; i < params.length; i++) { params[i] = Parameter.of(metaParams[i].getType().getErased(), metaParams[i].getName()); } return params; }
method.getParameters()[0].getName(), method.getName(), declaringClass.getFullyQualifiedName(), ForEvent.class.getSimpleName()); if (!eventTypeMatchesAll) { message += " and must be a subset of the following event types: " + Arrays.toString(eventTypeAnno.value());
private Statement generateCascadesMethod(MetaMethod method, Object sourceObject) { Attribute<?, ?> attr = (Attribute<?, ?>) sourceObject; // grab cascade annotations from live object then generate a statement like // return (cascadeType == [type] || cascadeType == [type] || ...) CascadeType[] cascadeTypes = extractCascadeTypes(getJavaMember(attr)); if (cascadeTypes == null) { return Stmt.throw_(UnsupportedOperationException.class, "Not a relationship attribute"); } if (cascadeTypes.length == 0) { return Stmt.loadLiteral(false).returnValue(); } BooleanExpression megaExpr = null; for (CascadeType type : cascadeTypes) { if (type == CascadeType.ALL) { // if the list includes ALL, abandon megaExpr and just return true return Stmt.loadLiteral(true).returnValue(); } BooleanExpression comparison = Bool.equals(Stmt.loadVariable(method.getParameters()[0].getName()), Stmt.loadLiteral(type)); if (megaExpr == null) { megaExpr = comparison; } else { megaExpr = Bool.or(comparison, megaExpr); } } return Stmt.load(megaExpr).returnValue(); }
Attribute<?, ?> attr = (Attribute<?, ?>) o; String entityInstanceParam = method.getParameters()[0].getName();
@Override public void generateDecorator(final Decorable decorable, final FactoryController controller) { if (decorable.getAsMethod().getParameters() == null || decorable.getAsMethod().getParameters().length != 1) throw new GenerationException("@ModelSetter method needs to have exactly one parameter: " + decorable.getAsMethod()); final MetaClass modelType = (MetaClass) controller.getAttribute(DataBindingUtil.BINDER_MODEL_TYPE_VALUE); if (!decorable.getAsMethod().getParameters()[0].getType().equals(modelType)) { throw new GenerationException("@ModelSetter method parameter must be of type: " + modelType); } final Statement dataBinder = controller.getReferenceStmt(DataBindingUtil.BINDER_VAR_NAME, DataBinder.class); final Statement proxyProperty = controller.addProxyProperty("dataBinder", DataBinder.class, dataBinder); final String modelParamName = decorable.getAsMethod().getParameters()[0].getName(); controller.addInvokeBefore(decorable.getAsMethod(), nestedCall(proxyProperty) .invoke("setModel", Refs.get(modelParamName), loadStatic(StateSync.class, "FROM_MODEL"))); controller.addInvokeBefore( decorable.getAsMethod(), loadVariable(modelParamName).assignValue( Cast.to(decorable.getAsMethod().getParameters()[0].getType(), nestedCall( proxyProperty).invoke("getModel")))); } }
@Override public void generateDecorator(final Decorable decorable, final FactoryController controller) { if (decorable.getAsMethod().getParameters() == null || decorable.getAsMethod().getParameters().length != 1) throw new GenerationException("@ModelSetter method needs to have exactly one parameter: " + decorable.getAsMethod()); final MetaClass modelType = (MetaClass) controller.getAttribute(DataBindingUtil.BINDER_MODEL_TYPE_VALUE); if (!decorable.getAsMethod().getParameters()[0].getType().equals(modelType)) { throw new GenerationException("@ModelSetter method parameter must be of type: " + modelType); } final Statement dataBinder = controller.getReferenceStmt(DataBindingUtil.BINDER_VAR_NAME, DataBinder.class); final Statement proxyProperty = controller.addProxyProperty("dataBinder", DataBinder.class, dataBinder); final String modelParamName = decorable.getAsMethod().getParameters()[0].getName(); controller.addInvokeBefore(decorable.getAsMethod(), nestedCall(proxyProperty) .invoke("setModel", Refs.get(modelParamName), loadStatic(StateSync.class, "FROM_MODEL"))); controller.addInvokeBefore( decorable.getAsMethod(), loadVariable(modelParamName).assignValue( Cast.to(decorable.getAsMethod().getParameters()[0].getType(), nestedCall( proxyProperty).invoke("getModel")))); } }