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>