}
if (order == Order.PRE_ORDER) {
- visitAny(component);
+ visitNode(component);
}
visitChildren(component);
if (order == Order.POST_ORDER) {
- visitAny(component);
+ visitNode(component);
}
}
- protected void visitAny(Component component) {
+ protected void visitNode(Component component) {
+ visitAny(component);
switch (component.getType()) {
case PROJECT:
visitProject(component);
// empty implementation, meant to be override at will by subclasses
}
+ @Override
+ public void visitAny(Component component) {
+ // empty implementation, meant to be override at will by subclasses
+ }
+
public enum Order {
PRE_ORDER, POST_ORDER
}
* A {@link ComponentVisitor} which can exposes methods which ensure the type of the visited Component.
*/
public interface TypeAwareVisitor extends ComponentVisitor {
+ /**
+ * Called when encountering a Component of type {@link Component.Type#PROJECT}
+ */
void visitProject(Component tree);
+ /**
+ * Called when encountering a Component of type {@link Component.Type#MODULE}
+ */
void visitModule(Component tree);
+ /**
+ * Called when encountering a Component of type {@link Component.Type#DIRECTORY}
+ */
void visitDirectory(Component tree);
+ /**
+ * Called when encountering a Component of type {@link Component.Type#FILE}
+ */
void visitFile(Component tree);
+ /**
+ * Called when encountering a Component of an unknown type
+ */
void visitUnknown(Component tree);
+
+ /**
+ * Called for any component, <strong>in addition</strong> to the methods specific to each type
+ */
+ void visitAny(Component component);
}
}
@Override
- protected void visitAny(Component component) {
+ public void visitAny(Component component) {
int componentRef = component.getRef();
List<BatchReport.Measure> measures = reportReader.readComponentMeasures(componentRef);
persistMeasures(measures, dbIdsRepository.getComponentId(component), dbIdsRepository.getSnapshotId(component));
spyFileVisitor.visit(component);
inOrder.verify(spyFileVisitor).visit(component);
+ inOrder.verify(spyFileVisitor).visitAny(component);
inOrder.verify(spyFileVisitor).visitFile(component);
inOrder.verifyNoMoreInteractions();
}
spyFileVisitor.visit(component);
inOrder.verify(spyFileVisitor).visit(component);
+ inOrder.verify(spyFileVisitor).visitAny(component);
inOrder.verify(spyFileVisitor).visitModule(component);
inOrder.verifyNoMoreInteractions();
}
spyFileVisitor.visit(component);
inOrder.verify(spyFileVisitor).visit(component);
+ inOrder.verify(spyFileVisitor).visitAny(component);
inOrder.verify(spyFileVisitor).visitDirectory(component);
inOrder.verifyNoMoreInteractions();
}
spyFileVisitor.visit(component);
inOrder.verify(spyFileVisitor).visit(component);
+ inOrder.verify(spyFileVisitor).visitAny(component);
inOrder.verify(spyFileVisitor).visitProject(component);
inOrder.verifyNoMoreInteractions();
}
@Test
- public void visit_file_with_depth_DIRECTORY_does_not_call_visit_file() {
+ public void visit_file_with_depth_DIRECTORY_does_not_call_visit_file_nor_visitAny() {
Component component = component(FILE, 1);
spyDirectoryVisitor.visit(component);
spyDirectoryVisitor.visit(component);
inOrder.verify(spyDirectoryVisitor).visit(component);
+ inOrder.verify(spyDirectoryVisitor).visitAny(component);
inOrder.verify(spyDirectoryVisitor).visitDirectory(component);
inOrder.verifyNoMoreInteractions();
}
spyDirectoryVisitor.visit(component);
inOrder.verify(spyDirectoryVisitor).visit(component);
+ inOrder.verify(spyDirectoryVisitor).visitAny(component);
inOrder.verify(spyDirectoryVisitor).visitModule(component);
inOrder.verifyNoMoreInteractions();
}
spyDirectoryVisitor.visit(component);
inOrder.verify(spyDirectoryVisitor).visit(component);
+ inOrder.verify(spyDirectoryVisitor).visitAny(component);
inOrder.verify(spyDirectoryVisitor).visitProject(component);
inOrder.verifyNoMoreInteractions();
}
@Test
- public void visit_file_with_depth_MODULE_does_not_call_visit_file() {
+ public void visit_file_with_depth_MODULE_does_not_call_visit_file_nor_visitAny() {
Component component = component(FILE, 1);
spyModuleVisitor.visit(component);
}
@Test
- public void visit_directory_with_depth_MODULE_does_not_call_visit_directory() {
+ public void visit_directory_with_depth_MODULE_does_not_call_visit_directory_nor_visitAny() {
Component component = component(DIRECTORY, 1);
spyModuleVisitor.visit(component);
spyModuleVisitor.visit(component);
inOrder.verify(spyModuleVisitor).visit(component);
+ inOrder.verify(spyModuleVisitor).visitAny(component);
inOrder.verify(spyModuleVisitor).visitModule(component);
inOrder.verifyNoMoreInteractions();
}
spyModuleVisitor.visit(component);
inOrder.verify(spyModuleVisitor).visit(component);
+ inOrder.verify(spyModuleVisitor).visitAny(component);
inOrder.verify(spyModuleVisitor).visitModule(component);
inOrder.verifyNoMoreInteractions();
}
@Test
- public void visit_file_with_depth_PROJECT_does_not_call_visit_file() {
+ public void visit_file_with_depth_PROJECT_does_not_call_visit_file_nor_visitAny() {
Component component = component(FILE, 1);
spyProjectVisitor.visit(component);
}
@Test
- public void visit_directory_with_depth_PROJECT_does_not_call_visit_directory() {
+ public void visit_directory_with_depth_PROJECT_does_not_call_visit_directory_nor_visitAny() {
Component component = component(DIRECTORY, 1);
spyProjectVisitor.visit(component);
}
@Test
- public void visit_module_with_depth_PROJECT_does_not_call_visit_module() {
+ public void visit_module_with_depth_PROJECT_does_not_call_visit_module_nor_visitAny() {
Component component = component(MODULE, 1);
spyProjectVisitor.visit(component);
spyProjectVisitor.visit(component);
inOrder.verify(spyProjectVisitor).visit(component);
+ inOrder.verify(spyProjectVisitor).visitAny(component);
inOrder.verify(spyProjectVisitor).visitProject(component);
inOrder.verifyNoMoreInteractions();
}
inOrder.verify(spyFileVisitor).visit(MODULE_2);
inOrder.verify(spyFileVisitor).visit(DIRECTORY_3);
inOrder.verify(spyFileVisitor).visit(FILE_4);
+ inOrder.verify(spyFileVisitor).visitAny(FILE_4);
inOrder.verify(spyFileVisitor).visitFile(FILE_4);
inOrder.verify(spyFileVisitor).visit(FILE_5);
+ inOrder.verify(spyFileVisitor).visitAny(FILE_5);
inOrder.verify(spyFileVisitor).visitFile(FILE_5);
+ inOrder.verify(spyFileVisitor).visitAny(DIRECTORY_3);
inOrder.verify(spyFileVisitor).visitDirectory(DIRECTORY_3);
+ inOrder.verify(spyFileVisitor).visitAny(MODULE_2);
inOrder.verify(spyFileVisitor).visitModule(MODULE_2);
+ inOrder.verify(spyFileVisitor).visitAny(COMPONENT_TREE);
inOrder.verify(spyFileVisitor).visitProject(COMPONENT_TREE);
inOrder.verifyNoMoreInteractions();
}
inOrder.verify(spyDirectoryVisitor).visit(COMPONENT_TREE);
inOrder.verify(spyDirectoryVisitor).visit(MODULE_2);
inOrder.verify(spyDirectoryVisitor).visit(DIRECTORY_3);
+ inOrder.verify(spyDirectoryVisitor).visitAny(DIRECTORY_3);
inOrder.verify(spyDirectoryVisitor).visitDirectory(DIRECTORY_3);
+ inOrder.verify(spyDirectoryVisitor).visitAny(MODULE_2);
inOrder.verify(spyDirectoryVisitor).visitModule(MODULE_2);
+ inOrder.verify(spyDirectoryVisitor).visitAny(COMPONENT_TREE);
inOrder.verify(spyDirectoryVisitor).visitProject(COMPONENT_TREE);
inOrder.verifyNoMoreInteractions();
}
inOrder.verify(spyModuleVisitor).visit(COMPONENT_TREE);
inOrder.verify(spyModuleVisitor).visit(MODULE_2);
+ inOrder.verify(spyModuleVisitor).visitAny(MODULE_2);
inOrder.verify(spyModuleVisitor).visitModule(MODULE_2);
+ inOrder.verify(spyModuleVisitor).visitAny(COMPONENT_TREE);
inOrder.verify(spyModuleVisitor).visitProject(COMPONENT_TREE);
inOrder.verifyNoMoreInteractions();
}
spyProjectVisitor.visit(COMPONENT_TREE);
inOrder.verify(spyProjectVisitor).visit(COMPONENT_TREE);
+ inOrder.verify(spyProjectVisitor).visitAny(COMPONENT_TREE);
inOrder.verify(spyProjectVisitor).visitProject(COMPONENT_TREE);
inOrder.verifyNoMoreInteractions();
}
spyFileVisitor.visit(component);
inOrder.verify(spyFileVisitor).visit(component);
+ inOrder.verify(spyFileVisitor).visitAny(component);
inOrder.verify(spyFileVisitor).visitFile(component);
inOrder.verifyNoMoreInteractions();
}
spyFileVisitor.visit(component);
inOrder.verify(spyFileVisitor).visit(component);
+ inOrder.verify(spyFileVisitor).visitAny(component);
inOrder.verify(spyFileVisitor).visitModule(component);
inOrder.verifyNoMoreInteractions();
}
spyFileVisitor.visit(component);
inOrder.verify(spyFileVisitor).visit(component);
+ inOrder.verify(spyFileVisitor).visitAny(component);
inOrder.verify(spyFileVisitor).visitDirectory(component);
inOrder.verifyNoMoreInteractions();
}
}
@Test
- public void visit_file_with_depth_DIRECTORY_does_not_call_visit_file() {
+ public void visit_file_with_depth_DIRECTORY_does_not_call_visit_file_nor_visitAny() {
Component component = component(FILE, 1);
spyDirectoryVisitor.visit(component);
spyDirectoryVisitor.visit(component);
inOrder.verify(spyDirectoryVisitor).visit(component);
+ inOrder.verify(spyDirectoryVisitor).visitAny(component);
inOrder.verify(spyDirectoryVisitor).visitDirectory(component);
inOrder.verifyNoMoreInteractions();
}
spyDirectoryVisitor.visit(component);
inOrder.verify(spyDirectoryVisitor).visit(component);
+ inOrder.verify(spyDirectoryVisitor).visitAny(component);
inOrder.verify(spyDirectoryVisitor).visitModule(component);
inOrder.verifyNoMoreInteractions();
}
spyDirectoryVisitor.visit(component);
inOrder.verify(spyDirectoryVisitor).visit(component);
+ inOrder.verify(spyDirectoryVisitor).visitAny(component);
inOrder.verify(spyDirectoryVisitor).visitProject(component);
inOrder.verifyNoMoreInteractions();
}
@Test
- public void visit_file_with_depth_MODULE_does_not_call_visit_file() {
+ public void visit_file_with_depth_MODULE_does_not_call_visit_file_nor_visit_any() {
Component component = component(FILE, 1);
spyModuleVisitor.visit(component);
}
@Test
- public void visit_directory_with_depth_MODULE_does_not_call_visit_directory() {
+ public void visit_directory_with_depth_MODULE_does_not_call_visit_directory_not_visit_any() {
Component component = component(DIRECTORY, 1);
spyModuleVisitor.visit(component);
spyModuleVisitor.visit(component);
inOrder.verify(spyModuleVisitor).visit(component);
+ inOrder.verify(spyModuleVisitor).visitAny(component);
inOrder.verify(spyModuleVisitor).visitModule(component);
inOrder.verifyNoMoreInteractions();
}
spyModuleVisitor.visit(component);
inOrder.verify(spyModuleVisitor).visit(component);
+ inOrder.verify(spyModuleVisitor).visitAny(component);
inOrder.verify(spyModuleVisitor).visitModule(component);
inOrder.verifyNoMoreInteractions();
}
@Test
- public void visit_file_with_depth_PROJECT_does_not_call_visit_file() {
+ public void visit_file_with_depth_PROJECT_does_not_call_visit_file_nor_visitAny() {
Component component = component(FILE, 1);
spyProjectVisitor.visit(component);
}
@Test
- public void visit_directory_with_depth_PROJECT_does_not_call_visit_directory() {
+ public void visit_directory_with_depth_PROJECT_does_not_call_visit_directory_nor_visitAny() {
Component component = component(DIRECTORY, 1);
spyProjectVisitor.visit(component);
}
@Test
- public void visit_module_with_depth_PROJECT_does_not_call_visit_module() {
+ public void visit_module_with_depth_PROJECT_does_not_call_visit_module_nor_visitAny() {
Component component = component(MODULE, 1);
spyProjectVisitor.visit(component);
}
@Test
- public void visit_project_with_depth_PROJECT_calls_visit_project() {
+ public void visit_project_with_depth_PROJECT_calls_visit_project_nor_visitAny() {
Component component = component(PROJECT, 1);
spyProjectVisitor.visit(component);
inOrder.verify(spyProjectVisitor).visit(component);
+ inOrder.verify(spyProjectVisitor).visitAny(component);
inOrder.verify(spyProjectVisitor).visitProject(component);
inOrder.verifyNoMoreInteractions();
}
spyFileVisitor.visit(COMPONENT_TREE);
inOrder.verify(spyFileVisitor).visit(COMPONENT_TREE);
+ inOrder.verify(spyFileVisitor).visitAny(COMPONENT_TREE);
inOrder.verify(spyFileVisitor).visitProject(COMPONENT_TREE);
inOrder.verify(spyFileVisitor).visit(MODULE_2);
+ inOrder.verify(spyFileVisitor).visitAny(MODULE_2);
inOrder.verify(spyFileVisitor).visitModule(MODULE_2);
inOrder.verify(spyFileVisitor).visit(DIRECTORY_3);
+ inOrder.verify(spyFileVisitor).visitAny(DIRECTORY_3);
inOrder.verify(spyFileVisitor).visitDirectory(DIRECTORY_3);
inOrder.verify(spyFileVisitor).visit(FILE_4);
+ inOrder.verify(spyFileVisitor).visitAny(FILE_4);
inOrder.verify(spyFileVisitor).visitFile(FILE_4);
inOrder.verify(spyFileVisitor).visit(FILE_5);
+ inOrder.verify(spyFileVisitor).visitAny(FILE_5);
inOrder.verify(spyFileVisitor).visitFile(FILE_5);
inOrder.verifyNoMoreInteractions();
}
spyModuleVisitor.visit(COMPONENT_TREE);
inOrder.verify(spyModuleVisitor).visit(COMPONENT_TREE);
+ inOrder.verify(spyModuleVisitor).visitAny(COMPONENT_TREE);
inOrder.verify(spyModuleVisitor).visitProject(COMPONENT_TREE);
inOrder.verify(spyModuleVisitor).visit(MODULE_2);
+ inOrder.verify(spyModuleVisitor).visitAny(MODULE_2);
inOrder.verify(spyModuleVisitor).visitModule(MODULE_2);
inOrder.verifyNoMoreInteractions();
}
spyProjectVisitor.visit(COMPONENT_TREE);
inOrder.verify(spyProjectVisitor).visit(COMPONENT_TREE);
+ inOrder.verify(spyProjectVisitor).visitAny(COMPONENT_TREE);
inOrder.verify(spyProjectVisitor).visitProject(COMPONENT_TREE);
inOrder.verifyNoMoreInteractions();
}