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 ry...@apache.org on 2006/05/18 06:51:54 UTC

svn commit: r407454 [1/2] - in /incubator/woden/java: ant-test/ src/org/apache/woden/ant/ src/org/apache/woden/internal/util/ src/org/apache/woden/internal/wsdl20/extensions/ src/org/apache/woden/internal/wsdl20/extensions/rpc/ src/org/apache/woden/int...

Author: ryman
Date: Wed May 17 21:51:52 2006
New Revision: 407454

URL: http://svn.apache.org/viewvc?rev=407454&view=rev
Log:
Added supported for Interface Operation extensions wsdlx:safe and wrpc:signature

Added:
    incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/ExtensionConstants.java
    incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/InterfaceOperationExtensionsImpl.java
    incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/rpc/
    incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/rpc/RPCConstants.java
    incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/rpc/RPCInterfaceOperationExtensionsImpl.java
    incubator/woden/java/src/org/apache/woden/internal/xml/ArgumentArrayAttrImpl.java
    incubator/woden/java/src/org/apache/woden/xml/ArgumentArrayAttr.java
Modified:
    incubator/woden/java/ant-test/test-suite-results.zip
    incubator/woden/java/ant-test/test.xml
    incubator/woden/java/src/org/apache/woden/ant/WsdlCm.java
    incubator/woden/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java
    incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/PopulatedExtensionRegistry.java

Modified: incubator/woden/java/ant-test/test-suite-results.zip
URL: http://svn.apache.org/viewvc/incubator/woden/java/ant-test/test-suite-results.zip?rev=407454&r1=407453&r2=407454&view=diff
==============================================================================
Binary files - no diff available.

Modified: incubator/woden/java/ant-test/test.xml
URL: http://svn.apache.org/viewvc/incubator/woden/java/ant-test/test.xml?rev=407454&r1=407453&r2=407454&view=diff
==============================================================================
--- incubator/woden/java/ant-test/test.xml (original)
+++ incubator/woden/java/ant-test/test.xml Wed May 17 21:51:52 2006
@@ -1,382 +1,473 @@
-<descriptionComponent xmlns='http://www.w3.org/2002/ws/desc/wsdl/component' xml:id='id-18655235'>
+<descriptionComponent xmlns='http://www.w3.org/2002/ws/desc/wsdl/component'
+ xmlns:cmextensions='http://www.w3.org/2002/ws/desc/wsdl/component-extensions'
+ xmlns:cmhttp='http://www.w3.org/2002/ws/desc/wsdl/component-http'
+ xmlns:cmrpc='http://www.w3.org/2002/ws/desc/wsdl/component-rpc'
+ xmlns:cmsoap='http://www.w3.org/2002/ws/desc/wsdl/component-soap'
+xml:id='id-18055655'>
   <interfaces>
-    <interfaceComponent xml:id='id-22266741'>
+    <interfaceComponent xml:id='id-24417480'>
       <name>
-        <namespaceName>http://example.org/name</namespaceName>
-        <localName>NameInterface</localName>
+        <namespaceName>http://greath.example.com/2004/wsdl/resSvc</namespaceName>
+        <localName>reservationInterface</localName>
       </name>
+      <interfaceFaults>
+        <interfaceFaultComponent xml:id='id-22507120'>
+          <name>
+            <namespaceName>http://greath.example.com/2004/wsdl/resSvc</namespaceName>
+            <localName>invalidDataFault</localName>
+          </name>
+          <elementDeclaration ref='id-14927396'/>
+          <parent ref='id-24417480'/>
+        </interfaceFaultComponent>
+      </interfaceFaults>
       <interfaceOperations>
-        <interfaceOperationComponent xml:id='id-6393126'>
+        <interfaceOperationComponent xml:id='id-30931963'>
           <name>
-            <namespaceName>http://example.org/name</namespaceName>
-            <localName>getNameFromSIN</localName>
+            <namespaceName>http://greath.example.com/2004/wsdl/resSvc</namespaceName>
+            <localName>opCheckAvailability</localName>
           </name>
           <messageExchangePattern>http://www.w3.org/2006/01/wsdl/in-out</messageExchangePattern>
           <interfaceMessageReferences>
-            <interfaceMessageReferenceComponent xml:id='id-2569862'>
+            <interfaceMessageReferenceComponent xml:id='id-8949356'>
               <messageLabel>In</messageLabel>
               <direction>in</direction>
               <messageContentModel>#element</messageContentModel>
-              <elementDeclaration ref='id-7122710'/>
-              <parent ref='id-6393126'/>
+              <elementDeclaration ref='id-20863188'/>
+              <parent ref='id-30931963'/>
             </interfaceMessageReferenceComponent>
-            <interfaceMessageReferenceComponent xml:id='id-22730182'>
+            <interfaceMessageReferenceComponent xml:id='id-3794357'>
               <messageLabel>Out</messageLabel>
               <direction>out</direction>
               <messageContentModel>#element</messageContentModel>
-              <elementDeclaration ref='id-8970973'/>
-              <parent ref='id-6393126'/>
+              <elementDeclaration ref='id-18346782'/>
+              <parent ref='id-30931963'/>
             </interfaceMessageReferenceComponent>
           </interfaceMessageReferences>
-          <parent ref='id-22266741'/>
+          <interfaceFaultReferences>
+            <interfaceFaultReferenceComponent xml:id='id-6251267'>
+              <interfaceFault ref='id-22507120'/>
+              <messageLabel>Out</messageLabel>
+              <direction>out</direction>
+              <parent ref='id-30931963'/>
+            </interfaceFaultReferenceComponent>
+          </interfaceFaultReferences>
+          <style>
+            <uri>http://www.w3.org/2006/01/wsdl/style/rpc</uri>
+          </style>
+          <parent ref='id-24417480'/>
+          <cmrpc:rpcSignature>
+            <cmrpc:argument>
+              <cmrpc:name>
+                <namespaceName>http://greath.example.com/2004/schemas/resSvc</namespaceName>
+                <localName>checkInDate</localName>
+              </cmrpc:name>
+              <cmrpc:direction>#in</cmrpc:direction>
+            </cmrpc:argument>
+            <cmrpc:argument>
+              <cmrpc:name>
+                <namespaceName>http://greath.example.com/2004/schemas/resSvc</namespaceName>
+                <localName>checkOutDate</localName>
+              </cmrpc:name>
+              <cmrpc:direction>#in</cmrpc:direction>
+            </cmrpc:argument>
+            <cmrpc:argument>
+              <cmrpc:name>
+                <namespaceName>http://greath.example.com/2004/schemas/resSvc</namespaceName>
+                <localName>roomType</localName>
+              </cmrpc:name>
+              <cmrpc:direction>#in</cmrpc:direction>
+            </cmrpc:argument>
+            <cmrpc:argument>
+              <cmrpc:name>
+                <namespaceName>http://greath.example.com/2004/schemas/resSvc</namespaceName>
+                <localName>availability</localName>
+              </cmrpc:name>
+              <cmrpc:direction>#return</cmrpc:direction>
+            </cmrpc:argument>
+          </cmrpc:rpcSignature>
         </interfaceOperationComponent>
       </interfaceOperations>
     </interfaceComponent>
   </interfaces>
   <bindings>
-    <bindingComponent xml:id='id-2112561'>
+    <bindingComponent xml:id='id-15081425'>
       <name>
-        <namespaceName>http://example.org/name</namespaceName>
-        <localName>NameBinding</localName>
+        <namespaceName>http://greath.example.com/2004/wsdl/resSvc</namespaceName>
+        <localName>reservationSOAPBinding</localName>
       </name>
-      <interface ref='id-22266741'/>
+      <interface ref='id-24417480'/>
       <type>http://www.w3.org/2006/01/wsdl/soap</type>
+      <bindingFaults>
+        <bindingFaultComponent xml:id='id-7760420'>
+          <interfaceFault ref='id-22507120'/>
+          <parent ref='id-15081425'/>
+        </bindingFaultComponent>
+      </bindingFaults>
       <bindingOperations>
-        <bindingOperationComponent xml:id='id-1977511'>
-          <interfaceOperation ref='id-6393126'/>
-          <parent ref='id-2112561'/>
+        <bindingOperationComponent xml:id='id-24595355'>
+          <interfaceOperation ref='id-30931963'/>
+          <parent ref='id-15081425'/>
         </bindingOperationComponent>
       </bindingOperations>
     </bindingComponent>
   </bindings>
   <services>
-    <serviceComponent xml:id='id-30533424'>
+    <serviceComponent xml:id='id-9818046'>
       <name>
-        <namespaceName>http://example.org/name</namespaceName>
-        <localName>NameService</localName>
+        <namespaceName>http://greath.example.com/2004/wsdl/resSvc</namespaceName>
+        <localName>reservationService</localName>
       </name>
-      <interface ref='id-22266741'/>
+      <interface ref='id-24417480'/>
       <endpoints>
