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