You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2014/12/23 15:13:47 UTC

[4/4] camel git commit: CAMEL-8161: camel-swagger - Use JMX to lookup Camel's so we support everyone

CAMEL-8161: camel-swagger - Use JMX to lookup Camel's so we support everyone


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/524a4e52
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/524a4e52
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/524a4e52

Branch: refs/heads/master
Commit: 524a4e52df526b83328c81d7f471ce1a99a11544
Parents: 24a1f9e
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Dec 23 15:06:50 2014 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Dec 23 15:06:50 2014 +0100

----------------------------------------------------------------------
 .../swagger/DefaultCamelSwaggerServlet.scala    | 15 ++--
 .../swagger/DefaultCamelSwaggerServletTest.java | 78 ++++++++++++++++++++
 .../src/main/webapp/WEB-INF/web.xml             |  7 +-
 3 files changed, 89 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/524a4e52/components/camel-swagger/src/main/scala/org/apache/camel/component/swagger/DefaultCamelSwaggerServlet.scala
----------------------------------------------------------------------
diff --git a/components/camel-swagger/src/main/scala/org/apache/camel/component/swagger/DefaultCamelSwaggerServlet.scala b/components/camel-swagger/src/main/scala/org/apache/camel/component/swagger/DefaultCamelSwaggerServlet.scala
index f15041e..4ed2aa9 100644
--- a/components/camel-swagger/src/main/scala/org/apache/camel/component/swagger/DefaultCamelSwaggerServlet.scala
+++ b/components/camel-swagger/src/main/scala/org/apache/camel/component/swagger/DefaultCamelSwaggerServlet.scala
@@ -16,11 +16,10 @@
  */
 package org.apache.camel.component.swagger
 
-import java.io.StringReader
 import java.lang.management.ManagementFactory
 import javax.management.{MBeanServer, ObjectName}
-import javax.xml.bind.{JAXBContext, Unmarshaller}
 
+import org.apache.camel.model.ModelHelper
 import org.apache.camel.model.rest.{RestDefinition, RestsDefinition}
 
 import scala.collection.mutable