-        <endpointComponent xml:id='id-14620722'>
-          <name>NameSOAPHTTPEndpoint</name>
-          <binding ref='id-2112561'/>
-          <parent ref='id-30533424'/>
+        <endpointComponent xml:id='id-26542488'>
+          <name>reservationEndpoint</name>
+          <binding ref='id-15081425'/>
+          <address>http://greath.example.com/2004/reservation</address>
+          <parent ref='id-9818046'/>
         </endpointComponent>
       </endpoints>
     </serviceComponent>
   </services>
   <elementDeclarations>
-    <elementDeclarationComponent xml:id='id-8970973'>
+    <elementDeclarationComponent xml:id='id-14927396'>
       <name>
-        <namespaceName>http://example.org/name</namespaceName>
-        <localName>Name</localName>
+        <namespaceName>http://greath.example.com/2004/schemas/resSvc</namespaceName>
+        <localName>invalidDataError</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </elementDeclarationComponent>
-    <elementDeclarationComponent xml:id='id-7122710'>
+    <elementDeclarationComponent xml:id='id-20863188'>
       <name>
-        <namespaceName>http://example.org/name</namespaceName>
-        <localName>SIN</localName>
+        <namespaceName>http://greath.example.com/2004/schemas/resSvc</namespaceName>
+        <localName>opCheckAvailability</localName>
+      </name>
+      <system>http://www.w3.org/2001/XMLSchema</system>
+    </elementDeclarationComponent>
+    <elementDeclarationComponent xml:id='id-18346782'>
+      <name>
+        <namespaceName>http://greath.example.com/2004/schemas/resSvc</namespaceName>
+        <localName>opCheckAvailabilityResponse</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </elementDeclarationComponent>
   </elementDeclarations>
   <typeDefinitions>
-    <typeDefinitionComponent xml:id='id-6504030'>
+    <typeDefinitionComponent xml:id='id-31820984'>
+      <name>
+        <namespaceName>http://greath.example.com/2004/schemas/resSvc</namespaceName>
+        <localName>tCheckAvailability</localName>
+      </name>
+      <system>http://www.w3.org/2001/XMLSchema</system>
+    </typeDefinitionComponent>
+    <typeDefinitionComponent xml:id='id-24744797'>
+      <name>
+        <namespaceName>http://greath.example.com/2004/schemas/resSvc</namespaceName>
+        <localName>tCheckAvailabilityResponse</localName>
+      </name>
+      <system>http://www.w3.org/2001/XMLSchema</system>
+    </typeDefinitionComponent>
+    <typeDefinitionComponent xml:id='id-12182618'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>ENTITIES</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-26460367'>
+    <typeDefinitionComponent xml:id='id-4126736'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>ENTITY</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-22507120'>
+    <typeDefinitionComponent xml:id='id-421988'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>ID</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-18055655'>
+    <typeDefinitionComponent xml:id='id-12376621'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>IDREF</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-28678543'>
+    <typeDefinitionComponent xml:id='id-9949215'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>IDREFS</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-24417480'>
+    <typeDefinitionComponent xml:id='id-14721926'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>NCName</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-13884241'>
+    <typeDefinitionComponent xml:id='id-1043272'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>NMTOKEN</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-31817359'>
+    <typeDefinitionComponent xml:id='id-18871350'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>NMTOKENS</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-30931963'>
+    <typeDefinitionComponent xml:id='id-14301726'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>NOTATION</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-14688457'>
+    <typeDefinitionComponent xml:id='id-18725445'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>Name</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-20863188'>
+    <typeDefinitionComponent xml:id='id-11549664'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>QName</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-3794357'>
+    <typeDefinitionComponent xml:id='id-2814081'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>anyURI</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-18346782'>
+    <typeDefinitionComponent xml:id='id-18064701'>
+      <name>
+        <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
+        <localName>base64Binary</localName>
+      </name>
+      <system>http://www.w3.org/2001/XMLSchema</system>
+    </typeDefinitionComponent>
+    <typeDefinitionComponent xml:id='id-12929374'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>boolean</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-22700073'>
+    <typeDefinitionComponent xml:id='id-5503831'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>byte</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-6251267'>
+    <typeDefinitionComponent xml:id='id-26882784'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>date</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-6131844'>
+    <typeDefinitionComponent xml:id='id-8534260'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>dateTime</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-12245160'>
+    <typeDefinitionComponent xml:id='id-23668144'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>decimal</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-15081425'>
+    <typeDefinitionComponent xml:id='id-2719739'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>double</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-3346521'>
+    <typeDefinitionComponent xml:id='id-9523050'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>duration</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-7760420'>
+    <typeDefinitionComponent xml:id='id-32820206'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>float</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-3307594'>
+    <typeDefinitionComponent xml:id='id-7896426'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>gDay</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-4171180'>
+    <typeDefinitionComponent xml:id='id-7461949'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>gMonth</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-9818046'>
+    <typeDefinitionComponent xml:id='id-20079748'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>gMonthDay</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-24763620'>
+    <typeDefinitionComponent xml:id='id-23414511'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>gYear</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-26542488'>
+    <typeDefinitionComponent xml:id='id-1321194'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>gYearMonth</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-26980954'>
+    <typeDefinitionComponent xml:id='id-25840096'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>hexBinary</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-14314484'>
+    <typeDefinitionComponent xml:id='id-33040770'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>int</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-31820984'>
+    <typeDefinitionComponent xml:id='id-23930419'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>integer</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-24744797'>
+    <typeDefinitionComponent xml:id='id-15142448'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>language</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-12182618'>
+    <typeDefinitionComponent xml:id='id-22316618'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>long</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-4126736'>
+    <typeDefinitionComponent xml:id='id-3969559'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>negativeInteger</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-1049443'>
+    <typeDefinitionComponent xml:id='id-10175206'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>nonNegativeInteger</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-21925102'>
+    <typeDefinitionComponent xml:id='id-24389376'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>nonPositiveInteger</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-421988'>
+    <typeDefinitionComponent xml:id='id-11317592'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>normalizedString</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-12376621'>
+    <typeDefinitionComponent xml:id='id-28259286'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>positiveInteger</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-9949215'>
+    <typeDefinitionComponent xml:id='id-24392121'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>short</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-14721926'>
+    <typeDefinitionComponent xml:id='id-23886295'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>string</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-1043272'>
+    <typeDefinitionComponent xml:id='id-11746570'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>time</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-18871350'>
+    <typeDefinitionComponent xml:id='id-23894119'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>token</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-14301726'>
+    <typeDefinitionComponent xml:id='id-9030750'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>unsignedByte</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-18725445'>
+    <typeDefinitionComponent xml:id='id-13121485'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>unsignedInt</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-11549664'>
+    <typeDefinitionComponent xml:id='id-13080585'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>unsignedLong</localName>
       </name>
       <system>http://www.w3.org/2001/XMLSchema</system>
     </typeDefinitionComponent>
-    <typeDefinitionComponent xml:id='id-2814081'>
+    <typeDefinitionComponent xml:id='id-30308427'>
       <name>
         <namespaceName>http://www.w3.org/2001/XMLSchema</namespaceName>
         <localName>unsignedShort</localName>

Modified: incubator/woden/java/src/org/apache/woden/ant/WsdlCm.java
URL: http://svn.apache.org/viewvc/incubator/woden/java/src/org/apache/woden/ant/WsdlCm.java?rev=407454&r1=407453&r2=407454&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/ant/WsdlCm.java (original)
+++ incubator/woden/java/src/org/apache/woden/ant/WsdlCm.java Wed May 17 21:51:52 2006
@@ -28,11 +28,8 @@
  * 
  * @author ryman@ca.ibm.com, aka arthur-ryman@gmail.com
  * 
- * TODO: check if base64Binary is included as built-in primitive type
- * TODO: test wsdlx:safe extension
- * TODO: test wrpc:signature extension
- * TODO: test wsoap extension
- * TODO: test whttp extension
+ * TODO: test wsdlx:safe extension TODO: test wrpc:signature extension TODO:
+ * test wsoap extension TODO: test whttp extension
  */
 
 import java.io.File;
