ws-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Ws Wiki] Update of "FrontPage/Woden/WSDLExtensions" by JohnKaputin
Date Thu, 23 Mar 2006 16:53:26 GMT
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 ==
+ 

Mime
View raw message