@Override public JavaType apply(JavaType item) { BuilderContext ctx = BuilderContextManager.getContext(); JavaType fluent = SHALLOW_FLUENT.apply(item); List<JavaType> generics = new ArrayList<JavaType>(); for (JavaType generic : item.getGenericTypes()) { generics.add(generic); } JavaType generic = typeExtends(Constants.T, fluent); generics.add(generic); JavaType superClass = isBuildable(item.getSuperClass()) ? SHALLOW_FLUENT.apply(item.getSuperClass()) : ctx.getBaseFluentClass().getType(); return new JavaTypeBuilder(item) .withClassName(item.getClassName() + "Fluent") .withPackageName(item.getPackageName()) .withGenericTypes(generics.toArray(new JavaType[generics.size()])) .withSuperClass(superClass) .withInterfaces(new HashSet(Arrays.asList(ctx.getFluentInterface().getType()))) .build(); }
.withReturnType(typeGenericOf(ARRAY_LIST, T)) .addNewArgument() .withType(typeGenericOf(LIST, typeExtends(Q, typeGenericOf(builderInterface.getType(), T)))) .withName("list") .endArgument() .withReturnType(typeGenericOf(LINKED_HASH_SET, T)) .addNewArgument() .withType(typeGenericOf(LINKED_HASH_SET, typeExtends(Q, typeGenericOf(builderInterface.getType(), T)))) .withName("set") .endArgument() .withReturnType(typeGenericOf(ARRAY_LIST, T)) .addNewArgument() .withType(typeGenericOf(LIST, typeExtends(Q, T))) .withName("...lists") .endArgument() .withReturnType(typeGenericOf(LINKED_HASH_SET, T)) .addNewArgument() .withType(typeGenericOf(SET, typeExtends(Q, T))) .withName("...sets") .endArgument()