public ClassType asClassType() { if (asType().getKind() == TypeKind.DECLARED) { return new ClassType(getProcessingEnv(), (DeclaredType) asType()); } return null; }
AnnotationElement<Compound> compounddAnn = var.getAnnotation(Compound.class); if (compounddAnn == null) { TeleParamElement teleParam = new TeleParamElement(var); if (ve.asType().toString().equals(var.asType().toString())) { TeleFacadeElement teleFacade = teleMethod.getParentTeleFacade(); throw CodegenException.of().message("Recursive composition for: " + var.asType().toString() + "->" + var.getName() + " in: " + teleFacade.getParentService().getOriginClass().asType().toString() + List<FieldElement> fields = var.asClassType().asClassElement().getFieldsFiltered( f -> !f.unwrap().getModifiers().contains(Modifier.FINAL) && !f.unwrap().getModifiers().contains(Modifier.STATIC) AnnotationElement<TeleView> teleViewAnn = varStack.getFirst().getAnnotation(TeleView.class); Set<String> masterViews = getTeleViewKeys(teleViewAnn); for (FieldElement field : fields) { throw CodegenException.of().message("Unsupported field type kind for tele-view " + var.asClassType().asClassElement().getName() + "->" + field.getName()) .element(field.unwrap()) .build();
protected CodeBlock generateVarValue(TeleVarElement var, CodeBlock.Builder binderBuilder) { TypeElement paramTypeElm = var.getOriginVariable().asClassType().asClassElement().unwrap(); TypeName paramTypeName = TypeName.get(paramTypeElm.asType()); binderBuilder.addStatement("$T $N=new $T()", paramTypeName, valueVar, TypeName.get(var.getOriginVariable().asType())); String setterName = "set" + StrUtils.firstCharToUpperCase(subvar.getOriginVariable().getName()); binderBuilder.add("$N.$N(", valueVar, setterName); binderBuilder.add(value);
while (curVar != null) { String name; AnnotationElement<ParamName> nameAnn = curVar.getOriginVariable().getAnnotation(ParamName.class); if (nameAnn != null) { name = nameAnn.unwrap().value(); } else { name = curVar.getOriginVariable().getName(); String paramOrigin = Origin.DEFAULT.name(); AnnotationElement<ParamOrigin> originAnn = teleParam.getOriginVariable().getAnnotation(ParamOrigin.class); if (originAnn == null) { originAnn = teleMethod.getProxyMethod().getOriginMethod().getAnnotation(ParamOrigin.class); if (originAnn == null) { originAnn = rootVar.getOriginVariable().getAnnotation(ParamOrigin.class); AnnotationElement<ParamName> nameAnn = teleParam.getOriginVariable().getAnnotation(ParamName.class); if (nameAnn != null && nameAnn.unwrap().value() != "") { paramName = nameAnn.unwrap().value();
for (TeleVarElement param : teleMethod.getParameters()) { CodeBlock value = generateVarValue(param, binderBuilder); String paramName = param.getOriginVariable().getName() + PARAM_SUFFIX; serviceMethodArgs.add("$N", paramName); binderBuilder.add("$T $N=", TypeName.get(param.getOriginVariable().asType()), paramName); binderBuilder.add(value); binderBuilder.add(";\n");