@@ -37,7 +36,7 @@ class DefaultCamelSwaggerServlet extends RestSwaggerApiDeclarationServlet {
     var found: ObjectName = null
 
     val server: MBeanServer = ManagementFactory.getPlatformMBeanServer
-    val names = server.queryMBeans(new ObjectName("*:type=context,*"), null)
+    val names = server.queryNames(new ObjectName("*:type=context,*"), null)
     for (name <- names.asScala) {
       val on = name.asInstanceOf[ObjectName]
       val id: String = on.getKeyProperty("name")
@@ -49,11 +48,13 @@ class DefaultCamelSwaggerServlet extends RestSwaggerApiDeclarationServlet {
     if (found != null) {
       val result = server.invoke(found, "dumpRestsAsXml", null, null)
       if (result != null) {
-        val context: JAXBContext = JAXBContext.newInstance(classOf[RestsDefinition])
-        val unmarshaller: Unmarshaller = context.createUnmarshaller
         val xml = result.asInstanceOf[String]
-        val rests: RestsDefinition = unmarshaller.unmarshal(new StringReader(xml)).asInstanceOf[RestsDefinition]
-        return rests.getRests.asScala
+        val rests: RestsDefinition = ModelHelper.createModelFromXml(xml, classOf[RestsDefinition])
+        val answer = new scala.collection.mutable.ListBuffer[RestDefinition]
+        for (rest <- rests.getRests.asScala) {
+          answer += rest
+        }
+        return answer
       }
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/524a4e52/components/camel-swagger/src/test/java/org/apache/camel/component/swagger/DefaultCamelSwaggerServletTest.java
----------------------------------------------------------------------
diff --git a/components/camel-swagger/src/test/java/org/apache/camel/component/swagger/DefaultCamelSwaggerServletTest.java b/components/camel-swagger/src/test/java/org/apache/camel/component/swagger/DefaultCamelSwaggerServletTest.java
new file mode 100644
index 0000000..a58a4d7
--- /dev/null
+++ b/components/camel-swagger/src/test/java/org/apache/camel/component/swagger/DefaultCamelSwaggerServletTest.java
@@ -0,0 +1,78 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.camel.component.swagger;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.model.rest.RestDefinition;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+import scala.collection.mutable.Buffer;
+
+public class DefaultCamelSwaggerServletTest extends CamelTestSupport {
+
+    @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
+    @Override
+    protected JndiRegistry createRegistry() throws Exception {
+        JndiRegistry jndi = super.createRegistry();
+        jndi.bind("dummy-rest", new DummyRestConsumerFactory());
+        return jndi;
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                rest("/hello")
+                    .get("/hi").to("log:hi")
+                    .get("/bye").to("log:bye")
+                    .post("/bye").to("log:bye");
+            }
+        };
+    }
+
+    @Test
+    public void testServlet() throws Exception {
+        DefaultCamelSwaggerServlet servlet = new DefaultCamelSwaggerServlet();
+        Buffer<RestDefinition> list = servlet.getRestDefinitions(null);
+        assertEquals(1, list.size());
+        RestDefinition rest = list.iterator().next();
+        assertEquals("/hello", rest.getPath());
+        assertEquals("/hi", rest.getVerbs().get(0).getUri());
+        assertEquals("get", rest.getVerbs().get(0).asVerb());
+        assertEquals("/bye", rest.getVerbs().get(1).getUri());
+        assertEquals("get", rest.getVerbs().get(1).asVerb());
+        assertEquals("/bye", rest.getVerbs().get(2).getUri());
+        assertEquals("post", rest.getVerbs().get(2).asVerb());
+
+        RestDefinition rest2 = context.getRestDefinitions().get(0);
+        assertNotNull(rest2);
+        assertEquals("/hello", rest2.getPath());
+        assertEquals("/hi", rest2.getVerbs().get(0).getUri());
+        assertEquals("get", rest2.getVerbs().get(0).asVerb());
+        assertEquals("/bye", rest2.getVerbs().get(1).getUri());
+        assertEquals("get", rest2.getVerbs().get(1).asVerb());
+        assertEquals("/bye", rest2.getVerbs().get(2).getUri());
+        assertEquals("post", rest2.getVerbs().get(2).asVerb());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/524a4e52/examples/camel-example-servlet-rest-tomcat/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/examples/camel-example-servlet-rest-tomcat/src/main/webapp/WEB-INF/web.xml b/examples/camel-example-servlet-rest-tomcat/src/main/webapp/WEB-INF/web.xml
index 54e3532..251e5f1 100755
--- a/examples/camel-example-servlet-rest-tomcat/src/main/webapp/WEB-INF/web.xml
+++ b/examples/camel-example-servlet-rest-tomcat/src/main/webapp/WEB-INF/web.xml
@@ -50,16 +50,15 @@
   <!-- START SNIPPET: e1 -->
   <!-- to setup Camel Swagger api servlet -->
   <servlet>
-    <!-- we are using spring so use the spring swagger servlet -->
     <servlet-name>ApiDeclarationServlet</servlet-name>
-    <servlet-class>org.apache.camel.component.swagger.spring.SpringRestSwaggerApiDeclarationServlet</servlet-class>
+    <servlet-class>org.apache.camel.component.swagger.DefaultCamelSwaggerServlet</servlet-class>
     <init-param>
       <param-name>base.path</param-name>
-      <param-value>http://localhost:8080/rest</param-value>
+      <param-value>http://localhost:8080/camel-example-servlet-rest-tomcat/rest</param-value>
     </init-param>
     <init-param>
       <param-name>api.path</param-name>
-      <param-value>http://localhost:8080/api-docs</param-value>
+      <param-value>http://localhost:8080/camel-example-servlet-rest-tomcat/api-docs</param-value>
     </init-param>
     <init-param>
       <param-name>api.version</param-name>