@Test @SuppressWarnings("unchecked") public void testTypeMetadataQueryEqualsAndHashCode() { Path path1 = mock(Path.class); Path path2 = mock(Path.class); Set<String> set1 = mock(Set.class); Set<String> set2 = mock(Set.class); TestCaseBuilder.newTestCase() .addTrueCase(new TypeMetadataQuery(null, null), new TypeMetadataQuery(null, null)) .addTrueCase(new TypeMetadataQuery(path1, null), new TypeMetadataQuery(path1, null)) .addTrueCase(new TypeMetadataQuery(path1, set1), new TypeMetadataQuery(path1, set1)) .addFalseCase(new TypeMetadataQuery(path1, null), new TypeMetadataQuery(null, null)) .addFalseCase(new TypeMetadataQuery(path1, null), new TypeMetadataQuery(path2, null)) .addFalseCase(new TypeMetadataQuery(path1, set1), new TypeMetadataQuery(path1, null)) .addFalseCase(new TypeMetadataQuery(path1, set1), new TypeMetadataQuery(path1, set2)) .addFalseCase(new TypeMetadataQuery(path1, set1), new TypeMetadataQuery(path2, set2)) .test(); }
@Override public TypeMetadataQueryResult findMetadata(TypeMetadataQuery query) { return findMetadata(query, resolveClassLoader(query.getPath())); }
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); }
@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"); }
public void init(ClientSession session) { Diagram diagram = session.getCanvasHandler().getDiagram(); String canvasRootUUID = diagram.getMetadata().getCanvasRootUUID(); @SuppressWarnings("unchecked") Node<?, ? extends Edge> selectedNode = getSourceNode(diagram, getSelectedElementUUID(session)); if (selectedNode != null) { Map<String, VariableMetadata> collectedVariables = new HashMap<>(); Set<String> collectedTypes = new HashSet<>(); Node<?, ? extends Edge> parentNode = getParent(selectedNode).asNode(); String parentVariables; while (parentNode != null) { parentVariables = getVariables(parentNode); if (!isEmpty(parentVariables)) { addVariables(parentVariables, collectedVariables, collectedTypes); } if (parentNode.getUUID().equals(canvasRootUUID)) { parentNode = null; } else { parentNode = getParent(parentNode).asNode(); } } Path path = session.getCanvasHandler().getDiagram().getMetadata().getPath(); TypeMetadataQuery query = new TypeMetadataQuery(path, collectedTypes); service.call(result -> initVariables(collectedVariables.values(), ((TypeMetadataQueryResult) result))).findMetadata(query); } }