Search in sources :

Example 1 with TypeMap

use of com.github.havardh.javaflow.model.TypeMap in project javaflow by havardh.

the class MemberFieldsPresentVerifier method verify.

/**
 * Verifies that there are no missing types referenced
 * in the list of {@code Type}.
 *
 * A missing type is found when a type is referenced which is not
 * in the given set of types of in the {@code TypeMap} of the verifier
 * If a any missing types are discovered a {@code MissingTypeException}
 * is thrown containing the complete list of missing types.
 *
 * @param types list of {@code Type} to verify
 * @throws MissingTypeException when a missing type is found
 */
@Override
public void verify(List<Type> types) {
    Set<CanonicalName> nameSet = types.stream().map(Type::getCanonicalName).collect(toSet());
    Map<Type, List<Field>> missingTypes = new HashMap<>();
    for (Type type : types.stream().filter(t -> t instanceof Class).collect(toList())) {
        ((Class) type).getFields().stream().filter(field -> !nameSet.contains(field.getType().getCanonicalName())).filter(field -> !isObject(field.getType().toString())).filter(field -> !isPrimitive(field.getType().toString())).filter(field -> !customTypes.containsKey(field.getType().toString())).forEach(field -> missingTypes.compute(type, (ignored, fields) -> fields == null ? singletonList(field) : concat(fields, singletonList(field))));
    }
    if (!missingTypes.isEmpty()) {
        throw new MissingTypeException(missingTypes);
    }
}
Also used : Objects.isObject(com.github.havardh.javaflow.phases.writer.flow.converter.definitions.Objects.isObject) Lists.concat(com.github.havardh.javaflow.util.Lists.concat) CanonicalName(com.github.havardh.javaflow.model.CanonicalName) Set(java.util.Set) HashMap(java.util.HashMap) Field(com.github.havardh.javaflow.ast.Field) Collections.singletonList(java.util.Collections.singletonList) MissingTypeException(com.github.havardh.javaflow.exceptions.MissingTypeException) Collectors.toList(java.util.stream.Collectors.toList) List(java.util.List) Class(com.github.havardh.javaflow.ast.Class) Map(java.util.Map) Primitives.isPrimitive(com.github.havardh.javaflow.phases.writer.flow.converter.definitions.Primitives.isPrimitive) Type(com.github.havardh.javaflow.ast.Type) TypeMap(com.github.havardh.javaflow.model.TypeMap) Collectors.toSet(java.util.stream.Collectors.toSet) Type(com.github.havardh.javaflow.ast.Type) MissingTypeException(com.github.havardh.javaflow.exceptions.MissingTypeException) HashMap(java.util.HashMap) Collections.singletonList(java.util.Collections.singletonList) Collectors.toList(java.util.stream.Collectors.toList) List(java.util.List) Class(com.github.havardh.javaflow.ast.Class) CanonicalName(com.github.havardh.javaflow.model.CanonicalName)

Example 2 with TypeMap

use of com.github.havardh.javaflow.model.TypeMap in project javaflow by havardh.

the class JavaFlow method main.

/**
 * Main routine for JavaFlow command line runner
 *
 * @param args command line arguments
 */
public static void main(String[] args) {
    TypeMap typeMap = new TypeMap("types.yml");
    Converter converter = new JavaFlowConverter(typeMap);
    List<Verifier> verifierList = new ArrayList<>();
    verifierList.add(new MemberFieldsPresentVerifier(typeMap));
    if (stream(args).anyMatch(arg -> arg.equals(VERIFY_GETTERS_ARG))) {
        verifierList.add(new ClassGetterNamingVerifier());
    }
    Execution execution = new Execution(new FileReader(), new JavaParser(), asList(new InheritanceTransformer(), new SortedTypeTransformer()), verifierList, new FlowWriter(converter), asList(new CommentPrependTransformer("Generated by javaflow 1.4.1-SNAPSHOT"), new EslintDisableTransformer(singletonList("no-use-before-define")), new CommentPrependTransformer("@flow")));
    System.out.println(execution.run(filterOutArgs(args)));
}
Also used : CommentPrependTransformer(com.github.havardh.javaflow.phases.filetransform.CommentPrependTransformer) JavaParser(com.github.havardh.javaflow.phases.parser.java.JavaParser) MemberFieldsPresentVerifier(com.github.havardh.javaflow.phases.verifier.MemberFieldsPresentVerifier) JavaFlowConverter(com.github.havardh.javaflow.phases.writer.flow.converter.JavaFlowConverter) ArrayList(java.util.ArrayList) FlowWriter(com.github.havardh.javaflow.phases.writer.flow.FlowWriter) ClassGetterNamingVerifier(com.github.havardh.javaflow.phases.verifier.ClassGetterNamingVerifier) Verifier(com.github.havardh.javaflow.phases.verifier.Verifier) ClassGetterNamingVerifier(com.github.havardh.javaflow.phases.verifier.ClassGetterNamingVerifier) MemberFieldsPresentVerifier(com.github.havardh.javaflow.phases.verifier.MemberFieldsPresentVerifier) EslintDisableTransformer(com.github.havardh.javaflow.phases.filetransform.EslintDisableTransformer) InheritanceTransformer(com.github.havardh.javaflow.phases.transform.InheritanceTransformer) SortedTypeTransformer(com.github.havardh.javaflow.phases.transform.SortedTypeTransformer) Converter(com.github.havardh.javaflow.phases.writer.flow.converter.Converter) JavaFlowConverter(com.github.havardh.javaflow.phases.writer.flow.converter.JavaFlowConverter) FileReader(com.github.havardh.javaflow.phases.reader.FileReader) TypeMap(com.github.havardh.javaflow.model.TypeMap)

Aggregations

TypeMap (com.github.havardh.javaflow.model.TypeMap)2 Class (com.github.havardh.javaflow.ast.Class)1 Field (com.github.havardh.javaflow.ast.Field)1 Type (com.github.havardh.javaflow.ast.Type)1 MissingTypeException (com.github.havardh.javaflow.exceptions.MissingTypeException)1 CanonicalName (com.github.havardh.javaflow.model.CanonicalName)1 CommentPrependTransformer (com.github.havardh.javaflow.phases.filetransform.CommentPrependTransformer)1 EslintDisableTransformer (com.github.havardh.javaflow.phases.filetransform.EslintDisableTransformer)1 JavaParser (com.github.havardh.javaflow.phases.parser.java.JavaParser)1 FileReader (com.github.havardh.javaflow.phases.reader.FileReader)1 InheritanceTransformer (com.github.havardh.javaflow.phases.transform.InheritanceTransformer)1 SortedTypeTransformer (com.github.havardh.javaflow.phases.transform.SortedTypeTransformer)1 ClassGetterNamingVerifier (com.github.havardh.javaflow.phases.verifier.ClassGetterNamingVerifier)1 MemberFieldsPresentVerifier (com.github.havardh.javaflow.phases.verifier.MemberFieldsPresentVerifier)1 Verifier (com.github.havardh.javaflow.phases.verifier.Verifier)1 FlowWriter (com.github.havardh.javaflow.phases.writer.flow.FlowWriter)1 Converter (com.github.havardh.javaflow.phases.writer.flow.converter.Converter)1 JavaFlowConverter (com.github.havardh.javaflow.phases.writer.flow.converter.JavaFlowConverter)1 Objects.isObject (com.github.havardh.javaflow.phases.writer.flow.converter.definitions.Objects.isObject)1 Primitives.isPrimitive (com.github.havardh.javaflow.phases.writer.flow.converter.definitions.Primitives.isPrimitive)1