blob: 295fce5d8aa926cb612f80b3489a16c26004a1a2 [file] [log] [blame]
/**
* 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.URI;
import java.net.URISyntaxException;
import java.util.List;
import javax.servlet.Filter;
import org.apache.camel.Consumer;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
import org.apache.camel.component.http.HttpConsumer;
import org.apache.camel.component.http.HttpEndpoint;
import org.apache.camel.impl.SynchronousDelegateProducer;
import org.apache.camel.util.jsse.SSLContextParameters;
import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.server.Handler;
/**
* @version
*/
public class JettyHttpEndpoint extends HttpEndpoint {
private boolean sessionSupport;
private List<Handler> handlers;
private HttpClient client;
private JettyHttpBinding jettyBinding;
private boolean enableJmx;
private boolean enableMultipartFilter;
private Filter multipartFilter;
private List<Filter> filters;
private Long continuationTimeout;
private Boolean useContinuation;
private SSLContextParameters sslContextParameters;
public JettyHttpEndpoint(JettyHttpComponent component, String uri, URI httpURL) throws URISyntaxException {
super(uri, component, httpURL);
}
@Override
public JettyHttpComponent getComponent() {
return (JettyHttpComponent) super.getComponent();
}
@Override
public Producer createProducer() throws Exception {
JettyHttpProducer answer = new JettyHttpProducer(this, getClient());
answer.setBinding(getJettyBinding());
if (isSynchronous()) {
return new SynchronousDelegateProducer(answer);
} else {
return answer;
}
}
@Override
public Consumer createConsumer(Processor processor) throws Exception {
return new HttpConsumer(this, processor);
}
public void setSessionSupport(boolean support) {
sessionSupport = support;
}
public boolean isSessionSupport() {
return sessionSupport;
}
public List<Handler> getHandlers() {
return handlers;
}
public void setHandlers(List<Handler> handlers) {
this.handlers = handlers;
}
public HttpClient getClient() throws Exception {
if (client == null) {
return getComponent().getHttpClient();
}
return client;
}
public void setClient(HttpClient client) {
this.client = client;
}
public synchronized JettyHttpBinding getJettyBinding() {
if (jettyBinding == null) {
jettyBinding = new DefaultJettyHttpBinding();
jettyBinding.setHeaderFilterStrategy(getHeaderFilterStrategy());
jettyBinding.setThrowExceptionOnFailure(isThrowExceptionOnFailure());
jettyBinding.setTransferException(isTransferException());
}
return jettyBinding;
}
public void setJettyBinding(JettyHttpBinding jettyBinding) {
this.jettyBinding = jettyBinding;
}
public boolean isEnableJmx() {
return this.enableJmx;
}
public void setEnableJmx(boolean enableJmx) {
this.enableJmx = enableJmx;
}
public boolean isEnableMultipartFilter() {
return enableMultipartFilter;
}
public void setEnableMultipartFilter(boolean enableMultipartFilter) {
this.enableMultipartFilter = enableMultipartFilter;
}
public void setMultipartFilter(Filter filter) {
this.multipartFilter = filter;
}
public Filter getMultipartFilter() {
return multipartFilter;
}
public void setFilters(List<Filter> filterList) {
this.filters = filterList;
}
public List<Filter> getFilters() {
return filters;
}
public Long getContinuationTimeout() {
return continuationTimeout;
}
public void setContinuationTimeout(Long continuationTimeout) {
this.continuationTimeout = continuationTimeout;
}
public Boolean getUseContinuation() {
return useContinuation;
}
public void setUseContinuation(Boolean useContinuation) {
this.useContinuation = useContinuation;
}
public SSLContextParameters getSslContextParameters() {
return sslContextParameters;
}
public void setSslContextParameters(SSLContextParameters sslContextParameters) {
this.sslContextParameters = sslContextParameters;
}
}