Author: jstrachan Date: Wed Feb 18 16:18:10 2009 New Revision: 745556 URL: http://svn.apache.org/viewvc?rev=745556&view=rev Log: resource class refactoring; introducing a reusable base class for sub-resources - also added a new RoutesResource to simplify the root resource further
Added: camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/CamelChildResourceSupport.java (with props) camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/RoutesResource.java - copied, changed from r745551, camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/EndpointsResource.java camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/RoutesResource/ camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/RoutesResource/index.jsp (contents, props changed) - copied, changed from r745452, camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/CamelContextResource/routes.jsp Removed: camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/CamelContextResource/routes.jsp Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/CamelContextResource.java camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/EndpointsResource.java camel/trunk/components/camel-web/src/test/java/org/apache/camel/rest/spring/CamelRouteTest.java Added: camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/CamelChildResourceSupport.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/CamelChildResourceSupport.java?rev=745556&view=auto ============================================================================== --- camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/CamelChildResourceSupport.java (added) +++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/CamelChildResourceSupport.java Wed Feb 18 16:18:10 2009 @@ -0,0 +1,46 @@ +/** + * + * 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.rest.resources; + +import org.apache.camel.CamelContext; +import org.apache.camel.ProducerTemplate; +import com.sun.jersey.api.view.ImplicitProduces; + +/** + * A useful base class for any sub resource of the root {...@link org.apache.camel.rest.resources.CamelContextResource} + * + * @version $Revision: 1.1 $ + */ +...@implicitproduces(Constants.HTML_MIME_TYPES) +public class CamelChildResourceSupport { + protected final CamelContext camelContext; + protected final ProducerTemplate template; + + public CamelChildResourceSupport(CamelContextResource contextResource) { + camelContext = contextResource.getCamelContext(); + template = contextResource.getTemplate(); + } + + public CamelContext getCamelContext() { + return camelContext; + } + + public ProducerTemplate getTemplate() { + return template; + } +} Propchange: camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/CamelChildResourceSupport.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/CamelContextResource.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/CamelContextResource.java?rev=745556&r1=745555&r2=745556&view=diff ============================================================================== --- camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/CamelContextResource.java (original) +++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/CamelContextResource.java Wed Feb 18 16:18:10 2009 @@ -73,7 +73,7 @@ } } - // XML / JSON representations + // representations //------------------------------------------------------------------------- @GET @@ -89,31 +89,16 @@ return new EndpointsResource(this); } - public List<EndpointLink> getEndpoints() { - return getEndpointsResource().getDTO().getEndpoints(); - } - - /** - * Returns the routes currently active within this context - * - * @return - */ - @GET @Path("routes") - @Produces({MediaType.TEXT_XML, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) - public RoutesType getRouteDefinitions() { - RoutesType answer = new RoutesType(); - if (camelContext != null) { - List<RouteType> list = camelContext.getRouteDefinitions(); - answer.setRoutes(list); - } - return answer; + public RoutesResource getRoutesResource() { + return new RoutesResource(this); } +/* - // Properties - //------------------------------------------------------------------------- - public List<RouteType> getRoutes() { - return getRouteDefinitions().getRoutes(); + public List<EndpointLink> getEndpoints() { + return getEndpointsResource().getDTO().getEndpoints(); } +*/ + } Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/EndpointsResource.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/EndpointsResource.java?rev=745556&r1=745555&r2=745556&view=diff ============================================================================== --- camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/EndpointsResource.java (original) +++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/EndpointsResource.java Wed Feb 18 16:18:10 2009 @@ -43,16 +43,13 @@ /** * @version $Revision: 1.1 $ */ -...@implicitproduces(Constants.HTML_MIME_TYPES) -public class EndpointsResource { - private final CamelContext camelContext; - private final ProducerTemplate template; +//@ImplicitProduces(Constants.HTML_MIME_TYPES) +public class EndpointsResource extends CamelChildResourceSupport { private String error = ""; private String newUri = "mock:someName"; public EndpointsResource(CamelContextResource contextResource) { - this.camelContext = contextResource.getCamelContext(); - this.template = contextResource.getTemplate(); + super(contextResource); } /** Copied: camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/RoutesResource.java (from r745551, camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/EndpointsResource.java) URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/RoutesResource.java?p2=camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/RoutesResource.java&p1=camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/EndpointsResource.java&r1=745551&r2=745556&rev=745556&view=diff ============================================================================== --- camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/EndpointsResource.java (original) +++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/RoutesResource.java Wed Feb 18 16:18:10 2009 @@ -17,124 +17,44 @@ */ package org.apache.camel.rest.resources; -import com.sun.jersey.api.representation.Form; -import com.sun.jersey.api.view.ImplicitProduces; -import com.sun.jersey.api.view.Viewable; -import org.apache.camel.CamelContext; -import org.apache.camel.Endpoint; -import org.apache.camel.ProducerTemplate; -import org.apache.camel.rest.model.EndpointLink; -import org.apache.camel.rest.model.Endpoints; +import org.apache.camel.model.RoutesType; +import org.apache.camel.model.RouteType; -import javax.ws.rs.Consumes; import javax.ws.rs.GET; -import javax.ws.rs.POST; import javax.ws.rs.Path; -import javax.ws.rs.PathParam; import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; -import java.net.URI; -import java.net.URISyntaxException; import java.util.List; /** * @version $Revision: 1.1 $ */ -...@implicitproduces(Constants.HTML_MIME_TYPES) -public class EndpointsResource { - private final CamelContext camelContext; - private final ProducerTemplate template; - private String error = ""; - private String newUri = "mock:someName"; - - public EndpointsResource(CamelContextResource contextResource) { - this.camelContext = contextResource.getCamelContext(); - this.template = contextResource.getTemplate(); - } +public class RoutesResource extends CamelChildResourceSupport { + public RoutesResource(CamelContextResource contextResource) { + super(contextResource); + } /** - * Returns a list of endpoints available in this context + * Returns the routes currently active within this context * * @return */ @GET @Produces({MediaType.TEXT_XML, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) - public Endpoints getDTO() { - return new Endpoints(camelContext); - } - - - /** - * Looks up an individual endpoint - */ - @Path("{id}") - public EndpointResource getEndpoint(@PathParam("id") String id) { - // TODO lets assume the ID is the endpoint - Endpoint endpoint = null; - if (id != null) { - // lets remove any whitespace - id = id.trim(); - if (id.length() > 0) { - endpoint = camelContext.getEndpoint(id); - } - } - if (endpoint != null) { - return new EndpointResource(camelContext, template, endpoint); - } else { - return null; + public RoutesType getRouteDefinitions() { + RoutesType answer = new RoutesType(); + if (camelContext != null) { + List<RouteType> list = camelContext.getRouteDefinitions(); + answer.setRoutes(list); } + return answer; } - // Creating endpoints - //------------------------------------------------------------------------- - - @POST - @Consumes(MediaType.TEXT_PLAIN) - public Response postUri(String uri) throws URISyntaxException { - EndpointResource endpoint = getEndpoint(uri); - if (endpoint != null) { - return Response.ok().build(); - } - return Response.noContent().build(); - } - - @POST - @Consumes("application/x-www-form-urlencoded") - public Response postUriForm(@Context UriInfo uriInfo, Form formData) throws URISyntaxException { - System.out.println("Received form! " + formData); - newUri = formData.getFirst("uri", String.class); - EndpointResource endpoint = getEndpoint(newUri); - if (endpoint != null) { - String href = endpoint.getHref(); - System.out.println("Created endpoint so redirecting to " + href); - return Response.seeOther(new URI(href)).build(); - } else { - error = "Could not find a component to resolve that URI"; - - System.out.println("Failed to create new endpoint!"); - - // lets re-render the form - return Response.ok(new Viewable("index", this)).build(); - } - } - // Properties //------------------------------------------------------------------------- - - public List<EndpointLink> getEndpoints() { - return getDTO().getEndpoints(); - } - - public String getError() { - return error; - } - - public String getNewUri() { - return newUri; + public List<RouteType> getRoutes() { + return getRouteDefinitions().getRoutes(); } -} +} \ No newline at end of file Copied: camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/RoutesResource/index.jsp (from r745452, camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/CamelContextResource/routes.jsp) URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/RoutesResource/index.jsp?p2=camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/RoutesResource/index.jsp&p1=camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/CamelContextResource/routes.jsp&r1=745452&r2=745556&rev=745556&view=diff ============================================================================== --- camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/CamelContextResource/routes.jsp (original) +++ camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/RoutesResource/index.jsp Wed Feb 18 16:18:10 2009 @@ -7,7 +7,6 @@ <h2>Routes</h2> - <ul> <c:forEach var="i" items="${it.routes}"> <li><a href="${i.id}">${i.shortName}</a> ${i.description} Propchange: camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/RoutesResource/index.jsp ------------------------------------------------------------------------------ svn:eol-style = native Modified: camel/trunk/components/camel-web/src/test/java/org/apache/camel/rest/spring/CamelRouteTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/test/java/org/apache/camel/rest/spring/CamelRouteTest.java?rev=745556&r1=745555&r2=745556&view=diff ============================================================================== --- camel/trunk/components/camel-web/src/test/java/org/apache/camel/rest/spring/CamelRouteTest.java (original) +++ camel/trunk/components/camel-web/src/test/java/org/apache/camel/rest/spring/CamelRouteTest.java Wed Feb 18 16:18:10 2009 @@ -38,7 +38,7 @@ public void testCanMarshalRoutes() throws Exception { CamelContextResource resource = new CamelContextResource(camelContext); - RoutesType routes = resource.getRouteDefinitions(); + RoutesType routes = resource.getRoutesResource().getRouteDefinitions(); List<RouteType> list = routes.getRoutes(); System.out.println("Found routes: " + list);