@@ -109,12 +106,12 @@
 	private static String[] XSD_TYPES = { "string", "boolean", "decimal",
 			"float", "double", "duration", "dateTime", "time", "date",
 			"gYearMonth", "gYear", "gMonthDay", "gDay", "gMonth", "hexBinary",
-			"base64Binary", "anyURI", "QName", "NOTATION",
-			"normalizedString", "token", "language", "NMTOKEN", "NMTOKENS",
-			"Name", "NCName", "ID", "IDREF", "IDREFS", "ENTITY", "ENTITIES",
-			"integer", "nonPositiveInteger", "negativeInteger", "long", "int",
-			"short", "byte", "nonNegativeInteger", "unsignedLong",
-			"unsignedInt", "unsignedShort", "unsignedByte", "positiveInteger" };
+			"base64Binary", "anyURI", "QName", "NOTATION", "normalizedString",
+			"token", "language", "NMTOKEN", "NMTOKENS", "Name", "NCName", "ID",
+			"IDREF", "IDREFS", "ENTITY", "ENTITIES", "integer",
+			"nonPositiveInteger", "negativeInteger", "long", "int", "short",
+			"byte", "nonNegativeInteger", "unsignedLong", "unsignedInt",
+			"unsignedShort", "unsignedByte", "positiveInteger" };
 
 	{
 		Arrays.sort(XSD_TYPES);
@@ -388,24 +385,32 @@
 		RPCInterfaceOperationExtensions rpcExtensions = (RPCInterfaceOperationExtensions) component
 				.getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_RPC);
 		if (rpcExtensions != null) {
-			write(WSDLCMRPC_PREFIX + ":rpcSignature", rpcExtensions.getRPCSignature());
+			write(WSDLCMRPC_PREFIX + ":rpcSignature", rpcExtensions
+					.getRPCSignature());
 		}
 
 		endElement();
 	}
 
 	private void write(String tag, Argument[] rpcSignature) {
-		
+
+		beginElement(tag);
 		for (int i = 0; i < rpcSignature.length; i++) {
-			
-			write(WSDLCMRPC_PREFIX + ":argumet", rpcSignature[i]);
-			
+
+			write(WSDLCMRPC_PREFIX + ":argument", rpcSignature[i]);
 		}
+		endElement();
 	}
 
 	private void write(String tag, Argument argument) {
-			write(WSDLCMRPC_PREFIX + ":name", argument.getName());
-			write(WSDLCMRPC_PREFIX + ":direction", argument.getDirection().toString());
+
+		beginElement(tag);
+		
+		write(WSDLCMRPC_PREFIX + ":name", argument.getName());
+		write(WSDLCMRPC_PREFIX + ":direction", argument.getDirection()
+				.toString());
+		
+		endElement();
 	}
 
 	private void write(String tag, InterfaceMessageReference[] components) {
@@ -537,25 +542,24 @@
 		write("bindingOperations", component.getBindingOperations());
 		write("features", component.getFeatures());
 		write("properties", component.getProperties());
-		
-//		<!-- HTTP Binding Extension -->
-//		<xs:element ref="cmhttp:httpCookies" minOccurs="0" />
-//		<xs:element ref="cmhttp:httpMethodDefault"
-//			minOccurs="0" />
-//		<xs:element
-//			ref="cmhttp:httpQueryParameterSeparatorDefault" minOccurs="0" />
-//		<xs:element ref="cmhttp:httpTransferCodingDefault"
-//			minOccurs="0" />
-//
-//		<!-- SOAP Binding Extension -->
-//		<xs:element ref="cmsoap:soapMepDefault"
-//			minOccurs="0" />
-//		<xs:element ref="cmsoap:soapModules" minOccurs="0" />
-//		<xs:element ref="cmsoap:soapUnderlyingProtocol"
-//			minOccurs="0" />
-//		<xs:element ref="cmsoap:soapVersion" minOccurs="0" />
-//
 
+		// <!-- HTTP Binding Extension -->
+		// <xs:element ref="cmhttp:httpCookies" minOccurs="0" />
+		// <xs:element ref="cmhttp:httpMethodDefault"
+		// minOccurs="0" />
+		// <xs:element
+		// ref="cmhttp:httpQueryParameterSeparatorDefault" minOccurs="0" />
+		// <xs:element ref="cmhttp:httpTransferCodingDefault"
+		// minOccurs="0" />
+		//
+		// <!-- SOAP Binding Extension -->
+		// <xs:element ref="cmsoap:soapMepDefault"
+		// minOccurs="0" />
+		// <xs:element ref="cmsoap:soapModules" minOccurs="0" />
+		// <xs:element ref="cmsoap:soapUnderlyingProtocol"
+		// minOccurs="0" />
+		// <xs:element ref="cmsoap:soapVersion" minOccurs="0" />
+		//
 
 		endElement();
 	}
@@ -603,20 +607,20 @@
 		write("properties", component.getProperties());
 		writeRef("parent", component.getParent());
 
-//		<!-- HTTP Binding Extension -->
-//		<xs:element ref="cmhttp:httpErrorStatusCode"
-//			minOccurs="0" />
-//		<xs:element ref="cmhttp:httpHeaders" minOccurs="0" />
-//		<xs:element ref="cmhttp:httpTransferCoding"
-//			minOccurs="0" />
-//
-//		<!-- SOAP Binding Extension -->
-//		<xs:element ref="cmsoap:soapFaultCode"
-//			minOccurs="0" />
-//		<xs:element ref="cmsoap:soapFaultSubcodes"
-//			minOccurs="0" />
-//		<xs:element ref="cmsoap:soapHeaders" minOccurs="0" />
-//		<xs:element ref="cmsoap:soapModules" minOccurs="0" />
+		// <!-- HTTP Binding Extension -->
+		// <xs:element ref="cmhttp:httpErrorStatusCode"
+		// minOccurs="0" />
+		// <xs:element ref="cmhttp:httpHeaders" minOccurs="0" />
+		// <xs:element ref="cmhttp:httpTransferCoding"
+		// minOccurs="0" />
+		//
+		// <!-- SOAP Binding Extension -->
+		// <xs:element ref="cmsoap:soapFaultCode"
+		// minOccurs="0" />
+		// <xs:element ref="cmsoap:soapFaultSubcodes"
+		// minOccurs="0" />
+		// <xs:element ref="cmsoap:soapHeaders" minOccurs="0" />
+		// <xs:element ref="cmsoap:soapModules" minOccurs="0" />
 
 		endElement();
 	}
@@ -657,26 +661,26 @@
 		write("properties", component.getProperties());
 		writeRef("parent", component.getParent());
 
-//		<!-- HTTP Binding Extension -->
-//		<xs:element ref="cmhttp:httpFaultSerialization"
-//			minOccurs="0" />
-//		<xs:element ref="cmhttp:httpInputSerialization"
-//			minOccurs="0" />
-//		<xs:element ref="cmhttp:httpLocation" minOccurs="0" />
-//		<xs:element ref="cmhttp:httpLocationIgnoreUncited"
-//			minOccurs="0" />
-//		<xs:element ref="cmhttp:httpMethod" minOccurs="0" />
-//		<xs:element ref="cmhttp:httpOutputSerialization"
-//			minOccurs="0" />
-//		<xs:element ref="cmhttp:httpQueryParameterSeparator"
-//			minOccurs="0" />
-//		<xs:element ref="cmhttp:httpTransferCodingDefault"
-//			minOccurs="0" />
-//
-//		<!-- SOAP Binding Extension -->
-//		<xs:element ref="cmsoap:soapAction" minOccurs="0" />
-//		<xs:element ref="cmsoap:soapMep" minOccurs="0" />
-//		<xs:element ref="cmsoap:soapModules" minOccurs="0" />
+		// <!-- HTTP Binding Extension -->
+		// <xs:element ref="cmhttp:httpFaultSerialization"
+		// minOccurs="0" />
+		// <xs:element ref="cmhttp:httpInputSerialization"
+		// minOccurs="0" />
+		// <xs:element ref="cmhttp:httpLocation" minOccurs="0" />
+		// <xs:element ref="cmhttp:httpLocationIgnoreUncited"
+		// minOccurs="0" />
+		// <xs:element ref="cmhttp:httpMethod" minOccurs="0" />
+		// <xs:element ref="cmhttp:httpOutputSerialization"
+		// minOccurs="0" />
+		// <xs:element ref="cmhttp:httpQueryParameterSeparator"
+		// minOccurs="0" />
+		// <xs:element ref="cmhttp:httpTransferCodingDefault"
+		// minOccurs="0" />
+		//
+		// <!-- SOAP Binding Extension -->
+		// <xs:element ref="cmsoap:soapAction" minOccurs="0" />
+		// <xs:element ref="cmsoap:soapMep" minOccurs="0" />
+		// <xs:element ref="cmsoap:soapModules" minOccurs="0" />
 
 		endElement();
 	}
@@ -719,14 +723,14 @@
 		write("properties", component.getProperties());
 		writeRef("parent", component.getParent());
 
-//		<!-- HTTP Binding Extension -->
-//		<xs:element ref="cmhttp:httpHeaders" minOccurs="0" />
-//		<xs:element ref="cmhttp:httpTransferCoding"
-//			minOccurs="0" />
-//
-//		<!-- SOAP Binding Extension -->
-//		<xs:element ref="cmsoap:soapHeaders" minOccurs="0" />
-//		<xs:element ref="cmsoap:soapModules" minOccurs="0" />
+		// <!-- HTTP Binding Extension -->
+		// <xs:element ref="cmhttp:httpHeaders" minOccurs="0" />
+		// <xs:element ref="cmhttp:httpTransferCoding"
+		// minOccurs="0" />
+		//
+		// <!-- SOAP Binding Extension -->
+		// <xs:element ref="cmsoap:soapHeaders" minOccurs="0" />
+		// <xs:element ref="cmsoap:soapModules" minOccurs="0" />
 
 		endElement();
 	}
