Search in sources :

Example 6 with TypedVisitor

use of io.sundr.builder.TypedVisitor in project sundrio by sundrio.

the class BuilderUtils method findBuildableReferences.

/**
 * Returns all references of a {@link ClassRef} that are considered buildable.
 *
 * @param ref The reference.
 * @return The list with all detected references.
 */
public static List<ClassRef> findBuildableReferences(ClassRef ref) {
    List<ClassRef> result = new ArrayList<>();
    TypeDef def = new TypeDefBuilder(GetDefinition.of(ref)).accept(new TypedVisitor<ClassRefBuilder>() {

        @Override
        public void visit(ClassRefBuilder builder) {
            ClassRef candidate = builder.build();
            if (isBuildable(candidate)) {
                result.add(candidate);
            }
        }
    }).build();
    return result;
}
Also used : TypedVisitor(io.sundr.builder.TypedVisitor) ClassRef(io.sundr.model.ClassRef) TypeDef(io.sundr.model.TypeDef) ClassRefBuilder(io.sundr.model.ClassRefBuilder) ArrayList(java.util.ArrayList) TypeDefBuilder(io.sundr.model.TypeDefBuilder)

Aggregations

TypedVisitor (io.sundr.builder.TypedVisitor)6 TypeRef (io.sundr.model.TypeRef)5 ClassRefBuilder (io.sundr.model.ClassRefBuilder)4 ArrayList (java.util.ArrayList)4 ClassRef (io.sundr.model.ClassRef)3 MethodBuilder (io.sundr.model.MethodBuilder)3 PropertyBuilder (io.sundr.model.PropertyBuilder)3 TypeDef (io.sundr.model.TypeDef)3 TypeDefBuilder (io.sundr.model.TypeDefBuilder)3 TypeParamRef (io.sundr.model.TypeParamRef)3 Method (io.sundr.model.Method)2 Property (io.sundr.model.Property)2 RichTypeDef (io.sundr.model.RichTypeDef)2 Adapters (io.sundr.adapter.api.Adapters)1 AptContext (io.sundr.adapter.apt.AptContext)1 ADDITIONAL_BUILDABLES (io.sundr.builder.Constants.ADDITIONAL_BUILDABLES)1 ADDITIONAL_TYPES (io.sundr.builder.Constants.ADDITIONAL_TYPES)1 ARRAYS (io.sundr.builder.Constants.ARRAYS)1 COLLECTORS (io.sundr.builder.Constants.COLLECTORS)1 TO_STRING_ARRAY_SNIPPET (io.sundr.builder.Constants.TO_STRING_ARRAY_SNIPPET)1