protected TypeMetadataQueryResult findMetadata(TypeMetadataQuery query, ClassLoader classLoader) { Set<TypeMetadata> typeMetadatas = new HashSet<>(); Set<String> missingTypes = new HashSet<>(); for (String type : query.getTypes()) { try { TypeMetadata typeMetadata = buildTypeMetadata(type, classLoader); typeMetadatas.add(typeMetadata); } catch (ClassNotFoundException e) { missingTypes.add(type); } } return new TypeMetadataQueryResult(typeMetadatas, missingTypes); }
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 testFindMetadata() { Set<String> types = new HashSet<>(); types.add(Bean1.class.getName()); types.add(Bean2.class.getName()); types.add("non.existing.class.Bean"); TypeMetadataQuery query = new TypeMetadataQuery(path, types); TypeMetadataQueryResult result = service.findMetadata(query); assertTrue(result.getMissingTypes().contains("non.existing.class.Bean")); TypeMetadata bean1Metadata = result.getTypeMetadatas().stream().filter(typeMetadata -> typeMetadata.getType().equals(Bean1.class.getName())).findFirst().orElse(null); TypeMetadata bean2Metadata = result.getTypeMetadatas().stream().filter(typeMetadata -> typeMetadata.getType().equals(Bean2.class.getName())).findFirst().orElse(null); assertNotNull(bean1Metadata); assertNotNull(bean2Metadata); assertHasField(bean1Metadata, "fieldBean1_1", String.class.getName(), "getFieldBean1_1", "setFieldBean1_1"); assertHasField(bean1Metadata, "fieldBean1_2", "int", "getFieldBean1_2", null); assertHasField(bean1Metadata, "fieldBean1_3", "boolean", "isFieldBean1_3", "setFieldBean1_3"); assertHasField(bean1Metadata, "fieldBean1_4", Integer.class.getName(), null, "setFieldBean1_4"); assertHasField(bean2Metadata, "fieldBean1_1", String.class.getName(), "getFieldBean1_1", "setFieldBean1_1"); assertHasField(bean2Metadata, "fieldBean1_2", "int", "getFieldBean1_2", null); assertHasField(bean2Metadata, "fieldBean1_3", "boolean", "isFieldBean1_3", "setFieldBean1_3"); assertHasField(bean2Metadata, "fieldBean1_4", Integer.class.getName(), null, "setFieldBean1_4"); assertHasField(bean2Metadata, "fieldBean2_1", String.class.getName(), "getFieldBean2_1", "setFieldBean2_1"); assertHasField(bean2Metadata, "fieldBean2_2", Object.class.getName(), "getFieldBean2_2", "setFieldBean2_2"); }
@Test @SuppressWarnings("unchecked") public void testTypeMetadataQueryResultEqualsAndHashCode() { Set<TypeMetadata> metadatas1 = mock(Set.class); Set<String> missingTypes1 = mock(Set.class); Set<TypeMetadata> metadatas2 = mock(Set.class); Set<String> missingTypes2 = mock(Set.class); TestCaseBuilder.newTestCase() .addTrueCase(new TypeMetadataQueryResult(null, null), new TypeMetadataQueryResult(null, null)) .addTrueCase(new TypeMetadataQueryResult(metadatas1, null), new TypeMetadataQueryResult(metadatas1, null)) .addTrueCase(new TypeMetadataQueryResult(metadatas1, missingTypes1), new TypeMetadataQueryResult(metadatas1, missingTypes1)) .addFalseCase(new TypeMetadataQueryResult(metadatas1, null), new TypeMetadataQueryResult(null, null)) .addFalseCase(new TypeMetadataQueryResult(metadatas1, null), new TypeMetadataQueryResult(metadatas2, null)) .addFalseCase(new TypeMetadataQueryResult(metadatas1, missingTypes1), new TypeMetadataQueryResult(metadatas1, null)) .addFalseCase(new TypeMetadataQueryResult(metadatas1, missingTypes1), new TypeMetadataQueryResult(metadatas1, missingTypes2)) .addFalseCase(new TypeMetadataQueryResult(metadatas1, missingTypes1), new TypeMetadataQueryResult(metadatas2, missingTypes2)) .test(); }