@@ -776,8 +780,8 @@
 		write("properties", component.getProperties());
 		writeRef("parent", component.getParent());
 
-//		<!-- SOAP Binding Extension -->
-//		<xs:element ref="cmsoap:soapModules" minOccurs="0" />
+		// <!-- SOAP Binding Extension -->
+		// <xs:element ref="cmsoap:soapModules" minOccurs="0" />
 
 		endElement();
 	}
@@ -1073,7 +1077,7 @@
 
 		if (uris.length == 0)
 			return;
-		
+
 		Arrays.sort(uris);
 
 		beginElement(tag);

Modified: incubator/woden/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java
URL: http://svn.apache.org/viewvc/incubator/woden/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java?rev=407454&r1=407453&r2=407454&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java (original)
+++ incubator/woden/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java Wed May 17 21:51:52 2006
@@ -32,6 +32,8 @@
 import org.apache.woden.internal.wsdl20.Constants;
 import org.apache.woden.internal.wsdl20.DescriptionImpl;
 import org.apache.woden.internal.wsdl20.ElementDeclarationImpl;
+import org.apache.woden.internal.wsdl20.InterfaceImpl;
+import org.apache.woden.internal.wsdl20.InterfaceOperationImpl;
 import org.apache.woden.internal.wsdl20.TypeDefinitionImpl;
 import org.apache.woden.internal.wsdl20.TypesImpl;
 import org.apache.woden.internal.wsdl20.extensions.ComponentExtensionsImpl;
@@ -40,6 +42,7 @@
 import org.apache.woden.wsdl20.BindingFaultReference;
 import org.apache.woden.wsdl20.BindingMessageReference;
 import org.apache.woden.wsdl20.BindingOperation;
+import org.apache.woden.wsdl20.InterfaceOperation;
 import org.apache.woden.wsdl20.extensions.ComponentExtensions;
 import org.apache.woden.wsdl20.extensions.ExtensionRegistry;
 import org.apache.woden.wsdl20.extensions.soap.SOAPBindingExtensions;
@@ -51,451 +54,508 @@
 import org.apache.woden.wsdl20.xml.DescriptionElement;
 import org.apache.woden.wsdl20.xml.ImportElement;
 import org.apache.woden.wsdl20.xml.IncludeElement;
