private void emitAssign(TypeSpec.Builder builder) { MethodSpec.Builder bindBuilder = MethodSpec.methodBuilder("assign") .addModifiers(Modifier.PUBLIC, Modifier.STATIC) .addParameter(bestGuess(target.getFQN()), "target") .addParameter( get(target.navigationModelPackage, target.navigationModelClass), "navigationModel"); bindBuilder.addStatement("target.$L = navigationModel", target.navigationModelFieldName); if (target.parentPackage != null) { // Emit a call to the superclass binder, if any. bindBuilder.addStatement( "$T.assign(target, navigationModel)", bestGuess(target.getParentFQN() + NAVIGATION_MODEL_BINDER_SUFFIX)); } builder.addMethod(bindBuilder.build()); } }
public NavigationModelBindingTarget createTargetClass( TypeElement classElement, VariableElement navigationModelVariableElement) { final String classPackage = compilerUtil.getPackageName(classElement); final String className = compilerUtil.getClassName(classElement, classPackage); final TypeElement navigationModelElement = (TypeElement) ((DeclaredType) navigationModelVariableElement.asType()).asElement(); final String navigationModelPackage = compilerUtil.getPackageName(navigationModelElement); final String navigationModelClass = compilerUtil.getClassName(navigationModelElement, navigationModelPackage); final String navigationModelFieldName = navigationModelVariableElement.getSimpleName().toString(); return new NavigationModelBindingTarget( classPackage, className, navigationModelPackage, navigationModelClass, navigationModelFieldName); }
private void emitBind(TypeSpec.Builder builder) { MethodSpec.Builder bindBuilder = MethodSpec.methodBuilder("bind") .addModifiers(Modifier.PUBLIC, Modifier.STATIC) .addParameter(get(Dart.Finder.class), "finder") .addParameter(bestGuess(target.getFQN()), "target"); bindBuilder.addStatement( "target.$L = new $T()", target.navigationModelFieldName, get(target.navigationModelPackage, target.navigationModelClass)); bindBuilder.addStatement( "$T.bind(finder, target.$L, target)", get(target.navigationModelPackage, target.navigationModelClass + Dart.EXTRA_BINDER_SUFFIX), target.navigationModelFieldName); if (target.parentPackage != null) { // Emit a call to the superclass binder, if any. bindBuilder.addStatement( "$T.assign(target, target.$L)", bestGuess(target.getParentFQN() + NAVIGATION_MODEL_BINDER_SUFFIX), target.navigationModelFieldName); } builder.addMethod(bindBuilder.build()); }