public ClassRef buildExtendsList(int index){ return this.extendsList.get(index).build(); }
public ClassRef buildFirstImplementsList(){ return this.implementsList.get(0).build(); }
public ClassRef buildImplementsList(int index){ return this.implementsList.get(index).build(); }
public ClassRef buildFirstExtendsList(){ return this.extendsList.get(0).build(); }
public ClassRef buildLastImplementsList(){ return this.implementsList.get(implementsList.size() - 1).build(); }
public ClassRef buildLastExtendsList(){ return this.extendsList.get(extendsList.size() - 1).build(); }
@Override public void visit(ClassRefBuilder builder) { ClassRef candidate = builder.build(); if (isBuildable(candidate)) { result.add(candidate); } } })
public ClassRef buildMatchingExtendsList(Predicate<ClassRefBuilder> predicate){ for (ClassRefBuilder item: extendsList) { if(predicate.apply(item)){return item.build();} } return null; }
public ClassRef buildMatchingImplementsList(Predicate<ClassRefBuilder> predicate){ for (ClassRefBuilder item: implementsList) { if(predicate.apply(item)){return item.build();} } return null; }
public ClassRef withDimensions(int dimensions) { return new ClassRefBuilder(this).withDimensions(dimensions).build(); }
public Set<ClassRef> apply(Set<ClassRef> source) { Set<ClassRef> result = new LinkedHashSet<ClassRef>(source); Set<TypeRef> typeArguments = findTypeArguments(source); for (TypeRef type : typeArguments) { Set<ClassRef> intermediate = new LinkedHashSet<ClassRef>(); for (ClassRef clazz : result) { intermediate.add(new ClassRefBuilder(clazz).accept(new TypeArgumentReplace(type, Generics.MAP.apply(type).toReference())).build()); } result = new LinkedHashSet<ClassRef>(intermediate); } return result; } };
/** * Creates a {@link ClassRef} without bounds. */ public ClassRef toUnboundedReference() { return new ClassRefBuilder() .withDefinition(this) .withArguments(new TypeRef[0]) .build(); }
public TypeRef visitDeclared(DeclaredType t, Integer dimension) { List<TypeRef> arguments = new ArrayList<TypeRef>(); for (TypeMirror typeMirror : t.getTypeArguments()) { TypeRef arg = typeMirror.accept(this, dimension); if (arg != null) { arguments.add(arg); } } TypeDef typeDef = new TypeDefElementVisitor().visit(t.asElement()).build(); return new ClassRefBuilder() .withDefinition(typeDef) .withDimensions(dimension) .withArguments(arguments) .build(); }
public ClassRefNested<A> editOrNewClassRef(){ return withNewClassRefLike(getClassRef() != null ? getClassRef(): new ClassRefBuilder().build()); }
private static final Set<TypeParamDef> extractParameters(ClassRef classRef) { final Set<TypeParamDef> result = new LinkedHashSet<TypeParamDef>(); final Set<TypeParamRef> refs = new LinkedHashSet<TypeParamRef>(); ClassRef ignored = new ClassRefBuilder(classRef).accept(new TypeParamDefColletor(result)).accept(new TypeParamRefColletor(refs)).build(); for (TypeParamRef typeParamRef : refs) { result.add(new TypeParamDefBuilder().withName(typeParamRef.getName()).withAttributes(typeParamRef.getAttributes()).build()); } return result; }
public TypeRef visitError(ErrorType t, Integer dimension) { return new ClassRefBuilder().withDefinition(new TypeDefElementVisitor().visit(t.asElement()).build()).build(); }
public TypeRef apply(TypeRef item) { if (item instanceof PrimitiveRef) { return new PrimitiveRefBuilder((PrimitiveRef) item).withDimensions(0).build(); } else if (item instanceof ClassRef) { return new ClassRefBuilder((ClassRef) item).withDimensions(0).build(); } else if (item instanceof TypeParamRef) { return new TypeParamRefBuilder((TypeParamRef) item).withDimensions(0).build(); } else { return item; } } };
private void visitPropertyBuilder(PropertyBuilder builder) { if (builder.getTypeRef() instanceof ClassRef) { ClassRefBuilder classRefBuilder = new ClassRefBuilder((ClassRef) builder.getTypeRef()); if (classRefBuilder.getDefinition() != null && classRefBuilder.getDefinition().getPackageName() != null && classRefBuilder.getDefinition().getPackageName().equals(target)) { classRefBuilder.editDefinition().withPackageName(replacement).endDefinition(); } builder.withTypeRef(classRefBuilder.accept(this).build()); } }
private void visitMethodBuilder(MethodBuilder builder) { if (builder.getReturnType() instanceof ClassRef) { ClassRefBuilder classRefBuilder = new ClassRefBuilder((ClassRef) builder.getReturnType()); if (classRefBuilder.getDefinition() != null && classRefBuilder.getDefinition().getPackageName() != null && classRefBuilder.getDefinition().getPackageName().equals(target)) { classRefBuilder.editDefinition().withPackageName(replacement).endDefinition(); } builder.withReturnType(classRefBuilder.accept(this).build()); } }
public ClassRef apply(TypeRef item) { TypeRef baseType = TypeAs.combine(UNWRAP_COLLECTION_OF, UNWRAP_ARRAY_OF).apply(item); if (baseType instanceof ClassRef) { baseType = new ClassRefBuilder((ClassRef)baseType).withArguments().build(); } WildcardRef wildcardRef = new WildcardRefBuilder().addToBounds(baseType).build(); return BuilderContextManager.getContext().getVisitableBuilderInterface().toReference(wildcardRef, Q); } };