http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/main/jetty8/org/apache/camel/component/jetty8/CamelRedirectListener.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/main/jetty8/org/apache/camel/component/jetty8/CamelRedirectListener.java b/components/camel-jetty/src/main/jetty8/org/apache/camel/component/jetty8/CamelRedirectListener.java deleted file mode 100644 index 10ad17c..0000000 --- a/components/camel-jetty/src/main/jetty8/org/apache/camel/component/jetty8/CamelRedirectListener.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.component.jetty8; - -import java.io.IOException; - -import org.eclipse.jetty.client.HttpDestination; -import org.eclipse.jetty.client.HttpExchange; -import org.eclipse.jetty.client.RedirectListener; -import org.eclipse.jetty.http.HttpStatus; -import org.eclipse.jetty.io.Buffer; - -public class CamelRedirectListener extends RedirectListener { - private final HttpExchange exchange; - - public CamelRedirectListener(HttpDestination destination, HttpExchange ex) { - super(destination, ex); - exchange = ex; - } - - @Override - public void onResponseStatus(Buffer version, int status, Buffer reason) throws IOException { - // Update the exchange method to get to support the Post/Redirect/Get - // http://en.wikipedia.org/wiki/Post/Redirect/Get - if (exchange.getMethod().equals("POST") && (status == HttpStatus.SEE_OTHER_303 || status == HttpStatus.MOVED_TEMPORARILY_302)) { - exchange.setMethod("GET"); - } - - // Since the default RedirectListener only cares about http - // response codes 301 and 302, we override this method and - // trick the super class into handling this case for us. - if (status == HttpStatus.SEE_OTHER_303) { - status = HttpStatus.MOVED_TEMPORARILY_302; - } - - super.onResponseStatus(version, status, reason); - } -}
http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/main/jetty8/org/apache/camel/component/jetty8/JettyContentExchange8.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/main/jetty8/org/apache/camel/component/jetty8/JettyContentExchange8.java b/components/camel-jetty/src/main/jetty8/org/apache/camel/component/jetty8/JettyContentExchange8.java deleted file mode 100644 index 857877c..0000000 --- a/components/camel-jetty/src/main/jetty8/org/apache/camel/component/jetty8/JettyContentExchange8.java +++ /dev/null @@ -1,287 +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.component.jetty8; - -import java.io.IOException; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; -import java.util.Collection; -import java.util.LinkedList; -import java.util.Map; -import java.util.TreeMap; -import java.util.concurrent.CountDownLatch; - -import org.apache.camel.AsyncCallback; -import org.apache.camel.CamelExchangeException; -import org.apache.camel.Exchange; -import org.apache.camel.ExchangeTimedOutException; -import org.apache.camel.component.jetty.JettyContentExchange; -import org.apache.camel.component.jetty.JettyHttpBinding; -import org.apache.camel.util.IOHelper; -import org.eclipse.jetty.client.ContentExchange; -import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.HttpEventListener; -import org.eclipse.jetty.client.HttpEventListenerWrapper; -import org.eclipse.jetty.client.HttpExchange; -import org.eclipse.jetty.http.HttpFields; -import org.eclipse.jetty.http.HttpHeaders; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Jetty specific exchange which keeps track of the the request and response. - * - * @version - */ -public class JettyContentExchange8 implements JettyContentExchange { - - private static final Logger LOG = LoggerFactory.getLogger(JettyContentExchange8.class); - - private volatile Exchange exchange; - private volatile AsyncCallback callback; - private volatile JettyHttpBinding jettyBinding; - private volatile HttpClient client; - private final CountDownLatch done = new CountDownLatch(1); - private final ContentExchange ce; - - public JettyContentExchange8() { - this.ce = new ContentExchange(true); - } - - public void init(Exchange exchange, JettyHttpBinding jettyBinding, - final HttpClient client, AsyncCallback callback) { - this.exchange = exchange; - this.jettyBinding = jettyBinding; - this.client = client; - this.callback = callback; - HttpEventListener old = ce.getEventListener(); - ce.setEventListener(new HttpEventListenerWrapper(old, true) { - public void onRequestComplete() throws IOException { - JettyContentExchange8.this.onRequestComplete(); - super.onRequestComplete(); - } - - @Override - public void onResponseComplete() throws IOException { - super.onResponseComplete(); - JettyContentExchange8.this.onResponseComplete(); - } - - @Override - public void onConnectionFailed(Throwable ex) { - try { - super.onConnectionFailed(ex); - } finally { - JettyContentExchange8.this.onConnectionFailed(ex); - } - } - - @Override - public void onException(Throwable ex) { - try { - super.onException(ex); - } finally { - JettyContentExchange8.this.onException(ex); - } - } - - @Override - public void onExpire() { - try { - super.onExpire(); - } finally { - JettyContentExchange8.this.onExpire(); - } - } - - }); - } - - protected void onRequestComplete() throws IOException { - LOG.trace("onRequestComplete"); - - closeRequestContentSource(); - } - - protected void onResponseComplete() throws IOException { - LOG.trace("onResponseComplete"); - doTaskCompleted(); - } - - protected void onExpire() { - LOG.trace("onExpire"); - - // need to close the request input stream - closeRequestContentSource(); - doTaskCompleted(); - } - - protected void onException(Throwable ex) { - LOG.trace("onException {}", ex); - - // need to close the request input stream - closeRequestContentSource(); - doTaskCompleted(ex); - } - - protected void onConnectionFailed(Throwable ex) { - LOG.trace("onConnectionFailed {}", ex); - - // need to close the request input stream - closeRequestContentSource(); - doTaskCompleted(ex); - } - - public byte[] getBody() { - // must return the content as raw bytes - return ce.getResponseContentBytes(); - } - - public String getUrl() { - String params = ce.getRequestFields().getStringField(HttpHeaders.CONTENT_ENCODING); - return ce.getScheme() + "://" - + ce.getAddress().toString() - + ce.getRequestURI() + (params != null ? "?" + params : ""); - } - - protected void closeRequestContentSource() { - // close the input stream when its not needed anymore - InputStream is = ce.getRequestContentSource(); - if (is != null) { - IOHelper.close(is, "RequestContentSource", LOG); - } - } - - protected void doTaskCompleted() { - // make sure to lower the latch - done.countDown(); - - if (callback == null) { - // this is only for the async callback - return; - } - - int exchangeState = ce.getStatus(); - - if (LOG.isDebugEnabled()) { - LOG.debug("TaskComplete with state {} for url: {}", exchangeState, getUrl()); - } - - try { - if (exchangeState == HttpExchange.STATUS_COMPLETED) { - // process the response as the state is ok - try { - jettyBinding.populateResponse(exchange, this); - } catch (Exception e) { - exchange.setException(e); - } - } else if (exchangeState == HttpExchange.STATUS_EXPIRED) { - // we did timeout - exchange.setException(new ExchangeTimedOutException(exchange, client.getTimeout())); - } else { - // some kind of other error - if (exchange.getException() != null) { - exchange.setException(new CamelExchangeException("JettyClient failed with state " + exchangeState, exchange, exchange.getException())); - } - } - } finally { - // now invoke callback to indicate we are done async - callback.done(false); - } - } - - protected void doTaskCompleted(Throwable ex) { - try { - // some kind of other error - exchange.setException(new CamelExchangeException("JettyClient failed cause by: " + ex.getMessage(), exchange, ex)); - } finally { - // make sure to lower the latch - done.countDown(); - } - - if (callback != null) { - // now invoke callback to indicate we are done async - callback.done(false); - } - } - - public void setRequestContentType(String contentType) { - ce.setRequestContentType(contentType); - } - - public int getResponseStatus() { - return ce.getResponseStatus(); - } - - public void setMethod(String method) { - ce.setMethod(method); - } - - public void setURL(String url) { - ce.setURL(url); - } - - public void setRequestContent(byte[] byteArray) { - ce.setRequestContent(new org.eclipse.jetty.io.ByteArrayBuffer(byteArray)); - } - public void setRequestContent(String data, String charset) throws UnsupportedEncodingException { - if (charset == null) { - ce.setRequestContent(new org.eclipse.jetty.io.ByteArrayBuffer(data)); - } else { - ce.setRequestContent(new org.eclipse.jetty.io.ByteArrayBuffer(data, charset)); - } - } - public void setRequestContent(InputStream ins) { - ce.setRequestContentSource(ins); - } - - public void addRequestHeader(String key, String s) { - ce.addRequestHeader(key, s); - } - - public void send(HttpClient client) throws IOException { - client.send(ce); - } - - public byte[] getResponseContentBytes() { - return ce.getResponseContentBytes(); - } - - public Map<String, Collection<String>> getResponseHeaders() { - final HttpFields f = ce.getResponseFields(); - Map<String, Collection<String>> ret = new TreeMap<String, Collection<String>>(String.CASE_INSENSITIVE_ORDER); - for (String n : f.getFieldNamesCollection()) { - ret.put(n, f.getValuesCollection(n)); - } - return ret; - } - - @Override - public void setTimeout(long timeout) { - client.setTimeout(timeout); - ce.setTimeout(timeout); - } - - @Override - public void setSupportRedirect(boolean supportRedirect) { - LinkedList<String> listeners = client.getRegisteredListeners(); - if (listeners == null || !listeners.contains(CamelRedirectListener.class.getName())) { - client.registerListener(CamelRedirectListener.class.getName()); - } - } - -} http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/main/jetty8/org/apache/camel/component/jetty8/JettyHttpComponent8.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/main/jetty8/org/apache/camel/component/jetty8/JettyHttpComponent8.java b/components/camel-jetty/src/main/jetty8/org/apache/camel/component/jetty8/JettyHttpComponent8.java deleted file mode 100644 index 588cf3c..0000000 --- a/components/camel-jetty/src/main/jetty8/org/apache/camel/component/jetty8/JettyHttpComponent8.java +++ /dev/null @@ -1,132 +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.component.jetty8; - -import java.net.URI; -import java.net.URISyntaxException; -import java.util.HashMap; -import java.util.Map; - -import org.apache.camel.component.jetty.CamelHttpClient; -import org.apache.camel.component.jetty.JettyHttpComponent; -import org.apache.camel.component.jetty.JettyHttpEndpoint; -import org.apache.camel.util.IntrospectionSupport; -import org.apache.camel.util.ObjectHelper; -import org.eclipse.jetty.server.AbstractConnector; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.util.ssl.SslContextFactory; - -public class JettyHttpComponent8 extends JettyHttpComponent { - - protected CamelHttpClient createCamelHttpClient(SslContextFactory sslContextFactory) { - return new CamelHttpClient8(sslContextFactory); - } - - protected AbstractConnector createConnectorJettyInternal(Server server, - JettyHttpEndpoint endpoint, - SslContextFactory sslcf) { - //Jetty 8 - AbstractConnector result = null; - String hosto = endpoint.getHttpUri().getHost(); - int porto = endpoint.getPort(); - try { - if (sslcf == null && !"https".equals(endpoint.getProtocol())) { - result = (AbstractConnector)ObjectHelper - .loadClass("org.eclipse.jetty.server.nio.SelectChannelConnector", - Server.class.getClassLoader()).newInstance(); - } else if (sslcf == null) { - result = (AbstractConnector)ObjectHelper - .loadClass("org.eclipse.jetty.server.ssl.SslSelectChannelConnector", - Server.class.getClassLoader()).newInstance(); - } else { - result = (AbstractConnector)ObjectHelper - .loadClass("org.eclipse.jetty.server.ssl.SslSelectChannelConnector", - Server.class.getClassLoader()).getConstructor(SslContextFactory.class) - .newInstance(sslcf); - } - Server.class.getMethod("setSendServerVersion", Boolean.TYPE).invoke(server, - endpoint.isSendServerVersion()); - - Server.class.getMethod("setSendDateHeader", Boolean.TYPE).invoke(server, - endpoint.isSendDateHeader()); - - - if (result != null && requestBufferSize != null) { - result.getClass().getMethod("setRequestBufferSize", Integer.TYPE) - .invoke(result, requestBufferSize); - } - if (result != null && requestHeaderSize != null) { - result.getClass().getMethod("setRequestHeaderSize", Integer.TYPE) - .invoke(result, requestHeaderSize); - } - if (result != null && responseBufferSize != null) { - result.getClass().getMethod("setResponseBufferSize", Integer.TYPE) - .invoke(result, responseBufferSize); - } - if (result != null && responseHeaderSize != null) { - result.getClass().getMethod("setResponseBufferSize", Integer.TYPE) - .invoke(result, responseHeaderSize); - } - result.getClass().getMethod("setPort", Integer.TYPE).invoke(result, porto); - if (hosto != null) { - result.getClass().getMethod("setHost", String.class).invoke(result, hosto); - } - } catch (RuntimeException rex) { - throw rex; - } catch (Exception ex) { - throw new RuntimeException(ex); - } - try { - result.getClass().getMethod("setPort", Integer.TYPE).invoke(result, porto); - if (hosto != null) { - result.getClass().getMethod("setHost", String.class).invoke(result, hosto); - } - if (getSocketConnectorProperties() != null && !"https".equals(endpoint.getProtocol())) { - // must copy the map otherwise it will be deleted - Map<String, Object> properties = new HashMap<String, Object>(getSocketConnectorProperties()); - IntrospectionSupport.setProperties(result, properties); - if (properties.size() > 0) { - throw new IllegalArgumentException("There are " + properties.size() - + " parameters that couldn't be set on the SocketConnector." - + " Check the uri if the parameters are spelt correctly and that they are properties of the SelectChannelConnector." - + " Unknown parameters=[" + properties + "]"); - } - } else if (getSslSocketConnectorProperties() != null && "https".equals(endpoint.getProtocol())) { - // must copy the map otherwise it will be deleted - Map<String, Object> properties = new HashMap<String, Object>(getSslSocketConnectorProperties()); - IntrospectionSupport.setProperties(result, properties); - if (properties.size() > 0) { - throw new IllegalArgumentException("There are " + properties.size() - + " parameters that couldn't be set on the SocketConnector." - + " Check the uri if the parameters are spelt correctly and that they are properties of the SelectChannelConnector." - + " Unknown parameters=[" + properties + "]"); - } - } - - } catch (RuntimeException rex) { - throw rex; - } catch (Exception ex) { - throw new RuntimeException(ex); - } - return result; - } - - @Override - protected JettyHttpEndpoint createEndpoint(URI endpointUri, URI httpUri) throws URISyntaxException { - return new JettyHttpEndpoint8(this, endpointUri.toString(), httpUri); - } -} http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/main/jetty8/org/apache/camel/component/jetty8/JettyHttpEndpoint8.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/main/jetty8/org/apache/camel/component/jetty8/JettyHttpEndpoint8.java b/components/camel-jetty/src/main/jetty8/org/apache/camel/component/jetty8/JettyHttpEndpoint8.java deleted file mode 100644 index 9cbd353..0000000 --- a/components/camel-jetty/src/main/jetty8/org/apache/camel/component/jetty8/JettyHttpEndpoint8.java +++ /dev/null @@ -1,36 +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.component.jetty8; - -import java.net.URI; -import java.net.URISyntaxException; - -import org.apache.camel.component.jetty.JettyContentExchange; -import org.apache.camel.component.jetty.JettyHttpComponent; -import org.apache.camel.component.jetty.JettyHttpEndpoint; - -public class JettyHttpEndpoint8 extends JettyHttpEndpoint { - public JettyHttpEndpoint8(JettyHttpComponent component, String uri, URI httpURL) throws URISyntaxException { - super(component, uri, httpURL); - } - - @Override - public JettyContentExchange createContentExchange() { - return new JettyContentExchange8(); - } - -} http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/AttachmentHttpBinding.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/AttachmentHttpBinding.java b/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/AttachmentHttpBinding.java deleted file mode 100644 index 82ce70f..0000000 --- a/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/AttachmentHttpBinding.java +++ /dev/null @@ -1,75 +0,0 @@ -package org.apache.camel.component.jetty9; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Collection; - -import javax.activation.DataHandler; -import javax.activation.DataSource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.Part; - -import org.apache.camel.component.http.DefaultHttpBinding; -import org.apache.camel.component.http.HttpEndpoint; -import org.apache.camel.component.http.HttpMessage; -import org.eclipse.jetty.util.MultiPartInputStreamParser; - -final class AttachmentHttpBinding extends DefaultHttpBinding { - AttachmentHttpBinding(HttpEndpoint endpoint) { - super(endpoint); - } - - @Override - protected void populateAttachments(HttpServletRequest request, HttpMessage message) { - Object object = request.getAttribute("org.eclipse.jetty.servlet.MultiPartFile.multiPartInputStream"); - if (object instanceof MultiPartInputStreamParser) { - MultiPartInputStreamParser parser = (MultiPartInputStreamParser)object; - Collection<Part> parts; - try { - parts = parser.getParts(); - for (Part part : parts) { - String contentType = part.getContentType(); - if (!contentType.startsWith("application/octet-stream")) { - continue; - } - - DataSource ds = new PartDataSource(part); - message.addAttachment(part.getName(), new DataHandler(ds)); - } - } catch (Exception e) { - e.printStackTrace(); - } - - - } - } - - final class PartDataSource implements DataSource { - private final Part part; - - PartDataSource(Part part) { - this.part = part; - } - - @Override - public OutputStream getOutputStream() throws IOException { - return null; - } - - @Override - public String getName() { - return part.getName(); - } - - @Override - public InputStream getInputStream() throws IOException { - return part.getInputStream(); - } - - @Override - public String getContentType() { - return part.getContentType(); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/CamelHttpClient9.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/CamelHttpClient9.java b/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/CamelHttpClient9.java deleted file mode 100644 index 001662f..0000000 --- a/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/CamelHttpClient9.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.component.jetty9; - -import java.util.concurrent.Executor; - -import org.apache.camel.component.jetty.CamelHttpClient; -import org.eclipse.jetty.util.ssl.SslContextFactory; - -public class CamelHttpClient9 extends CamelHttpClient { - - public CamelHttpClient9(SslContextFactory sslContextFactory) { - super(sslContextFactory); - } - - protected boolean hasThreadPool() { - return getExecutor() != null; - } - - protected void setThreadPoolOrExecutor(Executor pool) { - setExecutor(pool); - } - - public void setProxy(String host, int port) { - getProxyConfiguration().getProxies().add(new org.eclipse.jetty.client.HttpProxy(host, port)); - } - - @Override - public String getProxyHost() { - return getProxyConfiguration().getProxies().get(0).getAddress().getHost(); - } - - @Override - public int getProxyPort() { - return getProxyConfiguration().getProxies().get(0).getAddress().getPort(); - } - -} http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/JettyContentExchange9.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/JettyContentExchange9.java b/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/JettyContentExchange9.java deleted file mode 100644 index 3ee2072..0000000 --- a/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/JettyContentExchange9.java +++ /dev/null @@ -1,295 +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.component.jetty9; - -import java.io.Closeable; -import java.io.IOException; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.util.Collection; -import java.util.Map; -import java.util.TreeMap; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -import org.apache.camel.AsyncCallback; -import org.apache.camel.CamelExchangeException; -import org.apache.camel.Exchange; -import org.apache.camel.ExchangeTimedOutException; -import org.apache.camel.component.jetty.JettyContentExchange; -import org.apache.camel.component.jetty.JettyHttpBinding; -import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.api.Request; -import org.eclipse.jetty.client.api.Response; -import org.eclipse.jetty.client.api.Result; -import org.eclipse.jetty.client.util.BufferingResponseListener; -import org.eclipse.jetty.client.util.BytesContentProvider; -import org.eclipse.jetty.client.util.InputStreamContentProvider; -import org.eclipse.jetty.client.util.StringContentProvider; -import org.eclipse.jetty.http.HttpFields; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Jetty specific exchange which keeps track of the the request and response. - * - * @version - */ -public class JettyContentExchange9 implements JettyContentExchange { - - private static final Logger LOG = LoggerFactory.getLogger(JettyContentExchange9.class); - - private volatile Exchange exchange; - private volatile AsyncCallback callback; - private volatile JettyHttpBinding jettyBinding; - private volatile HttpClient client; - private final CountDownLatch done = new CountDownLatch(1); - private Request request; - private Response response; - private byte[] responseContent; - - private String requestContentType; - - private boolean supportRedirect; - - public void init(Exchange exchange, JettyHttpBinding jettyBinding, - final HttpClient client, AsyncCallback callback) { - this.exchange = exchange; - this.jettyBinding = jettyBinding; - this.client = client; - this.callback = callback; - } - - protected void onRequestComplete() { - LOG.trace("onRequestComplete"); - closeRequestContentSource(); - } - - protected void onResponseComplete(Result result, byte[] content, String contentType) { - LOG.trace("onResponseComplete"); - done.countDown(); - this.response = result.getResponse(); - this.responseContent = content; - if (callback == null) { - // this is only for the async callback - return; - } - try { - jettyBinding.populateResponse(exchange, this); - } catch (Exception e) { - exchange.setException(e); - } finally { - callback.done(false); - } - } - - protected void onExpire() { - LOG.trace("onExpire"); - - // need to close the request input stream - closeRequestContentSource(); - doTaskCompleted(new ExchangeTimedOutException(exchange, client.getConnectTimeout())); - } - - protected void onException(Throwable ex) { - LOG.trace("onException {}", ex); - - // need to close the request input stream - closeRequestContentSource(); - doTaskCompleted(ex); - } - - protected void onConnectionFailed(Throwable ex) { - LOG.trace("onConnectionFailed {}", ex); - - // need to close the request input stream - closeRequestContentSource(); - doTaskCompleted(ex); - } - - /* (non-Javadoc) - * @see org.apache.camel.component.jetty.JettyContentExchangeI#getBody() - */ - public byte[] getBody() { - // must return the content as raw bytes - return getResponseContentBytes(); - } - - /* (non-Javadoc) - * @see org.apache.camel.component.jetty.JettyContentExchangeI#getUrl() - */ - public String getUrl() { - try { - return this.request.getURI().toURL().toExternalForm(); - } catch (MalformedURLException e) { - throw new IllegalStateException(e.getMessage(), e); - } - } - - protected void closeRequestContentSource() { - tryClose(this.request.getContent()); - } - - private void tryClose(Object obj) { - if (obj instanceof Closeable) { - try { - ((Closeable)obj).close(); - } catch (IOException e) { - // Ignore - } - } - } - - protected void doTaskCompleted(Throwable ex) { - if (ex instanceof TimeoutException) { - exchange.setException(new ExchangeTimedOutException(exchange, request.getTimeout())); - } else { - exchange.setException(new CamelExchangeException("JettyClient failed cause by: " + ex.getMessage(), exchange, ex)); - } - done.countDown(); - - if (callback != null) { - // now invoke callback to indicate we are done async - callback.done(false); - } - } - - /* (non-Javadoc) - * @see org.apache.camel.component.jetty.JettyContentExchangeI#setRequestContentType(java.lang.String) - */ - public void setRequestContentType(String contentType) { - this.requestContentType = contentType; - } - - /* (non-Javadoc) - * @see org.apache.camel.component.jetty.JettyContentExchangeI#getResponseStatus() - */ - public int getResponseStatus() { - return this.response.getStatus(); - } - - /* (non-Javadoc) - * @see org.apache.camel.component.jetty.JettyContentExchangeI#setMethod(java.lang.String) - */ - public void setMethod(String method) { - this.request.method(method); - } - - /* (non-Javadoc) - * @see org.apache.camel.component.jetty.JettyContentExchangeI#setTimeout(long) - */ - public void setTimeout(long timeout) { - this.request.timeout(timeout, TimeUnit.MILLISECONDS); - } - - /* (non-Javadoc) - * @see org.apache.camel.component.jetty.JettyContentExchangeI#setURL(java.lang.String) - */ - public void setURL(String url) { - this.request = client.newRequest(url); - } - - /* (non-Javadoc) - * @see org.apache.camel.component.jetty.JettyContentExchangeI#setRequestContent(byte[]) - */ - public void setRequestContent(byte[] byteArray) { - this.request.content(new BytesContentProvider(byteArray), this.requestContentType); - } - - /* (non-Javadoc) - * @see org.apache.camel.component.jetty.JettyContentExchangeI#setRequestContent(java.lang.String, java.lang.String) - */ - public void setRequestContent(String data, String charset) throws UnsupportedEncodingException { - StringContentProvider cp = charset != null ? new StringContentProvider(data, charset) : new StringContentProvider(data); - this.request.content(cp, this.requestContentType); - } - /* (non-Javadoc) - * @see org.apache.camel.component.jetty.JettyContentExchangeI#setRequestContent(java.io.InputStream) - */ - public void setRequestContent(InputStream ins) { - this.request.content(new InputStreamContentProvider(ins), this.requestContentType); - } - - /* (non-Javadoc) - * @see org.apache.camel.component.jetty.JettyContentExchangeI#addRequestHeader(java.lang.String, java.lang.String) - */ - public void addRequestHeader(String key, String s) { - this.request.header(key, s); - } - - /* (non-Javadoc) - * @see org.apache.camel.component.jetty.JettyContentExchangeI#send(org.eclipse.jetty.client.HttpClient) - */ - public void send(HttpClient client) throws IOException { - org.eclipse.jetty.client.api.Request.Listener listener = new Request.Listener.Adapter() { - - @Override - public void onSuccess(Request request) { - onRequestComplete(); - } - - @Override - public void onFailure(Request request, Throwable failure) { - onConnectionFailed(failure); - } - - }; - BufferingResponseListener responseListener = new BufferingResponseListener() { - - @Override - public void onComplete(Result result) { - if (result.isFailed()) { - doTaskCompleted(result.getFailure()); - } else { - onResponseComplete(result, getContent(), getMediaType()); - } - } - }; - request.followRedirects(supportRedirect).listener(listener).send(responseListener); - } - - protected void setResponse(Response response) { - this.response = response; - } - - /* (non-Javadoc) - * @see org.apache.camel.component.jetty.JettyContentExchangeI#getResponseContentBytes() - */ - public byte[] getResponseContentBytes() { - return responseContent; - } - - /* (non-Javadoc) - * @see org.apache.camel.component.jetty.JettyContentExchangeI#getResponseHeaders() - */ - public Map<String, Collection<String>> getResponseHeaders() { - final HttpFields f = response.getHeaders(); - Map<String, Collection<String>> ret = new TreeMap<String, Collection<String>>(String.CASE_INSENSITIVE_ORDER); - for (String n : f.getFieldNamesCollection()) { - ret.put(n, f.getValuesList(n)); - } - return ret; - } - - @Override - public void setSupportRedirect(boolean supportRedirect) { - this.supportRedirect = supportRedirect; - } - -} http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/JettyHttpComponent9.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/JettyHttpComponent9.java b/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/JettyHttpComponent9.java deleted file mode 100644 index ec53cdc..0000000 --- a/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/JettyHttpComponent9.java +++ /dev/null @@ -1,140 +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.component.jetty9; - -import java.net.URI; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; - -import org.apache.camel.component.jetty.CamelHttpClient; -import org.apache.camel.component.jetty.JettyHttpComponent; -import org.apache.camel.component.jetty.JettyHttpEndpoint; -import org.apache.camel.util.IntrospectionSupport; -import org.eclipse.jetty.server.AbstractConnector; -import org.eclipse.jetty.server.ConnectionFactory; -import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.HttpConnectionFactory; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.SslConnectionFactory; -import org.eclipse.jetty.util.ssl.SslContextFactory; - -public class JettyHttpComponent9 extends JettyHttpComponent { - - protected CamelHttpClient createCamelHttpClient(SslContextFactory sslContextFactory) { - return new CamelHttpClient9(sslContextFactory); - } - - protected JettyHttpEndpoint createEndpoint(URI endpointUri, URI httpUri) throws URISyntaxException { - return new JettyHttpEndpoint9(this, endpointUri.toString(), httpUri); - } - - protected Connector getSslSocketConnector(Server server, JettyHttpEndpoint endpoint) { - Connector answer = null; - /* - if (sslSocketConnectors != null) { - SslContextFactory con = sslSocketConnectors.get(endpoint.getPort()); - if (con != null) { - SslConnectionFactory sslConnectionFactory = new SslConnectionFactory(con, null); - @SuppressWarnings("resource") - ServerConnector sc = new ServerConnector(server, sslConnectionFactory); - sc.setPort(endpoint.getPort()); - sc.setHost(endpoint.getHttpUri().getHost()); - answer = sc; - } - } - */ - if (answer == null) { - answer = createConnector(server, endpoint); - } - return answer; - } - - protected AbstractConnector createConnectorJettyInternal(Server server, - JettyHttpEndpoint endpoint, - SslContextFactory sslcf) { - try { - String hosto = endpoint.getHttpUri().getHost(); - int porto = endpoint.getPort(); - org.eclipse.jetty.server.HttpConfiguration httpConfig = new org.eclipse.jetty.server.HttpConfiguration(); - httpConfig.setSendServerVersion(endpoint.isSendServerVersion()); - httpConfig.setSendDateHeader(endpoint.isSendDateHeader()); - httpConfig.setSendDateHeader(endpoint.isSendDateHeader()); - - if (requestBufferSize != null) { - // Does not work - //httpConfig.setRequestBufferSize(requestBufferSize); - } - if (requestHeaderSize != null) { - httpConfig.setRequestHeaderSize(requestHeaderSize); - } - if (responseBufferSize != null) { - httpConfig.setOutputBufferSize(responseBufferSize); - } - if (responseHeaderSize != null) { - httpConfig.setResponseHeaderSize(responseHeaderSize); - } - - HttpConnectionFactory httpFactory = new org.eclipse.jetty.server.HttpConnectionFactory(httpConfig); - - ArrayList<ConnectionFactory> connectionFactories = new ArrayList<ConnectionFactory>(); - ServerConnector result = new org.eclipse.jetty.server.ServerConnector(server); - if (sslcf != null) { - httpConfig.addCustomizer(new org.eclipse.jetty.server.SecureRequestCustomizer()); - SslConnectionFactory scf = new org.eclipse.jetty.server.SslConnectionFactory(sslcf, "HTTP/1.1"); - connectionFactories.add(scf); - result.setDefaultProtocol("SSL-HTTP/1.1"); - } - connectionFactories.add(httpFactory); - result.setConnectionFactories(connectionFactories); - result.setPort(porto); - if (hosto != null) { - result.setHost(hosto); - } - /* - if (getSocketConnectorProperties() != null && !"https".equals(endpoint.getProtocol())) { - // must copy the map otherwise it will be deleted - Map<String, Object> properties = new HashMap<String, Object>(getSocketConnectorProperties()); - IntrospectionSupport.setProperties(httpConfig, properties); - if (properties.size() > 0) { - throw new IllegalArgumentException("There are " + properties.size() - + " parameters that couldn't be set on the SocketConnector." - + " Check the uri if the parameters are spelt correctly and that they are properties of the SelectChannelConnector." - + " Unknown parameters=[" + properties + "]"); - } - } else*/ - if (getSslSocketConnectorProperties() != null && "https".equals(endpoint.getProtocol())) { - // must copy the map otherwise it will be deleted - Map<String, Object> properties = new HashMap<String, Object>(getSslSocketConnectorProperties()); - IntrospectionSupport.setProperties(sslcf, properties); - if (properties.size() > 0) { - throw new IllegalArgumentException("There are " + properties.size() - + " parameters that couldn't be set on the SocketConnector." - + " Check the uri if the parameters are spelt correctly and that they are properties of the SelectChannelConnector." - + " Unknown parameters=[" + properties + "]"); - } - } - return result; - } catch (RuntimeException rex) { - throw rex; - } catch (Exception ex) { - throw new RuntimeException(ex); - } - } -} http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/JettyHttpEndpoint9.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/JettyHttpEndpoint9.java b/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/JettyHttpEndpoint9.java deleted file mode 100644 index 9c5ac6a..0000000 --- a/components/camel-jetty/src/main/jetty9/org/apache/camel/component/jetty9/JettyHttpEndpoint9.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.apache.camel.component.jetty9; - -import java.net.URI; -import java.net.URISyntaxException; - -import org.apache.camel.component.http.HttpBinding; -import org.apache.camel.component.jetty.JettyContentExchange; -import org.apache.camel.component.jetty.JettyHttpComponent; -import org.apache.camel.component.jetty.JettyHttpEndpoint; - -public class JettyHttpEndpoint9 extends JettyHttpEndpoint { - private HttpBinding binding; - - public JettyHttpEndpoint9(JettyHttpComponent component, String uri, URI httpURL) throws URISyntaxException { - super(component, uri, httpURL); - } - - @Override - public HttpBinding getBinding() { - if (this.binding == null) { - this.binding = new AttachmentHttpBinding(this); - } - return this.binding; - } - - @Override - public void setBinding(HttpBinding binding) { - super.setBinding(binding); - this.binding = binding; - } - - @Override - public JettyContentExchange createContentExchange() { - return new JettyContentExchange9(); - } -} http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/main/resources/META-INF/LICENSE.txt ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/main/resources/META-INF/LICENSE.txt b/components/camel-jetty/src/main/resources/META-INF/LICENSE.txt deleted file mode 100755 index 6b0b127..0000000 --- a/components/camel-jetty/src/main/resources/META-INF/LICENSE.txt +++ /dev/null @@ -1,203 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed 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. - http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/main/resources/META-INF/NOTICE.txt ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/main/resources/META-INF/NOTICE.txt b/components/camel-jetty/src/main/resources/META-INF/NOTICE.txt deleted file mode 100644 index 2e215bf..0000000 --- a/components/camel-jetty/src/main/resources/META-INF/NOTICE.txt +++ /dev/null @@ -1,11 +0,0 @@ - ========================================================================= - == NOTICE file corresponding to the section 4 d of == - == the Apache License, Version 2.0, == - == in this case for the Apache Camel distribution. == - ========================================================================= - - This product includes software developed by - The Apache Software Foundation (http://www.apache.org/). - - Please read the different LICENSE files present in the licenses directory of - this distribution. http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/main/resources/META-INF/services/org/apache/camel/TypeConverter ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/main/resources/META-INF/services/org/apache/camel/TypeConverter b/components/camel-jetty/src/main/resources/META-INF/services/org/apache/camel/TypeConverter deleted file mode 100644 index aa69a0f..0000000 --- a/components/camel-jetty/src/main/resources/META-INF/services/org/apache/camel/TypeConverter +++ /dev/null @@ -1,18 +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. -# - -org.apache.camel.component.jetty.JettyConverter http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/main/resources/META-INF/services/org/apache/camel/component/jetty ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/main/resources/META-INF/services/org/apache/camel/component/jetty b/components/camel-jetty/src/main/resources/META-INF/services/org/apache/camel/component/jetty deleted file mode 100644 index 13116dc..0000000 --- a/components/camel-jetty/src/main/resources/META-INF/services/org/apache/camel/component/jetty +++ /dev/null @@ -1,17 +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. -# -class=org.apache.camel.component.jetty8.JettyHttpComponent8 http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/test/data/logo.jpeg ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/test/data/logo.jpeg b/components/camel-jetty/src/test/data/logo.jpeg deleted file mode 100644 index b635017..0000000 Binary files a/components/camel-jetty/src/test/data/logo.jpeg and /dev/null differ http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/test/data/plain.txt ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/test/data/plain.txt b/components/camel-jetty/src/test/data/plain.txt deleted file mode 100644 index 3ef60fd..0000000 --- a/components/camel-jetty/src/test/data/plain.txt +++ /dev/null @@ -1,18 +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. -## ------------------------------------------------------------------------ -Hello World -This is the second line \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/BaseJettyTest.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/BaseJettyTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/BaseJettyTest.java deleted file mode 100644 index aeb196f..0000000 --- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/BaseJettyTest.java +++ /dev/null @@ -1,119 +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.component.jetty; - -import java.util.Properties; -import java.util.concurrent.atomic.AtomicInteger; - -import org.apache.camel.CamelContext; -import org.apache.camel.component.http.DefaultHttpBinding; -import org.apache.camel.component.http.HttpHeaderFilterStrategy; -import org.apache.camel.component.properties.PropertiesComponent; -import org.apache.camel.impl.JndiRegistry; -import org.apache.camel.test.AvailablePortFinder; -import org.apache.camel.test.junit4.CamelTestSupport; -import org.eclipse.jetty.server.Server; -import org.junit.BeforeClass; - -public abstract class BaseJettyTest extends CamelTestSupport { - - private static volatile int port; - - private static volatile int port2; - - private final AtomicInteger counter = new AtomicInteger(1); - - @BeforeClass - public static void initPort() throws Exception { - // start from somewhere in the 23xxx range - port = AvailablePortFinder.getNextAvailable(23000); - // find another ports for proxy route test - port2 = AvailablePortFinder.getNextAvailable(24000); - } - - @Override - protected CamelContext createCamelContext() throws Exception { - CamelContext context = super.createCamelContext(); - context.addComponent("properties", new PropertiesComponent("ref:prop")); - return context; - } - - @Override - protected JndiRegistry createRegistry() throws Exception { - JndiRegistry jndi = super.createRegistry(); - - Properties prop = new Properties(); - prop.setProperty("port", "" + getPort()); - prop.setProperty("port2", "" + getPort2()); - jndi.bind("prop", prop); - return jndi; - } - - protected int getNextPort() { - return AvailablePortFinder.getNextAvailable(port + counter.getAndIncrement()); - } - - protected int getNextPort(int startWithPort) { - return AvailablePortFinder.getNextAvailable(startWithPort); - } - - public void setSSLProps(JettyHttpComponent jetty, String path, String keyStorePasswd, String keyPasswd) { - if (jettyVersion() == 9) { - jetty.addSslSocketConnectorProperty("keyStorePassword", keyStorePasswd); - jetty.addSslSocketConnectorProperty("keyManagerPassword", keyPasswd); - jetty.addSslSocketConnectorProperty("keyStorePath", path); - jetty.addSslSocketConnectorProperty("trustStoreType", "JKS"); - } else { - jetty.addSslSocketConnectorProperty("password", keyStorePasswd); - jetty.addSslSocketConnectorProperty("keyPassword", keyPasswd); - jetty.addSslSocketConnectorProperty("keystore", path); - jetty.addSslSocketConnectorProperty("truststoreType", "JKS"); - } - } - - protected static int getPort() { - return port; - } - - protected static int getPort2() { - return port2; - } - - public int jettyVersion() { - try { - this.getClass().getClassLoader().loadClass("org.eclipse.jetty.server.ssl.SslSelectChannelConnector"); - return 8; - } catch (ClassNotFoundException e) { - return 9; - } - } - - protected void allowNullHeaders() { - JettyHttpComponent jetty = (JettyHttpComponent)context.getComponent("jetty"); - HttpHeaderFilterStrategy filterStrat = new HttpHeaderFilterStrategy(); - filterStrat.setAllowNullValues(true); - @SuppressWarnings("deprecation") - DefaultHttpBinding httpBinding = new DefaultHttpBinding(filterStrat); - jetty.setHttpBinding(httpBinding); - } - - protected boolean isJetty8() { - String majorVersion = Server.getVersion().split("\\.")[0]; - return "8".equals(majorVersion); - } - -} http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/ConvertPayloadToInputStreamTest.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/ConvertPayloadToInputStreamTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/ConvertPayloadToInputStreamTest.java deleted file mode 100644 index c1d8f1f..0000000 --- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/ConvertPayloadToInputStreamTest.java +++ /dev/null @@ -1,64 +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.component.jetty; - -import java.io.InputStream; -import java.util.List; - -import org.apache.camel.Exchange; -import org.apache.camel.Message; -import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.mock.MockEndpoint; -import org.junit.Test; - -/** - * @version - */ -public class ConvertPayloadToInputStreamTest extends BaseJettyTest { - protected String expectedBody = "<hello>world!</hello>"; - - @Test - public void testConvertPayloadToInputStream() throws Exception { - MockEndpoint mockEndpoint = getMockEndpoint("mock:result"); - mockEndpoint.expectedMessageCount(1); - - template.requestBodyAndHeader("http://localhost:{{port}}/test", expectedBody, "Content-Type", "application/xml"); - - mockEndpoint.assertIsSatisfied(); - List<Exchange> list = mockEndpoint.getReceivedExchanges(); - Exchange exchange = list.get(0); - assertNotNull("exchange", exchange); - - Message in = exchange.getIn(); - assertNotNull("in", in); - - Object actual = in.getBody(); - InputStream value = assertIsInstanceOf(InputStream.class, actual); - assertNotNull("InputStream", value); - } - - @Override - protected RouteBuilder createRouteBuilder() throws Exception { - return new RouteBuilder() { - public void configure() { - from("jetty:http://localhost:{{port}}/test"). - convertBodyTo(InputStream.class). - to("mock:result"); - } - }; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/CustomFiltersTest.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/CustomFiltersTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/CustomFiltersTest.java deleted file mode 100644 index 463151b..0000000 --- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/CustomFiltersTest.java +++ /dev/null @@ -1,109 +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.component.jetty; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletResponse; - -import org.apache.camel.Exchange; -import org.apache.camel.Message; -import org.apache.camel.Processor; -import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.impl.JndiRegistry; -import org.apache.commons.httpclient.HttpClient; -import org.apache.commons.httpclient.methods.PostMethod; -import org.apache.commons.httpclient.methods.StringRequestEntity; -import org.junit.Test; - -public class CustomFiltersTest extends BaseJettyTest { - - private static class MyTestFilter implements Filter { - @Override - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { - // set a marker attribute to show that this filter class was used - ((HttpServletResponse)response).addHeader("MyTestFilter", "true"); - chain.doFilter(request , response); - } - - @Override - public void init(FilterConfig filterConfig) throws ServletException { - // do nothing here - } - - @Override - public void destroy() { - // do nothing here - } - } - - private void sendRequestAndVerify(String url) throws Exception { - HttpClient httpclient = new HttpClient(); - - PostMethod httppost = new PostMethod(url); - - StringRequestEntity reqEntity = new StringRequestEntity("This is a test", null, null); - httppost.setRequestEntity(reqEntity); - - int status = httpclient.executeMethod(httppost); - - assertEquals("Get a wrong response status", 200, status); - - String result = httppost.getResponseBodyAsString(); - assertEquals("Get a wrong result", "This is a test response", result); - assertNotNull("Did not use custom multipart filter", httppost.getResponseHeader("MyTestFilter")); - } - - @Test - public void testFilters() throws Exception { - sendRequestAndVerify("http://localhost:" + getPort() + "/testFilters"); - } - - @Override - protected JndiRegistry createRegistry() throws Exception { - JndiRegistry jndi = super.createRegistry(); - List<Filter> filters = new ArrayList<Filter>(); - filters.add(new MyTestFilter()); - jndi.bind("myFilters", filters); - return jndi; - } - - protected RouteBuilder createRouteBuilder() throws Exception { - return new RouteBuilder() { - public void configure() throws Exception { - - // Test the filter list options - from("jetty://http://localhost:{{port}}/testFilters?filtersRef=myFilters").process(new Processor() { - public void process(Exchange exchange) throws Exception { - Message in = exchange.getIn(); - String request = in.getBody(String.class); - // The other form date can be get from the message header - exchange.getOut().setBody(request + " response"); - } - }); - } - }; - } -} http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/EnableCORSTest.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/EnableCORSTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/EnableCORSTest.java deleted file mode 100644 index e893775..0000000 --- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/EnableCORSTest.java +++ /dev/null @@ -1,71 +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.component.jetty; - -import org.apache.camel.builder.RouteBuilder; -import org.apache.commons.httpclient.Header; -import org.apache.commons.httpclient.HttpClient; -import org.apache.commons.httpclient.HttpMethod; -import org.apache.commons.httpclient.methods.GetMethod; -import org.junit.Test; - -public class EnableCORSTest extends BaseJettyTest { - - @Test - public void testCORSdisabled() throws Exception { - HttpClient httpclient = new HttpClient(); - HttpMethod httpMethod = new GetMethod("http://localhost:" + getPort() + "/test1"); - httpMethod.addRequestHeader("Origin", "http://localhost:9000"); - httpMethod.addRequestHeader("Referer", "http://localhost:9000"); - - int status = httpclient.executeMethod(httpMethod); - - assertEquals("Get a wrong response status", 200, status); - - Header responseHeader = httpMethod.getResponseHeader("Access-Control-Allow-Credentials"); - assertNull("Access-Control-Allow-Credentials HEADER should not be set", responseHeader); - } - - - @Test - public void testCORSenabled() throws Exception { - HttpClient httpclient = new HttpClient(); - HttpMethod httpMethod = new GetMethod("http://localhost:" + getPort2() + "/test2"); - httpMethod.addRequestHeader("Origin", "http://localhost:9000"); - httpMethod.addRequestHeader("Referer", "http://localhost:9000"); - - - int status = httpclient.executeMethod(httpMethod); - - assertEquals("Get a wrong response status", 200, status); - - Header responseHeader = httpMethod.getResponseHeader("Access-Control-Allow-Credentials"); - assertTrue("CORS not enabled", Boolean.valueOf(responseHeader.getValue())); - - - } - - - protected RouteBuilder createRouteBuilder() throws Exception { - return new RouteBuilder() { - public void configure() throws Exception { - from("jetty://http://localhost:{{port}}/test1?enableCORS=false").transform(simple("OK")); - from("jetty://http://localhost:{{port2}}/test2?enableCORS=true").transform(simple("OK")); - } - }; - } -} http://git-wip-us.apache.org/repos/asf/camel/blob/8b2a8877/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/ExplicitHttpsRouteTest.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/ExplicitHttpsRouteTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/ExplicitHttpsRouteTest.java deleted file mode 100644 index 6a4b635..0000000 --- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/ExplicitHttpsRouteTest.java +++ /dev/null @@ -1,69 +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.component.jetty; - -import java.net.URISyntaxException; -import java.util.HashMap; -import java.util.Map; - -import org.apache.camel.Exchange; -import org.apache.camel.Processor; -import org.apache.camel.builder.RouteBuilder; -import org.eclipse.jetty.server.Connector; -import org.junit.Ignore; - -@Ignore -public class ExplicitHttpsRouteTest extends HttpsRouteTest { - - private Connector createSslSocketConnector(int port) throws URISyntaxException { - /* - SslSelectChannelConnector sslSocketConnector = new SslSelectChannelConnector(); - configureSslContextFactory(sslSocketConnector.getSslContextFactory()); - sslSocketConnector.setPort(port); - return sslSocketConnector; - */ - return null; - } - - @Override - protected RouteBuilder createRouteBuilder() throws Exception { - return new RouteBuilder() { - public void configure() throws URISyntaxException { - // START SNIPPET: e1 - // create SSL select channel connectors for port 9080 and 9090 - Map<Integer, Connector> connectors = new HashMap<Integer, Connector>(); - connectors.put(port1, createSslSocketConnector(port1)); - connectors.put(port2, createSslSocketConnector(port2)); - - JettyHttpComponent jetty = getContext().getComponent("jetty", JettyHttpComponent.class); - jetty.setSslSocketConnectors(connectors); - // END SNIPPET: e1 - - from("jetty:https://localhost:" + port1 + "/test").to("mock:a"); - - Processor proc = new Processor() { - public void process(Exchange exchange) throws Exception { - exchange.getOut().setBody("<b>Hello World</b>"); - } - }; - from("jetty:https://localhost:" + port1 + "/hello").process(proc); - - from("jetty:https://localhost:" + port2 + "/test").to("mock:b"); - } - }; - } -} \ No newline at end of file