/** * @param builder the intent builder in which to emit. * @param binding the binding to emit. * @param generic generic value. */ private void emitOptionalSetter( TypeSpec.Builder builder, ExtraInjection binding, TypeName generic) { Collection<FieldBinding> fieldBindings = binding.getFieldBindings(); if (fieldBindings.isEmpty()) { return; } FieldBinding firstFieldBinding = fieldBindings.iterator().next(); TypeMirror extraType = firstFieldBinding.getType(); String castToParcelableIfNecessary = doCreateParcelableCastIfExtraIsParcelable(extraType); final String value = extractValue(firstFieldBinding); MethodSpec.Builder setterBuilder = MethodSpec.methodBuilder(binding.getKey()) .addModifiers(Modifier.PUBLIC) .addParameter(TypeName.get(extraType), firstFieldBinding.getName()) .returns(generic) .addStatement( "bundler.put($S," + castToParcelableIfNecessary + " $L)", binding.getKey(), value) .addStatement("return ($T) this", generic); builder.addMethod(setterBuilder.build()); }
final TypeMirror extraType = firstFieldBinding.getType(); final String castToParcelableIfNecessary = doCreateParcelableCastIfExtraIsParcelable(extraType); final String value = extractValue(firstFieldBinding);
private void emitFieldBindings(MethodSpec.Builder builder, ExtraInjection binding) { Collection<FieldBinding> fieldBindings = binding.getFieldBindings(); if (fieldBindings.isEmpty()) { return; } for (FieldBinding fieldBinding : fieldBindings) { builder.addCode("target.$L = ", fieldBinding.getName()); if (fieldBinding.isParcel()) { builder.addCode("org.parceler.Parcels.unwrap((android.os.Parcelable) object);\n"); } else { emitCast(builder, fieldBinding.getType()); builder.addCode("object;\n"); } } }