Author: davsclaus
Date: Mon Aug 11 01:32:12 2008
New Revision: 684667
URL: http://svn.apache.org/viewvc?rev=684667&view=rev
Log:
CAMEL-806: Introduced isLenientProperties() on Endpoint to allow http based
components to run in non strict URI parameter mode, so you are able to add
dynamic URI reguest parameters on the URI configured endpoint. This of course
also applies for other types of components that needs this kind of behavior.
Thanks to Stephan for the unit test to verify the bug.
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Endpoint.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSoapEndpoint.java
activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
activemq/camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpGetWithHeadersTest.java
activemq/camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpGetWithQueryParamsTest.java
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Endpoint.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Endpoint.java?rev=684667&r1=684666&r2=684667&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Endpoint.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Endpoint.java
Mon Aug 11 01:32:12 2008
@@ -113,4 +113,21 @@
@Deprecated
void setContext(CamelContext context);
+
+ /**
+ * Should all properties be known or does the endpoint allow unknown
options?
+ * <p/>
+ * <tt>Lenient = false</tt> means that the endpoint should validate that
all
+ * given options is known and configured properly
+ * <tt>lenient = true</tt> means that the endpoint allows additional
unknown options to
+ * be passed to it but does not throw a ResolveEndpointFailedException
when creating
+ * the endpoint.
+ * <p/>
+ * This options is used by a few components for instance the HTTP based
that can have
+ * dynamic URI options appended that is targeted for an external system.
+ * <p/>
+ * Most endpoints is configued to be <b>not</b> lenient.
+ */
+ boolean isLenientProperties();
+
}
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java?rev=684667&r1=684666&r2=684667&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
Mon Aug 11 01:32:12 2008
@@ -87,8 +87,9 @@
setProperties(endpoint, parameters);
}
+ // if endpoint is strict (not lenient) and we have unknown
parameters configured then
// fail if there are parameters that could not be set, then they
are probably miss spelt or not supported at all
- if (parameters.size() > 0) {
+ if (!endpoint.isLenientProperties() && parameters.size() > 0) {
throw new ResolveEndpointFailedException(uri, "There are " +
parameters.size()
+ " parameters that couldn't be set on the endpoint."
+ " Check the uri if the parameters are spelt correctly
and that they are properties of the endpoint."
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java?rev=684667&r1=684666&r2=684667&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
Mon Aug 11 01:32:12 2008
@@ -208,4 +208,9 @@
setCamelContext(context);
}
+ public boolean isLenientProperties() {
+ // default should be false for most components
+ return false;
+ }
+
}
Modified:
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSoapEndpoint.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSoapEndpoint.java?rev=684667&r1=684666&r2=684667&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSoapEndpoint.java
(original)
+++
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSoapEndpoint.java
Mon Aug 11 01:32:12 2008
@@ -178,4 +178,9 @@
public HeaderFilterStrategy getHeaderFilterStrategy() {
return headerFilterStrategy;
}
+
+ public boolean isLenientProperties() {
+ return false;
+ }
+
}
Modified:
activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java?rev=684667&r1=684666&r2=684667&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
(original)
+++
activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
Mon Aug 11 01:32:12 2008
@@ -105,6 +105,5 @@
public void setHeaderFilterStrategy(HeaderFilterStrategy strategy) {
headerFilterStrategy = strategy;
-
}
}
Modified:
activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java?rev=684667&r1=684666&r2=684667&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
(original)
+++
activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
Mon Aug 11 01:32:12 2008
@@ -98,6 +98,11 @@
component.disconnect(consumer);
}
+ @Override
+ public boolean isLenientProperties() {
+ // true to allow dynamic URI options to be configured and passed to
external system for eg. the HttpProducer
+ return true;
+ }
// Properties
//-------------------------------------------------------------------------
Modified:
activemq/camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpGetWithHeadersTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpGetWithHeadersTest.java?rev=684667&r1=684666&r2=684667&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpGetWithHeadersTest.java
(original)
+++
activemq/camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpGetWithHeadersTest.java
Mon Aug 11 01:32:12 2008
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.component.http;
import org.apache.camel.builder.RouteBuilder;
Modified:
activemq/camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpGetWithQueryParamsTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpGetWithQueryParamsTest.java?rev=684667&r1=684666&r2=684667&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpGetWithQueryParamsTest.java
(original)
+++
activemq/camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpGetWithQueryParamsTest.java
Mon Aug 11 01:32:12 2008
@@ -16,12 +16,8 @@
*/
package org.apache.camel.component.http;
-
/**
- * TODO Provide description for HttpGetWithQueryParamsTest.
- *
- * @author <a href="mailto:[EMAIL PROTECTED]">nsandhu</a>
- *
+ * @version $Revision$
*/
public class HttpGetWithQueryParamsTest extends HttpGetTest {
protected void setUp() throws Exception {