@Override public void beforeFindComponents() { super.beforeFindComponents(); componentFinderStrategies.add(new SpringRestControllerComponentFinderStrategy()); componentFinderStrategies.add(new SpringMvcControllerComponentFinderStrategy()); componentFinderStrategies.add(new SpringServiceComponentFinderStrategy()); componentFinderStrategies.add(new SpringComponentComponentFinderStrategy()); componentFinderStrategies.add(new SpringRepositoryComponentFinderStrategy()); for (AbstractSpringComponentFinderStrategy componentFinderStrategy : componentFinderStrategies) { componentFinderStrategy.setIncludePublicTypesOnly(includePublicTypesOnly); componentFinderStrategy.setComponentFinder(getComponentFinder()); supportingTypesStrategies.forEach(componentFinderStrategy::addSupportingTypesStrategy); componentFinderStrategy.setDuplicateComponentStrategy(getDuplicateComponentStrategy()); componentFinderStrategy.beforeFindComponents(); } }
@Test public void test_findComponents_FindsSpringRepositoriesThatExtendJpaRepository() throws Exception { Workspace workspace = new Workspace("Name", "Description"); Model model = workspace.getModel(); SoftwareSystem softwareSystem = model.addSoftwareSystem("Name", "Description"); Container container = softwareSystem.addContainer("Name", "Description", "Technology"); ComponentFinder componentFinder = new ComponentFinder( container, "test.SpringRepositoryComponentFinderStrategy.jpaRepository", new SpringRepositoryComponentFinderStrategy() ); componentFinder.findComponents(); assertEquals(1, container.getComponents().size()); Component component = container.getComponentWithName("SomeJpaRepository"); assertEquals("test.SpringRepositoryComponentFinderStrategy.jpaRepository.SomeJpaRepository", component.getType().getType()); assertEquals("", component.getDescription()); assertEquals("Spring Repository", component.getTechnology()); }
@Test public void test_findComponents_FindsSpringRepositoriesThatExtendCrudRepository() throws Exception { Workspace workspace = new Workspace("Name", "Description"); Model model = workspace.getModel(); SoftwareSystem softwareSystem = model.addSoftwareSystem("Name", "Description"); Container container = softwareSystem.addContainer("Name", "Description", "Technology"); ComponentFinder componentFinder = new ComponentFinder( container, "test.SpringRepositoryComponentFinderStrategy.crudRepository", new SpringRepositoryComponentFinderStrategy() ); componentFinder.findComponents(); assertEquals(1, container.getComponents().size()); Component component = container.getComponentWithName("SomeCrudRepository"); assertEquals("test.SpringRepositoryComponentFinderStrategy.crudRepository.SomeCrudRepository", component.getType().getType()); assertEquals("", component.getDescription()); assertEquals("Spring Repository", component.getTechnology()); }
@Test public void test_findComponents_FindsSpringRepositoriesDefinedWithAnAnnotation() throws Exception { Workspace workspace = new Workspace("Name", "Description"); Model model = workspace.getModel(); SoftwareSystem softwareSystem = model.addSoftwareSystem("Name", "Description"); Container container = softwareSystem.addContainer("Name", "Description", "Technology"); ComponentFinder componentFinder = new ComponentFinder( container, "test.SpringRepositoryComponentFinderStrategy.annotation", new SpringRepositoryComponentFinderStrategy() ); componentFinder.findComponents(); // finding the components again should be idempotent componentFinder.findComponents(); assertEquals(1, container.getComponents().size()); Component component = container.getComponentWithName("SomeRepository"); assertEquals("test.SpringRepositoryComponentFinderStrategy.annotation.SomeRepository", component.getType().getType()); assertEquals("", component.getDescription()); assertEquals("Spring Repository", component.getTechnology()); }