+import org.apache.woden.wsdl20.xml.InterfaceElement;
+import org.apache.woden.wsdl20.xml.InterfaceOperationElement;
 import org.apache.woden.wsdl20.xml.TypesElement;
 import org.apache.woden.wsdl20.xml.WSDLElement;
 import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaObjectTable;
 
 /**
- * Converts the xml representation of a WSDL document to the WSDL
- * component model representation defined by the W3C WSDL 2.0 spec.
- * The xml model is contained within a DescriptionElement object.
- * The component model is contained within a Description object.
+ * Converts the xml representation of a WSDL document to the WSDL component
+ * model representation defined by the W3C WSDL 2.0 spec. The xml model is
+ * contained within a DescriptionElement object. The component model is
+ * contained within a Description object.
  * 
- * TODO consider moving this logic inside DescriptionImpl, maybe as an inner class.
+ * TODO consider moving this logic inside DescriptionImpl, maybe as an inner
+ * class.
  * 
  * @author jkaputin@apache.org
+ * @author Arthur Ryman (ryman@ca.ibm.com) - added Interface Operation
+ *         extensions
  */
 public class ComponentModelBuilder {
-    
-    //TODO support for other (non-Schema) type systems
 
-    private DescriptionImpl fDesc;
-    //TODO private ErrorReporter fErrorRpt;  see todo in buildElementDeclarations()
-    private List fSchemasDone = new Vector();
-    private List fBindingsDone = new Vector();
-    
-    public ComponentModelBuilder(DescriptionImpl desc)
-    {
-        fDesc = desc;
-        //TODO fErrorRpt = errorRpt;  see todo in buildElementDeclarations()
-        initComponents(fDesc);
-    }
-    
-    private void initComponents(DescriptionImpl desc)
-    {
-        
-        buildElementsAndTypes(desc);
-        buildBindings(desc);
-        
-        IncludeElement[] includes = desc.getIncludeElements();
-        for(int i = 0; i < includes.length; i++)
-        {
-            DescriptionElement inclDesc = includes[i].getDescriptionElement();
-            if(inclDesc != null)
-            {
-                initComponents((DescriptionImpl)inclDesc);
-            }
-        }
-        
-        ImportElement[] imports = desc.getImportElements();
-        for(int i = 0; i < imports.length; i++)
-        {
-            DescriptionElement impDesc = imports[i].getDescriptionElement();
-            if(impDesc != null)
-            {
-                initComponents((DescriptionImpl)impDesc);
-            }
-        }
-    }
-    
-    /* *******************************************************************************
-     *  TYPES
-     * ******************************************************************************/
-    
-    /*
-     * Extract from the collections of in-scope schemas
-     * the element declarations and type definitions.
-     */
-    private void buildElementsAndTypes(DescriptionImpl desc)
-    {
-        TypesElement types = desc.getTypesElement();
-        
-        URI typeSystemURI = null;
-        try {
-            typeSystemURI = new URI(Constants.TYPE_XSD_2001);
-        } catch (URISyntaxException e) {
-            //TODO this code will propagate 'throws WSDLException' up through the
-            //method call path to the API getter methods of the Component model. Try to
-            //find a better way of initializing the Component model without this 
-            //consequence, if possible.
-            //
-            //String msg = fErrorRpt.getFormattedMessage(
-            //                          "WSDL506", 
-            //                          new Object[] {Constants.TYPE_XSD_2001});
-            //throw new WSDLException(WSDLException.CONFIGURATION_ERROR, msg, e);
-        }
-        
-        if(types != null)
-        {
-        	List referenceableSchemaDefs = ((TypesImpl)types).getReferenceableSchemaDefs();
-        	Iterator i = referenceableSchemaDefs.iterator();
-        	while(i.hasNext())
-        	{
-        		XmlSchema schemaDef = (XmlSchema)i.next();
-                
-                //Following code is a work around for a bug in XmlSchemaObject.equals - this method
-                //gets invoked via List.contains(o), but currently it always return true!!!
-                
-                boolean newSchema = true;
-                for(Iterator i2 = fSchemasDone.iterator(); i2.hasNext();)
-                {
-                    XmlSchema schemaDone = (XmlSchema)i2.next();
-                    if(schemaDef == schemaDone) {
-                        newSchema = false;
-                        break;
-                    }
-                }
-                
-                //if(!fSchemasDone.contains(schemaDef)) TODO re-instate when XmlSchemaObject.equals bug is fixed
-                if(newSchema)
-                {
-                    buildElementDeclarations(schemaDef, typeSystemURI);
-                    buildTypeDefinitions(schemaDef, typeSystemURI);
-                    fSchemasDone.add(schemaDef);
-                }
-        	}
-        }
-    }
-
-    /*
-     * Extract the element declarations from the given schema. 
-     */
-    private void buildElementDeclarations(XmlSchema schemaDef, URI typeSystemURI)
-    {
-        String schemaTns = schemaDef.getTargetNamespace();
-        if(schemaTns != null)
-        {
-            XmlSchemaObjectTable elementTable = schemaDef.getElements();
-            Iterator qnames = elementTable.getNames();
-            while(qnames.hasNext())
-            {
-                QName qname = (QName)qnames.next();
-                
-                if(qname.getNamespaceURI().equals(schemaTns))
-                {
-                    ElementDeclarationImpl ed = new ElementDeclarationImpl();
-                    ed.setName(qname);
-                    ed.setSystem(typeSystemURI);
-                    ed.setContentModel(Constants.API_APACHE_WS_XS);
-                    ed.setContent(elementTable.getItem(qname));
-                    fDesc.addElementDeclaration(ed);
-                }
-            }
-        }
-    }
-        
-    /*
-     * Extract the type definitions from the given schema. 
-     */
-    private void buildTypeDefinitions(XmlSchema schemaDef, URI typeSystemURI)
-    {
-        String schemaTns = schemaDef.getTargetNamespace();
-        if(schemaTns != null)
-        {
-            XmlSchemaObjectTable typeTable = schemaDef.getSchemaTypes();
-            Iterator qnames = typeTable.getNames();
-            while(qnames.hasNext())
-            {
-                QName qname = (QName)qnames.next();
-                
-                if(qname.getNamespaceURI().equals(schemaTns))
-                {
-                    TypeDefinitionImpl td = new TypeDefinitionImpl();
-                    td.setName(qname);
-                    td.setSystem(typeSystemURI);
-                    td.setContentModel(Constants.API_APACHE_WS_XS);
-                    td.setContent(typeTable.getItem(qname));
-                    fDesc.addTypeDefinition(td);
-                }
-            }
-        }
-    }
-
-
-
-    
-    /* *******************************************************************************
-     *  BINDING
-     * ******************************************************************************/
-    
-    /*
-     * Initialize the Binding component and its child components from the
-     * BindingElement and its child elements.
-     */
-    private void buildBindings(DescriptionImpl desc)
-    {
-        BindingElement[] bindingEls = desc.getBindingElements();
-        for(int i=0; i<bindingEls.length; i++)
-        {
-            BindingImpl bindImpl = (BindingImpl)bindingEls[i];
-            if(!fBindingsDone.contains(bindImpl))
-            {
-                buildBindingFaults(bindImpl);
-                buildBindingOperations(bindImpl);
-                buildBindingExtensions(bindImpl);
-                fBindingsDone.add(bindImpl);
-            }
-        }
-    }
-    
-    private void buildBindingFaults(BindingImpl binding)
-    {
-        BindingFaultElement[] bindFaults = binding.getBindingFaultElements();
-        for(int i=0; i<bindFaults.length; i++)
-        {
-            BindingFaultImpl bindFault = (BindingFaultImpl)bindFaults[i];
-            buildBindingFaultExtensions(bindFault);
-        }
-    }
-    
-    private void buildBindingOperations(BindingImpl binding)
-    {
-        BindingOperationElement[] operations = binding.getBindingOperationElements();
-        for(int i=0; i<operations.length; i++)
-        {
-            BindingOperationImpl oper = (BindingOperationImpl)operations[i];
-            buildBindingFaultReferences(oper);
-            buildBindingMessageReferences(oper);
-            buildBindingOperationExtensions(oper);
-        }
-    }
-    
-    private void buildBindingFaultReferences(BindingOperationImpl oper)
-    {
-        BindingFaultReferenceElement[] faultRefs = oper.getBindingFaultReferenceElements();
-        for(int i=0; i<faultRefs.length; i++)
-        {
-            BindingFaultReferenceImpl faultRef = (BindingFaultReferenceImpl)faultRefs[i];
-            
-            buildBindingFaultReferenceExtensions(faultRef);
-
-        }
-    }
-    
-    private void buildBindingMessageReferences(BindingOperationImpl oper)
-    {
-        BindingMessageReferenceElement[] messages = oper.getBindingMessageReferenceElements();
-        for(int i=0; i<messages.length; i++)
-        {
-            BindingMessageReferenceImpl message = (BindingMessageReferenceImpl)messages[i];
-            
-            buildBindingMessageReferenceExtensions(message);
-        }
-    }
-    
-    private void buildBindingExtensions(BindingImpl binding)
-    {
-        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) || 
-               binding.hasExtensionElementsForNamespace(extNS))
-            {
-                ComponentExtensions compExt = createComponentExtensions(Binding.class, binding, extNS);
-                binding.setComponentExtensions(extNS, compExt);
-            }
-        }
-        
-        /*
-         * Second, apply the rules from WSDL 2.0 Part 2 Adjuncts spec for default values for SOAP and HTTP 
-         * extension properties to create ComponentExtension objects even if the related extension attributes
-         * or elements do not exist in the WSDL. 
-         * 
-         * TODO chg this hardcoded behaviour so that any default rules for SOAP, HTTP or user-defined
-         * extensions can be registered in some way and interpreted here at run time.
-         */
-        if( ComponentExtensions.URI_NS_SOAP.equals(binding.getType()) )
-        {
-            /* 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(binding.getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_SOAP) == null)
-            {
-                ComponentExtensions compExt = createComponentExtensions(Binding.class, binding, ComponentExtensions.URI_NS_SOAP);
-                binding.setComponentExtensions(ComponentExtensions.URI_NS_SOAP, compExt);
-            }
-            
-            SOAPBindingExtensions sbe = 
-                (SOAPBindingExtensions) binding.getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_SOAP);
-            
-            if( ComponentExtensions.URI_NS_HTTP.equals(sbe.getSoapUnderlyingProtocol()) )
-            {
-                /*
-                 * 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.
-                 */
-                
-                //TODO implement this logic after HTTPBindingExtensions has been implemented.
-            }
-        }
-    }
-    
-    private void buildBindingFaultExtensions(BindingFaultImpl bindFault)
-    {
-        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) || 
-               bindFault.hasExtensionElementsForNamespace(extNS))
-            {
-                ComponentExtensions compExt = createComponentExtensions(BindingFault.class, bindFault, extNS);
-                bindFault.setComponentExtensions(extNS, compExt);
-            }
-        }
-        
-        /*
-         * Second, apply the rules from WSDL 2.0 Part 2 Adjuncts spec for default values for SOAP and HTTP 
-         * extension properties to create ComponentExtension objects even if the related extension attributes
-         * or elements do not exist in the WSDL. 
-         * 
-         * TODO chg this hardcoded behaviour so that any default rules for SOAP, 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 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(bindFault.getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_SOAP) == null)
-            {
-                ComponentExtensions compExt = createComponentExtensions(BindingFault.class, bindFault, ComponentExtensions.URI_NS_SOAP);
-                bindFault.setComponentExtensions(ComponentExtensions.URI_NS_SOAP, compExt);
-            }
-        }
-        
-    }
-    
-    private void buildBindingOperationExtensions(BindingOperationImpl bindOper)
-    {
-        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) || 
-               bindOper.hasExtensionElementsForNamespace(extNS))
-            {
-                ComponentExtensions compExt = createComponentExtensions(BindingOperation.class, bindOper, extNS);
-                bindOper.setComponentExtensions(extNS, compExt);
-            }
-        }
-        
-        /*
-         * Second, apply the rules from WSDL 2.0 Part 2 Adjuncts spec for default values for SOAP and HTTP 
-         * extension properties to create ComponentExtension objects even if the related extension attributes
-         * or elements do not exist in the WSDL. 
-         * 
-         * TODO chg this hardcoded behaviour so that any default rules for SOAP, 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_SOAP.equals(bindingType) )
-         {
-            /*
-             * If the binding type is HTTP then the {http input serialization} and {http output serialization} 
-             * properties have default values defined by the HTTP Binding rules in the WSDL 2.0 Part 2 Adjuncts
-             * spec, the {http fault serialization} property has the default "application/xml" and the 
-             * {http query parameter separator default} property has the default "&". So if an 
-             * HTTPBindingOperationExtensions object has not already been created, create one now to handle 
-             * these default values.
-             */
-            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);
-                //TODO implement this logic after HTTPBindingOperationExtensions has been implemented.
-            }
-        }
-    }
-        
-    private void buildBindingMessageReferenceExtensions(BindingMessageReferenceImpl bindMsgRef)
-    {
-        ExtensionRegistry er = fDesc.getExtensionRegistry();
-        URI[] extNamespaces = er.queryComponentExtensionNamespaces(BindingMessageReference.class);
-        
-        for(int i=0; i<extNamespaces.length; i++)
-        {
-            URI extNS = extNamespaces[i];
-            if(bindMsgRef.hasExtensionAttributesForNamespace(extNS) || 
-               bindMsgRef.hasExtensionElementsForNamespace(extNS))
-            {
-                ComponentExtensions compExt = createComponentExtensions(BindingMessageReference.class, bindMsgRef, extNS);
-                bindMsgRef.setComponentExtensions(extNS, compExt);
-            }
-        }
-    }
-        
-    private void buildBindingFaultReferenceExtensions(BindingFaultReferenceImpl bindFaultRef)
-    {
-        ExtensionRegistry er = fDesc.getExtensionRegistry();
-        URI[] extNamespaces = er.queryComponentExtensionNamespaces(BindingFaultReference.class);
-        
-        for(int i=0; i<extNamespaces.length; i++)
-        {
-            URI extNS = extNamespaces[i];
-            if(bindFaultRef.hasExtensionAttributesForNamespace(extNS) || 
-               bindFaultRef.hasExtensionElementsForNamespace(extNS))
-            {
-                ComponentExtensions compExt = createComponentExtensions(BindingFaultReference.class, bindFaultRef, extNS);
-                bindFaultRef.setComponentExtensions(extNS, compExt);
-            }
-        }
-    }
-        
-    /*
-     * This helper method factors out common code for creating ComponentExtensions registered
-     * in the ExtensionRegistry. 
-     */
-    private ComponentExtensions createComponentExtensions(Class parentClass, WSDLElement parentElem, URI extNS)
-    {
-        ExtensionRegistry er = fDesc.getExtensionRegistry();
-        ComponentExtensions compExt = null;
-        try {
-            compExt = er.createComponentExtension(parentClass, extNS);
-            ((ComponentExtensionsImpl)compExt).init(parentElem, extNS);
-        } catch (WSDLException e) {
-            //This exception occurs if there is no Java class registered for the namespace, but
-            //this namespace was obtained from the extension registry so we know that a Java class is
-            //registered and that this exception cannot occur. Ignore the catch block.
-        }
-        return compExt;
-    }
-    
+	// TODO support for other (non-Schema) type systems
+
+	private DescriptionImpl fDesc;
+
+	// TODO private ErrorReporter fErrorRpt; see todo in
+	// buildElementDeclarations()
+	private List fSchemasDone = new Vector();
+
+	private List fInterfacesDone = new Vector();
+
+	private List fBindingsDone = new Vector();
+
+	public ComponentModelBuilder(DescriptionImpl desc) {
+		fDesc = desc;
+		// TODO fErrorRpt = errorRpt; see todo in buildElementDeclarations()
+		initComponents(fDesc);
+	}
+
+	private void initComponents(DescriptionImpl desc) {
+
+		buildElementsAndTypes(desc);
+		buildInterfaces(desc);
+		buildBindings(desc);
+
+		IncludeElement[] includes = desc.getIncludeElements();
+		for (int i = 0; i < includes.length; i++) {
+			DescriptionElement inclDesc = includes[i].getDescriptionElement();
+			if (inclDesc != null) {
+				initComponents((DescriptionImpl) inclDesc);
+			}
+		}
+
+		ImportElement[] imports = desc.getImportElements();
+		for (int i = 0; i < imports.length; i++) {
+			DescriptionElement impDesc = imports[i].getDescriptionElement();
+			if (impDesc != null) {
+				initComponents((DescriptionImpl) impDesc);
+			}
+		}
+	}
+
+	/***************************************************************************
+	 * TYPES
+	 **************************************************************************/
+
+	/*
+	 * Extract from the collections of in-scope schemas the element declarations
+	 * and type definitions.
+	 */
+	private void buildElementsAndTypes(DescriptionImpl desc) {
+		TypesElement types = desc.getTypesElement();
+
+		URI typeSystemURI = null;
+		try {
+			typeSystemURI = new URI(Constants.TYPE_XSD_2001);
+		} catch (URISyntaxException e) {
+			// TODO this code will propagate 'throws WSDLException' up through
+			// the
+			// method call path to the API getter methods of the Component
+			// model. Try to
+			// find a better way of initializing the Component model without
+			// this
+			// consequence, if possible.
+			//
+			// String msg = fErrorRpt.getFormattedMessage(
+			// "WSDL506",
+			// new Object[] {Constants.TYPE_XSD_2001});
+			// throw new WSDLException(WSDLException.CONFIGURATION_ERROR, msg,
+			// e);
+		}
+
+		if (types != null) {
+			List referenceableSchemaDefs = ((TypesImpl) types)
+					.getReferenceableSchemaDefs();
+			Iterator i = referenceableSchemaDefs.iterator();
+			while (i.hasNext()) {
+				XmlSchema schemaDef = (XmlSchema) i.next();
+
+				// Following code is a work around for a bug in
+				// XmlSchemaObject.equals - this method
+				// gets invoked via List.contains(o), but currently it always
+				// return true!!!
+
+				boolean newSchema = true;
+				for (Iterator i2 = fSchemasDone.iterator(); i2.hasNext();) {
+					XmlSchema schemaDone = (XmlSchema) i2.next();
+					if (schemaDef == schemaDone) {
+						newSchema = false;
+						break;
+					}
+				}
+
+				// if(!fSchemasDone.contains(schemaDef)) TODO re-instate when
+				// XmlSchemaObject.equals bug is fixed
+				if (newSchema) {
+					buildElementDeclarations(schemaDef, typeSystemURI);
+					buildTypeDefinitions(schemaDef, typeSystemURI);
+					fSchemasDone.add(schemaDef);
+				}
+			}
+		}
+	}
+
+	/*
+	 * Extract the element declarations from the given schema.
+	 */
+	private void buildElementDeclarations(XmlSchema schemaDef, URI typeSystemURI) {
+		String schemaTns = schemaDef.getTargetNamespace();
+		if (schemaTns != null) {
+			XmlSchemaObjectTable elementTable = schemaDef.getElements();
+			Iterator qnames = elementTable.getNames();
+			while (qnames.hasNext()) {
+				QName qname = (QName) qnames.next();
+
+				if (qname.getNamespaceURI().equals(schemaTns)) {
+					ElementDeclarationImpl ed = new ElementDeclarationImpl();
+					ed.setName(qname);
+					ed.setSystem(typeSystemURI);
+					ed.setContentModel(Constants.API_APACHE_WS_XS);
+					ed.setContent(elementTable.getItem(qname));
+					fDesc.addElementDeclaration(ed);
+				}
+			}
+		}
+	}
+
+	/*
+	 * Extract the type definitions from the given schema.
+	 */
+	private void buildTypeDefinitions(XmlSchema schemaDef, URI typeSystemURI) {
+		String schemaTns = schemaDef.getTargetNamespace();
+		if (schemaTns != null) {
+			XmlSchemaObjectTable typeTable = schemaDef.getSchemaTypes();
+			Iterator qnames = typeTable.getNames();
+			while (qnames.hasNext()) {
+				QName qname = (QName) qnames.next();
+
+				if (qname.getNamespaceURI().equals(schemaTns)) {
+					TypeDefinitionImpl td = new TypeDefinitionImpl();
+					td.setName(qname);
+					td.setSystem(typeSystemURI);
+					td.setContentModel(Constants.API_APACHE_WS_XS);
+					td.setContent(typeTable.getItem(qname));
+					fDesc.addTypeDefinition(td);
+				}
+			}
+		}
+	}
+
+	/***************************************************************************
+	 * INTERFACE
+	 **************************************************************************/
+
+	/*
+	 * Initialize the Interface component and its child components from the
+	 * InterfaceElement and its child elements.
+	 */
+	private void buildInterfaces(DescriptionImpl desc) {
+		InterfaceElement[] interfaceEls = desc.getInterfaceElements();
+		for (int i = 0; i < interfaceEls.length; i++) {
+			InterfaceImpl interfaceImpl = (InterfaceImpl) interfaceEls[i];
+			if (!fInterfacesDone.contains(interfaceImpl)) {
+				buildInterfaceOperations(interfaceImpl);
+				fInterfacesDone.add(interfaceImpl);
+			}
+		}
+	}
+
+	private void buildInterfaceOperations(InterfaceImpl interfaceImpl) {
+		InterfaceOperationElement[] operations = interfaceImpl
+				.getInterfaceOperationElements();
+		for (int i = 0; i < operations.length; i++) {
+			InterfaceOperationImpl oper = (InterfaceOperationImpl) operations[i];
+			buildInterfaceOperationExtensions(oper);
+		}
+	}
+
+	private void buildInterfaceOperationExtensions(InterfaceOperationImpl oper) {
+		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)) {
+				ComponentExtensions compExt = createComponentExtensions(
+						InterfaceOperation.class, oper, extNS);
+				oper.setComponentExtensions(extNS, compExt);
+			}
+		}	
+		
+		// TODO: apply component model default rules if these extensions are absent in the XML infoset
+	}
+
+	/***************************************************************************
+	 * BINDING
+	 **************************************************************************/
+
+	/*
+	 * Initialize the Binding component and its child components from the
+	 * BindingElement and its child elements.
+	 */
+	private void buildBindings(DescriptionImpl desc) {
+		BindingElement[] bindingEls = desc.getBindingElements();
+		for (int i = 0; i < bindingEls.length; i++) {
+			BindingImpl bindImpl = (BindingImpl) bindingEls[i];
+			if (!fBindingsDone.contains(bindImpl)) {
+				buildBindingFaults(bindImpl);
+				buildBindingOperations(bindImpl);
+				buildBindingExtensions(bindImpl);
+				fBindingsDone.add(bindImpl);
+			}
+		}
+	}
+
+	private void buildBindingFaults(BindingImpl binding) {
+		BindingFaultElement[] bindFaults = binding.getBindingFaultElements();
+		for (int i = 0; i < bindFaults.length; i++) {
+			BindingFaultImpl bindFault = (BindingFaultImpl) bindFaults[i];
+			buildBindingFaultExtensions(bindFault);
+		}
+	}
+
+	private void buildBindingOperations(BindingImpl binding) {
+		BindingOperationElement[] operations = binding
+				.getBindingOperationElements();
+		for (int i = 0; i < operations.length; i++) {
+			BindingOperationImpl oper = (BindingOperationImpl) operations[i];
+			buildBindingFaultReferences(oper);
+			buildBindingMessageReferences(oper);
+			buildBindingOperationExtensions(oper);
+		}
+	}
+
+	private void buildBindingFaultReferences(BindingOperationImpl oper) {
+		BindingFaultReferenceElement[] faultRefs = oper
+				.getBindingFaultReferenceElements();
+		for (int i = 0; i < faultRefs.length; i++) {
+			BindingFaultReferenceImpl faultRef = (BindingFaultReferenceImpl) faultRefs[i];
+
+			buildBindingFaultReferenceExtensions(faultRef);
+
+		}
+	}
+
+	private void buildBindingMessageReferences(BindingOperationImpl oper) {
+		BindingMessageReferenceElement[] messages = oper
+				.getBindingMessageReferenceElements();
+		for (int i = 0; i < messages.length; i++) {
+			BindingMessageReferenceImpl message = (BindingMessageReferenceImpl) messages[i];
+
+			buildBindingMessageReferenceExtensions(message);
+		}
+	}
+
+	private void buildBindingExtensions(BindingImpl binding) {
+		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)
+					|| binding.hasExtensionElementsForNamespace(extNS)) {
+				ComponentExtensions compExt = createComponentExtensions(
+						Binding.class, binding, extNS);
+				binding.setComponentExtensions(extNS, compExt);
+			}
+		}
+
+		/*
+		 * Second, apply the rules from WSDL 2.0 Part 2 Adjuncts spec for
+		 * default values for SOAP and HTTP extension properties to create
+		 * ComponentExtension objects even if the related extension attributes
+		 * or elements do not exist in the WSDL.
+		 * 
+		 * TODO chg this hardcoded behaviour so that any default rules for SOAP,
+		 * HTTP or user-defined extensions can be registered in some way and
+		 * interpreted here at run time.
+		 */
+		if (ComponentExtensions.URI_NS_SOAP.equals(binding.getType())) {
+			/*
+			 * 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 (binding
+					.getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_SOAP) == null) {
+				ComponentExtensions compExt = createComponentExtensions(
+						Binding.class, binding, ComponentExtensions.URI_NS_SOAP);
+				binding.setComponentExtensions(ComponentExtensions.URI_NS_SOAP,
+						compExt);
+			}
+
+			SOAPBindingExtensions sbe = (SOAPBindingExtensions) binding
+					.getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_SOAP);
+
+			if (ComponentExtensions.URI_NS_HTTP.equals(sbe
+					.getSoapUnderlyingProtocol())) {
+				/*
+				 * 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.
+				 */
+
+				// TODO implement this logic after HTTPBindingExtensions has
+				// been implemented.
+			}
+		}
+	}
+
+	private void buildBindingFaultExtensions(BindingFaultImpl bindFault) {
+		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)
+					|| bindFault.hasExtensionElementsForNamespace(extNS)) {
+				ComponentExtensions compExt = createComponentExtensions(
+						BindingFault.class, bindFault, extNS);
+				bindFault.setComponentExtensions(extNS, compExt);
+			}
+		}
+
+		/*
+		 * Second, apply the rules from WSDL 2.0 Part 2 Adjuncts spec for
+		 * default values for SOAP and HTTP extension properties to create
+		 * ComponentExtension objects even if the related extension attributes
+		 * or elements do not exist in the WSDL.
+		 * 
+		 * TODO chg this hardcoded behaviour so that any default rules for SOAP,
+		 * 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 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 (bindFault
+					.getComponentExtensionsForNamespace(ComponentExtensions.URI_NS_SOAP) == null) {
+				ComponentExtensions compExt = createComponentExtensions(
+						BindingFault.class, bindFault,
+						ComponentExtensions.URI_NS_SOAP);
+				bindFault.setComponentExtensions(
+						ComponentExtensions.URI_NS_SOAP, compExt);
+			}
+		}
+
+	}
+
+	private void buildBindingOperationExtensions(BindingOperationImpl bindOper) {
+		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)
+					|| bindOper.hasExtensionElementsForNamespace(extNS)) {
+				ComponentExtensions compExt = createComponentExtensions(
+						BindingOperation.class, bindOper, extNS);
+				bindOper.setComponentExtensions(extNS, compExt);
+			}
+		}
+
+		/*
+		 * Second, apply the rules from WSDL 2.0 Part 2 Adjuncts spec for
+		 * default values for SOAP and HTTP extension properties to create
+		 * ComponentExtension objects even if the related extension attributes
+		 * or elements do not exist in the WSDL.
+		 * 
+		 * TODO chg this hardcoded behaviour so that any default rules for SOAP,
+		 * 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_SOAP.equals(bindingType)) {
+			/*
+			 * If the binding type is HTTP then the {http input serialization}
+			 * and {http output serialization} properties have default values
+			 * defined by the HTTP Binding rules in the WSDL 2.0 Part 2 Adjuncts
+			 * spec, the {http fault serialization} property has the default
+			 * "application/xml" and the {http query parameter separator
+			 * default} property has the default "&". So if an
+			 * HTTPBindingOperationExtensions object has not already been
+			 * created, create one now to handle these default values.
+			 */
+			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);
+				// TODO implement this logic after
+				// HTTPBindingOperationExtensions has been implemented.
+			}
+		}
+	}
+
+	private void buildBindingMessageReferenceExtensions(
+			BindingMessageReferenceImpl bindMsgRef) {
+		ExtensionRegistry er = fDesc.getExtensionRegistry();
+		URI[] extNamespaces = er
+				.queryComponentExtensionNamespaces(BindingMessageReference.class);
+
+		for (int i = 0; i < extNamespaces.length; i++) {
+			URI extNS = extNamespaces[i];
+			if (bindMsgRef.hasExtensionAttributesForNamespace(extNS)
+					|| bindMsgRef.hasExtensionElementsForNamespace(extNS)) {
+				ComponentExtensions compExt = createComponentExtensions(
+						BindingMessageReference.class, bindMsgRef, extNS);
+				bindMsgRef.setComponentExtensions(extNS, compExt);
+			}
+		}
+	}
+
+	private void buildBindingFaultReferenceExtensions(
+			BindingFaultReferenceImpl bindFaultRef) {
+		ExtensionRegistry er = fDesc.getExtensionRegistry();
+		URI[] extNamespaces = er
+				.queryComponentExtensionNamespaces(BindingFaultReference.class);
+
+		for (int i = 0; i < extNamespaces.length; i++) {
+			URI extNS = extNamespaces[i];
+			if (bindFaultRef.hasExtensionAttributesForNamespace(extNS)
+					|| bindFaultRef.hasExtensionElementsForNamespace(extNS)) {
+				ComponentExtensions compExt = createComponentExtensions(
+						BindingFaultReference.class, bindFaultRef, extNS);
+				bindFaultRef.setComponentExtensions(extNS, compExt);
+			}
+		}
+	}
+
+	/*
+	 * This helper method factors out common code for creating
+	 * ComponentExtensions registered in the ExtensionRegistry.
+	 */
+	private ComponentExtensions createComponentExtensions(Class parentClass,
+			WSDLElement parentElem, URI extNS) {
+		ExtensionRegistry er = fDesc.getExtensionRegistry();
+		ComponentExtensions compExt = null;
+		try {
+			compExt = er.createComponentExtension(parentClass, extNS);
+			((ComponentExtensionsImpl) compExt).init(parentElem, extNS);
+		} catch (WSDLException e) {
+			// This exception occurs if there is no Java class registered for
+			// the namespace, but
+			// this namespace was obtained from the extension registry so we
+			// know that a Java class is
+			// registered and that this exception cannot occur. Ignore the catch
+			// block.
+		}
+		return compExt;
+	}
 
