Repository: camel
Updated Branches:
  refs/heads/master adc16c38c -> 98ccff721


Component docs


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/98ccff72
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/98ccff72
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/98ccff72

Branch: refs/heads/master
Commit: 98ccff721d1bb40849fdcafb4cd68f7fa809e3db
Parents: adc16c3
Author: Claus Ibsen <davscl...@apache.org>
Authored: Thu May 21 08:23:29 2015 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Thu May 21 08:25:23 2015 +0200

----------------------------------------------------------------------
 .../spring/ws/SpringWebserviceComponent.java    |  18 +-
 .../ws/SpringWebserviceConfiguration.java       | 181 +++++++++++++------
 .../spring/ws/SpringWebserviceEndpoint.java     |   2 +-
 .../spring/ws/filter/MessageFilter.java         |  12 +-
 .../spring/ws/type/EndpointMappingKey.java      |  21 ++-
 5 files changed, 159 insertions(+), 75 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/98ccff72/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceComponent.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceComponent.java
 
b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceComponent.java
index 0bf52a9..554668a 100644
--- 
a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceComponent.java
+++ 
b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceComponent.java
@@ -19,7 +19,6 @@ package org.apache.camel.component.spring.ws;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.Map;
-
 import javax.xml.transform.TransformerFactory;
 
 import org.apache.camel.CamelContext;
@@ -31,7 +30,6 @@ import 
org.apache.camel.component.spring.ws.filter.MessageFilter;
 import org.apache.camel.component.spring.ws.type.EndpointMappingKey;
 import org.apache.camel.component.spring.ws.type.EndpointMappingType;
 import org.apache.camel.converter.jaxp.XmlConverter;
-import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.util.CamelContextHelper;
 import org.apache.camel.util.EndpointHelper;
@@ -85,8 +83,13 @@ public class SpringWebserviceComponent extends 
UriEndpointComponent {
             } else {
                 addEndpointMappingToConfiguration(parameters, configuration);
             }
-            configuration.setEndpointMappingKey(new EndpointMappingKey(type, 
lookupKey, 
-                type.equals(EndpointMappingType.XPATHRESULT) ? 
getXPathExpressionFromParameters(parameters) : null));
+            XPathExpression xPathExpression = null;
+            if (type.equals(EndpointMappingType.XPATHRESULT)) {
+                String expression = getAndRemoveParameter(parameters, 
"expression", String.class);
+                configuration.setExpression(expression);
+                xPathExpression = createXPathExpression(expression);
+            }
+            configuration.setEndpointMappingKey(new EndpointMappingKey(type, 
lookupKey, xPathExpression));
         }
     }
 
