/** * 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.http.common; import java.util.Map; import org.apache.camel.impl.HeaderFilterStrategyComponent; import org.apache.camel.spi.Metadata; import org.apache.camel.util.CamelContextHelper; public abstract class HttpCommonComponent extends HeaderFilterStrategyComponent { @Metadata(label = "advanced", description = "To use a custom HttpBinding to control the mapping between Camel message and HttpClient.") protected HttpBinding httpBinding; @Metadata(label = "advanced", description = "To use the shared HttpConfiguration as base configuration.") protected HttpConfiguration httpConfiguration; @Metadata(label = "advanced", description = "Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object." + " This is by default turned off. " + " If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk.") protected boolean allowJavaSerializedObject; public HttpCommonComponent(Class<? extends HttpCommonEndpoint> endpointClass) { super(endpointClass); } /** * Gets the parameter. This method doesn't resolve reference parameters in the registry. * * @param parameters the parameters * @param key the key * @param type the requested type to convert the value from the parameter * @return the converted value parameter */ public <T> T getParameter(Map<String, Object> parameters, String key, Class<T> type) { return getParameter(parameters, key, type, null); } /** * Gets the parameter. This method doesn't resolve reference parameters in the registry. * * @param parameters the parameters * @param key the key * @param type the requested type to convert the value from the parameter * @param defaultValue use this default value if the parameter does not contain the key * @return the converted value parameter */ public <T> T getParameter(Map<String, Object> parameters, String key, Class<T> type, T defaultValue) { Object value = parameters.get(key); if (value == null) { value = defaultValue; } if (value == null) { return null; } return CamelContextHelper.convertTo(getCamelContext(), type, value); } /** * Connects the URL specified on the endpoint to the specified processor. * * @param consumer the consumer * @throws Exception can be thrown */ public void connect(HttpConsumer consumer) throws Exception { } /** * Disconnects the URL specified on the endpoint from the specified processor. * * @param consumer the consumer * @throws Exception can be thrown */ public void disconnect(HttpConsumer consumer) throws Exception { } @Override protected boolean useIntrospectionOnEndpoint() { return false; } public HttpBinding getHttpBinding() { return httpBinding; } /** * To use a custom HttpBinding to control the mapping between Camel message and HttpClient. */ public void setHttpBinding(HttpBinding httpBinding) { this.httpBinding = httpBinding; } public HttpConfiguration getHttpConfiguration() { return httpConfiguration; } /** * To use the shared HttpConfiguration as base configuration. */ public void setHttpConfiguration(HttpConfiguration httpConfiguration) { this.httpConfiguration = httpConfiguration; } public boolean isAllowJavaSerializedObject() { return allowJavaSerializedObject; } /** * Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object * <p/> * This is by default turned off. If you enable this then be aware that Java will deserialize the incoming * data from the request to Java and that can be a potential security risk. */ public void setAllowJavaSerializedObject(boolean allowJavaSerializedObject) { this.allowJavaSerializedObject = allowJavaSerializedObject; } }