-    
-    
 }

Added: incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/ExtensionConstants.java
URL: http://svn.apache.org/viewvc/incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/ExtensionConstants.java?rev=407454&view=auto
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/ExtensionConstants.java (added)
+++ incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/ExtensionConstants.java Wed May 17 21:51:52 2006
@@ -0,0 +1,44 @@
+/**
+ * Copyright 2006 Apache Software Foundation 
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); 
+ * you may not use this file except in compliance with the License. 
+ * You may obtain a copy of the License at 
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0 
+ * 
+ * Unless required by applicable law or agreed to in writing, software 
+ * distributed under the License is distributed on an "AS IS" BASIS, 
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+package org.apache.woden.internal.wsdl20.extensions;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Constants for predefined WSDL extensions.
+ * 
+ * @author Arthur Ryman (ryman@ca.ibm.com)
+ */
+public class ExtensionConstants {
+
+	// Namespace URI
+
+	public static final String NS_URI_WSDL_EXTENSIONS = "http://www.w3.org/2006/01/wsdl-extensions";
+
+	// Attribute name
+
+	public static final String ATTR_SAFE = "safe";
+
+	// Prefix
+
+	public static final String PFX_WSDL_EXTENSIONS = "wsdlx";
+
+	// Qualified attribute name
+
+	public static final QName Q_ATTR_SAFE = new QName(
+			NS_URI_WSDL_EXTENSIONS, ATTR_SAFE, PFX_WSDL_EXTENSIONS);
+
+}

