private void initVariables(Collection<VariableMetadata> variables, TypeMetadataQueryResult result) { optionType.clear(); typesMetadata = result.getTypeMetadatas().stream().collect(Collectors.toMap(TypeMetadata::getType, Function.identity())); variables.forEach(variableMetadata -> { TypeMetadata typeMetadata = Optional.ofNullable(typesMetadata.get(variableMetadata.getType())).orElse(new TypeMetadata(Object.class.getName())); variableMetadata.setTypeMetadata(typeMetadata); addVariableOptions(variableMetadata); }); }
@Test public void testTypeMetadataEqualsAndHashCode() { FieldMetadata fieldMetadata1 = mock(FieldMetadata.class); FieldMetadata fieldMetadata2 = mock(FieldMetadata.class); TestCaseBuilder.newTestCase() .addTrueCase(new TypeMetadata(null), new TypeMetadata(null)) .addTrueCase(new TypeMetadata(null, null), new TypeMetadata(null, null)) .addTrueCase(new TypeMetadata("type"), new TypeMetadata("type")) .addTrueCase(new TypeMetadata("type", null), new TypeMetadata("type", null)) .addTrueCase(new TypeMetadata("type", Arrays.asList(fieldMetadata1)), new TypeMetadata("type", Arrays.asList(fieldMetadata1))) .addFalseCase(new TypeMetadata("type"), new TypeMetadata(null)) .addFalseCase(new TypeMetadata("type", null), new TypeMetadata(null, null)) .addFalseCase(new TypeMetadata("type", new ArrayList<>()), new TypeMetadata("type", null)) .addFalseCase(new TypeMetadata("type"), new TypeMetadata("type1")) .addFalseCase(new TypeMetadata("type", Arrays.asList(fieldMetadata1)), new TypeMetadata("type1", new ArrayList<>())) .addFalseCase(new TypeMetadata("type", Arrays.asList(fieldMetadata1)), new TypeMetadata("type", Arrays.asList(fieldMetadata2))) .addFalseCase(new TypeMetadata("type", new ArrayList<>()), new TypeMetadata("type", Arrays.asList(fieldMetadata1))) .test(); } }
protected TypeMetadata buildTypeMetadata(String type, ClassLoader classLoader) throws ClassNotFoundException { GenerationTools generationTools = new GenerationTools(); Class<?> clazz = classLoader.loadClass(type); ClassFieldInspector fieldInspector = new ClassFieldInspector(clazz); List<FieldMetadata> fields = new ArrayList<>(); for (String fieldName : fieldInspector.getFieldNames()) { ClassFieldInspector.FieldInfo fieldInfo = fieldInspector.getFieldTypesFieldInfo().get(fieldName); if (fieldInfo.getOrigin() == ModelField.FIELD_ORIGIN.DECLARED || fieldInfo.getOrigin() == ModelField.FIELD_ORIGIN.INHERITED) { String accessor = null; String mutator = null; if (fieldInfo.getAccessorAndMutator() == FieldAccessorsAndMutators.ACCESSOR || fieldInfo.getAccessorAndMutator() == FieldAccessorsAndMutators.BOTH) { accessor = generationTools.toJavaGetter(fieldName, fieldInfo.getReturnType().getName()); } if (fieldInfo.getAccessorAndMutator() == FieldAccessorsAndMutators.MUTATOR || fieldInfo.getAccessorAndMutator() == FieldAccessorsAndMutators.BOTH) { mutator = generationTools.toJavaSetter(fieldName); } fields.add(new FieldMetadata(fieldName, fieldInfo.getReturnType().getName(), accessor, mutator)); } } return new TypeMetadata(type, fields); }