Dear Wiki user, You have subscribed to a wiki page or wiki category on "Ws Wiki" for change notification.
The following page has been changed by JohnKaputin: http://wiki.apache.org/ws/FrontPage/Woden/WSDLExtensions The comment on the change is: Added HTTP binding extensions notes and minor additions to SOAP ------------------------------------------------------------------------------ * wsoap:mep of type ''xs:anyURI'' is represented by {{{URIAttr}}}. * wsoap:action of type ''xs:anyURI'' is represented by {{{URIAttr}}}. - The <wsoap:module> extension element may appear within the binding-related WSDL elements <wsdl:binding>, <wsdl:fault>, <wsdl:input>, <wsdl:output>, <wsdl:infault>, <wsdl:outfault>. It is represented in the Element model by the interface {{{SOAPModuleElement}}} and in the Component model by {{{SOAPModule}}}. + The <wsoap:module> extension element may appear within the binding-related WSDL elements <wsdl:binding>, <wsdl:fault>, <wsdl:input>, <wsdl:output>, <wsdl:infault>, <wsdl:outfault>. It is represented in the Element model by the interface {{{SOAPModuleElement}}} and in the Component model by {{{SOAPModule}}}. These interfaces are implemented by a single class, {{{SOAPModuleImpl}}}. - The <wsoap:header> extension element may appear within the binding-related WSDL elements <wsdl:fault>, <wsdl:input> and <wsdl:output>. It is represented in the Element model by the interface {{{SOAPHeaderBlockElement}}} and in the Component model by {{{SOAPHeaderBlock}}}. + The <wsoap:header> extension element may appear within the binding-related WSDL elements <wsdl:fault>, <wsdl:input> and <wsdl:output>. It is represented in the Element model by the interface {{{SOAPHeaderBlockElement}}} and in the Component model by {{{SOAPHeaderBlock}}}. These interfaces are implemented by a single class, {{{SOAPHeaderBlockImpl}}}. === SOAP extension properties (Component model) === @@ -105, +105 @@ == HTTP Binding Extensions == - John Kaputin to complete these notes on proposed HTTP extensions, based on conventions used for SOAP binding extensions. + The HTTP Binding Extensions have not yet been developed in Woden (March 2006). This section provides guidance for creating these extensions by proposing package and interface names that follow the same conventions used for the SOAP binding extensions described above. The see Woden code for SOAP binding extensions for detailed examples. + The package {{{org.apache.woden.wsdl20.extensions.http}}} should be created to contain the HTTP binding extensions interfaces. The package {{{org.apache.woden.internal.wsdl20.extensions.http}}} should contain the implementation classes. + + === HTTP extension elements and attributes (Element model) === + + The noarg constructor of the implementation class {{{PopulatedExtensionRegistry}}} should register the HTTP binding extension elements and attributes, similarly to those of the SOAP binding extensions. + + The <wsdl:binding> element has 4 HTTP extension attributes, which should be registered as attribute extensions of {{{BindingElement}}}: + * whttp:methodDefault of type ''xs:string'' is represented by {{{StringAttr}}}. + * whttp:queryParameterSeparatorDefault of type ''xs:string'' is represented by {{{StringAttr}}}. + * whttp:cookies of type ''xs:boolean'' is represented by {{{BooleanAttr}}}. + * whttp:transferCodingDefault of type ''xs:string'' is represented by {{{StringAttr}}}. + + The <wsdl:fault> element within <wsdl:binding> has 2 HTTP extension attributes, which should be registered as attribute extensions of {{{BindingFaultElement}}}: + * whttp:code of type ''union of xs:int, xs:token'' is represented by {{{IntOrTokenAttr}}}, which needs to be created in package {{{org.apache.woden.xml}}} and based on {{{QNameOrTokenAttr}}}. + * whttp:transferCoding of type ''xs:string'' is represented by {{{StringAttr}}}. + + Note: for attribute whttp:code, the class implementing {{{IntOrTokenAttr}}} should be called {{{IntOrTokenAnyAttrImpl}}} and should add the same check as per class {{{QNameOrTokenAnyAttrImpl}}}, which is to check for an ''xs:token'' value of ''#any'' in the ''convert'' method. + + The <wsdl:operation> element within <wsdl:binding> has 7 HTTP extension attributes, which should be registered as attribute extensions of {{{BindingOperationElement}}}: + * whttp:location of type ''xs:anyURI'' is represented by {{{URIAttr}}}. + * whttp:method of type ''xs:string'' is represented by {{{StringAttr}}}. + * whttp:inputSerialization of type "xs:string" is represented by {{{StringAttr}}}. + * whttp:outputSerialization of type "xs:string" is represented by {{{StringAttr}}}. + * whttp:faultSerialization of type "xs:string" is represented by {{{StringAttr}}}. + * whttp:queryParameterSeparator of type ''xs:string'' is represented by {{{StringAttr}}}. + * whttp:transferCodingDefault of type "xs:string" is represented by {{{StringAttr}}}. + + The <wsdl:input> and <wsdl:output> elements within binding <wsdl:operation> have 1 HTTP extension attribute, which should be registered as attribute extensions of {{{BindingMessageReferenceElement}}}: + * whttp:transferCoding of type "xs:string" is represented by {{{StringAttr}}}. + + The <wsdl:endpoint> element within <wsdl:service> has 2 HTTP extension attributes, which should be registered as attribute extensions of {{{EndpointElement}}}: + * whttp:authenticationType of type ''xs:token'' is represented by {{{TokenAttr}}}. + * whttp:authenticationRealm of type ''xs:string'' is represented by {{{StringAttr}}}. + + The <whttp:header> extension element may appear within the binding-related WSDL elements <wsdl:fault>, <wsdl:input> and <wsdl:output>. It should be represented in the Element model by the interface {{{HTTPHeaderElement}}} and in the Component model by {{{HTTPHeader}}}. These interfaces should be implemented by a single class, {{{HTTPHeaderImpl}}}. + + {{{HTTPHeaderElement}}} should extend {{{ExtensionElement}}} and also {{{AttributeExtensible}}} and {{{ElementExtensible}}} (because it is itself extensible). For its method declarations, it should follow the element extension conventions used for SOAP and those used for QName dereferencing: + * {{{void addDocumentationElement(DocumentationElement)}}} + * {{{DocumentationElement[] getDocumentationElements()}}} + * {{{void setName(String)}}} + * {{{String getName()}}} + * {{{void setTypeName(QName)}}} + * {{{QName getTypeName()}}} + * {{{XmlSchemaType getType()}}} + * {{{void setParentElement(WSDLElement)}}} + * {{{WSDLElement getParentElement()}}} + + Note 1: the implementation class {{{HTTPHeaderImpl}}} should store the QName specified by the {{{setTypeName}}} method and its {{{getType}}} method should dynamically resolve this QName to an {{{XmlSchemaType}}} stored within {{{TypesElement}}}. See {{{PropertyImpl.getConstraint()}}} for an example. + + Note 2: methods for the 'required' attribute are declared in the super interface {{{ExtensionElement}}}. + + {{{HTTPHeader}}} should follow the component extension conventions used for SOAP in deriving method declarations from the HTTP Header properties: + * {{{String getName()}}} for property {name} + * {{{TypeDefinition getTypeDefinition()}}} for property {type definition} + * {{{Boolean isRequired}}} for property {required} + * {{{WSDLComponent getParent()}}} for property {parent} + + === HTTP extension properties (Component model) === + + Each binding-related WSDL Component that is extended by HTTP properties should have a corresponding subtype of the {{{ComponentExtensions}}} interface which encapsulates those component-specific properties. + + The noarg constructor of the implementation class {{{PopulatedExtensionRegistry}}} should register these HTTP component extensions, similarly to those registered for the SOAP component extensions. + + The following interfaces should be created in package {{{org.apache.woden.wsdl20.extensions.http}}} as subtypes of {{{ComponentExtensions}}} (and their implementation classes created in package {{{org.apache.woden.internal.wsdl20.extensions.http}}}): + + {{{HTTPBindingExtensions}}} should be created with methods to return the HTTP properties that extend the {{{Binding}}} component: + * {http method default} mapped from the whttp:methodDefault attribute requires the method {{{String getHttpMethodDefault()}}} + * {http query parameter separator default} mapped from the whttp:queryParameterSeparatorDefault attribute requires the method {{{String getHttpQueryParameterSeparatorDefault}}} + * {http cookies} mapped from the whttp:cookies attribute requires the method {{{String getHttpCookies()}}} + * {http transfer coding default} mapped from the whttp:transferCodingDefault attribute requires the method {{{String getHttpTransferCodingDefault()}}} + + {{{HTTPBindingFaultExtensions}}} should be created with methods to return the HTTP properties that extend the {{{BindingFault}}} component: + * {http error status code} mapped from the whttp:code attribute requires the method {{{HTTPErrorStatusCode getHttpErrorStatusCode()}}}, where {{{HTTPErrorStatusCode}}} is to be created as a type safe enumeration similar to {{{org.apache.woden.wsdl20.enumeration.SOAPFaultCode}}} + * {http transfer coding} mapped from the whttp:transferCoding attribute requires the method {{{String getHttpTransferCoding()}}} + * {http headers} mapped from the set of <whttp:header> child elements of a binding <wsdl:fault> element requires the method {{{HTTPHeader[] getHttpHeaders()}}} + + {{{HTTPBindingOperationExtensions}}} should be created with methods to return the HTTP properties that extend the {{{BindingOperation}}} component: + * {http location} mapped from the whttp:location attribute requires the method {{{java.net.URI getHttpLocation()}}} + * {http method} mapped from the whttp:method attribute requires the method {{{String getHttpMethod()}}} + * {http input serialization} mapped from the whttp:inputSerialization attribute requires the method {{{String getHttpInputSerialization()}}} + * {http output serialization} mapped from the whttp:outputSerialization attribute requires the method {{{String getHttpOutputSerialization()}}} + * {http fault serialization} mapped from the whttp:faultSerialization attribute requires the method {{{String getHttpFaultSerialization()}}} + * {http query parameter separator} mapped from the whttp:queryParameterSeparator attribute requires the method {{{String getHttpQueryParameterSeparator()}}} + * {http transfer coding default} mapped from whttp:transferCodingDefault requires the method {{{String getHttpTransferCodingDefault()}}} + + {{{HTTPBindingMessageReferenceExtensions}}} should be created with methods to return the HTTP properties that extend the {{{BindingMessageReference}}} component: + * {http transfer coding} mapped from the whttp:transferCoding attribute requires the method {{{String getHttpTransferCoding()}}} + * {http headers} mapped from the set of <whttp:header> child elements of a binding operation <wsdl:input> or <wsdl:output> element requires the method {{{HTTPHeader[] getHttpHeaders()}}} + + ----- + == END of WSDL Extensions == +