Added: incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/InterfaceOperationExtensionsImpl.java
URL: http://svn.apache.org/viewvc/incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/InterfaceOperationExtensionsImpl.java?rev=407454&view=auto
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/InterfaceOperationExtensionsImpl.java (added)
+++ incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/InterfaceOperationExtensionsImpl.java Wed May 17 21:51:52 2006
@@ -0,0 +1,38 @@
+/**
+ * Copyright 2006 Apache Software Foundation 
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); 
+ * you may not use this file except in compliance with the License. 
+ * You may obtain a copy of the License at 
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0 
+ * 
+ * Unless required by applicable law or agreed to in writing, software 
+ * distributed under the License is distributed on an "AS IS" BASIS, 
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+package org.apache.woden.internal.wsdl20.extensions;
+
+import org.apache.woden.wsdl20.extensions.InterfaceOperationExtensions;
+import org.apache.woden.xml.BooleanAttr;
+
+/**
+ * This class defines the properties from the WSDL extensions namespace added to
+ * the WSDL <code>Interface Operation</code> component as part of the WSDL
+ * extension defined by the WSDL 2.0 spec.
+ * 
+ * @author Arthur Ryman (ryman@ca.ibm.com)
+ */
+
+public class InterfaceOperationExtensionsImpl extends ComponentExtensionsImpl
+		implements InterfaceOperationExtensions {
+
+	public boolean isSafety() {
+
+		BooleanAttr safe = 
+            (BooleanAttr)fParentElement.getExtensionAttribute(ExtensionConstants.Q_ATTR_SAFE);
+        return safe != null ? safe.getBoolean().booleanValue() : false;
+	}
+}

