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 2015/03/22 17:05:41 UTC
[49/54] [partial] camel git commit: CAMEL-7263: Remove not maintained
and deprecated camel-web module.
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/resources/ComponentResource.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/resources/ComponentResource.java b/components/camel-web/src/main/java/org/apache/camel/web/resources/ComponentResource.java
deleted file mode 100644
index 524c54b..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/resources/ComponentResource.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * 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.web.resources;
-
-/**
- *
- */
-public class ComponentResource extends CamelChildResourceSupport {
- private String id;
-
- public ComponentResource(CamelContextResource contextResource, String id) {
- super(contextResource);
- this.id = id;
- }
-
- public String getId() {
- return id;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/resources/ComponentsResource.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/resources/ComponentsResource.java b/components/camel-web/src/main/java/org/apache/camel/web/resources/ComponentsResource.java
deleted file mode 100644
index 393b5d6..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/resources/ComponentsResource.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * 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.web.resources;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-
-/**
- * Represents the list of the currently active <a href="http://camel.apache.org/component.html">components</a>
- * in the current camel context
- */
-public class ComponentsResource extends CamelChildResourceSupport {
- public ComponentsResource(CamelContextResource contextResource) {
- super(contextResource);
- }
-
- public List<String> getComponentIds() {
- List<String> answer = new ArrayList<String>(getCamelContext().getComponentNames());
- Collections.sort(answer);
- return answer;
- }
-
- /**
- * Returns a specific component
- */
- @Path("{id}")
- public ComponentResource getLanguage(@PathParam("id") String id) {
- if (id == null) {
- return null;
- }
- return new ComponentResource(getContextResource(), id);
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/resources/Constants.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/resources/Constants.java b/components/camel-web/src/main/java/org/apache/camel/web/resources/Constants.java
deleted file mode 100644
index e14e567..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/resources/Constants.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * 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.web.resources;
-
-/**
- *
- */
-public final class Constants {
-
- public static final String HTML_MIME_TYPES = "text/html;qs=5";
-
- public static final String DATA_MIME_TYPES = "text/xml,application/xml,application/json";
-
- public static final String DOT_MIMETYPE = "text/vnd.graphviz";
- public static final String JAXB_PACKAGES = org.apache.camel.model.Constants.JAXB_CONTEXT_PACKAGES + ":org.apache.camel.web.model";
-
- private Constants() {
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/resources/ConvertersFromResource.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/resources/ConvertersFromResource.java b/components/camel-web/src/main/java/org/apache/camel/web/resources/ConvertersFromResource.java
deleted file mode 100644
index 0b0a579..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/resources/ConvertersFromResource.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * 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.web.resources;
-
-import java.util.Map;
-import java.util.TreeMap;
-
-import org.apache.camel.TypeConverter;
-import org.apache.camel.impl.converter.DefaultTypeConverter;
-
-/**
- *
- */
-public class ConvertersFromResource extends CamelChildResourceSupport {
- private Class<?> type;
-
- public ConvertersFromResource(CamelContextResource contextResource, Class<?> type) {
- super(contextResource);
- this.type = type;
- }
-
- public Map<String, TypeConverter> getConverters() {
- Map<String, TypeConverter> answer = new TreeMap<String, TypeConverter>();
- DefaultTypeConverter converter = getDefaultTypeConverter();
- if (converter != null) {
- Map<Class<?>, TypeConverter> classes = converter.getToClassMappings(type);
- for (Map.Entry<Class<?>, TypeConverter> entry : classes.entrySet()) {
- Class<?> aClass = entry.getKey();
- String name = ConvertersResource.nameOf(aClass);
- answer.put(name, entry.getValue());
- }
- }
- return answer;
- }
-
- public Class<?> getType() {
- return type;
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/resources/ConvertersResource.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/resources/ConvertersResource.java b/components/camel-web/src/main/java/org/apache/camel/web/resources/ConvertersResource.java
deleted file mode 100644
index be596d5..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/resources/ConvertersResource.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * 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.web.resources;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-
-import org.apache.camel.impl.converter.DefaultTypeConverter;
-
-/**
- *
- */
-public class ConvertersResource extends CamelChildResourceSupport {
- public ConvertersResource(CamelContextResource contextResource) {
- super(contextResource);
- }
-
- public Map<String, Class<?>> getFromClassTypes() {
- Map<String, Class<?>> answer = new TreeMap<String, Class<?>>();
- DefaultTypeConverter converter = getDefaultTypeConverter();
- if (converter != null) {
- Set<Class<?>> classes = converter.getFromClassMappings();
- for (Class<?> aClass : classes) {
- String name = nameOf(aClass);
- answer.put(name, aClass);
- }
- }
- return answer;
- }
-
-
- /**
- * Returns type converters from the given type
- */
- @Path("{type}")
-/*
- TODO this doesn't work in JAX-RS yet
-
- public ConvertersFromResource getConvertersFrom(@PathParam("type") Class type) {
-*/
-
- public ConvertersFromResource getConvertersFrom(@PathParam("type") String typeName) {
- Class<?> type = getCamelContext().getClassResolver().resolveClass(typeName, getClass().getClassLoader());
- if (type == null) {
- return null;
- }
- return new ConvertersFromResource(getContextResource(), type);
- }
-
-
- public static String nameOf(Class<?> aClass) {
- return aClass.getCanonicalName();
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/resources/EndpointResource.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/resources/EndpointResource.java b/components/camel-web/src/main/java/org/apache/camel/web/resources/EndpointResource.java
deleted file mode 100644
index 5ffa354..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/resources/EndpointResource.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/**
- * 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.web.resources;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-
-import com.sun.jersey.api.representation.Form;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.spi.BrowsableEndpoint;
-import org.apache.camel.util.ExchangeHelper;
-import org.apache.camel.web.model.EndpointLink;
-
-/**
- * A Camel <a href="http://camel.apache.org/endpoint.html">Endpoint</a>
- */
-public class EndpointResource extends CamelChildResourceSupport {
- private final String key;
- private final Endpoint endpoint;
-
- public EndpointResource(CamelContextResource contextResource, String key, Endpoint endpoint) {
- super(contextResource);
- this.key = key;
- this.endpoint = endpoint;
- }
-
- public String getHref() {
- return new EndpointLink(key, endpoint).getHref();
- }
-
- public String getKey() {
- return key;
- }
-
- public String getUri() {
- return endpoint.getEndpointUri();
- }
-
- public Endpoint getEndpoint() {
- return endpoint;
- }
-
- public BrowsableEndpoint getBrowsableEndpoint() {
- if (endpoint instanceof BrowsableEndpoint) {
- return (BrowsableEndpoint) endpoint;
- }
- return null;
- }
-
- /**
- * Returns a single Camel <a href="http://camel.apache.org/exchange.html">message exchange</a> on this endpoint if the endpoint supports
- * <a href="http://camel.apache.org/browsableendpoint.html">being browsed</a>
- */
- @Path("messages/{id}")
- public ExchangeResource getExchange(@PathParam("id") String exchangeId) {
- if (endpoint instanceof BrowsableEndpoint) {
- BrowsableEndpoint browsableEndpoint = (BrowsableEndpoint) endpoint;
- Exchange exchange = ExchangeHelper.getExchangeById(browsableEndpoint.getExchanges(), exchangeId);
- if (exchange != null) {
- return new ExchangeResource(this, exchange);
- }
- }
- // should return 404
- return null;
- }
-
- /**
- * Posts a <a href="http://camel.apache.org/message.html">message</a> to this Camel endpoint with the payload
- * being text, XML or JSON
- */
- @POST
- @Consumes({MediaType.TEXT_PLAIN, MediaType.TEXT_HTML, MediaType.TEXT_XML, MediaType.APPLICATION_XML})
- public Response postMessage(@Context HttpHeaders headers, final String body) throws URISyntaxException {
- Map<String, Object> messageHeaders = multivalueMapToMap(headers.getRequestHeaders());
- sendMessage(messageHeaders, body);
- return Response.ok().build();
- }
-
- /**
- * Posts a <a href="http://camel.apache.org/message.html">message</a> to this Camel endpoint taking the
- * form data and extracting the <code>body</code> field as the body of the message.
- */
- @POST
- @Consumes("application/x-www-form-urlencoded")
- public Response postMessageForm(@Context HttpHeaders headers, Form formData) throws URISyntaxException {
- String body = getBodyData(formData);
-
- Map<String, Object> messageHeaders = multivalueMapToMap(headers.getRequestHeaders());
- messageHeaders.putAll(getHeadersData(formData));
-
- sendMessage(messageHeaders, body);
- return Response.seeOther(new URI(getHref())).build();
- }
-
- private Map<String, Object> getHeadersData(Form formData) {
- Map<String, Object> headers = new HashMap<String, Object>();
- Map<String, Object> formMap = multivalueMapToMap(formData);
- for (Map.Entry<String, Object> entry : formMap.entrySet()) {
- if (entry.getKey().startsWith("header_")) {
- headers.put((String) entry.getValue(), getHeaderValueForKey(entry.getKey(), formMap));
- }
- }
- return headers;
- }
-
- private Object getHeaderValueForKey(String key, Map<String, Object> headers) {
- return headers.get("value_" + key);
- }
-
- private String getBodyData(Form formData) {
- return formData.getFirst("body", String.class);
- }
-
- private Map<String, Object> multivalueMapToMap(MultivaluedMap<String, String> multivaluedMap) {
- Map<String, Object> resultMap = new HashMap<String, Object>();
- if (multivaluedMap != null) {
- for (Map.Entry<String, List<String>> entry : multivaluedMap.entrySet()) {
- List<String> values = entry.getValue();
- int size = values.size();
- if (size == 1) {
- resultMap.put(entry.getKey(), entry.getValue().get(0));
- } else if (size > 0) {
- resultMap.put(entry.getKey(), entry.getValue());
- }
- }
- }
- return resultMap;
- }
-
- protected void sendMessage(final Map<String, Object> headers, final String body) {
- getTemplate().send(endpoint, new Processor() {
- public void process(Exchange exchange) throws Exception {
- Message in = exchange.getIn();
- in.setBody(body);
- in.setHeaders(headers);
- }
- });
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/resources/EndpointsResource.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/resources/EndpointsResource.java b/components/camel-web/src/main/java/org/apache/camel/web/resources/EndpointsResource.java
deleted file mode 100644
index 0ef46b1..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/resources/EndpointsResource.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/**
- * 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.web.resources;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.List;
-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 com.sun.jersey.api.representation.Form;
-import com.sun.jersey.api.view.Viewable;
-import org.apache.camel.Endpoint;
-import org.apache.camel.spi.HasId;
-import org.apache.camel.web.model.EndpointLink;
-import org.apache.camel.web.model.Endpoints;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * The active endpoints in Camel
- *
- */
-public class EndpointsResource extends CamelChildResourceSupport {
- private static final Logger LOG = LoggerFactory.getLogger(EndpointsResource.class);
-
- private String error = "";
- private String newUri = "mock:someName";
-
- public EndpointsResource(CamelContextResource contextResource) {
- super(contextResource);
- }
-
- /**
- * Returns a list of endpoints available in this context
- */
- @GET
- @Produces({MediaType.TEXT_XML, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- public Endpoints getDTO() {
- return new Endpoints(getCamelContext());
- }
-
-
- /**
- * Returns the resource of an individual Camel endpoint
- *
- * @param id the endpoints unique URI
- */
- @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 = getCamelContext().getEndpoint(id);
- }
- }
- if (endpoint == null) {
- for (Endpoint e : getCamelContext().getEndpoints()) {
- if (e instanceof HasId) {
- HasId hasId = (HasId) e;
- String value = hasId.getId();
- if (value != null && value.equals(id)) {
- endpoint = e;
- break;
- }
- }
- }
- }
- if (endpoint != null) {
- return new EndpointResource(getContextResource(), id, endpoint);
- } else {
- LOG.warn("No endpoint found for id: " + id);
- return null;
- }
- }
-
-
- // Creating endpoints
- //-------------------------------------------------------------------------
-
- /**
- * Creates a new Endpoint for the given URI that is posted.
- *
- * @param uri the plain text URI of the endpoint to be created
- */
- @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();
- }
-
- /**
- * Creates a new Endpoint for the given URI that is posted using form encoding with the <code>uri</code>
- * value in the form being used to specify the endpoints unique URI.
- *
- * @param formData is the form data POSTed typically from a HTML form with the <code>uri</code> field used to create
- * the endpoint
- */
- @POST
- @Consumes("application/x-www-form-urlencoded")
- public Response postUriForm(@Context UriInfo uriInfo, Form formData) throws URISyntaxException {
- // TODO replace the Form class with an injected bean?
- LOG.info("Received form! " + formData);
- newUri = formData.getFirst("uri", String.class);
- EndpointResource endpoint = getEndpoint(newUri);
- if (endpoint != null) {
- String href = endpoint.getHref();
- LOG.info("Created endpoint so redirecting to " + href);
- return Response.seeOther(new URI(href)).build();
- } else {
- error = "Could not find a component to resolve that URI";
-
- LOG.info("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;
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/resources/ExchangeResource.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/resources/ExchangeResource.java b/components/camel-web/src/main/java/org/apache/camel/web/resources/ExchangeResource.java
deleted file mode 100644
index 5b9fe26..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/resources/ExchangeResource.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * 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.web.resources;
-
-import java.util.Map;
-import java.util.TreeMap;
-
-import com.sun.jersey.api.view.ImplicitProduces;
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Message;
-import org.apache.camel.spi.UnitOfWork;
-
-/**
- * A Camel <a href="http://camel.apache.org/exchange.html">message exchange</a>
- *
- */
-@ImplicitProduces(Constants.HTML_MIME_TYPES)
-public class ExchangeResource {
- private final Exchange exchange;
-
- public ExchangeResource(EndpointResource endpointResource, Exchange exchange) {
- this.exchange = exchange;
- }
-
- public Exchange getExchange() {
- return exchange;
- }
-
- // Helper methods for the view
- public CamelContext getCamelContext() {
- return exchange.getContext();
- }
-
- public String getExchangeId() {
- return exchange.getExchangeId();
- }
-
- public Throwable getException() {
- return exchange.getException();
- }
-
- public Endpoint getFromEndpoint() {
- return exchange.getFromEndpoint();
- }
-
- public Message getIn() {
- return exchange.getIn();
- }
-
- public Message getOut() {
- return exchange.getOut();
- }
-
- public boolean hasOut() {
- return exchange.hasOut();
- }
-
- public Map<String, Object> getProperties() {
- return new TreeMap<String, Object>(exchange.getProperties());
- }
-
- public Map<String, Object> getHeaders() {
- return new TreeMap<String, Object>(exchange.getIn().getHeaders());
- }
-
- public ExchangePattern getPattern() {
- return exchange.getPattern();
- }
-
- public UnitOfWork getUnitOfWork() {
- return exchange.getUnitOfWork();
- }
-
- public boolean isFailed() {
- return exchange.isFailed();
- }
-
- public boolean isTransacted() {
- return exchange.isTransacted();
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/resources/LanguageResource.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/resources/LanguageResource.java b/components/camel-web/src/main/java/org/apache/camel/web/resources/LanguageResource.java
deleted file mode 100644
index aad131f..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/resources/LanguageResource.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * 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.web.resources;
-
-/**
- *
- */
-public class LanguageResource extends CamelChildResourceSupport {
- private String id;
-
- public LanguageResource(CamelContextResource contextResource, String id) {
- super(contextResource);
- this.id = id;
- }
-
- public String getId() {
- return id;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/resources/LanguagesResource.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/resources/LanguagesResource.java b/components/camel-web/src/main/java/org/apache/camel/web/resources/LanguagesResource.java
deleted file mode 100644
index b174a00..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/resources/LanguagesResource.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * 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.web.resources;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-
-/**
- * Represents the list of the currently active <a href="http://camel.apache.org/languages.html">languages</a>
- * in the current camel context
- */
-public class LanguagesResource extends CamelChildResourceSupport {
-
- public LanguagesResource(CamelContextResource contextResource) {
- super(contextResource);
- }
-
- public List<String> getLanguageIds() {
- List<String> answer = new ArrayList<String>(getCamelContext().getLanguageNames());
- Collections.sort(answer);
- return answer;
- }
-
- /**
- * Returns a specific language
- */
- @Path("{id}")
- public LanguageResource getLanguage(@PathParam("id") String id) {
- if (id == null) {
- return null;
- }
- return new LanguageResource(getContextResource(), id);
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java b/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java
deleted file mode 100644
index 945d93e..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/**
- * 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.web.resources;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Collections;
-import java.util.List;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.FormParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-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 javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.Unmarshaller;
-
-import com.sun.jersey.api.view.Viewable;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.model.ModelCamelContext;
-import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.view.RouteDotGenerator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-/**
- * A single Camel Route which is used to implement one or more
- * <a href="http://camel.apache.org/enterprise-integration-patterns.html">Enterprise Integration Patterns</a>
- */
-public class RouteResource extends CamelChildResourceSupport {
- public static final String LANGUAGE_XML = "Xml";
- private static final Logger LOG = LoggerFactory.getLogger(RouteResource.class);
-
- private RouteDefinition route;
- private String error = "";
- private String id;
-
- // what language is used to define this route
- private String language = LANGUAGE_XML;
-
- public RouteResource(RoutesResource routesResource, RouteDefinition route) {
- super(routesResource.getContextResource());
- this.route = route;
- this.id = route.idOrCreate(getCamelContext().getNodeIdFactory());
- }
-
- /**
- * Returns the XML or JSON representation of this route
- */
- @GET
- @Produces({MediaType.TEXT_XML, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- public RouteDefinition getRoute() {
- return route;
- }
-
- /**
- * Removes this route
- */
- @GET
- @Path("remove")
- @Produces(MediaType.TEXT_HTML)
- public Response removeRoute() {
- URI routesURI = null;
- try {
- routesURI = new URI("/routes");
- ((ModelCamelContext)getCamelContext()).removeRouteDefinition(route);
- return Response.seeOther(routesURI).build();
- } catch (Exception e) {
- LOG.error("failed to remove route " + id + ", error " + e.getMessage());
- return Response.seeOther(routesURI).build();
- }
- }
-
- /**
- * Returns the XML text
- */
- public String getRouteXml() throws JAXBException {
- JAXBContext context = ((ModelCamelContext)getCamelContext()).getModelJAXBContextFactory().newJAXBContext();
- Marshaller marshaller = context.createMarshaller();
- marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
- // TODO fix to use "" namespace prefix
- // using this
- // https://jaxb.dev.java.net/nonav/2.1.10/docs/vendorProperties.html#prefixmapper
- StringWriter buffer = new StringWriter();
- marshaller.marshal(route, buffer);
- return buffer.toString();
- }
-
- /**
- * Returns the content of the route definition class
- */
- public String getRouteDefinition() {
- if (language.equalsIgnoreCase(LANGUAGE_XML)) {
- try {
- return getRouteXml();
- } catch (JAXBException e) {
- return "Error on marshal the route definition!";
- }
- } else {
- return "Unsupported language!";
- }
- }
-
- /**
- * Returns the Graphviz DOT <a
- * href="http://camel.apache.org/visualisation.html">Visualisation</a> of
- * this route
- */
- @GET
- @Produces(Constants.DOT_MIMETYPE)
- public String getDot() throws IOException {
- RouteDotGenerator generator = new RouteDotGenerator("/tmp/camel");
- return generator.getRoutesText(getCamelContext());
- }
-
- /**
- * Allows a route definition to be updated
- */
- @POST
- @Consumes()
- @Produces({MediaType.TEXT_XML, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- public void postRoute(RouteDefinition routeDefinition) throws Exception {
- // lets preserve the ID
- routeDefinition.setId(id);
-
- // lets install the updated route
- ((ModelCamelContext)getCamelContext()).addRouteDefinitions(Collections.singletonList(routeDefinition));
- }
-
- /**
- * Allows a routes builder to be updated
- */
- public void postRoutes(RouteBuilder builder) throws Exception {
- DefaultCamelContext defaultCamelContext = (DefaultCamelContext)getCamelContext();
- // stop and remove the original route
- defaultCamelContext.stopRoute(id);
- defaultCamelContext.removeRoute(id);
-
- // add the routes in a route builder
- defaultCamelContext.addRoutes(builder);
-
- // reserve the id on the newest route
- List<RouteDefinition> routeDefinitions = defaultCamelContext.getRouteDefinitions();
- RouteDefinition route = routeDefinitions.get(routeDefinitions.size() - 1);
- route.setId(id);
- defaultCamelContext.startRoute(route);
- }
-
- /**
- * Updates a route definition using form encoded data from a web form
- *
- * @param language is the edited language used on this route
- * @param body is the route definition content POSTed typically from a HTML
- * form with the <code>route</code> field
- * @param edited is a flag to show whether the route have been edited
- */
- @POST
- @Consumes("application/x-www-form-urlencoded")
- public Response postRouteForm(@Context UriInfo uriInfo, @FormParam("language") String language,
- @FormParam("route") String body, @FormParam("edited") String edited)
- throws URISyntaxException {
-
- if (edited.equals("false")) {
- return Response.seeOther(new URI("/routes")).build();
- }
-
- LOG.debug("New Route is: {}", body);
-
- LOG.info(body);
- if (body == null) {
- error = "No Route submitted!";
- } else if (language.equals(LANGUAGE_XML)) {
- return parseXml(body);
- }
- error = "Not supproted language!";
- return Response.ok(new Viewable("edit", this)).build();
- }
-
- /**
- * process the route configuration defined in Xml
- */
- private Response parseXml(String xml) {
- try {
- JAXBContext context = ((ModelCamelContext)getCamelContext()).getModelJAXBContextFactory().newJAXBContext();
- Unmarshaller unmarshaller = context.createUnmarshaller();
- Object value = unmarshaller.unmarshal(new StringReader(xml));
- if (value instanceof RouteDefinition) {
- RouteDefinition routeDefinition = (RouteDefinition)value;
- postRoute(routeDefinition);
- return Response.seeOther(new URI("/routes")).build();
- } else {
- error = "Posted XML is not a route but is of type " + ObjectHelper.className(value);
- }
- } catch (JAXBException e) {
- error = "Failed to parse XML: " + e.getMessage();
- } catch (Exception e) {
- error = "Failed to install route: " + e.getMessage();
- }
- // lets re-render the form
- return Response.ok(new Viewable("edit", this)).build();
- }
-
- /**
- * Returns the language
- */
- public String getLanguage() {
- return language;
- }
-
- public void setLanguage(String language) {
- this.language = LANGUAGE_XML;
- }
-
- /**
- * Looks up an individual route
- */
- @Path("status")
- public RouteStatusResource getRouteStatus() {
- return new RouteStatusResource(this);
- }
-
- public String getError() {
- return error;
- }
-
- public String getId() {
- return id;
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteStatusResource.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteStatusResource.java b/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteStatusResource.java
deleted file mode 100644
index 018b1af..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteStatusResource.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * 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.web.resources;
-
-import java.net.URI;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import com.sun.jersey.api.representation.Form;
-import org.apache.camel.CamelContext;
-import org.apache.camel.ServiceStatus;
-import org.apache.camel.model.RouteDefinition;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Represents the status of a single single Camel Route which is used to implement one or more
- * <a href="http://camel.apache.org/enterprise-integration-patterns.html">Enterprise Integration Paterns</a>
- */
-public class RouteStatusResource {
-
- private static final Logger LOG = LoggerFactory.getLogger(RouteStatusResource.class);
- private RouteResource routeResource;
-
- public RouteStatusResource(RouteResource routeResource) {
- this.routeResource = routeResource;
- }
-
- public RouteDefinition getRoute() {
- return routeResource.getRoute();
- }
-
- public CamelContext getCamelContext() {
- return routeResource.getCamelContext();
- }
-
- @GET
- @Produces(MediaType.TEXT_PLAIN)
- public String getStatusText() {
- ServiceStatus status = getStatus();
- if (status != null) {
- return status.toString();
- }
- return null;
- }
-
- public ServiceStatus getStatus() {
- return getRoute().getStatus(getCamelContext());
- }
-
- @POST
- @Consumes(MediaType.TEXT_PLAIN)
- public Response setStatus(String status) throws Exception {
- if (status != null) {
- if (status.equalsIgnoreCase("start")) {
- getCamelContext().startRoute(getRoute().getId());
- return Response.ok().build();
- } else if (status.equalsIgnoreCase("stop")) {
- getCamelContext().stopRoute(getRoute().getId());
- return Response.ok().build();
- }
- }
- return Response.noContent().build();
- }
-
-
- /**
- * Sets the status of this route to either "start" or "stop"
- *
- * @param formData is the form data POSTed typically from a HTML form with the <code>status</code> field
- * set to either "start" or "stop"
- */
- @POST
- @Consumes("application/x-www-form-urlencoded")
- public Response setStatus(Form formData) throws Exception {
- // TODO replace the Form class with an injected bean?
- LOG.info("Received form! " + formData);
- String status = formData.getFirst("status", String.class);
- setStatus(status);
- return Response.seeOther(new URI("/routes")).build();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/resources/RoutesResource.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/resources/RoutesResource.java b/components/camel-web/src/main/java/org/apache/camel/web/resources/RoutesResource.java
deleted file mode 100644
index 26a0e1f..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/resources/RoutesResource.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/**
- * 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.web.resources;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.FormParam;
-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 javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
-
-import com.sun.jersey.api.view.Viewable;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.model.ModelCamelContext;
-import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.model.RoutesDefinition;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.view.RouteDotGenerator;
-import org.apache.camel.web.model.Route;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * The active routes in Camel which are used to implement one or more <a
- * href="http://camel.apache.org/enterprise-integration-patterns.html"
- * >Enterprise Integration Patterns</a>
- */
-public class RoutesResource extends CamelChildResourceSupport {
- private static final Logger LOG = LoggerFactory.getLogger(RoutesResource.class);
- private String error = "";
-
- public RoutesResource(CamelContextResource contextResource) {
- super(contextResource);
- }
-
- /**
- * Returns the routes currently active within this context
- */
- @GET
- @Produces({MediaType.TEXT_XML, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- @SuppressWarnings("deprecation")
- public RoutesDefinition getRouteDefinitions() {
- RoutesDefinition answer = new RoutesDefinition();
- CamelContext camelContext = getCamelContext();
- if (camelContext != null) {
- List<RouteDefinition> list = camelContext.getRouteDefinitions();
- answer.setRoutes(list);
- }
- return answer;
- }
-
- /**
- * Returns the Graphviz DOT <a
- * href="http://camel.apache.org/visualisation.html">Visualisation</a> of
- * the current Camel routes
- */
- @GET
- @Produces(Constants.DOT_MIMETYPE)
- public String getDot() throws IOException {
- RouteDotGenerator generator = new RouteDotGenerator("/tmp/camel");
- return generator.getRoutesText(getCamelContext());
- }
-
- /**
- * Looks up an individual route
- */
- @Path("{id}")
- public RouteResource getRoute(@PathParam("id") String id) {
- List<RouteDefinition> list = getRouteDefinitions().getRoutes();
- for (RouteDefinition routeType : list) {
- if (routeType.getId().equals(id)) {
- return new RouteResource(this, routeType);
- }
- }
- return null;
- }
-
- /**
- * Looks up an individual route with specified language
- */
- @Path("{id}/lang/{language}")
- public RouteResource getRoute(@PathParam("id") String id, @PathParam("language") String language) {
- RouteResource routeResource = getRoute(id);
- if (routeResource != null) {
- routeResource.setLanguage(language);
- }
- return routeResource;
- }
-
- @Path("{id}/status")
- public RouteStatusResource getRouteStatus(@PathParam("id") String id) {
- RouteResource routeResource = getRoute(id);
- return routeResource.getRouteStatus();
- }
-
- /**
- * Creates a new route using form encoded data from a web form
- *
- * @param language is the edited language used on this route
- * @param body the route definition content
- */
- @POST
- @Consumes("application/x-www-form-urlencoded")
- public Response postRouteForm(@Context UriInfo uriInfo, @FormParam("language") String language,
- @FormParam("route") String body) throws URISyntaxException {
-
- LOG.debug("New Route is: {}", body);
-
- LOG.info(body);
- if (body == null) {
- error = "No Route submitted!";
- } else if (language.equals(RouteResource.LANGUAGE_XML)) {
- return parseXml(body);
- }
-
- error = "Not supported language!";
- return Response.ok(new Viewable("edit", this)).build();
- }
-
- // Properties
- // -------------------------------------------------------------------------
-
- public List<Route> getRoutes() {
- List<Route> answer = new ArrayList<Route>();
- for (RouteDefinition def : getRouteDefinitions().getRoutes()) {
- Route route = new Route(getCamelContext(), def);
- answer.add(route);
- }
- return answer;
- }
-
- public String getError() {
- return error;
- }
-
- /**
- * process the route configuration defined in Xml
- */
- private Response parseXml(String xml) {
- try {
- JAXBContext context = ((ModelCamelContext)getCamelContext()).getModelJAXBContextFactory().newJAXBContext();
- Unmarshaller unmarshaller = context.createUnmarshaller();
- Object value = unmarshaller.unmarshal(new StringReader(xml));
- if (value instanceof RouteDefinition) {
- RouteDefinition routeDefinition = (RouteDefinition)value;
- // add the route
- ((ModelCamelContext)getCamelContext()).addRouteDefinitions(Collections.singletonList(routeDefinition));
- return Response.seeOther(new URI("/routes")).build();
- } else {
- error = "Posted XML is not a route but is of type " + ObjectHelper.className(value);
- }
- } catch (JAXBException e) {
- error = "Failed to parse XML: " + e.getMessage();
- } catch (Exception e) {
- error = "Failed to install route: " + e.getMessage();
- }
- // lets re-render the form
- return Response.ok(new Viewable("create", this)).build();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/util/CamelOSGIResourceConfig.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/util/CamelOSGIResourceConfig.java b/components/camel-web/src/main/java/org/apache/camel/web/util/CamelOSGIResourceConfig.java
deleted file mode 100644
index 9f4b3e1..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/util/CamelOSGIResourceConfig.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * 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.web.util;
-
-import java.util.HashMap;
-import java.util.Map;
-import javax.ws.rs.core.MediaType;
-
-import com.sun.jersey.api.core.ClassNamesResourceConfig;
-import org.apache.camel.web.resources.CamelContextResource;
-import org.apache.camel.web.resources.ComponentResource;
-import org.apache.camel.web.resources.ComponentsResource;
-import org.apache.camel.web.resources.Constants;
-import org.apache.camel.web.resources.ConvertersFromResource;
-import org.apache.camel.web.resources.ConvertersResource;
-import org.apache.camel.web.resources.EndpointResource;
-import org.apache.camel.web.resources.EndpointsResource;
-import org.apache.camel.web.resources.ExchangeResource;
-import org.apache.camel.web.resources.LanguageResource;
-import org.apache.camel.web.resources.LanguagesResource;
-import org.apache.camel.web.resources.RouteResource;
-import org.apache.camel.web.resources.RouteStatusResource;
-import org.apache.camel.web.resources.RoutesResource;
-
-/**
- *
- */
-public class CamelOSGIResourceConfig extends ClassNamesResourceConfig {
-
- public CamelOSGIResourceConfig() {
- super(createProperties());
- }
-
- protected static Map<String, Object> createProperties() {
- Map<String, Object> properties = new HashMap<String, Object>();
-
- String[] resources = new String[] {
- CamelContextResource.class.getName(),
- ComponentResource.class.getName(),
- ComponentsResource.class.getName(),
- ConvertersFromResource.class.getName(),
- ConvertersResource.class.getName(),
- EndpointResource.class.getName(),
- EndpointsResource.class.getName(),
- ExchangeResource.class.getName(),
- LanguageResource.class.getName(),
- LanguagesResource.class.getName(),
- RouteResource.class.getName(),
- RoutesResource.class.getName(),
- RouteStatusResource.class.getName(),
- JAXBContextResolverOSGI.class.getName(),
- JAXBMarshallerResolver.class.getName()
- };
-
- properties.put(ClassNamesResourceConfig.PROPERTY_CLASSNAMES, resources);
-
- return properties;
-
- }
-
- public Map<String, MediaType> getMediaTypeMappings() {
- Map<String, MediaType> m = new HashMap<String, MediaType>();
- m.put("html", MediaType.TEXT_HTML_TYPE);
- m.put("xml", MediaType.APPLICATION_XML_TYPE);
- m.put("json", MediaType.APPLICATION_JSON_TYPE);
- m.put("dot", MediaType.valueOf(Constants.DOT_MIMETYPE));
- return m;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/util/CamelResourceConfig.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/util/CamelResourceConfig.java b/components/camel-web/src/main/java/org/apache/camel/web/util/CamelResourceConfig.java
deleted file mode 100644
index 9d0a666..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/util/CamelResourceConfig.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * 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.web.util;
-
-import java.util.HashMap;
-import java.util.Map;
-import javax.ws.rs.core.MediaType;
-
-import com.sun.jersey.api.core.PackagesResourceConfig;
-import org.apache.camel.web.resources.Constants;
-
-/**
- *
- */
-public class CamelResourceConfig extends PackagesResourceConfig {
-
- public CamelResourceConfig() {
- this("org.apache.camel.web");
- }
-
- public CamelResourceConfig(String packages) {
- super(createProperties(packages));
- }
-
- protected static Map<String, Object> createProperties(String packages) {
- Map<String, Object> properties = new HashMap<String, Object>();
-
- properties.put(PackagesResourceConfig.PROPERTY_PACKAGES, packages);
-
-/*
- WadlGeneratorConfig config = WadlGeneratorConfig
- .generator(WadlGeneratorApplicationDoc.class)
- .prop("applicationDocsFile", "classpath:/application-doc.xml")
- .generator(WadlGeneratorGrammarsSupport.class)
- .prop("grammarsFile", "classpath:/application-grammars.xml")
- .generator(WadlGeneratorResourceDocSupport.class)
- .prop("resourceDocFile", "classpath:/resourcedoc.xml")
- .build();
-
- properties.put(ResourceConfig.PROPERTY_WADL_GENERATOR_CONFIG, config);
-*/
- return properties;
- }
-
- public Map<String, MediaType> getMediaTypeMappings() {
- Map<String, MediaType> m = new HashMap<String, MediaType>();
- m.put("html", MediaType.TEXT_HTML_TYPE);
- m.put("xml", MediaType.APPLICATION_XML_TYPE);
- m.put("json", MediaType.APPLICATION_JSON_TYPE);
- m.put("dot", MediaType.valueOf(Constants.DOT_MIMETYPE));
- return m;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBContextResolver.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBContextResolver.java b/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBContextResolver.java
deleted file mode 100644
index 9d1278e..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBContextResolver.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * 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.web.util;
-
-import javax.ws.rs.ext.ContextResolver;
-import javax.ws.rs.ext.Provider;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-
-/**
- * A resolver of the JAXB context primed for the Camel XML languages
- * which supports JSON as well as XML encoding
- */
-@Provider
-public class JAXBContextResolver implements ContextResolver<JAXBContext> {
- private final JAXBContext context;
- private String packages;
-
- public JAXBContextResolver() throws Exception {
- this(org.apache.camel.web.resources.Constants.JAXB_PACKAGES);
- }
-
- public JAXBContextResolver(String packages) throws JAXBException {
- this.packages = packages;
- this.context = JAXBContext.newInstance(packages);
- }
-
- public JAXBContext getContext(Class<?> objectType) {
- Package aPackage = objectType.getPackage();
- if (aPackage != null) {
- String name = aPackage.getName();
- if (name.length() > 0) {
- if (packages.contains(name)) {
- return context;
- }
- }
- }
- return null;
- }
-
- public String getPackages() {
- return packages;
- }
-
- public JAXBContext getContext() {
- return context;
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBContextResolverOSGI.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBContextResolverOSGI.java b/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBContextResolverOSGI.java
deleted file mode 100644
index fe1f843..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBContextResolverOSGI.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * 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.web.util;
-
-import javax.ws.rs.ext.ContextResolver;
-import javax.ws.rs.ext.Provider;
-import javax.xml.bind.JAXBContext;
-
-import com.sun.jersey.api.json.JSONConfiguration;
-import com.sun.jersey.api.json.JSONJAXBContext;
-
-/**
- * A resolver of the JAXB context OSGI primed for the Camel XML languages
- * which supports JSON as well as XML encoding
- */
-@Provider
-public final class JAXBContextResolverOSGI implements ContextResolver<JAXBContext> {
- private final JAXBContext context;
- private String packages;
-
- public JAXBContextResolverOSGI() throws Exception {
- this.packages = org.apache.camel.web.resources.Constants.JAXB_PACKAGES;
- this.context = new JSONJAXBContext(JSONConfiguration.natural().build(), this.packages);
-
- }
-
- public JAXBContext getContext(Class<?> objectType) {
- Package aPackage = objectType.getPackage();
- if (aPackage != null) {
- String name = aPackage.getName();
- if (name.length() > 0) {
- if (packages.contains(name)) {
- return context;
- }
- }
- }
- return null;
- }
-
- public String getPackages() {
- return packages;
- }
-
- public JAXBContext getContext() {
- return context;
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBMarshallerResolver.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBMarshallerResolver.java b/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBMarshallerResolver.java
deleted file mode 100644
index e6dd09a..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBMarshallerResolver.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- * 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.web.util;
-
-import javax.ws.rs.ext.ContextResolver;
-import javax.ws.rs.ext.Provider;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-
-import com.sun.xml.bind.marshaller.NamespacePrefixMapper;
-
-/**
- *
- */
-@Provider
-public class JAXBMarshallerResolver implements ContextResolver<Marshaller> {
- private JAXBContextResolver contextResolver;
-
- public JAXBMarshallerResolver() throws Exception {
- contextResolver = new JAXBContextResolver();
- }
-
- public Marshaller getContext(Class<?> aClass) {
- try {
- JAXBContext context = contextResolver.getContext();
- Marshaller marshaller = context.createMarshaller();
- NamespacePrefixMapper namespaceMapper = new NamespacePrefixMapper() {
-
- /**
- * Returns a preferred prefix for the given namespace URI.
- *
- * This method is intended to be overrided by a derived class.
- *
- * @param namespaceUri
- * The namespace URI for which the prefix needs to be found.
- * Never be null. "" is used to denote the default namespace.
- * @param suggestion
- * When the content tree has a suggestion for the prefix
- * to the given namespaceUri, that suggestion is passed as a
- * parameter. Typically this value comes from QName.getPrefix()
- * to show the preference of the content tree. This parameter
- * may be null, and this parameter may represent an already
- * occupied prefix.
- * @param requirePrefix
- * If this method is expected to return non-empty prefix.
- * When this flag is true, it means that the given namespace URI
- * cannot be set as the default namespace.
- *
- * @return
- * null if there's no preferred prefix for the namespace URI.
- * In this case, the system will generate a prefix for you.
- *
- * Otherwise the system will try to use the returned prefix,
- * but generally there's no guarantee if the prefix will be
- * actually used or not.
- *
- * return "" to map this namespace URI to the default namespace.
- * Again, there's no guarantee that this preference will be
- * honored.
- *
- * If this method returns "" when requirePrefix=true, the return
- * value will be ignored and the system will generate one.
- */
- @Override
- public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
- if (namespaceUri.equals("http://camel.apache.org/schema/web")) {
- return "w";
- } else if (namespaceUri.equals("http://camel.apache.org/schema/spring")) {
- if (requirePrefix) {
- return "c";
- }
- return "";
- } else {
- return suggestion;
- }
- }
-
- };
- marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", namespaceMapper);
- return marshaller;
- } catch (JAXBException e) {
- throw new RuntimeException(e);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/util/JMXRouteStatistics.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/util/JMXRouteStatistics.java b/components/camel-web/src/main/java/org/apache/camel/web/util/JMXRouteStatistics.java
deleted file mode 100644
index 08628ad..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/util/JMXRouteStatistics.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * 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.web.util;
-
-import java.text.DateFormat;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.management.ManagedManagementStrategy;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Gathers {@link RouteStatistics} from JMX.
- * <p/>
- * If JMX is disabled then no statistics can be gathered, and <tt>null</tt> is returned.
- */
-public class JMXRouteStatistics implements RouteStatistics {
-
- private static final Logger LOG = LoggerFactory.getLogger(JMXRouteStatistics.class);
-
- public Object getRouteStatistic(CamelContext camelContext, String routeID, String attribute) {
- // only possible if JMX is enabled
- if (!(camelContext.getManagementStrategy() instanceof ManagedManagementStrategy)) {
- return null;
- }
-
- try {
- MBeanServer server = camelContext.getManagementStrategy().getManagementAgent().getMBeanServer();
- String domain = camelContext.getManagementStrategy().getManagementAgent().getMBeanObjectDomainName();
-
- ObjectName objName = new ObjectName(domain + ":type=routes,*");
- List<ObjectName> cacheList = new LinkedList<ObjectName>(server.queryNames(objName, null));
- for (Iterator<ObjectName> iter = cacheList.iterator(); iter.hasNext();) {
- objName = iter.next();
- String keyProps = objName.getCanonicalKeyPropertyListString();
- ObjectName objectInfoName = new ObjectName(domain + ":" + keyProps);
- String currentRouteID = (String) server.getAttribute(objectInfoName, "RouteId");
- if (currentRouteID.equals(routeID)) {
- Object value = server.getAttribute(objectInfoName, attribute);
- if (value instanceof Date) {
- DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
- return df.format(value);
- } else {
- return value;
- }
- }
- }
- } catch (Exception e) {
- LOG.warn("Error getting route statistic from JMX. This exception will be ignored.", e);
- }
-
- return null;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/util/RouteStatistics.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/util/RouteStatistics.java b/components/camel-web/src/main/java/org/apache/camel/web/util/RouteStatistics.java
deleted file mode 100644
index f3cf9cf..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/util/RouteStatistics.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * 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.web.util;
-
-import org.apache.camel.CamelContext;
-
-/**
- *
- */
-public interface RouteStatistics {
-
- /**
- * Gets statistic for the given route
- *
- * @param camelContext the context in question
- * @param routeID the routeID to retrieve stats for
- * @param attribute the attribute to retrieve
- * @return the statistic, or <tt>null</tt> if not possible to find or get the statistic
- */
- Object getRouteStatistic(CamelContext camelContext, String routeID, String attribute);
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/9f5e32db/components/camel-web/src/main/java/org/apache/camel/web/util/UriCharactersEncoder.java
----------------------------------------------------------------------
diff --git a/components/camel-web/src/main/java/org/apache/camel/web/util/UriCharactersEncoder.java b/components/camel-web/src/main/java/org/apache/camel/web/util/UriCharactersEncoder.java
deleted file mode 100644
index 9db6b1c..0000000
--- a/components/camel-web/src/main/java/org/apache/camel/web/util/UriCharactersEncoder.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * 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.web.util;
-
-import java.util.BitSet;
-
-public final class UriCharactersEncoder {
- private static BitSet unsafeCharacters;
- private static final char[] HEX_DIGITS = {
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
-
- static {
- unsafeCharacters = new BitSet(256);
- unsafeCharacters.set(' ');
- unsafeCharacters.set('"');
- unsafeCharacters.set('<');
- unsafeCharacters.set('>');
- unsafeCharacters.set('#');
- unsafeCharacters.set('%');
- unsafeCharacters.set('{');
- unsafeCharacters.set('}');
- unsafeCharacters.set('|');
- unsafeCharacters.set('\\');
- unsafeCharacters.set('^');
- unsafeCharacters.set('~');
- unsafeCharacters.set('[');
- unsafeCharacters.set(']');
- unsafeCharacters.set('`');
- unsafeCharacters.set('/');
- unsafeCharacters.set('$');
- }
-
- private UriCharactersEncoder() {
- // util class
- }
-
- public static String encode(String s) {
- int n = s.length();
- if (n == 0) {
- return s;
- }
-
- // First check whether we actually need to encode
- char chars[] = s.toCharArray();
- for (int i = 0;;) {
- // just deal with the ascii character
- if (chars[i] > 0 && chars[i] < 128) {
- if (unsafeCharacters.get(chars[i])) {
- break;
- }
- }
- if (++i >= chars.length) {
- return s;
- }
- }
-
- // okay there are some unsafe characters so we do need to encode
- StringBuilder sb = new StringBuilder();
- for (char ch : chars) {
- if (ch > 0 && ch < 128 && unsafeCharacters.get(ch)) {
- appendEscape(sb, (byte)ch);
- } else {
- sb.append(ch);
- }
- }
- return sb.toString();
- }
-
- private static void appendEscape(StringBuilder sb, byte b) {
- sb.append('%');
- sb.append(HEX_DIGITS[(b >> 4) & 0x0f]);
- sb.append(HEX_DIGITS[(b >> 0) & 0x0f]);
- }
-
-}