FYI http://svn.apache.org/viewvc?view=rev&revision=793138
On Fri, Jul 10, 2009 at 3:36 PM, Alexis Midon <[email protected]> wrote: > thanks for the patch. Next time could you please create a jira issue and > attach the patch to it? It's for traceability and licensing reasons. > https://issues.apache.org/jira/browse/ODE > > could you send your exceptions, your process and its dependencies (wsdl, > schemas, etc)? > > Alexis > > On Fri, Jul 10, 2009 at 2:35 PM, Bill McCusker <[email protected]>wrote: > >> It looks like the wsdl I was provided with was missing the <mime:content >> type="text/xml" part="post_content"/>. Adding it yielded a >> ConcurrentModificationException. Apparently list remove is being called in a >> for each loop over that list in WsdlUtils getHttpHeaders, attached is a >> small patch for that. However after fixing the >> ConcurrentModificationException the process is still failing. Attached is >> the modified wsdl I was provided with. >> >> Bill McCusker >> >> >> Alexis Midon wrote: >> >>> ODE puts all HTTP response headers in the message, so they can eventually >>> be >>> used by the process. So, yes, this message is correct. >>> >>> Assuming your assignment is right and that the service output is fine, if >>> the part your assign is looking for is not in the message then I guess >>> the >>> issue is in the wsdl you use to describe the service. It looks like your >>> wsdl is valid (no fault in the invoke), but the response body is not >>> bound >>> to a part. >>> What is the content of the operation output element? could you share with >>> us >>> your wsdl? >>> >>> Here is an example of an operation binding that stores the response body >>> in >>> the part "post_content". >>> >>> >>> <definitions ... >>> >>> xmlns:odex=" >>> http://www.apache.org/ode/type/extension/http"/> >>> >>> <binding name="blogBinding" type="blogPortType"> >>> <operation name="PUT"> >>> >>> <odex:binding verb="PUT" /> >>> <http:operation location=""/> >>> <input> >>> >>> <http:urlReplacement/> >>> <mime:content type="text/xml" part="post_content"/> >>> >>> <!-- set a standard request header from a part --> >>> <odex:header name="Authorization" >>> part="credentials_part"/> >>> >>> >>> <!-- set a custom request header with a static value --> >>> <odex:header name="MyCustomHeader" value="[email protected]" >>> /> >>> >>> >>> </input> >>> <output> >>> <mime:content type="text/xml" part="post_content"/> >>> >>> >>> <!-- set 1 response header to a part --> >>> <odex:header name="Age" part="age_part"/> >>> >>> >>> </output> >>> </operation> >>> </binding> >>> </definitions> >>> >>> >>> >>> You can check the doc for more details: >>> >>> http://ode.apache.org/user-guide.html#UserGuide-HTTPBindingExtensionsforRESTfulservices >>> >>> Alexis >>> >>> >>> >>> >> >> Index: utils/src/main/java/org/apache/ode/utils/wsdl/WsdlUtils.java >> =================================================================== >> --- utils/src/main/java/org/apache/ode/utils/wsdl/WsdlUtils.java >> (revision 786653) >> +++ utils/src/main/java/org/apache/ode/utils/wsdl/WsdlUtils.java >> (working copy) >> @@ -48,6 +48,7 @@ >> import javax.xml.namespace.QName; >> import java.util.ArrayList; >> import java.util.Collection; >> +import java.util.Iterator; >> import java.util.List; >> >> /** >> @@ -307,12 +308,13 @@ >> >> public static Collection<UnknownExtensibilityElement> >> getHttpHeaders(List extensibilityElements) { >> final Collection<UnknownExtensibilityElement> unknownExtElements = >> CollectionsX.filter(extensibilityElements, >> UnknownExtensibilityElement.class); >> - for (UnknownExtensibilityElement extensibilityElement : >> unknownExtElements) { >> + for(Iterator<UnknownExtensibilityElement> iter = >> unknownExtElements.iterator(); iter.hasNext();) { >> + final UnknownExtensibilityElement extensibilityElement = >> iter.next(); >> final Element e = extensibilityElement.getElement(); >> // keep only the header elements >> if >> (!Namespaces.ODE_HTTP_EXTENSION_NS.equalsIgnoreCase(e.getNamespaceURI()) >> || >> !"header".equals(extensibilityElement.getElement().getLocalName())) { >> - unknownExtElements.remove(extensibilityElement); >> + iter.remove(); >> } >> } >> return unknownExtElements; >> >> >
