You are viewing a plain text version of this content. The canonical link for it is here.
Posted to woden-dev@ws.apache.org by hu...@apache.org on 2006/07/07 15:39:52 UTC
svn commit: r419889 [2/2] - in /incubator/woden/branches/WODEN-40: ant-test/
src/org/apache/woden/ src/org/apache/woden/ant/
src/org/apache/woden/internal/ src/org/apache/woden/internal/util/
src/org/apache/woden/internal/wsdl20/extensions/http/ src/or...
Modified: incubator/woden/branches/WODEN-40/src/org/apache/woden/internal/util/ComponentModelBuilder.java
URL: http://svn.apache.org/viewvc/incubator/woden/branches/WODEN-40/src/org/apache/woden/internal/util/ComponentModelBuilder.java?rev=419889&r1=419888&r2=419889&view=diff
==============================================================================
--- incubator/woden/branches/WODEN-40/src/org/apache/woden/internal/util/ComponentModelBuilder.java (original)
+++ incubator/woden/branches/WODEN-40/src/org/apache/woden/internal/util/ComponentModelBuilder.java Fri Jul 7 06:39:51 2006
@@ -39,6 +39,7 @@
import org.apache.woden.internal.wsdl20.TypeDefinitionImpl;
import org.apache.woden.internal.wsdl20.TypesImpl;
import org.apache.woden.internal.wsdl20.extensions.ComponentExtensionsImpl;
+import org.apache.woden.internal.wsdl20.extensions.rpc.RPCConstants;
import org.apache.woden.wsdl20.Binding;
import org.apache.woden.wsdl20.BindingFault;
import org.apache.woden.wsdl20.BindingFaultReference;
@@ -94,7 +95,11 @@
private List fBindingsDone = new Vector();
private List fServicesDone = new Vector();
-
+
+ private URI fBindingType = null;
+
+ private boolean fIsSoapUnderlyingProtocolHttp = false;
+
public ComponentModelBuilder(DescriptionImpl desc) {
fDesc = desc;
// TODO fErrorRpt = errorRpt; see todo in buildElementDeclarations()
@@ -262,14 +267,15 @@
}
private void buildInterfaceOperationExtensions(InterfaceOperationImpl oper) {
+
+ /*
+ * Create a ComponentExtensions object for each registered extension
+ * namespace used within this operation by extension elements or attributes.
+ */
ExtensionRegistry er = fDesc.getExtensionRegistry();
URI[] extNamespaces = er
.queryComponentExtensionNamespaces(InterfaceOperation.class);
- /*
- * Create a ComponentExtensions object for each registered extension
- * namespace used with this binding operation.
- */
for (int i = 0; i < extNamespaces.length; i++) {
URI extNS = extNamespaces[i];
if (oper.hasExtensionAttributesForNamespace(extNS)) {
@@ -278,9 +284,47 @@
oper.setComponentExtensions(extNS, compExt);
}
}
-
- // TODO: apply component model default rules if these extensions are
- // absent in the XML infoset
+
+ /*
+ * {safety} is a REQUIRED extension property on interface operation
+ * so if an InterfaceOperationExtensions object has not already been
+ * created, create one now.
+ */
+ if (oper.getComponentExtensionsForNamespace(
+ ComponentExtensions.URI_NS_EXTENSIONS) == null) {
+ ComponentExtensions compExt = createComponentExtensions(
+ InterfaceOperation.class, oper,
+ ComponentExtensions.URI_NS_EXTENSIONS);
+ oper.setComponentExtensions(
+ ComponentExtensions.URI_NS_EXTENSIONS, compExt);
+ }
+
+ /*
+ * If interface operation style includes RPC then if an
+ * RPCInterfaceOperationExtensions object has not already been
+ * created, create one now.
+ */
+ boolean isRPCStyle = false;
+ URI[] style = oper.getStyle();
+ for(int i=0; i<style.length; i++)
+ {
+ URI temp = style[i];
+ if(RPCConstants.URI_STYLE_RPC.equals(temp)) {
+ isRPCStyle = true;
+ break;
+ }
+ }
+
+ if(isRPCStyle) {
+ if (oper.getComponentExtensionsForNamespace(
+ ComponentExtensions.URI_NS_RPC) == null) {
+ ComponentExtensions compExt = createComponentExtensions(
+ InterfaceOperation.class, oper,
+ ComponentExtensions.URI_NS_RPC);
+ oper.setComponentExtensions(
+ ComponentExtensions.URI_NS_RPC, compExt);
+ }
+ }
}
/***************************************************************************
@@ -296,9 +340,9 @@
for (int i = 0; i < bindingEls.length; i++) {
BindingImpl bindImpl = (BindingImpl) bindingEls[i];
if (!fBindingsDone.contains(bindImpl)) {
+ buildBindingExtensions(bindImpl);
buildBindingFaults(bindImpl);
buildBindingOperations(bindImpl);
- buildBindingExtensions(bindImpl);
fBindingsDone.add(bindImpl);
}
}
@@ -345,14 +389,15 @@
}
private void buildBindingExtensions(BindingImpl binding) {
+
+ /*
+ * Create a ComponentExtensions object for each registered extension
+ * namespace used within this binding by extension elements or attributes.
+ */
ExtensionRegistry er = fDesc.getExtensionRegistry();
URI[] extNamespaces = er
.queryComponentExtensionNamespaces(Binding.class);
- /*
- * First, create a ComponentExtensions object for each registered
- * extension namespace used with this binding.
- */
for (int i = 0; i < extNamespaces.length; i++) {
URI extNS = extNamespaces[i];
if (binding.hasExtensionAttributesForNamespace(extNS)
@@ -374,10 +419,12 @@
* interpreted here at run time.
*/
if (ComponentExtensions.URI_NS_SOAP.equals(binding.getType())) {
+
+ fBindingType = ComponentExtensions.URI_NS_SOAP;
+
/*
- * If the binding type is SOAP, the {soap version} property defaults
- * to "1.2" so if a a SOAPBindingExtensions object has not already
- * been created, create one now to handle this default value.
+ * If the binding type is SOAP and a SOAPBindingExtensions object has
+ * not already been created, create one now.
*/
if (binding
.getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_SOAP) == null) {
@@ -392,12 +439,13 @@
if (ComponentExtensions.URI_NS_HTTP.equals(sbe
.getSoapUnderlyingProtocol())) {
+
+ fIsSoapUnderlyingProtocolHttp = true;
+
/*
- * If the binding type is SOAP and the {soap underlying
- * protocol} property is HTTP, then the {http version} property
- * defaults to "1.1" so if an HTTPBindingExtensions object has
- * not already been created, create one now to handle this
- * default value.
+ * If the binding type is SOAP and the {soap underlying protocol}
+ * property is HTTP, then if an HTTPBindingExtensions object has
+ * not already been created, create one now.
*/
if (binding
.getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_HTTP) == null) {
@@ -411,11 +459,12 @@
}
if (ComponentExtensions.URI_NS_HTTP.equals(binding.getType())) {
+
+ fBindingType = ComponentExtensions.URI_NS_HTTP;
+
/*
- * If the binding type is HTTP, the Binding extension properties
- * {http query parameter separator default} and {http cookies} are
- * REQUIRED so if an HTTPBindingExtensions object has not already
- * been created, create one now to handle their default values.
+ * If the binding type is HTTP, then if an HTTPBindingExtensions
+ * object has not already been created, create one now.
*/
if (binding
.getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_HTTP) == null) {
@@ -429,14 +478,16 @@
}
private void buildBindingFaultExtensions(BindingFaultImpl bindFault) {
+
+ /*
+ * Create a ComponentExtensions object for each registered extension
+ * namespace used within this binding fault by extension elements
+ * or attributes.
+ */
ExtensionRegistry er = fDesc.getExtensionRegistry();
URI[] extNamespaces = er
.queryComponentExtensionNamespaces(BindingFault.class);
- /*
- * First, create a ComponentExtensions object for each registered
- * extension namespace used with this binding fault.
- */
for (int i = 0; i < extNamespaces.length; i++) {
URI extNS = extNamespaces[i];
if (bindFault.hasExtensionAttributesForNamespace(extNS)
@@ -457,14 +508,10 @@
* HTTP or user-defined extensions can be registered in some way and
* interpreted here at run time.
*/
- URI bindingType = ((BindingElement) bindFault.getParentElement())
- .getType();
- if (ComponentExtensions.URI_NS_SOAP.equals(bindingType)) {
+ if (ComponentExtensions.URI_NS_SOAP.equals(fBindingType)) {
/*
- * If the binding type is SOAP, the {soap fault code} and {soap
- * fault subcodes} properties default to xs:token "#any", so if a
- * SOAPBindingFaultExtensions object has not already been created,
- * create one now to handle these default values.
+ * If the binding type is SOAP and a SOAPBindingFaultExtensions object
+ * has not already been created, create one now.
*/
if (bindFault
.getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_SOAP) == null) {
@@ -474,16 +521,28 @@
bindFault.setComponentExtensions(
ComponentExtensions.URI_NS_SOAP, compExt);
}
+
+ if (fIsSoapUnderlyingProtocolHttp) {
+ /*
+ * If the binding type is SOAP and the {soap underlying protocol}
+ * property is HTTP, then if an HTTPBindingFaultExtensions object
+ * has not already been created, create one now.
+ */
+ if (bindFault
+ .getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_HTTP) == null) {
+ ComponentExtensions compExt = createComponentExtensions(
+ BindingFault.class, bindFault,
+ ComponentExtensions.URI_NS_HTTP);
+ bindFault.setComponentExtensions(
+ ComponentExtensions.URI_NS_HTTP, compExt);
+ }
+ }
}
- if (ComponentExtensions.URI_NS_HTTP.equals(bindingType)) {
+ if (ComponentExtensions.URI_NS_HTTP.equals(fBindingType)) {
/*
- * If the binding type is HTTP, the BindingFault extension property
- * {http error status code}, {http output serialization}, {http
- * fault serialization} and {http location ignore uncited} are
- * REQUIRED so if an HTTPBindingFaultExtensions object has not
- * already been created, create one now to handle their default
- * values.
+ * If the binding type is HTTP and an HTTPBindingFaultExtensions object
+ * has not already been created, create one now.
*/
if (bindFault
.getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_HTTP) == null) {
@@ -498,14 +557,16 @@
}
private void buildBindingOperationExtensions(BindingOperationImpl bindOper) {
+
+ /*
+ * Create a ComponentExtensions object for each registered extension
+ * namespace used within this binding operation by extension elements
+ * or attributes.
+ */
ExtensionRegistry er = fDesc.getExtensionRegistry();
URI[] extNamespaces = er
.queryComponentExtensionNamespaces(BindingOperation.class);
- /*
- * First, create a ComponentExtensions object for each registered
- * extension namespace used with this binding operation.
- */
for (int i = 0; i < extNamespaces.length; i++) {
URI extNS = extNamespaces[i];
if (bindOper.hasExtensionAttributesForNamespace(extNS)
@@ -526,16 +587,41 @@
* HTTP or user-defined extensions can be registered in some way and
* interpreted here at run time.
*/
- URI bindingType = ((BindingElement) bindOper.getParentElement())
- .getType();
- if (ComponentExtensions.URI_NS_HTTP.equals(bindingType)) {
+ if (ComponentExtensions.URI_NS_SOAP.equals(fBindingType)) {
+ /*
+ * If the binding type is SOAP and a SOAPBindingOperationExtensions object
+ * has not already been created, create one now.
+ */
+ if (bindOper
+ .getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_SOAP) == null) {
+ ComponentExtensions compExt = createComponentExtensions(
+ BindingOperation.class, bindOper,
+ ComponentExtensions.URI_NS_SOAP);
+ bindOper.setComponentExtensions(
+ ComponentExtensions.URI_NS_SOAP, compExt);
+ }
+
+ if (fIsSoapUnderlyingProtocolHttp) {
+ /*
+ * If the binding type is SOAP and the {soap underlying protocol}
+ * property is HTTP, then if an HTTPBindingOperationExtensions object
+ * has not already been created, create one now.
+ */
+ if (bindOper
+ .getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_HTTP) == null) {
+ ComponentExtensions compExt = createComponentExtensions(
+ BindingOperation.class, bindOper,
+ ComponentExtensions.URI_NS_HTTP);
+ bindOper.setComponentExtensions(
+ ComponentExtensions.URI_NS_HTTP, compExt);
+ }
+ }
+ }
+
+ if (ComponentExtensions.URI_NS_HTTP.equals(fBindingType)) {
/*
- * If the binding type is HTTP, the BindingOperation extension
- * properties {http input serialization}, {http output
- * serialization}, {http fault serialization} and {http location
- * ignore uncited} are REQUIRED so if an
- * HTTPBindingOperationExtensions object has not already been
- * created, create one now to handle their default values.
+ * If the binding type is HTTP and an HTTPBindingOperationExtensions
+ * object has not already been created, create one now.
*/
if (bindOper
.getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_HTTP) == null) {
@@ -550,19 +636,16 @@
private void buildBindingMessageReferenceExtensions(
BindingMessageReferenceImpl bindMsgRef) {
+
+ /*
+ * Create a ComponentExtensions object for each registered extension
+ * namespace used within this binding message reference by extension
+ * elements or attributes.
+ */
ExtensionRegistry er = fDesc.getExtensionRegistry();
URI[] extNamespaces = er
.queryComponentExtensionNamespaces(BindingMessageReference.class);
- /*
- * Create a ComponentExtensions object for each registered
- * extension namespace used with this binding message reference.
- *
- * This component does not have any REQUIRED extension properties,
- * so no ComponentExtensions will be created automatically (i.e. to
- * handle default values where REQUIRED extensions are omitted from
- * the WSDL)
- */
for (int i = 0; i < extNamespaces.length; i++) {
URI extNS = extNamespaces[i];
if (bindMsgRef.hasExtensionAttributesForNamespace(extNS)
@@ -572,10 +655,62 @@
bindMsgRef.setComponentExtensions(extNS, compExt);
}
}
+
+ if (ComponentExtensions.URI_NS_SOAP.equals(fBindingType)) {
+ /*
+ * If the binding type is SOAP and a SOAPBindingMessageReferenceExtensions
+ * object has not already been created, create one now.
+ */
+ if (bindMsgRef
+ .getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_SOAP) == null) {
+ ComponentExtensions compExt = createComponentExtensions(
+ BindingMessageReference.class, bindMsgRef,
+ ComponentExtensions.URI_NS_SOAP);
+ bindMsgRef.setComponentExtensions(
+ ComponentExtensions.URI_NS_SOAP, compExt);
+ }
+
+ if (fIsSoapUnderlyingProtocolHttp) {
+ /*
+ * If the binding type is SOAP and the {soap underlying protocol}
+ * property is HTTP, then if an HTTPBindingMessageReferenceExtensions
+ * object has not already been created, create one now.
+ */
+ if (bindMsgRef
+ .getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_HTTP) == null) {
+ ComponentExtensions compExt = createComponentExtensions(
+ BindingMessageReference.class, bindMsgRef,
+ ComponentExtensions.URI_NS_HTTP);
+ bindMsgRef.setComponentExtensions(
+ ComponentExtensions.URI_NS_HTTP, compExt);
+ }
+ }
+ }
+
+ if (ComponentExtensions.URI_NS_HTTP.equals(fBindingType)) {
+ /*
+ * If the binding type is HTTP and an HTTPBindingMessageReferenceExtensions
+ * object has not already been created, create one now.
+ */
+ if (bindMsgRef
+ .getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_HTTP) == null) {
+ ComponentExtensions compExt = createComponentExtensions(
+ BindingMessageReference.class, bindMsgRef,
+ ComponentExtensions.URI_NS_HTTP);
+ bindMsgRef.setComponentExtensions(
+ ComponentExtensions.URI_NS_HTTP, compExt);
+ }
+ }
}
private void buildBindingFaultReferenceExtensions(
BindingFaultReferenceImpl bindFaultRef) {
+
+ /*
+ * Create a ComponentExtensions object for each registered extension
+ * namespace used within this binding message reference by extension
+ * elements or attributes.
+ */
ExtensionRegistry er = fDesc.getExtensionRegistry();
URI[] extNamespaces = er
.queryComponentExtensionNamespaces(BindingFaultReference.class);
@@ -589,6 +724,21 @@
bindFaultRef.setComponentExtensions(extNS, compExt);
}
}
+
+ if (ComponentExtensions.URI_NS_SOAP.equals(fBindingType)) {
+ /*
+ * If the binding type is SOAP and a SOAPBindingFaultReferenceExtensions
+ * object has not already been created, create one now.
+ */
+ if (bindFaultRef
+ .getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_SOAP) == null) {
+ ComponentExtensions compExt = createComponentExtensions(
+ BindingFaultReference.class, bindFaultRef,
+ ComponentExtensions.URI_NS_SOAP);
+ bindFaultRef.setComponentExtensions(
+ ComponentExtensions.URI_NS_SOAP, compExt);
+ }
+ }
}
private void buildServices(DescriptionImpl desc) {
@@ -614,14 +764,15 @@
private void buildEndpointExtensions(EndpointImpl endpoint) {
+ /*
+ * Create a ComponentExtensions object for each registered extension
+ * namespace used within this endpoint by extension
+ * elements or attributes.
+ */
ExtensionRegistry er = fDesc.getExtensionRegistry();
URI[] extNamespaces = er
.queryComponentExtensionNamespaces(Endpoint.class);
- /*
- * Create a ComponentExtensions object for each registered
- * extension namespace used with this endpoint.
- */
for (int i = 0; i < extNamespaces.length; i++) {
URI extNS = extNamespaces[i];
if (endpoint.hasExtensionAttributesForNamespace(extNS)
@@ -631,7 +782,27 @@
endpoint.setComponentExtensions(extNS, compExt);
}
}
-
+
+ if ((ComponentExtensions.URI_NS_SOAP.equals(fBindingType) &&
+ fIsSoapUnderlyingProtocolHttp)
+ ||
+ ComponentExtensions.URI_NS_HTTP.equals(fBindingType)) {
+
+ /*
+ * If the binding type is SOAP and the {soap underlying protocol}
+ * property is HTTP or if the binding type is HTTP, then if an
+ * HTTPEndpointExtensions object has not already been created,
+ * create one now.
+ */
+ if (endpoint
+ .getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_HTTP) == null) {
+ ComponentExtensions compExt = createComponentExtensions(
+ Endpoint.class, endpoint,
+ ComponentExtensions.URI_NS_HTTP);
+ endpoint.setComponentExtensions(
+ ComponentExtensions.URI_NS_HTTP, compExt);
+ }
+ }
}
/*
Modified: incubator/woden/branches/WODEN-40/src/org/apache/woden/internal/wsdl20/extensions/http/HTTPBindingOperationExtensionsImpl.java
URL: http://svn.apache.org/viewvc/incubator/woden/branches/WODEN-40/src/org/apache/woden/internal/wsdl20/extensions/http/HTTPBindingOperationExtensionsImpl.java?rev=419889&r1=419888&r2=419889&view=diff
==============================================================================
--- incubator/woden/branches/WODEN-40/src/org/apache/woden/internal/wsdl20/extensions/http/HTTPBindingOperationExtensionsImpl.java (original)
+++ incubator/woden/branches/WODEN-40/src/org/apache/woden/internal/wsdl20/extensions/http/HTTPBindingOperationExtensionsImpl.java Fri Jul 7 06:39:51 2006
@@ -204,21 +204,7 @@
StringAttr separator = (StringAttr) ((WSDLElement) fParent)
.getExtensionAttribute(HTTPConstants.Q_ATTR_QUERY_PARAMETER_SEPARATOR);
- if (separator != null) {
- return separator.getString();
- }
-
- //As per Part 2, 6.7.2.2.1 Construction of the query string, the
- //default is Binding {http query parameter separator default}.
-
- Binding binding = (Binding) ((BindingOperation) fParent).getParent();
-
- HTTPBindingExtensions httpBindExts = (HTTPBindingExtensions) binding
- .getComponentExtensionsForNamespace(HTTPConstants.NS_URI_HTTP);
-
- //No need for null check on httpBindExts because it has REQUIRED
- //properties, so it must be present.
- return httpBindExts.getHttpQueryParameterSeparatorDefault();
+ return separator != null ? separator.getString() : null;
}
/*
Modified: incubator/woden/branches/WODEN-40/src/org/apache/woden/internal/wsdl20/extensions/rpc/RPCConstants.java
URL: http://svn.apache.org/viewvc/incubator/woden/branches/WODEN-40/src/org/apache/woden/internal/wsdl20/extensions/rpc/RPCConstants.java?rev=419889&r1=419888&r2=419889&view=diff
==============================================================================
--- incubator/woden/branches/WODEN-40/src/org/apache/woden/internal/wsdl20/extensions/rpc/RPCConstants.java (original)
+++ incubator/woden/branches/WODEN-40/src/org/apache/woden/internal/wsdl20/extensions/rpc/RPCConstants.java Fri Jul 7 06:39:51 2006
@@ -16,6 +16,8 @@
package org.apache.woden.internal.wsdl20.extensions.rpc;
+import java.net.URI;
+
import javax.xml.namespace.QName;
/**
@@ -32,6 +34,7 @@
// Style URI
public static final String STYLE_URI_RPC = "http://www.w3.org/2006/01/wsdl/style/rpc";
+ public static final URI URI_STYLE_RPC = URI.create("http://www.w3.org/2006/01/wsdl/style/rpc");
// Attribute name
Modified: incubator/woden/branches/WODEN-40/test/org/apache/woden/wsdl20/extensions/http/HTTPBindingMessageReferenceExtensionsTest.java
URL: http://svn.apache.org/viewvc/incubator/woden/branches/WODEN-40/test/org/apache/woden/wsdl20/extensions/http/HTTPBindingMessageReferenceExtensionsTest.java?rev=419889&r1=419888&r2=419889&view=diff
==============================================================================
--- incubator/woden/branches/WODEN-40/test/org/apache/woden/wsdl20/extensions/http/HTTPBindingMessageReferenceExtensionsTest.java (original)
+++ incubator/woden/branches/WODEN-40/test/org/apache/woden/wsdl20/extensions/http/HTTPBindingMessageReferenceExtensionsTest.java Fri Jul 7 06:39:51 2006
@@ -157,29 +157,4 @@
}
- /**
- * Test that an HTTPBindingMessageReferenceExtensions object is not created
- * for a binding operation wsdl:input or wsdl:output message that does not
- * contain any HTTP extension extension attributes or elements (i.e. the
- * HTTP extension properties are OPTIONAL in the spec, so even though
- * {http transfer coding} defaults to {http transfer coding default} in
- * BindingOperation, it will not be present if the underlying message ref
- * element has not HTTP extensions).
- */
- public void testOptional() {
-
- BindingMessageReference[] bindMsgRefs = fBindOpers[1].getBindingMessageReferences();
- assertEquals("The second BindingOperation should contain 1 BindingMessageReference components.", 1, bindMsgRefs.length);
-
- BindingMessageReference inputMsg = bindMsgRefs[0];
- HTTPBindingMessageReferenceExtensions httpBindMsgRefExts =
- (HTTPBindingMessageReferenceExtensions) inputMsg
- .getComponentExtensionsForNamespace(
- ComponentExtensions.URI_NS_HTTP);
-
- assertNull("The BindingMessageReference contained an " +
- "HTTPBindingMessageReferenceExtensions object.",
- httpBindMsgRefExts);
- }
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: woden-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: woden-dev-help@ws.apache.org