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; > >
