From 13fd4879039374058ed53d0839107cd85204aab5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Wed, 2 Sep 2015 15:08:50 +0200 Subject: [PATCH] remove unkown type support in PathAwareCrawler and PathAwareVisitor we now fail, rather than silently accepting unknown types --- .../server/computation/component/PathAwareCrawler.java | 5 +++-- .../server/computation/component/PathAwareVisitor.java | 6 ------ .../computation/component/PathAwareVisitorAdapter.java | 9 --------- .../computation/component/PathAwareVisitorWrapper.java | 10 +++++++++- .../component/CallRecorderPathAwareVisitor.java | 10 ---------- 5 files changed, 12 insertions(+), 28 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/component/PathAwareCrawler.java b/server/sonar-server/src/main/java/org/sonar/server/computation/component/PathAwareCrawler.java index 99863230a0a..8a2e33e4d19 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/component/PathAwareCrawler.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/component/PathAwareCrawler.java @@ -19,6 +19,7 @@ */ package org.sonar.server.computation.component; +import static java.lang.String.format; import static java.util.Objects.requireNonNull; import static org.sonar.server.computation.component.ComponentVisitor.Order.POST_ORDER; import static org.sonar.server.computation.component.ComponentVisitor.Order.PRE_ORDER; @@ -97,7 +98,7 @@ public final class PathAwareCrawler implements ComponentCrawler { this.visitor.visitProjectView(component, stack); break; default: - this.visitor.visitUnknown(component, stack); + throw new IllegalArgumentException(format("Unsupported component type %s, no visitor method to call", component.getType())); } } @@ -118,7 +119,7 @@ public final class PathAwareCrawler implements ComponentCrawler { case PROJECT_VIEW: return this.visitor.getFactory().createForProjectView(component); default: - return this.visitor.getFactory().createForUnknown(component); + throw new IllegalArgumentException(format("Unsupported component type %s, can not create stack object", component.getType())); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/component/PathAwareVisitor.java b/server/sonar-server/src/main/java/org/sonar/server/computation/component/PathAwareVisitor.java index 8144eeb98cd..79928529f56 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/component/PathAwareVisitor.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/component/PathAwareVisitor.java @@ -66,11 +66,6 @@ public interface PathAwareVisitor extends ComponentVisitor { */ void visitProjectView(Component projectView, Path path); - /** - * Called when encountering a Component which type has no visit method in this interface. - */ - void visitUnknown(Component unknownComponent, Path path); - /** * Called for any component, in addition to the methods specific to each type */ @@ -91,7 +86,6 @@ public interface PathAwareVisitor extends ComponentVisitor { T createForProjectView(Component projectView); - T createForUnknown(Component file); } interface Path { diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/component/PathAwareVisitorAdapter.java b/server/sonar-server/src/main/java/org/sonar/server/computation/component/PathAwareVisitorAdapter.java index 4a5f66405ae..e06217ab1c1 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/component/PathAwareVisitorAdapter.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/component/PathAwareVisitorAdapter.java @@ -86,11 +86,6 @@ public abstract class PathAwareVisitorAdapter implements PathAwareVisitor // empty implementation, meant to be override at will by subclasses } - @Override - public void visitUnknown(Component unknownComponent, Path path) { - // empty implementation, meant to be override at will by subclasses - } - @Override public void visitAny(Component component, Path path) { // empty implementation, meant to be override at will by subclasses @@ -139,10 +134,6 @@ public abstract class PathAwareVisitorAdapter implements PathAwareVisitor return createForAny(projectView); } - @Override - public T createForUnknown(Component file) { - return createForAny(file); - } } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/component/PathAwareVisitorWrapper.java b/server/sonar-server/src/main/java/org/sonar/server/computation/component/PathAwareVisitorWrapper.java index acd5bd91122..902102e6542 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/component/PathAwareVisitorWrapper.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/component/PathAwareVisitorWrapper.java @@ -20,6 +20,8 @@ package org.sonar.server.computation.component; +import static java.lang.String.format; + public class PathAwareVisitorWrapper implements VisitorWrapper { private final PathAwareVisitor delegate; @@ -100,8 +102,14 @@ public class PathAwareVisitorWrapper implements VisitorWrapper { return delegate.getFactory().createForDirectory(component); case FILE: return delegate.getFactory().createForFile(component); + case VIEW: + return delegate.getFactory().createForView(component); + case SUBVIEW: + return delegate.getFactory().createForSubView(component); + case PROJECT_VIEW: + return delegate.getFactory().createForProjectView(component); default: - return delegate.getFactory().createForUnknown(component); + throw new IllegalArgumentException(format("Unsupported component type %s, can not create stack object", component.getType())); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/component/CallRecorderPathAwareVisitor.java b/server/sonar-server/src/test/java/org/sonar/server/computation/component/CallRecorderPathAwareVisitor.java index a8a1097e7c4..afbd4257aad 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/component/CallRecorderPathAwareVisitor.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/component/CallRecorderPathAwareVisitor.java @@ -75,16 +75,6 @@ class CallRecorderPathAwareVisitor extends PathAwareVisitorAdapter { callsRecords.add(viewsCallRecord(projectView, path, "visitProjectView")); } - @Override - public void visitUnknown(Component unknownComponent, Path path) { - if (unknownComponent.getType().isViewsType()) { - callsRecords.add(viewsCallRecord(unknownComponent, path, "visitUnknown")); - } else if (unknownComponent.getType().isReportType()) { - callsRecords.add(reportCallRecord(unknownComponent, path, "visitUnknown")); - } - throw new UnsupportedOperationException("Can not record call to visitUnknown"); - } - @Override public void visitAny(Component component, Path path) { callsRecords.add(component.getType().isReportType() ? reportCallRecord(component, path, "visitAny") : viewsCallRecord(component, path, "visitAny")); -- 2.39.5