@@ -106,7 +109,9 @@ public class SpringWebserviceComponent extends 
UriEndpointComponent {
                     "messageFactory", WebServiceMessageFactory.class, null);
 
             if (webServiceTemplate.getDefaultUri() == null) {
-                
webServiceTemplate.setDefaultUri(webServiceEndpointUri.toString());
+                String uri = webServiceEndpointUri.toString();
+                webServiceTemplate.setDefaultUri(uri);
+                configuration.setWebServiceEndpointUri(uri);
             }
             if (messageSender != null) {
                 webServiceTemplate.setMessageSender(messageSender);
@@ -124,8 +129,7 @@ public class SpringWebserviceComponent extends 
UriEndpointComponent {
         return SpringWebserviceConfiguration.decode(lookupKey);
     }
 
-    private XPathExpression getXPathExpressionFromParameters(Map<String, 
Object> parameters) {
-        String xpathExpression = getAndRemoveParameter(parameters, 
"expression", String.class);
+    private XPathExpression createXPathExpression(String xpathExpression) {
         if (xpathExpression == null) {
             throw new RuntimeCamelException("Expression parameter is required 
when using XPath endpoint mapping");
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/98ccff72/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConfiguration.java
 
b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConfiguration.java
index 61fa3d0..1659749 100644
--- 
a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConfiguration.java
+++ 
b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConfiguration.java
@@ -27,6 +27,7 @@ import 
org.apache.camel.component.spring.ws.type.EndpointMappingKey;
 import org.apache.camel.converter.jaxp.XmlConverter;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriParams;
+import org.apache.camel.spi.UriPath;
 import org.apache.camel.util.jsse.SSLContextParameters;
 import org.springframework.util.StringUtils;
 import org.springframework.ws.client.core.WebServiceTemplate;
@@ -37,54 +38,88 @@ import 
org.springframework.ws.transport.WebServiceMessageSender;
 @UriParams
 public class SpringWebserviceConfiguration {
 
-    @UriParam
+    private XmlConverter xmlConverter;
+    private MessageFilter messageFilter;
+
+    @UriParam(label = "consumer")
     private EndpointMappingKey endpointMappingKey;
+    @UriPath(label = "producer")
+    private String webServiceEndpointUri;
 
     /* Producer configuration */
-    @UriParam
+    @UriParam(label = "producer")
     private WebServiceTemplate webServiceTemplate;
-    @UriParam
+    @UriParam(label = "producer")
     private String soapAction;
-    @UriParam
+    @UriParam(label = "producer")
     private URI wsAddressingAction;
-    @UriParam
+    @UriParam(label = "producer")
     private URI outputAction;
-    @UriParam
+    @UriParam(label = "producer")
     private URI faultAction;
-    @UriParam
+    @UriParam(label = "producer")
     private URI faultTo;
-    @UriParam
+    @UriParam(label = "producer")
     private URI replyTo;
-    @UriParam
-    private WebServiceMessageSender replyToMessageSender;
-    @UriParam
+    @UriParam(label = "producer")
+    private WebServiceMessageSender messageSender;
+    @UriParam(label = "producer")
     private MessageIdStrategy messageIdStrategy;
-    @UriParam
+    @UriParam(label = "producer")
     private int timeout = -1;
 
     /* Consumer configuration */
-    @UriParam
+    @UriParam(label = "consumer")
     private CamelSpringWSEndpointMapping endpointMapping;
-    @UriParam
+    @UriParam(label = "consumer")
     private CamelEndpointDispatcher endpointDispatcher;
-    @UriParam
+    @UriParam(label = "consumer")
     private SSLContextParameters sslContextParameters;
-
-    private XmlConverter xmlConverter;
-    private MessageFilter messageFilter;
+    @UriParam(label = "consumer")
+    private String expression;
 
     public WebServiceTemplate getWebServiceTemplate() {
         return webServiceTemplate;
     }
 
+    /**
+     * Option to provide a custom WebServiceTemplate.
+     * This allows for full control over client-side web services handling; 
like adding a custom interceptor
+     * or specifying a fault resolver, message sender or message factory.
+     */
     public void setWebServiceTemplate(WebServiceTemplate webServiceTemplate) {
         this.webServiceTemplate = webServiceTemplate;
     }
 
+    public String getWebServiceEndpointUri() {
+        return webServiceEndpointUri;
+    }
+
+    /**
+     * The default Web Service endpoint uri to use for the producer.
+     */
+    public void setWebServiceEndpointUri(String webServiceEndpointUri) {
+        this.webServiceEndpointUri = webServiceEndpointUri;
+    }
+
+    public String getExpression() {
+        return expression;
+    }
+
+    /**
+     * The XPath expression to use when option type=xpathresult. Then this 
option is required to be configured.
+     */
+    public void setExpression(String expression) {
+        this.expression = expression;
+    }
+
     public String getSoapAction() {
         return soapAction;
     }
 
+    /**
+     * SOAP action to include inside a SOAP request when accessing remote web 
services
+     */
     public void setSoapAction(String soapAction) {
         this.soapAction = soapAction;
     }
@@ -103,6 +138,10 @@ public class SpringWebserviceConfiguration {
         return wsAddressingAction;
     }
 
+    /**
+     * WS-Addressing 1.0 action header to include when accessing web services.
+     * The To header is set to the address of the web service as specified in 
the endpoint URI (default Spring-WS behavior).
+     */
     public void setWsAddressingAction(URI wsAddressingAction) {
         this.wsAddressingAction = wsAddressingAction;
     }
@@ -117,6 +156,17 @@ public class SpringWebserviceConfiguration {
         return timeout;
     }
 
+    /**
+     * Sets the socket read timeout (in milliseconds) while invoking a 
webservice using the producer,
+     * see URLConnection.setReadTimeout() and 
CommonsHttpMessageSender.setReadTimeout().
+     * This option works when using the built-in message sender 
implementations:
+     * CommonsHttpMessageSender and HttpUrlConnectionMessageSender.
+     * One of these implementations will be used by default for HTTP based 
services unless you customize the
+     * Spring WS configuration options supplied to the component.
+     * If you are using a non-standard sender, it is assumed that you will 
handle your own timeout configuration.
+     * The built-in message sender HttpComponentsMessageSender is considered 
instead of CommonsHttpMessageSender
+     * which has been deprecated, see 
HttpComponentsMessageSender.setReadTimeout().
+     */
     public void setTimeout(int timeout) {
         this.timeout = timeout;
     }
@@ -125,6 +175,12 @@ public class SpringWebserviceConfiguration {
         return endpointMapping;
     }
 
+    /**
+     * Reference to an instance of 
org.apache.camel.component.spring.ws.bean.CamelEndpointMapping in the 
Registry/ApplicationContext.
+     * Only one bean is required in the registry to serve all Camel/Spring-WS 
endpoints.
+     * This bean is auto-discovered by the MessageDispatcher and used to map 
requests to Camel endpoints based
+     * on characteristics specified on the endpoint (like root QName, SOAP 
action, etc)
+     */
     public void setEndpointMapping(CamelSpringWSEndpointMapping 
endpointMapping) {
         this.endpointMapping = endpointMapping;
     }
@@ -141,6 +197,9 @@ public class SpringWebserviceConfiguration {
         return sslContextParameters;
     }
 
+    /**
+     * To configure security using SSLContextParameters
+     */
     public void setSslContextParameters(SSLContextParameters 
sslContextParameters) {
         this.sslContextParameters = sslContextParameters;
     }
@@ -149,6 +208,10 @@ public class SpringWebserviceConfiguration {
         return endpointDispatcher;
     }
 
+    /**
+     * Spring {@link org.springframework.ws.server.endpoint.MessageEndpoint} 
for dispatching messages received by Spring-WS to a Camel endpoint,
+     * to integrate with existing (legacy) endpoint mappings like 
PayloadRootQNameEndpointMapping, SoapActionEndpointMapping, etc.
+     */
     public void setEndpointDispatcher(CamelEndpointDispatcher 
endpointDispatcher) {
         this.endpointDispatcher = endpointDispatcher;
     }
@@ -172,22 +235,12 @@ public class SpringWebserviceConfiguration {
     }
 
     /**
-     * Default setter to override failsafe message filter.
-     * 
-     * @param messageFilter non-default MessageFilter
+     * Option to provide a custom MessageFilter. For example when you want to 
process your headers or attachments by your own.
      */
     public void setMessageFilter(MessageFilter messageFilter) {
         this.messageFilter = messageFilter;
-
     }
 
-    /**
-     * Gets the configured MessageFilter.
-     * 
-     * Note: The only place that sets fail safe strategy.
-     * 
-     * @return instance of MessageFilter that is never null;
-     */
     public MessageFilter getMessageFilter() {
         if (this.messageFilter == null) {
             this.messageFilter = new BasicMessageFilter();
@@ -195,14 +248,18 @@ public class SpringWebserviceConfiguration {
         return this.messageFilter;
     }
 
+    public URI getOutputAction() {
+        return outputAction;
+    }
+
     /**
      * Signifies the value for the response WS-Addressing <code>Action</code>
      * header that is provided by the method.
-     * 
+     *
      * @see {@link Action}
      */
-    public URI getOutputAction() {
-        return outputAction;
+    public void setOutputAction(URI outputAction) {
+        this.outputAction = outputAction;
     }
 
     public void setOutputAction(String output) throws URISyntaxException {
@@ -211,91 +268,101 @@ public class SpringWebserviceConfiguration {
         }
     }
 
-    public void setOutputAction(URI outputAction) {
-        this.outputAction = outputAction;
+    public URI getFaultAction() {
+        return faultAction;
     }
 
     /**
      * Signifies the value for the faultAction response WS-Addressing
      * <code>Fault Action</code> header that is provided by the method.
-     * 
+     *
      * @see {@link Action}
      */
-    public URI getFaultAction() {
-        return faultAction;
-    }
-
     public void setFaultAction(String fault) throws URISyntaxException {
         if (StringUtils.hasText(fault)) {
             setFaultAction(new URI(fault));
         }
     }
 
+    /**
+     * Signifies the value for the faultAction response WS-Addressing
+     * <code>Fault Action</code> header that is provided by the method.
+     *
+     * @see {@link Action}
+     */
     public void setFaultAction(URI fault) {
         this.faultAction = fault;
     }
 
+    public URI getFaultTo() {
+        return faultTo;
+    }
+
     /**
      * Signifies the value for the faultAction response WS-Addressing
      * <code>FaultTo</code> header that is provided by the method.
-     * 
+     *
      * @see {@link Action}
      */
-    public URI getFaultTo() {
-        return faultTo;
-    }
-
     public void setFaultTo(String faultTo) throws URISyntaxException {
         if (StringUtils.hasText(faultTo)) {
             setFaultTo(new URI(faultTo));
         }
     }
 
+    /**
+     * Signifies the value for the faultAction response WS-Addressing
+     * <code>FaultTo</code> header that is provided by the method.
+     *
+     * @see {@link Action}
+     */
     public void setFaultTo(URI faultTo) {
         this.faultTo = faultTo;
     }
 
+    public URI getReplyTo() {
+        return replyTo;
+    }
+
     /**
      * Signifies the value for the replyTo response WS-Addressing
      * <code>ReplyTo</code> header that is provided by the method.
-     * 
+     *
      * @see {@link Action}
      */
-    public URI getReplyTo() {
-        return replyTo;
-    }
-
     public void setReplyTo(String replyToAction) throws URISyntaxException {
         if (StringUtils.hasText(replyToAction)) {
             setReplyTo(new URI(replyToAction));
         }
     }
 
+    /**
+     * Signifies the value for the replyTo response WS-Addressing
+     * <code>ReplyTo</code> header that is provided by the method.
+     *
+     * @see {@link Action}
+     */
     public void setReplyTo(URI replyToAction) {
         this.replyTo = replyToAction;
     }
 
-    /** * @return Returns the replyToMessageSender for wsa:replyTo.
-     */
     public WebServiceMessageSender getMessageSender() {
-        return replyToMessageSender;
+        return messageSender;
     }
 
     /**
-     * @param messageSender The replyToMessageSender for wsa:replyTo to set.
+     * Option to provide a custom WebServiceMessageSender. For example to 
perform authentication or use alternative transports
      */
     public void setMessageSender(WebServiceMessageSender messageSender) {
-        this.replyToMessageSender = messageSender;
+        this.messageSender = messageSender;
     }
 
-    /** * @return Returns the messageIdStrategy.
-     */
     public MessageIdStrategy getMessageIdStrategy() {
         return messageIdStrategy;
     }
 
     /**
-     * @param messageIdStrategy The messageIdStrategy to set.
+     * Option to provide a custom MessageIdStrategy to control generation of 
unique message ids.
      */
     public void setMessageIdStrategy(MessageIdStrategy messageIdStrategy) {
         this.messageIdStrategy = messageIdStrategy;

http://git-wip-us.apache.org/repos/asf/camel/blob/98ccff72/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceEndpoint.java
 
b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceEndpoint.java
index 77961b5..741c1ca 100644
--- 
a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceEndpoint.java
+++ 
b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceEndpoint.java
@@ -24,7 +24,7 @@ import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 
-@UriEndpoint(scheme = "spring-ws", title = "Spring WebService", syntax = 
"spring-ws:type:lookupKey", consumerClass = SpringWebserviceConsumer.class, 
label = "http,soap,webservice")
+@UriEndpoint(scheme = "spring-ws", title = "Spring WebService", syntax = 
"spring-ws:type:lookupKey:webServiceEndpointUri", consumerClass = 
SpringWebserviceConsumer.class, label = "http,soap,webservice")
 public class SpringWebserviceEndpoint extends DefaultEndpoint {
 
     @UriParam

http://git-wip-us.apache.org/repos/asf/camel/blob/98ccff72/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/filter/MessageFilter.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/filter/MessageFilter.java
 
b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/filter/MessageFilter.java
index 106a9da..56ac260 100644
--- 
a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/filter/MessageFilter.java
+++ 
b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/filter/MessageFilter.java
@@ -23,25 +23,23 @@ import org.springframework.ws.WebServiceMessage;
  * A strategy instance that filters a WebServiceMessage response.
  * 
  * This class provides an additional configuration that can be managed in your 
Spring's context.
- * 
- * 
  */
 public interface MessageFilter {
 
     /**
      * Calls filter for a producer
-     * 
-     * @param exchange
+     *
+     * @param exchange the exchange
      * @param response provided by the producer
      */
-    void filterProducer(Exchange exchange, WebServiceMessage produceRresponse);
+    void filterProducer(Exchange exchange, WebServiceMessage response);
 
     /**
      * Calls filter for a consumer
      * 
-     * @param exchange
+     * @param exchange the exchange
      * @param response provided by the consumer
      */
-    void filterConsumer(Exchange exchange, WebServiceMessage consumerResponse);
+    void filterConsumer(Exchange exchange, WebServiceMessage response);
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/98ccff72/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/type/EndpointMappingKey.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/type/EndpointMappingKey.java
 
b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/type/EndpointMappingKey.java
index 158d39e..f85b1e2 100644
--- 
a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/type/EndpointMappingKey.java
+++ 
b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/type/EndpointMappingKey.java
@@ -16,16 +16,16 @@
  */
 package org.apache.camel.component.spring.ws.type;
 
-import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriParams;
 import org.apache.camel.spi.UriPath;
 import org.springframework.xml.xpath.XPathExpression;
 
 @UriParams
 public class EndpointMappingKey {
-    @UriPath @Metadata(required = "true")
+    @UriPath(label = "consumer")
     private EndpointMappingType type;
-    @UriPath @Metadata(required = "true")
+    @UriPath(label = "consumer")
     private String lookupKey;
 
     /* expression in case type is 'xpath' */
@@ -41,6 +41,18 @@ public class EndpointMappingKey {
         return type;
     }
 
+    /**
+     * Endpoint mapping type if endpoint mapping is used.
+     * <ul>
+     *     <li>rootqname - Offers the option to map web service requests based 
on the qualified name of the root element contained in the message.</li>
+     *     <li>soapaction - Used to map web service requests based on the SOAP 
action specified in the header of the message.</li>
+     *     <li>uri - In order to map web service requests that target a 
specific URI.</li>
+     *     <li>xpathresult - Used to map web service requests based on the 
evaluation of an XPath expression against the incoming message.
+     *                       The result of the evaluation should match the 
XPath result specified in the endpoint URI.</li>
+     *     <li>beanname - Allows you to reference an 
org.apache.camel.component.spring.ws.bean.CamelEndpointDispatcher object in 
order to integrate with
+     *                    existing (legacy) endpoint mappings like 
PayloadRootQNameEndpointMapping, SoapActionEndpointMapping, etc</li>
+     * </ul>
+     */
     public void setType(EndpointMappingType type) {
         this.type = type;
     }
@@ -49,6 +61,9 @@ public class EndpointMappingKey {
         return lookupKey;
     }
 
+    /**
+     * Endpoint mapping key if endpoint mapping is used
+     */
     public void setLookupKey(String lookupKey) {
         this.lookupKey = lookupKey;
     }

Reply via email to