From 8dbb55b57ed0352db9298edbb4f35eadc15f384e Mon Sep 17 00:00:00 2001 From: Nicolas Delsaux Date: Wed, 16 Nov 2016 11:52:19 +0100 Subject: [PATCH] Creating the test exposing #564 in the cleanest way --- .../wisdom/source/ast/util/ExtractUtil.java | 11 ++++-- .../ControllerReferencingConstant.java | 37 +++++++++++++++++++ .../visitor/ControllerSourceVisitorTest.java | 18 +++++++++ 3 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 extensions/wisdom-raml/wisdom-source-watcher/src/test/java/controller/ControllerReferencingConstant.java diff --git a/extensions/wisdom-raml/wisdom-source-watcher/src/main/java/org/wisdom/source/ast/util/ExtractUtil.java b/extensions/wisdom-raml/wisdom-source-watcher/src/main/java/org/wisdom/source/ast/util/ExtractUtil.java index a6414993b..a9d21c8c4 100644 --- a/extensions/wisdom-raml/wisdom-source-watcher/src/main/java/org/wisdom/source/ast/util/ExtractUtil.java +++ b/extensions/wisdom-raml/wisdom-source-watcher/src/main/java/org/wisdom/source/ast/util/ExtractUtil.java @@ -19,15 +19,16 @@ */ package org.wisdom.source.ast.util; -import com.github.javaparser.ast.Node; -import com.github.javaparser.ast.comments.JavadocComment; -import com.github.javaparser.ast.expr.MemberValuePair; +import static java.util.Collections.singleton; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; -import static java.util.Collections.singleton; +import com.github.javaparser.ast.Node; +import com.github.javaparser.ast.comments.JavadocComment; +import com.github.javaparser.ast.expr.MemberValuePair; +import com.github.javaparser.ast.visitor.GenericVisitorAdapter; /** * A set of function that helps to extract various entity from the javaparser AST. @@ -50,6 +51,8 @@ private ExtractUtil(){ * @return string version of the node value. */ public static String asString(Node node){ +// return node.accept(new GenericVisitorAdapter() { +// }, ""); String string = node.toString(); if("\"\"".equals(string)){ diff --git a/extensions/wisdom-raml/wisdom-source-watcher/src/test/java/controller/ControllerReferencingConstant.java b/extensions/wisdom-raml/wisdom-source-watcher/src/test/java/controller/ControllerReferencingConstant.java new file mode 100644 index 000000000..58672c68b --- /dev/null +++ b/extensions/wisdom-raml/wisdom-source-watcher/src/test/java/controller/ControllerReferencingConstant.java @@ -0,0 +1,37 @@ +/* + * #%L + * Wisdom-Framework + * %% + * Copyright (C) 2013 - 2015 Wisdom Framework + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ +package controller; + +import org.wisdom.api.DefaultController; +import org.wisdom.api.annotations.Route; +import org.wisdom.api.http.HttpMethod; +import org.wisdom.api.http.Result; + +/** + * A controller referencing uri through a constant + */ +public class ControllerReferencingConstant extends DefaultController { + public static final String URI = "/constant"; + + @Route(method= HttpMethod.GET, uri=URI) + public Result get() { + return ok(); + } +} diff --git a/extensions/wisdom-raml/wisdom-source-watcher/src/test/java/org/wisdom/source/ast/visitor/ControllerSourceVisitorTest.java b/extensions/wisdom-raml/wisdom-source-watcher/src/test/java/org/wisdom/source/ast/visitor/ControllerSourceVisitorTest.java index ce57e2549..46499edb0 100644 --- a/extensions/wisdom-raml/wisdom-source-watcher/src/test/java/org/wisdom/source/ast/visitor/ControllerSourceVisitorTest.java +++ b/extensions/wisdom-raml/wisdom-source-watcher/src/test/java/org/wisdom/source/ast/visitor/ControllerSourceVisitorTest.java @@ -240,6 +240,24 @@ public void testControllerUsingPath() throws IOException, ParseException { } + @Test + public void testReferencingConstant() throws IOException, ParseException { + File file = new File("src/test/java/controller/ControllerReferencingConstant.java"); + final CompilationUnit declaration = JavaParser.parse(file); + ControllerModel model = new ControllerModel(); + visitor.visit(declaration, model); + + final Collection routes = (Collection) model.getRoutes().get("/constant"); + assertThat(routes).isNotNull(); + assertThat(routes).hasSize(1); + + for (ControllerRouteModel route : routes) { + assertThat(route.getHttpMethod().name()).isEqualToIgnoringCase(route.getMethodName()); + assertThat(route.getParams()).isEmpty(); + assertThat(route.getPath()).isEqualToIgnoringCase("/constant"); + } + } + private ControllerRouteModel getModelByPath(ControllerModel model, String name) { for (ControllerRouteModel route : (Collection) model.getRoutesAsMultiMap().values()) { if (route.getPath().equals(name)) {