In camel-core in util, we have a string helper / object helper or what ever the class is named. There is a method to assemble a comma separated list of a String, which handles the "last comma issue".
On Wed, Sep 12, 2012 at 11:01 PM, <bvah...@apache.org> wrote: > Author: bvahdat > Date: Wed Sep 12 21:01:07 2012 > New Revision: 1384122 > > URL: http://svn.apache.org/viewvc?rev=1384122&view=rev > Log: > CAMEL-5600: Removed the last comma being put inside the URI. > > Added: > > camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletEndpointUpdateEndpointUriTest.java > (with props) > Modified: > > camel/trunk/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java > > camel/trunk/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletEndpoint.java > > Modified: > camel/trunk/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java > URL: > http://svn.apache.org/viewvc/camel/trunk/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java?rev=1384122&r1=1384121&r2=1384122&view=diff > ============================================================================== > --- > camel/trunk/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java > (original) > +++ > camel/trunk/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java > Wed Sep 12 21:01:07 2012 > @@ -66,7 +66,7 @@ public class RestletComponent extends He > private Boolean useForwardedForHeader; > > public RestletComponent() { > - this.component = new Component(); > + this(new Component()); > } > > public RestletComponent(Component component) { > @@ -76,9 +76,7 @@ public class RestletComponent extends He > } > > @Override > - @SuppressWarnings({"unchecked", "rawtypes"}) > - protected Endpoint createEndpoint(String uri, String remaining, Map > parameters) throws Exception { > - > + protected Endpoint createEndpoint(String uri, String remaining, > Map<String, Object> parameters) throws Exception { > RestletEndpoint result = new RestletEndpoint(this, remaining); > setEndpointHeaderFilterStrategy(result); > setProperties(result, parameters); > > Modified: > camel/trunk/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletEndpoint.java > URL: > http://svn.apache.org/viewvc/camel/trunk/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletEndpoint.java?rev=1384122&r1=1384121&r2=1384122&view=diff > ============================================================================== > --- > camel/trunk/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletEndpoint.java > (original) > +++ > camel/trunk/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletEndpoint.java > Wed Sep 12 21:01:07 2012 > @@ -41,8 +41,8 @@ public class RestletEndpoint extends Def > > private Method restletMethod = Method.GET; > > - // Optional and for consumer only. This allows a single route to > service multiple > - // methods. If it is non-null, restletMethod is ignored. > + // Optional and for consumer only. This allows a single route to service > multiple methods. > + // If it is non-null then restletMethod is ignored. > private Method[] restletMethods; > > private String protocol = DEFAULT_PROTOCOL; > @@ -50,8 +50,8 @@ public class RestletEndpoint extends Def > private int port = DEFAULT_PORT; > private String uriPattern; > > - // Optional and for consumer only. This allows a single route to > service multiple > - // URI patterns. The URI pattern defined in the endpoint will still be > honored. > + // Optional and for consumer only. This allows a single route to service > multiple URI patterns. > + // The URI pattern defined in the endpoint will still be honored. > private List<String> restletUriPatterns; > > private Map<String, String> restletRealm; > @@ -191,17 +191,24 @@ public class RestletEndpoint extends Def > String endpointUri = getEndpointUri(); > StringBuilder methods = new StringBuilder(); > if (getRestletMethods() != null && getRestletMethods().length > 0) { > + // list the method(s) as a comma seperated list > + boolean first = true; > for (Method method : getRestletMethods()) { > - methods = methods.append(method.getName()).append(','); > + if (first) { > + first = false; > + } else { > + methods.append(','); > + } > + methods.append(method.getName()); > } > } else { > - Method method = getRestletMethod(); > - methods = methods.append(method.getName()); > - } > - if (methods != null) { > - endpointUri = endpointUri + "?restletMethods=" + > methods.toString(); > - setEndpointUri(endpointUri); > + // otherwise consider the single method we own > + methods.append(getRestletMethod()); > } > + > + // update the uri > + endpointUri = endpointUri + "?restletMethods=" + methods; > + setEndpointUri(endpointUri); > } > > @Override > > Added: > camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletEndpointUpdateEndpointUriTest.java > URL: > http://svn.apache.org/viewvc/camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletEndpointUpdateEndpointUriTest.java?rev=1384122&view=auto > ============================================================================== > --- > camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletEndpointUpdateEndpointUriTest.java > (added) > +++ > camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletEndpointUpdateEndpointUriTest.java > Wed Sep 12 21:01:07 2012 > @@ -0,0 +1,59 @@ > +/** > + * 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.restlet; > + > +import org.apache.camel.Endpoint; > +import org.apache.camel.test.junit4.CamelTestSupport; > + > +import org.junit.Test; > + > +/** > + * @version > + */ > +public class RestletEndpointUpdateEndpointUriTest extends CamelTestSupport { > + > + @Override > + public boolean isUseRouteBuilder() { > + return false; > + } > + > + @Test > + public void testUpdateEndpointUri() throws Exception { > + RestletComponent component = context.getComponent("restlet", > RestletComponent.class); > + > + Endpoint endpoint = > component.createEndpoint("restlet:http://localhost:9090/users/user"); > + assertEquals("The restlet endpoint didn't update it's URI properly", > "http://localhost:9090/users/user?restletMethods=GET", > + endpoint.getEndpointUri()); > + > + endpoint = > component.createEndpoint("restlet:http://localhost:9090/users/user?restletMethods=post"); > + assertEquals("The restlet endpoint didn't update it's URI properly", > "http://localhost:9090/users/user?restletMethods=POST", > + endpoint.getEndpointUri()); > + > + endpoint = > component.createEndpoint("restlet:http://localhost:9090/users/user?restletMethods=lock,head"); > + assertEquals("The restlet endpoint didn't update it's URI properly", > "http://localhost:9090/users/user?restletMethods=LOCK,HEAD", > + endpoint.getEndpointUri()); > + > + endpoint = > component.createEndpoint("restlet:http://localhost:9090/users/user?restletMethods=proppatch,mkcol,propfind"); > + assertEquals("The restlet endpoint didn't update it's URI properly", > "http://localhost:9090/users/user?restletMethods=PROPPATCH,MKCOL,PROPFIND", > + endpoint.getEndpointUri()); > + > + endpoint = > component.createEndpoint("restlet:http://localhost:9090/users/user?restletMethods=delete,copy,options,connect"); > + assertEquals("The restlet endpoint didn't update it's URI properly", > "http://localhost:9090/users/user?restletMethods=DELETE,COPY,OPTIONS,CONNECT", > + endpoint.getEndpointUri()); > + } > + > +} > \ No newline at end of file > > Propchange: > camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletEndpointUpdateEndpointUriTest.java > ------------------------------------------------------------------------------ > svn:eol-style = native > > -- Claus Ibsen ----------------- FuseSource Email: cib...@fusesource.com Web: http://fusesource.com Twitter: davsclaus, fusenews Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen