]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5111 Create a handler to create java stub ws controllers for rails ws
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Mon, 28 Apr 2014 14:01:18 +0000 (16:01 +0200)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Mon, 28 Apr 2014 14:01:18 +0000 (16:01 +0200)
sonar-plugin-api/src/main/java/org/sonar/api/server/ws/RailsHandler.java [new file with mode: 0644]
sonar-plugin-api/src/test/java/org/sonar/api/server/ws/RailsHandlerTest.java [new file with mode: 0644]
sonar-server/src/main/webapp/WEB-INF/lib/java_ws_routing.rb

diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/RailsHandler.java b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/RailsHandler.java
new file mode 100644 (file)
index 0000000..53c9ad1
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+package org.sonar.api.server.ws;
+
+/**
+ * Used to declare web services that are still implemented in rails.
+ *
+ * @since 4.4
+ */
+public class RailsHandler implements RequestHandler {
+
+  public static final RequestHandler INSTANCE = new RailsHandler(){};
+
+  private RailsHandler() {
+    // Nothing
+  }
+
+  @Override
+  public void handle(Request request, Response response) {
+    throw new UnsupportedOperationException("This web service is implemented in rails");
+  }
+
+}
diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/RailsHandlerTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/RailsHandlerTest.java
new file mode 100644 (file)
index 0000000..1652a66
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+package org.sonar.api.server.ws;
+
+import org.junit.Test;
+
+public class RailsHandlerTest {
+
+  @Test(expected = UnsupportedOperationException.class)
+  public void throw_unsupported_operation_exception() throws Exception {
+    RailsHandler.INSTANCE.handle(null, null);
+  }
+}
index a7e8f61999ead63cc6984510398d3b4fd8a924dd..ac54ba5ce65d7efd884eff566bfc7c6381d99d78 100644 (file)
@@ -26,14 +26,16 @@ module ActionController
         deprecated_web_services = Java::OrgSonarServerUi::JRubyFacade.new.getRubyRailsWebservices()
         deprecated_web_services.each do |ws|
           eval(ws.getTemplate())
-          prepend_route("api/plugins/#{ws.getId()}/:action/:id", {:controller => "api/#{ws.getId()}", :requirements => { :id => /.*/ }})
+          prepend_route("api/plugins/#{ws.getId()}/:action/:id", {:controller => "api/#{ws.getId()}", :requirements => {:id => /.*/}})
         end
 
         # Full Java web services
         ws_engine = Java::OrgSonarServerPlatform::Platform.component(Java::OrgSonarServerWs::WebServiceEngine.java_class)
         ws_engine.controllers().each do |controller|
           controller.actions.each do |action|
-            prepend_route("#{controller.path()}/#{action.key()}/:id", {:controller => 'api/java_ws', :action => 'index', :wsaction => action.key(), :wspath => controller.path()})
+            if (!action.handler().java_kind_of?(Java::OrgSonarApiServerWs::RailsHandler))
+              prepend_route("#{controller.path()}/#{action.key()}/:id", {:controller => 'api/java_ws', :action => 'index', :wsaction => action.key(), :wspath => controller.path()})
+            end
           end
         end
       end