Modified: incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/PopulatedExtensionRegistry.java
URL: http://svn.apache.org/viewvc/incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/PopulatedExtensionRegistry.java?rev=407454&r1=407453&r2=407454&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/PopulatedExtensionRegistry.java (original)
+++ incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/PopulatedExtensionRegistry.java Wed May 17 21:51:52 2006
@@ -15,6 +15,8 @@
  */
 package org.apache.woden.internal.wsdl20.extensions;
 
+import org.apache.woden.internal.wsdl20.extensions.rpc.RPCConstants;
+import org.apache.woden.internal.wsdl20.extensions.rpc.RPCInterfaceOperationExtensionsImpl;
 import org.apache.woden.internal.wsdl20.extensions.http.HTTPConstants;
 import org.apache.woden.internal.wsdl20.extensions.soap.SOAPBindingExtensionsImpl;
 import org.apache.woden.internal.wsdl20.extensions.soap.SOAPBindingFaultExtensionsImpl;
@@ -26,6 +28,7 @@
 import org.apache.woden.internal.wsdl20.extensions.soap.SOAPHeaderBlockImpl;
 import org.apache.woden.internal.wsdl20.extensions.soap.SOAPModuleDeserializer;
 import org.apache.woden.internal.wsdl20.extensions.soap.SOAPModuleImpl;
+import org.apache.woden.internal.xml.ArgumentArrayAttrImpl;
 import org.apache.woden.internal.xml.BooleanAttrImpl;
 import org.apache.woden.internal.xml.IntOrTokenAnyAttrImpl;
 import org.apache.woden.internal.xml.QNameListOrTokenAnyAttrImpl;
@@ -38,6 +41,7 @@
 import org.apache.woden.wsdl20.BindingFaultReference;
 import org.apache.woden.wsdl20.BindingMessageReference;
 import org.apache.woden.wsdl20.BindingOperation;
+import org.apache.woden.wsdl20.InterfaceOperation;
 import org.apache.woden.wsdl20.extensions.ComponentExtensions;
 import org.apache.woden.wsdl20.extensions.ExtensionRegistry;
 import org.apache.woden.wsdl20.xml.BindingElement;
@@ -45,6 +49,7 @@
 import org.apache.woden.wsdl20.xml.BindingFaultReferenceElement;
 import org.apache.woden.wsdl20.xml.BindingMessageReferenceElement;
 import org.apache.woden.wsdl20.xml.BindingOperationElement;
+import org.apache.woden.wsdl20.xml.InterfaceOperationElement;
 import org.apache.woden.wsdl20.xml.EndpointElement;
 
 /**
@@ -57,6 +62,8 @@
  *
  * @author Matthew J. Duftler (duftler@us.ibm.com)
  * @author jkaputin@apache.org (Woden changes)
+ * @author Arthur Ryman (ryman@ca.ibm.com) - added wsdlx:safe and wrpc:signature
+ *         to Interface Operation
  */
 public class PopulatedExtensionRegistry extends ExtensionRegistry
 {
@@ -70,7 +77,16 @@
             WSDLElement.class, new QName("http://ws.apache.org/woden", "DefaultAttr"), StringAttrImpl.class);
          */
             
-        //------------ SOAP extension attributes ------------ 
+		// ------------ WSDL extension attributes ------------
+		registerExtAttributeType(InterfaceOperationElement.class,
+				ExtensionConstants.Q_ATTR_SAFE, BooleanAttrImpl.class);
+
+		// ------------ RPC extension attributes ------------
+
+		registerExtAttributeType(InterfaceOperationElement.class,
+				RPCConstants.Q_ATTR_RPC_SIGNATURE, ArgumentArrayAttrImpl.class);
+
+		//------------ SOAP extension attributes ------------ 
         
         registerExtAttributeType(
             BindingElement.class, SOAPConstants.Q_ATTR_SOAP_VERSION, StringAttrImpl.class);
@@ -159,6 +175,16 @@
                            SOAPConstants.Q_ELEM_SOAP_HEADER,
                            SOAPHeaderBlockImpl.class);
         
+		// ------------ WSDL Component Extensions ------------
+
+		registerComponentExtension(InterfaceOperation.class,
+				ComponentExtensions.URI_NS_EXTENSIONS,
+				InterfaceOperationExtensionsImpl.class);
+
+		registerComponentExtension(InterfaceOperation.class,
+				ComponentExtensions.URI_NS_RPC,
+				RPCInterfaceOperationExtensionsImpl.class);
+
         //------------ WSDL Component SOAP Extensions ------------ 
         
         registerComponentExtension(Binding.class, 

Added: incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/rpc/RPCConstants.java
URL: http://svn.apache.org/viewvc/incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/rpc/RPCConstants.java?rev=407454&view=auto
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/rpc/RPCConstants.java (added)
+++ incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/rpc/RPCConstants.java Wed May 17 21:51:52 2006
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2006 Apache Software Foundation 
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); 
+ * you may not use this file except in compliance with the License. 
+ * You may obtain a copy of the License at 
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0 
+ * 
+ * Unless required by applicable law or agreed to in writing, software 
+ * distributed under the License is distributed on an "AS IS" BASIS, 
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+
+package org.apache.woden.internal.wsdl20.extensions.rpc;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Constants for predefined WSDL RPC extensions.
+ * 
+ * @author Arthur Ryman (ryman@ca.ibm.com)
+ */
+public class RPCConstants {
+
+	// Namespace URI
+
+	public static final String NS_URI_RPC = "http://www.w3.org/2006/01/wsdl/rpc";
+	
+	// Style URI
+
+	public static final String STYLE_URI_RPC = "http://www.w3.org/2006/01/wsdl/style/rpc";
+	
+	// Attribute name
+
+	public static final String ATTR_SIGNATURE = "signature";
+
+	// Prefix
+
+	public static final String PFX_RPC = "wrpc";
+
+	// Qualified attribute name
+
+	public static final QName Q_ATTR_RPC_SIGNATURE = new QName(
+			NS_URI_RPC, ATTR_SIGNATURE, PFX_RPC);
+
+}

Added: incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/rpc/RPCInterfaceOperationExtensionsImpl.java
URL: http://svn.apache.org/viewvc/incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/rpc/RPCInterfaceOperationExtensionsImpl.java?rev=407454&view=auto
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/rpc/RPCInterfaceOperationExtensionsImpl.java (added)
+++ incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/rpc/RPCInterfaceOperationExtensionsImpl.java Wed May 17 21:51:52 2006
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2006 Apache Software Foundation 
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); 
+ * you may not use this file except in compliance with the License. 
+ * You may obtain a copy of the License at 
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0 
+ * 
+ * Unless required by applicable law or agreed to in writing, software 
+ * distributed under the License is distributed on an "AS IS" BASIS, 
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+
+package org.apache.woden.internal.wsdl20.extensions.rpc;
+
+import org.apache.woden.internal.wsdl20.extensions.ComponentExtensionsImpl;
+import org.apache.woden.wsdl20.extensions.rpc.Argument;
+import org.apache.woden.wsdl20.extensions.rpc.RPCInterfaceOperationExtensions;
+import org.apache.woden.xml.ArgumentArrayAttr;
+
+/**
+ * This class defines the properties from the WSDL RPC extensions namespace
+ * added to the WSDL <code>Interface Operation</code> component as part of the
+ * WSDL RPC extension defined by the WSDL 2.0 spec.
+ * 
+ * @author Arthur Ryman (ryman@ca.ibm.com)
+ */
+
+public class RPCInterfaceOperationExtensionsImpl extends
+		ComponentExtensionsImpl implements RPCInterfaceOperationExtensions {
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.woden.wsdl20.extensions.rpc.RPCInterfaceOperationExtensions#getRPCSignature()
+	 */
+	public Argument[] getRPCSignature() {
+
+		ArgumentArrayAttr args = (ArgumentArrayAttr) fParentElement
+				.getExtensionAttribute(RPCConstants.Q_ATTR_RPC_SIGNATURE);
+
+		if (args == null)
+			return new Argument[0];
+
+		return args.getArgumentArray();
+	}
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: woden-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: woden-dev-help@ws.apache.org