generating sources for service using quite complex schema

View: New views
10 Messages — Rating Filter:   Alert me  

generating sources for service using quite complex schema

by Johannes Echterhoff-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello.

I would like to use muse for my scenario but run into problems just when
I wanted to do more than the tutorial. Before describing the problem, I
would like to outline my scenario shortly so that you get an
understanding of what I want to achieve. Did I already mention that I am
a newbie to muse. :-)

I have to warn you: this email is quite large - so better get a new cup
of coffee before reading.

The scenario is as follows: Sensors generate observations which are
pushed to the service (so the service may act like a notification
broker). The observations are published on one topic while sensor status
messages (created by the service) are published on another. Clients can
subscribe for both types of messages. For the observation topic
subscribers can use message content filters that allow at least xpath
expressions but can also be more specific filters (encoded in XML).

I would like to extend the notification producer interface with some
additional operations (DescribeSensor, GetCapabilities). Depending on
the use case, even the RegisterPublisher and Notify operation from WSN
could be realized by that service. If so, the RegisterPublisher request
would make use of the extensibility mechanism defined for that operation
to send also the sensor description in XML.

Feedback on how muse could / should be used to handle this scenario
would be most appreciated!


Ok, let me explain what I accomplished so far. First of all, I tried to
create a wsdl description for the new service. As I am not too familiar
with using wsdl defined web services, I may have made silly mistakes -
if so please tell me what I did wrong. That wsdl used imports to
reference definitions from other wsdl files (the WS-Notification and
-Resource specs). For my custom operations I needed to import schema
which defined the request / response messages and types used in these
operations.

After some trials with wsdlmerge I got this exception message:

C:\muse-test\wsdlmerge_test>wsdlmerge.bat -uri http://www.opengis.net/sas/1.0.0
-address http://localhost:8080/52nSAS/sas -output SASmerged.wsdl -verbose SAS.ws
dl WS-BaseNotification-1_3.wsdl WS-BrokeredNotification-1_3.wsdl WS-Resource-1_2
.wsdl WS-ResourceProperties-1_2.wsdl

SEVERE: [ID = 'WsdlMergeFailed'] wsdlmerge encountered an error. Use -verbose to
 see more detailed information.

An exception was caught: null

The exception generated the following stacktrace:

java.lang.NullPointerException
        at org.apache.muse.tools.generator.util.DefinitionInfo.createOutput(Defi
nitionInfo.java:198)
        at org.apache.muse.tools.generator.util.DefinitionInfo.createOperation(D
efinitionInfo.java:173)
        at org.apache.muse.tools.generator.util.DefinitionInfo.addOperation(Defi
nitionInfo.java:308)
        at org.apache.muse.tools.generator.WsdlMerge.copyOperations(WsdlMerge.ja
va:340)
        at org.apache.muse.tools.generator.WsdlMerge.merge(WsdlMerge.java:219)
        at org.apache.muse.tools.generator.WsdlMerge.run(WsdlMerge.java:141)
        at org.apache.muse.tools.generator.WsdlMerge.main(WsdlMerge.java:113)

The wsdl is attached (SAS.wsdl).


I also created my own wsdl (see attached wsdl: SASallinone.wsdl) which
contains all the message definitions and which imports all required
schema (quite a bunch). Then I run wsdl2java. That worked, but the
result is not exactly what I expected (though that may be due to my
insufficient knowledge of muse). Also, there was a warning that I do not
understand because the WS-ResourceProperties-1_2.xsd is in the directory
where the wsdl file is and the schema import looks ok to me:

C:\muse-test\wsdl>wsdl2java.bat -j2ee mini -wsdl SASallinone.wsdl -output test -verbose

WARNING: [ID = 'NoWSRPSchema'] No WS-RP schema found.

C:\muse-test\wsdl>wsdlmerge


However, code has been generated; the classes (excluding the interfaces)
look like this:

(MyCapability1)

package org.oasis_open.docs.wsn.br_2;

import org.apache.muse.ws.addressing.EndpointReference;
import org.apache.muse.core.AbstractCapability;
import java.util.Date;
import org.w3c.dom.Element;

public class MyCapability extends AbstractCapability implements IMyCapability {
    public Element registerPublisher(EndpointReference PublisherReference, Element[] Topic, boolean Demand, Date InitialTerminationTime) throws Exception    {
        //TODO implement registerPublisher
        throw new RuntimeException("Unimplemented Method: registerPublisher");
    }
}


(MyCapability2)

package net.opengis.www.sas._1.0.0;

import org.apache.muse.core.AbstractCapability;
import org.w3c.dom.Element;

public class MyCapability extends AbstractCapability implements IMyCapability {
    public Element getCapabilities() throws Exception    {
        //TODO implement getCapabilities
        throw new RuntimeException("Unimplemented Method: getCapabilities");
    }
    public Element describeSensor(Element SensorID) throws Exception    {
        //TODO implement describeSensor
        throw new RuntimeException("Unimplemented Method: describeSensor");
    }
}


There are several questions that I have:

    * concerning the generated sources:
          o The getCapabilities method (in MyCapability2) should expect
            some XML input - do you have any idea why the generated
            method only has a return parameter? Is that due to the fact
            that I used doc/literal?
          o The describeSensor method (in MyCapability2) looks ok - if
            the SensorID Element is actually the complete DescribeSensor
            request XML document which would be send by a client in the
            SOAP body. Looking at the registerPublisher method, it seems
            like wsdl2java removes the top-level XML fragment from the
            request (in this case the RegisterPublisher XML element) and
            lists all elements contained in that element instead (even
            converting them if they are of simple type).
          o Neither of the capability classes extends
            AbstractWsResourceCapability - is that due to the fact that
            I did not extend the resource type with my own elements
            (i.e., it just lists elements from WSN, WSRF and MUWS)?
          o The registerPublisher method (in MyCapability1) takes the
            elements contained in a usual RegisterPublisher request,
            i.e. as they are listed in the schema from OASIS, as
            parameters. As I said earlier I would like to make use of
            the extension mechanism for that operation. Do I therefore
            have to modify the schema before generating source code or
            is there some way to retrieve the pure request body via muse?
          o In the SASallinone.wsdl I added the Notify operation from
            the NotificationConsumer interface to the services binding
            and port type.
    * in general:
          o According to the SubscriptionManager.wsdl that is contained
            in the generated folders (WebContent/WEB-INF/classes/wsdl)
            there will be one subscription manager that will be
            referenced in all Subscribe request responses. So will each
            subscription reference the same manager? Will a Renew or
            Destroy request for a certain Subscription be differentiated
            from requests to other Subscriptions via some parameters
            added by muse to the subscription endpoint?
          o How could we implement a RegisterPublisherManager in muse?
            Would we just have to add another service binding to the
            wsdl before generating source code? The operations of that
            manager would be quite similar to those of the
            SubscriptionManager, could we profit from that?

Please help me getting started.

Thanks.

Johannes

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://www.opengis.net/sas/1.0.0"
        xmlns:sas="http://www.opengis.net/sas/1.0.0" xmlns:wsa="http://www.w3.org/2005/08/addressing"
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
        xmlns:wsdl-soap12="http://schemas.xmlsoap.org/wsdl/soap12"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex"
        xmlns:wsrf-r="http://docs.oasis-open.org/wsrf/r-2"
        xmlns:wsrf-rw="http://docs.oasis-open.org/wsrf/rw-2"
        xmlns:wsrf-rl="http://docs.oasis-open.org/wsrf/rl-2"
        xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2"
        xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2"
        xmlns:wsrf-rpw="http://docs.oasis-open.org/wsrf/rpw-2"
        xmlns:wsrmd="http://docs.oasis-open.org/wsrf/rmd-1"
        xmlns:wsn-b="http://docs.oasis-open.org/wsn/b-2"
        xmlns:wsn-bw="http://docs.oasis-open.org/wsn/bw-2"
        xmlns:wsn-brw="http://docs.oasis-open.org/wsn/brw-2"
        xmlns:wsn-t="http://docs.oasis-open.org/wsn/t-1"
        xmlns:muws1="http://docs.oasis-open.org/wsdm/muws1-2.xsd"
        xmlns:muws2="http://docs.oasis-open.org/wsdm/muws2-2.xsd"
        xmlns:sml="http://www.opengis.net/sensorML/1.0.1" xmlns:ows="http://www.opengis.net/ows/1.1"
        name="SAS">

        <!-- Bring in required wsdl definitions -->
        <wsdl:import namespace="http://docs.oasis-open.org/wsn/bw-2"
                location="WS-BaseNotification-1_3.wsdl"/>
        <wsdl:import namespace="http://docs.oasis-open.org/wsn/brw-2"
                location="WS-BrokeredNotification-1_3.wsdl"/>
        <wsdl:import namespace="http://docs.oasis-open.org/wsrf/rw-2" location="WS-Resource-1_2.wsdl"/>
        <wsdl:import namespace="http://docs.oasis-open.org/wsrf/rpw-2"
                location="WS-ResourceProperties-1_2.wsdl"/>

        <wsdl:types>
                <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.opengis.net/ows/1.1">
                        <xsd:include schemaLocation="OGC-OWS-1_1_0-owsAll.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://www.opengis.net/sensorML/1.0.1">
                        <xsd:include schemaLocation="OGC-SENSORML-1_0_1-sensorML.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://www.w3.org/2005/08/addressing">
                        <xsd:include schemaLocation="WS-Addressing-2005_08.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://schemas.xmlsoap.org/ws/2004/09/mex">
                        <xsd:include schemaLocation="WS-MetadataExchange-2004_09.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsrf/rl-2">
                        <xsd:include schemaLocation="WS-ResourceLifetime-1_2.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsrf/rp-2">
                        <xsd:include schemaLocation="WS-ResourceProperties-1_2.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsrf/r-2">
                        <xsd:include schemaLocation="WS-Resource-1_2.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsrf/rmd-1">
                        <xsd:include schemaLocation="WS-ResourceMetadataDescriptor-CD-01.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsdm/muws1-2.xsd">
                        <xsd:include schemaLocation="WSDM-MUWS-Part1-1_1.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsdm/muws2-2.xsd">
                        <xsd:include schemaLocation="WSDM-MUWS-Part2-1_1.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsn/b-2">
                        <xsd:include schemaLocation="WS-BaseNotification-1_3.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsn/t-1">
                        <xsd:include schemaLocation="WS-Topics-1_3.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsn/br-2">
                        <xsd:include schemaLocation="WS-BrokeredNotification-1_3.xsd"/>
                </xsd:schema>

                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://www.opengis.net/sas/1.0.0">
                        <xsd:include schemaLocation="OGC-SAS-1_0_0-sasAll.xsd"/>
                        <xsd:include schemaLocation="OGC-SAS-1_0_0-sasCapabilities.xsd"/>
                        <xsd:include schemaLocation="OGC-SAS-1_0_0-sasCommon.xsd"/>
                        <xsd:include schemaLocation="OGC-SAS-1_0_0-sasDescribeSensor.xsd"/>
                        <xsd:include schemaLocation="OGC-SAS-1_0_0-sasMessageSchema.xsd"/>
                </xsd:schema>


                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://www.opengis.net/sas/1.0.0">

                        <xsd:element name="SasResourceProperties">
                                <xsd:complexType>
                                        <xsd:sequence>
                                                <xsd:element ref="wsrf-rp:QueryExpressionDialect" minOccurs="0"
                                                        maxOccurs="unbounded"/>
                                                <xsd:element ref="wsn-b:FixedTopicSet"/>
                                                <xsd:element ref="wsn-t:TopicSet" minOccurs="0"/>
                                                <xsd:element ref="wsn-t:TopicExpression" minOccurs="0" maxOccurs="unbounded"/>
                                                <xsd:element ref="wsn-t:TopicExpressionDialect" minOccurs="0"
                                                        maxOccurs="unbounded"/>
                                                <xsd:element ref="muws1:ResourceId"/>
                                                <xsd:element ref="muws1:ManageabilityCapability" minOccurs="0"
                                                        maxOccurs="unbounded"/>
                                                <!-- ??? -->
                                                <xsd:element ref="muws2:Caption" minOccurs="0" maxOccurs="unbounded"/>
                                                <!-- ??? -->
                                                <xsd:element ref="muws2:Description" minOccurs="0" maxOccurs="unbounded"/>
                                                <!-- ??? -->
                                                <xsd:element ref="muws2:Version" minOccurs="0"/>
                                                <!-- ??? -->
                                                <xsd:element ref="muws2:OperationalStatus"/>
                                                <!-- ??? -->
                                        </xsd:sequence>
                                </xsd:complexType>
                        </xsd:element>

                        <xsd:complexType name="ServiceExceptionType">
                                <xsd:complexContent>
                                        <xsd:extension base="wsrf-bf:BaseFaultType">
                                                <xsd:choice>
                                                        <xsd:element ref="ows:ExceptionReport"/>
                                                        <xsd:element ref="ows:Exception"/>
                                                </xsd:choice>
                                        </xsd:extension>
                                </xsd:complexContent>
                        </xsd:complexType>

                        <xsd:element name="ServiceException" type="sas:ServiceExceptionType"/>

                </xsd:schema>
        </wsdl:types>


        <!-- ============= MESSAGES ============= -->

        <!-- SAS specific messages -->
        <wsdl:message name="GetCapabilitiesRequest">
                <wsdl:part name="GetCapabilitiesRequest" element="sas:GetCapabilities"/>
        </wsdl:message>
        <wsdl:message name="GetCapabilitiesResponse">
                <wsdl:part name="GetCapabilitiesResponse" element="sas:Capabilities"/>
        </wsdl:message>

        <wsdl:message name="DescribeSensorRequest">
                <wsdl:part name="DescribeSensorRequest" element="sas:DescribeSensor"/>
        </wsdl:message>
        <wsdl:message name="DescribeSensorResponse">
                <!-- TODO: check this ... make sure that all valid SensorML elements are included -->
                <wsdl:part name="DescribeSensorResponse" element="sml:SensorML"/>
        </wsdl:message>

        <wsdl:message name="GetMetadataMsg">
                <wsdl:part name="GetMetadataMsg" element="wsx:GetMetadata"/>
        </wsdl:message>
        <wsdl:message name="GetMetadataResponseMsg">
                <wsdl:part name="GetMetadataResponseMsg" element="wsx:Metadata"/>
        </wsdl:message>

        <wsdl:message name="ServiceException">
                <wsdl:part name="ServiceException" type="sas:OWSServiceException"/>
        </wsdl:message>
<!--
        <wsdl:message name="EmptyResponse">
                <wsdl:part name="EmptyResponse" type="xsd:anyType"/>
        </wsdl:message>
-->

        <!-- =================================================== -->
        <!-- ==================== SAS PortType ==================== -->
        <!-- =================================================== -->
        <wsdl:portType name="sasPortType" wsrf-rp:ResourceProperties="sas:SasResourceProperties">

                <!-- ============= implements GetCapabilities ============= -->
                <wsdl:operation name="GetCapabilities">
                        <wsdl:input wsa:Action="http://www.opengis.net/sas/GetCapabilitiesRequest"
                                message="sas:GetCapabilitiesRequest"/>
                        <wsdl:output wsa:Action="http://www.opengis.net/sas/GetCapabilitiesResponse"
                                message="sas:GetCapabilitiesResponse"/>
                        <wsdl:fault name="Exception" message="sas:ServiceException"/>
                </wsdl:operation>

                <!-- ============= implements DescribeSensor  ============= -->
                <wsdl:operation name="DescribeSensor">
                        <wsdl:input wsa:Action="http://www.opengis.net/sas/DescribeSensorRequest"
                                message="sas:DescribeSensorRequest"/>
                        <wsdl:output wsa:Action="http://www.opengis.net/sas/DescribeSensorResponse"
                                message="sas:DescribeSensorResponse"/>
                        <wsdl:fault name="Exception" message="sas:ServiceException"/>
                </wsdl:operation>

                <!-- ============= extends NotificationConsumer ============= -->
                <wsdl:operation name="Notify">
                        <wsdl:input wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationConsumer/Notify"
                                message="wsn-bw:Notify"/>
                <!-- <wsdl:output wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationConsumer/NotifyResponse"
                                message="sas:EmptyResponse"/> -->
                </wsdl:operation>

                <!-- ============= extends NotificationProducer ============= -->
                <wsdl:operation name="Subscribe">
                        <wsdl:input
                                wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeRequest"
                                message="wsn-bw:SubscribeRequest"/>
                        <wsdl:output
                                wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeResponse"
                                message="wsn-bw:SubscribeResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/>
                        <wsdl:fault name="InvalidFilterFault" message="wsn-bw:InvalidFilterFault"/>
                        <wsdl:fault name="TopicExpressionDialectUnknownFault"
                                message="wsn-bw:TopicExpressionDialectUnknownFault"/>
                        <wsdl:fault name="InvalidTopicExpressionFault"
                                message="wsn-bw:InvalidTopicExpressionFault"/>
                        <wsdl:fault name="TopicNotSupportedFault" message="wsn-bw:TopicNotSupportedFault"/>
                        <wsdl:fault name="InvalidProducerPropertiesExpressionFault"
                                message="wsn-bw:InvalidProducerPropertiesExpressionFault"/>
                        <wsdl:fault name="InvalidMessageContentExpressionFault"
                                message="wsn-bw:InvalidMessageContentExpressionFault"/>
                        <wsdl:fault name="UnacceptableInitialTerminationTimeFault"
                                message="wsn-bw:UnacceptableInitialTerminationTimeFault"/>
                        <wsdl:fault name="UnrecognizedPolicyRequestFault"
                                message="wsn-bw:UnrecognizedPolicyRequestFault"/>
                        <wsdl:fault name="UnsupportedPolicyRequestFault"
                                message="wsn-bw:UnsupportedPolicyRequestFault"/>
                        <wsdl:fault name="NotifyMessageNotSupportedFault"
                                message="wsn-bw:NotifyMessageNotSupportedFault"/>
                        <wsdl:fault name="SubscribeCreationFailedFault"
                                message="wsn-bw:SubscribeCreationFailedFault"/>
                </wsdl:operation>

                <wsdl:operation name="GetCurrentMessage">
                        <wsdl:input
                                wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/GetCurrentMessageRequest"
                                message="wsn-bw:GetCurrentMessageRequest"/>
                        <wsdl:output
                                wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/GetCurrentMessageResponse"
                                message="wsn-bw:GetCurrentMessageResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/>
                        <wsdl:fault name="TopicExpressionDialectUnknownFault"
                                message="wsn-bw:TopicExpressionDialectUnknownFault"/>
                        <wsdl:fault name="InvalidTopicExpressionFault"
                                message="wsn-bw:InvalidTopicExpressionFault"/>
                        <wsdl:fault name="TopicNotSupportedFault" message="wsn-bw:TopicNotSupportedFault"/>
                        <wsdl:fault name="NoCurrentMessageOnTopicFault"
                                message="wsn-bw:NoCurrentMessageOnTopicFault"/>
                        <wsdl:fault name="MultipleTopicsSpecifiedFault"
                                message="wsn-bw:MultipleTopicsSpecifiedFault"/>
                </wsdl:operation>

                <!-- ========= extends RegisterPublisher ======= -->
                <!-- Will be used by SAS to both register push-style sensors but also to register pull-style for SOS
                        (via extension mechanism - has to be specified) -->
                <wsdl:operation name="RegisterPublisher">
                        <wsdl:input
                                wsa:Action="http://docs.oasis-open.org/wsn/brw-2/RegisterPublisher/RegisterPublisherRequest"
                                message="wsn-brw:RegisterPublisherRequest"/>
                        <wsdl:output
                                wsa:Action="http://docs.oasis-open.org/wsn/brw-2/RegisterPublisher/RegisterPublisherResponse"
                                message="wsn-brw:RegisterPublisherResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/>
                        <wsdl:fault name="InvalidTopicExpressionFault"
                                message="wsn-bw:InvalidTopicExpressionFault"/>
                        <wsdl:fault name="TopicNotSupportedFault" message="wsn-bw:TopicNotSupportedFault"/>
                        <wsdl:fault name="PublisherRegistrationRejectedFault"
                                message="wsn-brw:PublisherRegistrationRejectedFault"/>
                        <wsdl:fault name="PublisherRegistrationFailedFault"
                                message="wsn-brw:PublisherRegistrationFailedFault"/>
                        <wsdl:fault name="UnacceptableInitialTerminationTimeFault"
                                message="wsn-bw:UnacceptableInitialTerminationTimeFault"/>
                </wsdl:operation>

                <!-- =========== implements WS-MetadataExchange (2004) =========== -->
                <wsdl:operation name="GetMetadata">
                        <wsdl:input wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata"
                                name="GetMetadataMsg" message="sas:GetMetadataMsg"/>
                        <wsdl:output wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadataResponse"
                                name="GetMetadataResponseMsg" message="sas:GetMetadataResponseMsg"/>
                </wsdl:operation>

                <!-- =========== implements WS-ResourceProperties operations =========== -->
                <wsdl:operation name="GetResourcePropertyDocument">
                        <wsdl:input
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourcePropertyDocument/GetResourcePropertyDocumentRequest"
                                name="GetResourcePropertyDocumentRequest"
                                message="wsrf-rpw:GetResourcePropertyDocumentRequest"/>
                        <wsdl:output
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourcePropertyDocument/GetResourcePropertyDocumentResponse"
                                name="GetResourcePropertyDocumentResponse"
                                message="wsrf-rpw:GetResourcePropertyDocumentResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/>
                        <wsdl:fault name="ResourceUnavailableFault" message="wsrf-rw:ResourceUnavailableFault"/>
                </wsdl:operation>

                <wsdl:operation name="GetResourceProperty">
                        <wsdl:input
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest"
                                name="GetResourcePropertyRequest" message="wsrf-rpw:GetResourcePropertyRequest"/>
                        <wsdl:output
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse"
                                name="GetResourcePropertyResponse" message="wsrf-rpw:GetResourcePropertyResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/>
                        <wsdl:fault name="ResourceUnavailableFault" message="wsrf-rw:ResourceUnavailableFault"/>
                        <wsdl:fault name="InvalidResourcePropertyQNameFault"
                                message="wsrf-rpw:InvalidResourcePropertyQNameFault"/>
                </wsdl:operation>

                <wsdl:operation name="GetMultipleResourceProperties">
                        <wsdl:input
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesRequest"
                                name="GetMultipleResourcePropertiesRequest"
                                message="wsrf-rpw:GetMultipleResourcePropertiesRequest"/>
                        <wsdl:output
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesResponse"
                                name="GetMultipleResourcePropertiesResponse"
                                message="wsrf-rpw:GetMultipleResourcePropertiesResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/>
                        <wsdl:fault name="ResourceUnavailableFault" message="wsrf-rw:ResourceUnavailableFault"/>
                        <wsdl:fault name="InvalidResourcePropertyQNameFault"
                                message="wsrf-rpw:InvalidResourcePropertyQNameFault"/>
                </wsdl:operation>

                <wsdl:operation name="QueryResourceProperties">
                        <wsdl:input
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/QueryResourceProperties/QueryResourcePropertiesRequest"
                                name="QueryResourcePropertiesRequest"
                                message="wsrf-rpw:QueryResourcePropertiesRequest"/>
                        <wsdl:output
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/QueryResourceProperties/QueryResourcePropertiesResponse"
                                name="QueryResourcePropertiesResponse"
                                message="wsrf-rpw:QueryResourcePropertiesResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/>
                        <wsdl:fault name="ResourceUnavailableFault" message="wsrf-rw:ResourceUnavailableFault"/>
                        <wsdl:fault name="UnknownQueryExpressionDialectFault"
                                message="wsrf-rpw:UnknownQueryExpressionDialectFault"/>
                        <wsdl:fault name="InvalidQueryExpressionFault"
                                message="wsrf-rpw:InvalidQueryExpressionFault"/>
                        <wsdl:fault name="QueryEvaluationErrorFault"
                                message="wsrf-rpw:QueryEvaluationErrorFault"/>
                </wsdl:operation>

                <wsdl:operation name="SetResourceProperties">
                        <wsdl:input
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResourcePropertiesRequest"
                                name="SetResourcePropertiesRequest" message="wsrf-rpw:SetResourcePropertiesRequest"/>
                        <wsdl:output
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResourcePropertiesResponse"
                                name="SetResourcePropertiesResponse"
                                message="wsrf-rpw:SetResourcePropertiesResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/>
                        <wsdl:fault name="ResourceUnavailableFault" message="wsrf-rw:ResourceUnavailableFault"/>
                        <wsdl:fault name="InvalidModificationFault" message="wsrf-rpw:InvalidModificationFault"/>
                        <wsdl:fault name="UnableToModifyResourcePropertyFault"
                                message="wsrf-rpw:UnableToModifyResourcePropertyFault"/>
                        <wsdl:fault name="InvalidResourcePropertyQNameFault"
                                message="wsrf-rpw:InvalidResourcePropertyQNameFault"/>
                        <wsdl:fault name="SetResourcePropertyRequestFailedFault"
                                message="wsrf-rpw:SetResourcePropertyRequestFailedFault"/>
                </wsdl:operation>
        </wsdl:portType>
       
</wsdl:definitions>

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://www.opengis.net/sas/1.0.0"
        xmlns:sas="http://www.opengis.net/sas/1.0.0"
        xmlns:wsa="http://www.w3.org/2005/08/addressing"
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
        xmlns:wsdl-soap12="http://schemas.xmlsoap.org/wsdl/soap12"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex"
        xmlns:wsrf-r="http://docs.oasis-open.org/wsrf/r-2"
        xmlns:wsrf-rl="http://docs.oasis-open.org/wsrf/rl-2"
        xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2"
        xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2"
        xmlns:wsrmd="http://docs.oasis-open.org/wsrf/rmd-1"
        xmlns:wsn-b="http://docs.oasis-open.org/wsn/b-2"
        xmlns:wsn-br="http://docs.oasis-open.org/wsn/br-2"
        xmlns:wsn-t="http://docs.oasis-open.org/wsn/t-1"
        xmlns:muws1="http://docs.oasis-open.org/wsdm/muws1-2.xsd"
        xmlns:muws2="http://docs.oasis-open.org/wsdm/muws2-2.xsd"
        xmlns:sml="http://www.opengis.net/sensorML/1.0.1"
        xmlns:ows="http://www.opengis.net/ows/1.1"
        name="SAS">

        <wsdl:types>
                <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.w3.org/XML/1998/namespace">
                        <xsd:include schemaLocation="XML-Namespace-1998.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.w3.org/1999/xlink">
                        <xsd:include schemaLocation="OGC-XLINK-1_0_0-xlinks.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified" targetNamespace="urn:us:gov:ic:ism:v2">
                        <xsd:include schemaLocation="OGC-IC-ISM-v2.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.w3.org/2001/SMIL20/">
                        <xsd:include schemaLocation="OGC-SMIL-smil20.xsd"/>
                        <xsd:include schemaLocation="OGC-SMIL-smil20-language.xsd"/>
                        <xsd:include schemaLocation="OGC-SMIL-xml-mod.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.opengis.net/ows/1.1">
                        <xsd:include schemaLocation="OGC-OWS-1_1_0-ows19115subset.xsd"/>
                        <xsd:include schemaLocation="OGC-OWS-1_1_0-owsAll.xsd"/>
                        <xsd:include schemaLocation="OGC-OWS-1_1_0-owsCommon.xsd"/>
                        <xsd:include schemaLocation="OGC-OWS-1_1_0-owsContents.xsd"/>
                        <xsd:include schemaLocation="OGC-OWS-1_1_0-owsDataIdentification.xsd"/>
                        <xsd:include schemaLocation="OGC-OWS-1_1_0-owsDomainType.xsd"/>
                        <xsd:include schemaLocation="OGC-OWS-1_1_0-owsExceptionReport.xsd"/>
                        <xsd:include schemaLocation="OGC-OWS-1_1_0-owsGetCapabilities.xsd"/>
                        <xsd:include schemaLocation="OGC-OWS-1_1_0-owsGetResourceByID.xsd"/>
                        <xsd:include schemaLocation="OGC-OWS-1_1_0-owsInputOutputData.xsd"/>
                        <xsd:include schemaLocation="OGC-OWS-1_1_0-owsManifest.xsd"/>
                        <xsd:include schemaLocation="OGC-OWS-1_1_0-owsOperationsMetadata.xsd"/>
                        <xsd:include schemaLocation="OGC-OWS-1_1_0-owsServiceIdentification.xsd"/>
                        <xsd:include schemaLocation="OGC-OWS-1_1_0-owsServiceProvider.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.opengis.net/gml">
<xsd:include schemaLocation="OGC-GML-3_1_1-basicTypes.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-coordinateOperations.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-coordinateReferenceSystems.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-coordinateSystems.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-coverage.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-dataQuality.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-datums.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-defaultStyle.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-dictionary.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-direction.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-dynamicFeature.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-feature.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-geometryAggregates.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-geometryBasic0d1d.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-geometryBasic2d.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-geometryComplexes.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-geometryPrimitives.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-gml.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-gmlBase.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-grids.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-measures.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-observation.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-referenceSystems.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-temporal.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-temporalReferenceSystems.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-temporalTopology.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-topology.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-units.xsd"/>
<xsd:include schemaLocation="OGC-GML-3_1_1-valueObjects.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://www.opengis.net/ogc">
                        <xsd:include schemaLocation="OGC-FILTER-1_1_0-sort.xsd"/>
                        <xsd:include schemaLocation="OGC-FILTER-1_1_0-expr.xsd"/>
                        <xsd:include schemaLocation="OGC-FILTER-1_1_0-filter.xsd"/>
                        <xsd:include schemaLocation="OGC-FILTER-1_1_0-filterCapabilities.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://www.opengis.net/swe/1.0.1">
                        <xsd:include schemaLocation="OGC-SWE-1_0_1-aggregateTypes.xsd"/>
                        <xsd:include schemaLocation="OGC-SWE-1_0_1-basicTypes.xsd"/>
                        <xsd:include schemaLocation="OGC-SWE-1_0_1-curveTypes.xsd"/>
                        <xsd:include schemaLocation="OGC-SWE-1_0_1-data.xsd"/>
                        <xsd:include schemaLocation="OGC-SWE-1_0_1-encoding.xsd"/>
                        <xsd:include schemaLocation="OGC-SWE-1_0_1-phenomenon.xsd"/>
                        <xsd:include schemaLocation="OGC-SWE-1_0_1-positionTypes.xsd"/>
                        <xsd:include schemaLocation="OGC-SWE-1_0_1-simpleTypes.xsd"/>
                        <xsd:include schemaLocation="OGC-SWE-1_0_1-swe.xsd"/>
                        <xsd:include schemaLocation="OGC-SWE-1_0_1-temporalAggregates.xsd"/>
                        <xsd:include schemaLocation="OGC-SWE-1_0_1-xmlData.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://www.opengis.net/sensorML/1.0.1">
                        <xsd:include schemaLocation="OGC-SENSORML-1_0_1-base.xsd"/>
                        <xsd:include schemaLocation="OGC-SENSORML-1_0_1-method.xsd"/>
                        <xsd:include schemaLocation="OGC-SENSORML-1_0_1-process.xsd"/>
                        <xsd:include schemaLocation="OGC-SENSORML-1_0_1-sensorML.xsd"/>
                        <xsd:include schemaLocation="OGC-SENSORML-1_0_1-system.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://www.w3.org/2005/08/addressing">
                        <xsd:include schemaLocation="WS-Addressing-2005_08.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://schemas.xmlsoap.org/2004/09/mex">
                        <xsd:include schemaLocation="WS-MetadataExchange-2004_09.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsrf/rl-2">
                        <xsd:include schemaLocation="WS-ResourceLifetime-1_2.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsrf/rp-2">
                        <xsd:include schemaLocation="WS-ResourceProperties-1_2.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsrf/r-2">
                        <xsd:include schemaLocation="WS-Resource-1_2.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsrf/rmd-1">
                        <xsd:include schemaLocation="WS-ResourceMetadataDescriptor-CD-01.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsdm/muws1-2.xsd">
                        <xsd:include schemaLocation="WSDM-MUWS-Part1-1_1.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsdm/muws2-2.xsd">
                        <xsd:include schemaLocation="WSDM-MUWS-Part2-1_1.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsn/b-2">
                        <xsd:include schemaLocation="WS-BaseNotification-1_3.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsn/t-1">
                        <xsd:include schemaLocation="WS-Topics-1_3.xsd"/>
                </xsd:schema>
                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://docs.oasis-open.org/wsn/br-2">
                        <xsd:include schemaLocation="WS-BrokeredNotification-1_3.xsd"/>
                </xsd:schema>

                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://www.opengis.net/sas/1.0.0">
                        <xsd:include schemaLocation="OGC-SAS-1_0_0-sasAll.xsd"/>
                        <xsd:include schemaLocation="OGC-SAS-1_0_0-sasCapabilities.xsd"/>
                        <xsd:include schemaLocation="OGC-SAS-1_0_0-sasCommon.xsd"/>
                        <xsd:include schemaLocation="OGC-SAS-1_0_0-sasDescribeSensor.xsd"/>
                        <xsd:include schemaLocation="OGC-SAS-1_0_0-sasMessageSchema.xsd"/>
                </xsd:schema>


                <xsd:schema elementFormDefault="qualified"
                        targetNamespace="http://www.opengis.net/sas/1.0.0">

                        <xsd:element name="SasResourceProperties">
                                <xsd:complexType>
                                        <xsd:sequence>
                                                <xsd:element ref="wsrf-rp:QueryExpressionDialect" minOccurs="0"
                                                        maxOccurs="unbounded"/>
                                                <xsd:element ref="wsn-b:FixedTopicSet"/>
                                                <xsd:element ref="wsn-t:TopicSet" minOccurs="0"/>
                                                <xsd:element ref="wsn-t:TopicExpression" minOccurs="0" maxOccurs="unbounded"/>
                                                <xsd:element ref="wsn-t:TopicExpressionDialect" minOccurs="0"
                                                        maxOccurs="unbounded"/>
                                                <xsd:element ref="muws1:ResourceId"/>
                                                <xsd:element ref="muws1:ManageabilityCapability" minOccurs="0"
                                                        maxOccurs="unbounded"/>
                                                <!-- ??? -->
                                                <xsd:element ref="muws2:Caption" minOccurs="0" maxOccurs="unbounded"/>
                                                <!-- ??? -->
                                                <xsd:element ref="muws2:Description" minOccurs="0" maxOccurs="unbounded"/>
                                                <!-- ??? -->
                                                <xsd:element ref="muws2:Version" minOccurs="0"/>
                                                <!-- ??? -->
                                                <xsd:element ref="muws2:OperationalStatus"/>
                                                <!-- ??? -->
                                        </xsd:sequence>
                                </xsd:complexType>
                        </xsd:element>

                        <xsd:complexType name="ServiceExceptionType">
                                <xsd:complexContent>
                                        <xsd:extension base="wsrf-bf:BaseFaultType">
                                                <xsd:choice>
                                                        <xsd:element ref="ows:ExceptionReport"/>
                                                        <xsd:element ref="ows:Exception"/>
                                                </xsd:choice>
                                        </xsd:extension>
                                </xsd:complexContent>
                        </xsd:complexType>

                        <xsd:element name="ServiceException" type="sas:ServiceExceptionType"/>

                </xsd:schema>
        </wsdl:types>


<wsdl:message name="GetMetadataMsg">
                <wsdl:part name="GetMetadataMsg" element="wsx:GetMetadata" />
        </wsdl:message>
        <wsdl:message name="GetMetadataResponseMsg">
                <wsdl:part name="GetMetadataResponseMsg" element="wsx:Metadata" />
        </wsdl:message>
        <wsdl:message name="DestroyRequest">
                <wsdl:part name="DestroyRequest" element="wsrf-rl:Destroy" />
        </wsdl:message>
        <wsdl:message name="DestroyResponse">
                <wsdl:part name="DestroyResponse"
                        element="wsrf-rl:DestroyResponse" />
        </wsdl:message>
        <wsdl:message name="ResourceNotDestroyedFault">
                <wsdl:part name="ResourceNotDestroyedFault"
                        element="wsrf-rl:ResourceNotDestroyedFault" />
        </wsdl:message>
        <wsdl:message name="ResourceUnknownFault">
                <wsdl:part name="ResourceUnknownFault"
                        element="wsrf-r:ResourceUnknownFault" />
        </wsdl:message>
        <wsdl:message name="ResourceUnavailableFault">
                <wsdl:part name="ResourceUnavailableFault"
                        element="wsrf-r:ResourceUnavailableFault" />
        </wsdl:message>
        <wsdl:message name="SetTerminationTimeRequest">
                <wsdl:part name="SetTerminationTimeRequest"
                        element="wsrf-rl:SetTerminationTime" />
        </wsdl:message>
        <wsdl:message name="SetTerminationTimeResponse">
                <wsdl:part name="SetTerminationTimeResponse"
                        element="wsrf-rl:SetTerminationTimeResponse" />
        </wsdl:message>
        <wsdl:message name="UnableToSetTerminationTimeFault">
                <wsdl:part name="UnableToSetTerminationTimeFault"
                        element="wsrf-rl:UnableToSetTerminationTimeFault" />
        </wsdl:message>
        <wsdl:message name="TerminationTimeChangeRejectedFault">
                <wsdl:part name="TerminationTimeChangeRejectedFault"
                        element="wsrf-rl:TerminationTimeChangeRejectedFault" />
        </wsdl:message>
        <wsdl:message name="GetResourcePropertyDocumentRequest">
                <wsdl:part name="GetResourcePropertyDocumentRequest"
                        element="wsrf-rp:GetResourcePropertyDocument" />
        </wsdl:message>
        <wsdl:message name="GetResourcePropertyDocumentResponse">
                <wsdl:part name="GetResourcePropertyDocumentResponse"
                        element="wsrf-rp:GetResourcePropertyDocumentResponse" />
        </wsdl:message>
        <wsdl:message name="GetResourcePropertyRequest">
                <wsdl:part name="GetResourcePropertyRequest"
                        element="wsrf-rp:GetResourceProperty" />
        </wsdl:message>
        <wsdl:message name="GetResourcePropertyResponse">
                <wsdl:part name="GetResourcePropertyResponse"
                        element="wsrf-rp:GetResourcePropertyResponse" />
        </wsdl:message>
        <wsdl:message name="InvalidResourcePropertyQNameFault">
                <wsdl:part name="InvalidResourcePropertyQNameFault"
                        element="wsrf-rp:InvalidResourcePropertyQNameFault" />
        </wsdl:message>
        <wsdl:message name="GetMultipleResourcePropertiesRequest">
                <wsdl:part name="GetMultipleResourcePropertiesRequest"
                        element="wsrf-rp:GetMultipleResourceProperties" />
        </wsdl:message>
        <wsdl:message name="GetMultipleResourcePropertiesResponse">
                <wsdl:part name="GetMultipleResourcePropertiesResponse"
                        element="wsrf-rp:GetMultipleResourcePropertiesResponse" />
        </wsdl:message>
        <wsdl:message name="QueryResourcePropertiesRequest">
                <wsdl:part name="QueryResourcePropertiesRequest"
                        element="wsrf-rp:QueryResourceProperties" />
        </wsdl:message>
        <wsdl:message name="QueryResourcePropertiesResponse">
                <wsdl:part name="QueryResourcePropertiesResponse"
                        element="wsrf-rp:QueryResourcePropertiesResponse" />
        </wsdl:message>
        <wsdl:message name="UnknownQueryExpressionDialectFault">
                <wsdl:part name="UnknownQueryExpressionDialectFault"
                        element="wsrf-rp:UnknownQueryExpressionDialectFault" />
        </wsdl:message>
        <wsdl:message name="InvalidQueryExpressionFault">
                <wsdl:part name="InvalidQueryExpressionFault"
                        element="wsrf-rp:InvalidQueryExpressionFault" />
        </wsdl:message>
        <wsdl:message name="QueryEvaluationErrorFault">
                <wsdl:part name="QueryEvaluationErrorFault"
                        element="wsrf-rp:QueryEvaluationErrorFault" />
        </wsdl:message>
        <wsdl:message name="SetResourcePropertiesRequest">
                <wsdl:part name="SetResourcePropertiesRequest"
                        element="wsrf-rp:SetResourceProperties" />
        </wsdl:message>
        <wsdl:message name="SetResourcePropertiesResponse">
                <wsdl:part name="SetResourcePropertiesResponse"
                        element="wsrf-rp:SetResourcePropertiesResponse" />
        </wsdl:message>
        <wsdl:message name="InvalidModificationFault">
                <wsdl:part name="InvalidModificationFault"
                        element="wsrf-rp:InvalidModificationFault" />
        </wsdl:message>
        <wsdl:message name="UnableToModifyResourcePropertyFault">
                <wsdl:part name="UnableToModifyResourcePropertyFault"
                        element="wsrf-rp:UnableToModifyResourcePropertyFault" />
        </wsdl:message>
        <wsdl:message name="SetResourcePropertyRequestFailedFault">
                <wsdl:part name="SetResourcePropertyRequestFailedFault"
                        element="wsrf-rp:SetResourcePropertyRequestFailedFault" />
        </wsdl:message>
        <wsdl:message name="SubscribeRequest">
                <wsdl:part name="SubscribeRequest" element="wsn-b:Subscribe" />
        </wsdl:message>

        <wsdl:message name="SubscribeResponse">
                <wsdl:part name="SubscribeResponse"
                        element="wsn-b:SubscribeResponse" />
        </wsdl:message>

        <wsdl:message name="SubscribeCreationFailedFault">
                <wsdl:part name="SubscribeCreationFailedFault"
                        element="wsn-b:SubscribeCreationFailedFault" />
        </wsdl:message>

        <wsdl:message name="TopicExpressionDialectUnknownFault">
                <wsdl:part name="TopicExpressionDialectUnknownFault"
                        element="wsn-b:TopicExpressionDialectUnknownFault" />
        </wsdl:message>

        <wsdl:message name="InvalidFilterFault">
                <wsdl:part name="InvalidFilterFault"
                        element="wsn-b:InvalidFilterFault" />
        </wsdl:message>

        <wsdl:message name="InvalidProducerPropertiesExpressionFault">
                <wsdl:part name="InvalidProducerPropertiesExpressionFault"
                        element="wsn-b:InvalidProducerPropertiesExpressionFault" />
        </wsdl:message>

        <wsdl:message name="InvalidMessageContentExpressionFault">
                <wsdl:part name="InvalidMessageContentExpressionFault"
                        element="wsn-b:InvalidMessageContentExpressionFault" />
        </wsdl:message>

        <wsdl:message name="UnrecognizedPolicyRequestFault">
                <wsdl:part name="UnrecognizedPolicyRequestFault"
                        element="wsn-b:UnrecognizedPolicyRequestFault" />
        </wsdl:message>

        <wsdl:message name="UnsupportedPolicyRequestFault">
                <wsdl:part name="UnsupportedPolicyRequestFault"
                        element="wsn-b:UnsupportedPolicyRequestFault" />
        </wsdl:message>

        <wsdl:message name="NotifyMessageNotSupportedFault">
                <wsdl:part name="NotifyMessageNotSupportedFault"
                        element="wsn-b:NotifyMessageNotSupportedFault" />
        </wsdl:message>

        <wsdl:message name="UnacceptableInitialTerminationTimeFault">
                <wsdl:part name="UnacceptableInitialTerminationTimeFault"
                        element="wsn-b:UnacceptableInitialTerminationTimeFault" />
        </wsdl:message>

        <wsdl:message name="GetCurrentMessageRequest">
                <wsdl:part name="GetCurrentMessageRequest"
                        element="wsn-b:GetCurrentMessage" />
        </wsdl:message>

        <wsdl:message name="GetCurrentMessageResponse">
                <wsdl:part name="GetCurrentMessageResponse"
                        element="wsn-b:GetCurrentMessageResponse" />
        </wsdl:message>

        <wsdl:message name="InvalidTopicExpressionFault">
                <wsdl:part name="InvalidTopicExpressionFault"
                        element="wsn-b:InvalidTopicExpressionFault" />
        </wsdl:message>

        <wsdl:message name="TopicNotSupportedFault">
                <wsdl:part name="TopicNotSupportedFault"
                        element="wsn-b:TopicNotSupportedFault" />
        </wsdl:message>

        <wsdl:message name="MultipleTopicsSpecifiedFault">
                <wsdl:part name="MultipleTopicsSpecifiedFault"
                        element="wsn-b:MultipleTopicsSpecifiedFault" />
        </wsdl:message>

        <wsdl:message name="NoCurrentMessageOnTopicFault">
                <wsdl:part name="NoCurrentMessageOnTopicFault"
                        element="wsn-b:NoCurrentMessageOnTopicFault" />
        </wsdl:message>

<wsdl:message name="Notify">
                <wsdl:part name="Notify"
                        element="wsn-b:Notify" />
        </wsdl:message>
<wsdl:message name="RegisterPublisher">
                <wsdl:part name="RegisterPublisher"
                        element="wsn-br:RegisterPublisher" />
        </wsdl:message>

<wsdl:message name="RegisterPublisherResponse">
                <wsdl:part name="RegisterPublisherResponse"
                        element="wsn-br:RegisterPublisherResponse" />
        </wsdl:message>


        <!-- ============= MESSAGES ============= -->

        <!-- SAS specific messages -->
        <wsdl:message name="GetCapabilitiesRequest">
                <wsdl:part name="GetCapabilitiesRequest" element="sas:GetCapabilities"/>
        </wsdl:message>
        <wsdl:message name="GetCapabilitiesResponse">
                <wsdl:part name="GetCapabilitiesResponse" element="sas:Capabilities"/>
        </wsdl:message>

        <wsdl:message name="DescribeSensorRequest">
                <wsdl:part name="DescribeSensorRequest" element="sas:DescribeSensor"/>
        </wsdl:message>
        <wsdl:message name="DescribeSensorResponse">
                <!-- TODO: check this ... make sure that all valid SensorML elements are included -->
                <wsdl:part name="DescribeSensorResponse" element="sml:SensorML"/>
        </wsdl:message>

        <wsdl:message name="ServiceException">
                <wsdl:part name="ServiceException" type="sas:OWSServiceException"/>
        </wsdl:message>
<!--
        <wsdl:message name="EmptyResponse">
                <wsdl:part name="EmptyResponse" type="xsd:anyType"/>
        </wsdl:message>
-->

        <!-- =================================================== -->
        <!-- ==================== SAS PortType ==================== -->
        <!-- =================================================== -->
        <wsdl:portType name="sasPortType" wsrf-rp:ResourceProperties="sas:SasResourceProperties">

                <!-- ============= implements GetCapabilities ============= -->
                <wsdl:operation name="GetCapabilities">
                        <wsdl:input wsa:Action="http://www.opengis.net/sas/GetCapabilitiesRequest"
                                message="sas:GetCapabilitiesRequest"/>
                        <wsdl:output wsa:Action="http://www.opengis.net/sas/GetCapabilitiesResponse"
                                message="sas:GetCapabilitiesResponse"/>
                        <wsdl:fault name="Exception" message="sas:ServiceException"/>
                </wsdl:operation>

                <!-- ============= implements DescribeSensor  ============= -->
                <wsdl:operation name="DescribeSensor">
                        <wsdl:input wsa:Action="http://www.opengis.net/sas/DescribeSensorRequest"
                                message="sas:DescribeSensorRequest"/>
                        <wsdl:output wsa:Action="http://www.opengis.net/sas/DescribeSensorResponse"
                                message="sas:DescribeSensorResponse"/>
                        <wsdl:fault name="Exception" message="sas:ServiceException"/>
                </wsdl:operation>

                <!-- ============= extends NotificationConsumer ============= -->
                <wsdl:operation name="Notify">
                        <wsdl:input wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationConsumer/Notify"
                                message="sas:Notify"/>
                <!-- <wsdl:output wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationConsumer/NotifyResponse"
                                message="sas:EmptyResponse"/> -->
                </wsdl:operation>

                <!-- ============= extends NotificationProducer ============= -->
                <wsdl:operation name="Subscribe">
                        <wsdl:input
                                wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeRequest"
                                message="sas:SubscribeRequest"/>
                        <wsdl:output
                                wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeResponse"
                                message="sas:SubscribeResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/>
                        <wsdl:fault name="InvalidFilterFault" message="sas:InvalidFilterFault"/>
                        <wsdl:fault name="TopicExpressionDialectUnknownFault"
                                message="sas:TopicExpressionDialectUnknownFault"/>
                        <wsdl:fault name="InvalidTopicExpressionFault"
                                message="sas:InvalidTopicExpressionFault"/>
                        <wsdl:fault name="TopicNotSupportedFault" message="sas:TopicNotSupportedFault"/>
                        <wsdl:fault name="InvalidProducerPropertiesExpressionFault"
                                message="sas:InvalidProducerPropertiesExpressionFault"/>
                        <wsdl:fault name="InvalidMessageContentExpressionFault"
                                message="sas:InvalidMessageContentExpressionFault"/>
                        <wsdl:fault name="UnacceptableInitialTerminationTimeFault"
                                message="sas:UnacceptableInitialTerminationTimeFault"/>
                        <wsdl:fault name="UnrecognizedPolicyRequestFault"
                                message="sas:UnrecognizedPolicyRequestFault"/>
                        <wsdl:fault name="UnsupportedPolicyRequestFault"
                                message="sas:UnsupportedPolicyRequestFault"/>
                        <wsdl:fault name="NotifyMessageNotSupportedFault"
                                message="sas:NotifyMessageNotSupportedFault"/>
                        <wsdl:fault name="SubscribeCreationFailedFault"
                                message="sas:SubscribeCreationFailedFault"/>
                </wsdl:operation>

                <wsdl:operation name="GetCurrentMessage">
                        <wsdl:input
                                wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/GetCurrentMessageRequest"
                                message="sas:GetCurrentMessageRequest"/>
                        <wsdl:output
                                wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/GetCurrentMessageResponse"
                                message="sas:GetCurrentMessageResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/>
                        <wsdl:fault name="TopicExpressionDialectUnknownFault"
                                message="sas:TopicExpressionDialectUnknownFault"/>
                        <wsdl:fault name="InvalidTopicExpressionFault"
                                message="sas:InvalidTopicExpressionFault"/>
                        <wsdl:fault name="TopicNotSupportedFault" message="sas:TopicNotSupportedFault"/>
                        <wsdl:fault name="NoCurrentMessageOnTopicFault"
                                message="sas:NoCurrentMessageOnTopicFault"/>
                        <wsdl:fault name="MultipleTopicsSpecifiedFault"
                                message="sas:MultipleTopicsSpecifiedFault"/>
                </wsdl:operation>

                <!-- ========= extends RegisterPublisher ======= -->
                <!-- Will be used by SAS to both register push-style sensors but also to register pull-style for SOS
                        (via extension mechanism - has to be specified) -->
                <wsdl:operation name="RegisterPublisher">
                        <wsdl:input
                                wsa:Action="http://docs.oasis-open.org/wsn/brw-2/RegisterPublisher/RegisterPublisherRequest"
                                message="sas:RegisterPublisher"/>
                        <wsdl:output
                                wsa:Action="http://docs.oasis-open.org/wsn/brw-2/RegisterPublisher/RegisterPublisherResponse"
                                message="sas:RegisterPublisherResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/>
                        <wsdl:fault name="InvalidTopicExpressionFault"
                                message="sas:InvalidTopicExpressionFault"/>
                        <wsdl:fault name="TopicNotSupportedFault" message="sas:TopicNotSupportedFault"/>
                        <wsdl:fault name="PublisherRegistrationRejectedFault"
                                message="sas:PublisherRegistrationRejectedFault"/>
                        <wsdl:fault name="PublisherRegistrationFailedFault"
                                message="sas:PublisherRegistrationFailedFault"/>
                        <wsdl:fault name="UnacceptableInitialTerminationTimeFault"
                                message="sas:UnacceptableInitialTerminationTimeFault"/>
                </wsdl:operation>

                <!-- =========== implements WS-MetadataExchange (2004) =========== -->
<!-- <wsdl:operation name="GetMetadata">
                        <wsdl:input
                                wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata"
                                name="GetMetadataMsg" message="sas:GetMetadataMsg" />
                        <wsdl:output
                                wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadataResponse"
                                name="GetMetadataResponseMsg" message="sas:GetMetadataResponseMsg" />
                </wsdl:operation>
-->
                <!-- =========== implements WS-ResourceProperties operations =========== -->
                <wsdl:operation name="GetResourcePropertyDocument">
                        <wsdl:input
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourcePropertyDocument/GetResourcePropertyDocumentRequest"
                                name="GetResourcePropertyDocumentRequest"
                                message="sas:GetResourcePropertyDocumentRequest"/>
                        <wsdl:output
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourcePropertyDocument/GetResourcePropertyDocumentResponse"
                                name="GetResourcePropertyDocumentResponse"
                                message="sas:GetResourcePropertyDocumentResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/>
                        <wsdl:fault name="ResourceUnavailableFault" message="sas:ResourceUnavailableFault"/>
                </wsdl:operation>

                <wsdl:operation name="GetResourceProperty">
                        <wsdl:input
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest"
                                name="GetResourcePropertyRequest" message="sas:GetResourcePropertyRequest"/>
                        <wsdl:output
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse"
                                name="GetResourcePropertyResponse" message="sas:GetResourcePropertyResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/>
                        <wsdl:fault name="ResourceUnavailableFault" message="sas:ResourceUnavailableFault"/>
                        <wsdl:fault name="InvalidResourcePropertyQNameFault"
                                message="sas:InvalidResourcePropertyQNameFault"/>
                </wsdl:operation>

                <wsdl:operation name="GetMultipleResourceProperties">
                        <wsdl:input
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesRequest"
                                name="GetMultipleResourcePropertiesRequest"
                                message="sas:GetMultipleResourcePropertiesRequest"/>
                        <wsdl:output
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesResponse"
                                name="GetMultipleResourcePropertiesResponse"
                                message="sas:GetMultipleResourcePropertiesResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/>
                        <wsdl:fault name="ResourceUnavailableFault" message="sas:ResourceUnavailableFault"/>
                        <wsdl:fault name="InvalidResourcePropertyQNameFault"
                                message="sas:InvalidResourcePropertyQNameFault"/>
                </wsdl:operation>

                <wsdl:operation name="QueryResourceProperties">
                        <wsdl:input
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/QueryResourceProperties/QueryResourcePropertiesRequest"
                                name="QueryResourcePropertiesRequest"
                                message="sas:QueryResourcePropertiesRequest"/>
                        <wsdl:output
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/QueryResourceProperties/QueryResourcePropertiesResponse"
                                name="QueryResourcePropertiesResponse"
                                message="sas:QueryResourcePropertiesResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/>
                        <wsdl:fault name="ResourceUnavailableFault" message="sas:ResourceUnavailableFault"/>
                        <wsdl:fault name="UnknownQueryExpressionDialectFault"
                                message="sas:UnknownQueryExpressionDialectFault"/>
                        <wsdl:fault name="InvalidQueryExpressionFault"
                                message="sas:InvalidQueryExpressionFault"/>
                        <wsdl:fault name="QueryEvaluationErrorFault"
                                message="sas:QueryEvaluationErrorFault"/>
                </wsdl:operation>

                <wsdl:operation name="SetResourceProperties">
                        <wsdl:input
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResourcePropertiesRequest"
                                name="SetResourcePropertiesRequest" message="sas:SetResourcePropertiesRequest"/>
                        <wsdl:output
                                wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResourcePropertiesResponse"
                                name="SetResourcePropertiesResponse"
                                message="sas:SetResourcePropertiesResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/>
                        <wsdl:fault name="ResourceUnavailableFault" message="sas:ResourceUnavailableFault"/>
                        <wsdl:fault name="InvalidModificationFault" message="sas:InvalidModificationFault"/>
                        <wsdl:fault name="UnableToModifyResourcePropertyFault"
                                message="sas:UnableToModifyResourcePropertyFault"/>
                        <wsdl:fault name="InvalidResourcePropertyQNameFault"
                                message="sas:InvalidResourcePropertyQNameFault"/>
                        <wsdl:fault name="SetResourcePropertyRequestFailedFault"
                                message="sas:SetResourcePropertyRequestFailedFault"/>
                </wsdl:operation>
        </wsdl:portType>

        <!-- =================================================== -->
        <!-- ======== SAS PublisherRegistrationManager PortType======== -->
        <!-- =================================================== -->
        <wsdl:portType name="SasPublisherRegistrationManager">

                <!-- ========= implements the Renew operation ======= -->
                <wsdl:operation name="Renew">
                        <wsdl:input name="RenewRequest" message="sas:RenewRequest"/>
                        <wsdl:output name="RenewResponse" message="sas:RenewResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/>
                        <wsdl:fault name="UnacceptableTerminationTimeFault"
                                message="sas:UnacceptableTerminationTimeFault"/>
                </wsdl:operation>

                <!-- ========= extends PublisherRegistrationManager ======= -->
                <!--===DestroyRegistration:ImmediateResourceTermination==========-->
                <wsdl:operation name="DestroyRegistration">
                        <wsdl:input name="DestroyRegistrationRequest"
                                message="sas:DestroyRegistrationRequest"/>
                        <wsdl:output name="DestroyRegistrationResponse"
                                message="sas:DestroyRegistrationResponse"/>
                        <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/>
                        <wsdl:fault name="ResourceNotDestroyedFault" message="sas:ResourceNotDestroyedFault"
                        />
                </wsdl:operation>

        </wsdl:portType>

        <!-- ============================= ========================= -->
        <!-- ====================== BINDING ========================= -->
        <!-- ======================================================= -->
        <wsdl:binding name="SasBinding" type="sas:sasPortType">
                <wsdl-soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

                <wsdl:operation name="GetCapabilities">
                        <wsdl-soap12:operation/>
                        <wsdl:input>
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:input>
                        <wsdl:output>
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:output>
                        <wsdl:fault name="Exception">
                                <wsdl-soap12:fault use="literal" name="Exception"/>
                        </wsdl:fault>
                </wsdl:operation>

                <wsdl:operation name="DescribeSensor">
                        <wsdl-soap12:operation/>
                        <wsdl:input>
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:input>
                        <wsdl:output>
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:output>
                        <wsdl:fault name="Exception">
                                <wsdl-soap12:fault use="literal" name="Exception"/>
                        </wsdl:fault>
                </wsdl:operation>

                <wsdl:operation name="Notify">
                        <wsdl-soap12:operation/>
                        <wsdl:input>
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:input>
<!--     <wsdl:output>
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:output> -->

                </wsdl:operation>

                <wsdl:operation name="Subscribe">
                        <wsdl-soap12:operation/>
                        <wsdl:input>
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:input>
                        <wsdl:output>
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:output>
                        <wsdl:fault name="ResourceUnknownFault">
                                <wsdl-soap12:fault use="encoded" name="ResourceUnknownFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="InvalidFilterFault">
                                <wsdl-soap12:fault use="encoded" name="InvalidFilterFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="TopicExpressionDialectUnknownFault">
                                <wsdl-soap12:fault use="encoded" name="TopicExpressionDialectUnknownFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="InvalidTopicExpressionFault">
                                <wsdl-soap12:fault use="encoded" name="InvalidTopicExpressionFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="TopicNotSupportedFault">
                                <wsdl-soap12:fault use="encoded" name="TopicNotSupportedFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="InvalidProducerPropertiesExpressionFault">
                                <wsdl-soap12:fault use="encoded" name="InvalidProducerPropertiesExpressionFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="InvalidMessageContentExpressionFault">
                                <wsdl-soap12:fault use="encoded" name="InvalidMessageContentExpressionFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="UnacceptableInitialTerminationTimeFault">
                                <wsdl-soap12:fault use="encoded" name="UnacceptableInitialTerminationTimeFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="UnrecognizedPolicyRequestFault">
                                <wsdl-soap12:fault use="encoded" name="UnrecognizedPolicyRequestFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="UnsupportedPolicyRequestFault">
                                <wsdl-soap12:fault use="encoded" name="UnsupportedPolicyRequestFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="NotifyMessageNotSupportedFault">
                                <wsdl-soap12:fault use="encoded" name="NotifyMessageNotSupportedFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="SubscribeCreationFailedFault">
                                <wsdl-soap12:fault use="encoded" name="SubscribeCreationFailedFault"/>
                        </wsdl:fault>
                </wsdl:operation>

                <wsdl:operation name="GetCurrentMessage">
                        <wsdl-soap12:operation/>
                        <wsdl:input>
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:input>
                        <wsdl:output>
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:output>
                        <wsdl:fault name="ResourceUnknownFault">
                                <wsdl-soap12:fault use="encoded" name="ResourceUnknownFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="TopicExpressionDialectUnknownFault">
                                <wsdl-soap12:fault use="encoded" name="TopicExpressionDialectUnknownFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="InvalidTopicExpressionFault">
                                <wsdl-soap12:fault use="encoded" name="InvalidTopicExpressionFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="TopicNotSupportedFault">
                                <wsdl-soap12:fault use="encoded" name="TopicNotSupportedFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="NoCurrentMessageOnTopicFault">
                                <wsdl-soap12:fault use="encoded" name="NoCurrentMessageOnTopicFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="MultipleTopicsSpecifiedFault">
                                <wsdl-soap12:fault use="encoded" name="MultipleTopicsSpecifiedFault"/>
                        </wsdl:fault>
                </wsdl:operation>

                <wsdl:operation name="RegisterPublisher">
                        <wsdl-soap12:operation/>
                        <wsdl:input>
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:input>
                        <wsdl:output>
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:output>
                        <wsdl:fault name="ResourceUnknownFault">
                                <wsdl-soap12:fault use="encoded" name="ResourceUnknownFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="InvalidTopicExpressionFault">
                                <wsdl-soap12:fault use="encoded" name="InvalidTopicExpressionFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="TopicNotSupportedFault">
                                <wsdl-soap12:fault use="encoded" name="TopicNotSupportedFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="PublisherRegistrationRejectedFault">
                                <wsdl-soap12:fault use="encoded" name="PublisherRegistrationRejectedFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="PublisherRegistrationFailedFault">
                                <wsdl-soap12:fault use="encoded" name="PublisherRegistrationFailedFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="UnacceptableInitialTerminationTimeFault">
                                <wsdl-soap12:fault use="encoded" name="UnacceptableInitialTerminationTimeFault"/>
                        </wsdl:fault>
                </wsdl:operation>

<!-- <wsdl:operation name="GetMetadata">
                        <wsdl-soap12:operation/>
                        <wsdl:input>
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:input>
                        <wsdl:output>
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:output>
                </wsdl:operation>
-->
                <wsdl:operation name="GetResourcePropertyDocument">
                        <wsdl-soap12:operation/>
                        <wsdl:input name="GetResourcePropertyDocumentRequest">
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:input>
                        <wsdl:output name="GetResourcePropertyDocumentResponse">
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:output>
                        <wsdl:fault name="ResourceUnknownFault">
                                <wsdl-soap12:fault use="encoded" name="ResourceUnknownFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="ResourceUnavailableFault">
                                <wsdl-soap12:fault use="encoded" name="ResourceUnavailableFault"/>
                        </wsdl:fault>
                </wsdl:operation>
                <wsdl:operation name="GetResourceProperty">
                        <wsdl-soap12:operation/>
                        <wsdl:input name="GetResourcePropertyRequest">
                                <wsdl-soap12:body use="literal"
                                        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
                        </wsdl:input>
                        <wsdl:output name="GetResourcePropertyResponse">
                                <wsdl-soap12:body use="literal"
                                        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
                        </wsdl:output>
                        <wsdl:fault name="ResourceUnknownFault">
                                <wsdl-soap12:fault use="encoded" name="ResourceUnknownFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="ResourceUnavailableFault">
                                <wsdl-soap12:fault use="encoded" name="ResourceUnavailableFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="InvalidResourcePropertyQNameFault">
                                <wsdl-soap12:fault use="encoded" name="InvalidResourcePropertyQNameFault"/>
                        </wsdl:fault>
                </wsdl:operation>
                <wsdl:operation name="GetMultipleResourceProperties">
                        <wsdl-soap12:operation/>
                        <wsdl:input name="GetMultipleResourcePropertiesRequest">
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:input>
                        <wsdl:output name="GetMultipleResourcePropertiesResponse">
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:output>
                        <wsdl:fault name="ResourceUnknownFault">
                                <wsdl-soap12:fault use="encoded" name="ResourceUnknownFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="ResourceUnavailableFault">
                                <wsdl-soap12:fault use="encoded" name="ResourceUnavailableFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="InvalidResourcePropertyQNameFault">
                                <wsdl-soap12:fault use="encoded" name="InvalidResourcePropertyQNameFault"/>
                        </wsdl:fault>
                </wsdl:operation>
                <wsdl:operation name="QueryResourceProperties">
                        <wsdl-soap12:operation/>
                        <wsdl:input name="QueryResourcePropertiesRequest">
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:input>
                        <wsdl:output name="QueryResourcePropertiesResponse">
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:output>
                        <wsdl:fault name="ResourceUnknownFault">
                                <wsdl-soap12:fault use="encoded" name="ResourceUnknownFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="ResourceUnavailableFault">
                                <wsdl-soap12:fault use="encoded" name="ResourceUnavailableFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="UnknownQueryExpressionDialectFault">
                                <wsdl-soap12:fault use="encoded" name="UnknownQueryExpressionDialectFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="InvalidQueryExpressionFault">
                                <wsdl-soap12:fault use="encoded" name="InvalidQueryExpressionFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="QueryEvaluationErrorFault">
                                <wsdl-soap12:fault use="encoded" name="QueryEvaluationErrorFault"/>
                        </wsdl:fault>
                </wsdl:operation>
                <wsdl:operation name="SetResourceProperties">
                        <wsdl-soap12:operation/>
                        <wsdl:input name="SetResourcePropertiesRequest">
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:input>
                        <wsdl:output name="SetResourcePropertiesResponse">
                                <wsdl-soap12:body use="literal"/>
                        </wsdl:output>
                        <wsdl:fault name="ResourceUnknownFault">
                                <wsdl-soap12:fault use="encoded" name="ResourceUnknownFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="ResourceUnavailableFault">
                                <wsdl-soap12:fault use="encoded" name="ResourceUnavailableFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="InvalidModificationFault">
                                <wsdl-soap12:fault use="encoded" name="InvalidModificationFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="UnableToModifyResourcePropertyFault">
                                <wsdl-soap12:fault use="encoded" name="UnableToModifyResourcePropertyFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="InvalidResourcePropertyQNameFault">
                                <wsdl-soap12:fault use="encoded" name="InvalidResourcePropertyQNameFault"/>
                        </wsdl:fault>
                        <wsdl:fault name="SetResourcePropertyRequestFailedFault">
                                <wsdl-soap12:fault use="encoded" name="SetResourcePropertyRequestFailedFault"/>
                        </wsdl:fault>
                </wsdl:operation>

        </wsdl:binding>
        <wsdl:service name="SasService">
                <wsdl:port name="SasPort" binding="sas:SasBinding">
                        <wsdl-soap12:address location="http://localhost:8080/52nSAS/services/sas"/>
                </wsdl:port>
        </wsdl:service>
</wsdl:definitions>

<!-- C:\muse-test\wsdl>wsdl2java.bat -j2ee mini -wsdl SASallinone.wsdl -output test -
verbose -->


---------------------------------------------------------------------
To unsubscribe, e-mail: muse-user-unsubscribe@...
For additional commands, e-mail: muse-user-help@...

Re: generating sources for service using quite complex schema

by Johannes Echterhoff-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi.

So far there was no answer to my questions. So I am wondering whether my
first email contained just too much questions for a single email. Should
I split the problems I encountered into several emails so that they can
be handled with more focus on each specific problem?

Best regards,
Johannes


Johannes Echterhoff schrieb:

> Hello.
>
> I would like to use muse for my scenario but run into problems just
> when I wanted to do more than the tutorial. Before describing the
> problem, I would like to outline my scenario shortly so that you get
> an understanding of what I want to achieve. Did I already mention that
> I am a newbie to muse. :-)
>
> I have to warn you: this email is quite large - so better get a new
> cup of coffee before reading.
>
> The scenario is as follows: Sensors generate observations which are
> pushed to the service (so the service may act like a notification
> broker). The observations are published on one topic while sensor
> status messages (created by the service) are published on another.
> Clients can subscribe for both types of messages. For the observation
> topic subscribers can use message content filters that allow at least
> xpath expressions but can also be more specific filters (encoded in XML).
>
> I would like to extend the notification producer interface with some
> additional operations (DescribeSensor, GetCapabilities). Depending on
> the use case, even the RegisterPublisher and Notify operation from WSN
> could be realized by that service. If so, the RegisterPublisher
> request would make use of the extensibility mechanism defined for that
> operation to send also the sensor description in XML.
>
> Feedback on how muse could / should be used to handle this scenario
> would be most appreciated!
>
>
> Ok, let me explain what I accomplished so far. First of all, I tried
> to create a wsdl description for the new service. As I am not too
> familiar with using wsdl defined web services, I may have made silly
> mistakes - if so please tell me what I did wrong. That wsdl used
> imports to reference definitions from other wsdl files (the
> WS-Notification and -Resource specs). For my custom operations I
> needed to import schema which defined the request / response messages
> and types used in these operations.
>
> After some trials with wsdlmerge I got this exception message:
>
> C:\muse-test\wsdlmerge_test>wsdlmerge.bat -uri
> http://www.opengis.net/sas/1.0.0
> -address http://localhost:8080/52nSAS/sas -output SASmerged.wsdl
> -verbose SAS.ws
> dl WS-BaseNotification-1_3.wsdl WS-BrokeredNotification-1_3.wsdl
> WS-Resource-1_2
> .wsdl WS-ResourceProperties-1_2.wsdl
>
> SEVERE: [ID = 'WsdlMergeFailed'] wsdlmerge encountered an error. Use
> -verbose to
> see more detailed information.
>
> An exception was caught: null
>
> The exception generated the following stacktrace:
>
> java.lang.NullPointerException
>        at
> org.apache.muse.tools.generator.util.DefinitionInfo.createOutput(Defi
> nitionInfo.java:198)
>        at
> org.apache.muse.tools.generator.util.DefinitionInfo.createOperation(D
> efinitionInfo.java:173)
>        at
> org.apache.muse.tools.generator.util.DefinitionInfo.addOperation(Defi
> nitionInfo.java:308)
>        at
> org.apache.muse.tools.generator.WsdlMerge.copyOperations(WsdlMerge.ja
> va:340)
>        at
> org.apache.muse.tools.generator.WsdlMerge.merge(WsdlMerge.java:219)
>        at
> org.apache.muse.tools.generator.WsdlMerge.run(WsdlMerge.java:141)
>        at
> org.apache.muse.tools.generator.WsdlMerge.main(WsdlMerge.java:113)
>
> The wsdl is attached (SAS.wsdl).
>
>
> I also created my own wsdl (see attached wsdl: SASallinone.wsdl) which
> contains all the message definitions and which imports all required
> schema (quite a bunch). Then I run wsdl2java. That worked, but the
> result is not exactly what I expected (though that may be due to my
> insufficient knowledge of muse). Also, there was a warning that I do
> not understand because the WS-ResourceProperties-1_2.xsd is in the
> directory where the wsdl file is and the schema import looks ok to me:
>
> C:\muse-test\wsdl>wsdl2java.bat -j2ee mini -wsdl SASallinone.wsdl
> -output test -verbose
>
> WARNING: [ID = 'NoWSRPSchema'] No WS-RP schema found.
>
> C:\muse-test\wsdl>wsdlmerge
>
>
> However, code has been generated; the classes (excluding the
> interfaces) look like this:
>
> (MyCapability1)
>
> package org.oasis_open.docs.wsn.br_2;
>
> import org.apache.muse.ws.addressing.EndpointReference;
> import org.apache.muse.core.AbstractCapability;
> import java.util.Date;
> import org.w3c.dom.Element;
>
> public class MyCapability extends AbstractCapability implements
> IMyCapability {
>    public Element registerPublisher(EndpointReference
> PublisherReference, Element[] Topic, boolean Demand, Date
> InitialTerminationTime) throws Exception    {
>        //TODO implement registerPublisher
>        throw new RuntimeException("Unimplemented Method:
> registerPublisher");
>    }
> }
>
>
> (MyCapability2)
>
> package net.opengis.www.sas._1.0.0;
>
> import org.apache.muse.core.AbstractCapability;
> import org.w3c.dom.Element;
>
> public class MyCapability extends AbstractCapability implements
> IMyCapability {
>    public Element getCapabilities() throws Exception    {
>        //TODO implement getCapabilities
>        throw new RuntimeException("Unimplemented Method:
> getCapabilities");
>    }
>    public Element describeSensor(Element SensorID) throws Exception    {
>        //TODO implement describeSensor
>        throw new RuntimeException("Unimplemented Method:
> describeSensor");
>    }
> }
>
>
> There are several questions that I have:
>
>    * concerning the generated sources:
>          o The getCapabilities method (in MyCapability2) should expect
>            some XML input - do you have any idea why the generated
>            method only has a return parameter? Is that due to the fact
>            that I used doc/literal?
>          o The describeSensor method (in MyCapability2) looks ok - if
>            the SensorID Element is actually the complete DescribeSensor
>            request XML document which would be send by a client in the
>            SOAP body. Looking at the registerPublisher method, it seems
>            like wsdl2java removes the top-level XML fragment from the
>            request (in this case the RegisterPublisher XML element) and
>            lists all elements contained in that element instead (even
>            converting them if they are of simple type).
>          o Neither of the capability classes extends
>            AbstractWsResourceCapability - is that due to the fact that
>            I did not extend the resource type with my own elements
>            (i.e., it just lists elements from WSN, WSRF and MUWS)?
>          o The registerPublisher method (in MyCapability1) takes the
>            elements contained in a usual RegisterPublisher request,
>            i.e. as they are listed in the schema from OASIS, as
>            parameters. As I said earlier I would like to make use of
>            the extension mechanism for that operation. Do I therefore
>            have to modify the schema before generating source code or
>            is there some way to retrieve the pure request body via muse?
>          o In the SASallinone.wsdl I added the Notify operation from
>            the NotificationConsumer interface to the services binding
>            and port type.
>    * in general:
>          o According to the SubscriptionManager.wsdl that is contained
>            in the generated folders (WebContent/WEB-INF/classes/wsdl)
>            there will be one subscription manager that will be
>            referenced in all Subscribe request responses. So will each
>            subscription reference the same manager? Will a Renew or
>            Destroy request for a certain Subscription be differentiated
>            from requests to other Subscriptions via some parameters
>            added by muse to the subscription endpoint?
>          o How could we implement a RegisterPublisherManager in muse?
>            Would we just have to add another service binding to the
>            wsdl before generating source code? The operations of that
>            manager would be quite similar to those of the
>            SubscriptionManager, could we profit from that?
>
> Please help me getting started.
>
> Thanks.
>
> Johannes
> ------------------------------------------------------------------------
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: muse-user-unsubscribe@...
> For additional commands, e-mail: muse-user-help@...



---------------------------------------------------------------------
To unsubscribe, e-mail: muse-user-unsubscribe@...
For additional commands, e-mail: muse-user-help@...


Parent Message unknown Re: generating sources for service using quite complex schema

by allen_a_george :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Johannes,

I'm not as expert as many on this list, but I thought I'd take a stab
at answering some of your questions anyways.

Looking through your SAS.wsdl, I was curious why you did a
<wsdl:import> of the WSRF/WSN wsdls. At least when I created my
(much simpler) WS-Resource I did not have to do that.

Another point: I noticed that you've split your schema definition for
the same namespace into two parts as follows:


<xsd:schema elementFormDefault="qualified"
            targetNamespace="http://www.opengis.net/sas/1.0.0">
            <xsd:include schemaLocation="OGC-SAS-1_0_0-sasAll.xsd"/>
            <xsd:include
schemaLocation="OGC-SAS-1_0_0-sasCapabilities.xsd"/>
            <xsd:include schemaLocation="OGC-SAS-1_0_0-sasCommon.xsd"/>
            <xsd:include
schemaLocation="OGC-SAS-1_0_0-sasDescribeSensor.xsd"/>
            <xsd:include
schemaLocation="OGC-SAS-1_0_0-sasMessageSchema.xsd"/>
        </xsd:schema>


        <xsd:schema elementFormDefault="qualified"
            targetNamespace="http://www.opengis.net/sas/1.0.0">

            <xsd:element name="SasResourceProperties">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element
ref="wsrf-rp:QueryExpressionDialect" minOccurs="0"
                            maxOccurs="unbounded"/>
                        <xsd:element ref="wsn-b:FixedTopicSet"/>
                        <xsd:element ref="wsn-t:TopicSet" minOccurs="0"/>
                        <xsd:element ref="wsn-t:TopicExpression"
minOccurs="0" maxOccurs="unbounded"/>
                        <xsd:element ref="wsn-t:TopicExpressionDialect"
minOccurs="0"
                            maxOccurs="unbounded"/>
                        <xsd:element ref="muws1:ResourceId"/>
                        <xsd:element ref="muws1:ManageabilityCapability"
minOccurs="0"
                            maxOccurs="unbounded"/>
                        <!-- ??? -->
                        <xsd:element ref="muws2:Caption" minOccurs="0"
maxOccurs="unbounded"/>
                        <!-- ??? -->
                        <xsd:element ref="muws2:Description"
minOccurs="0" maxOccurs="unbounded"/>
                        <!-- ??? -->
                        <xsd:element ref="muws2:Version" minOccurs="0"/>
                        <!-- ??? -->
                        <xsd:element ref="muws2:OperationalStatus"/>
                        <!-- ??? -->
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:complexType name="ServiceExceptionType">
                <xsd:complexContent>
                    <xsd:extension base="wsrf-bf:BaseFaultType">
                        <xsd:choice>
                            <xsd:element ref="ows:ExceptionReport"/>
                            <xsd:element ref="ows:Exception"/>
                        </xsd:choice>
                    </xsd:extension>
                </xsd:complexContent>
            </xsd:complexType>

            <xsd:element name="ServiceException"
type="sas:ServiceExceptionType"/>

        </xsd:schema>

I am not sure how a parser will interpret this, but my understanding
was that each <xsd:schema></xsd:schema> pair is separate
from the other. Was there a reason you did not include the imports and
message definitions in one <xsd:schema> pair? Also, I assume that
all the imported documents are defined in the
http://www.opengis.net/sas/1.0.0 namespace or have no namespace?

> C:\muse-test\wsdl>wsdl2java.bat -j2ee mini
> -wsdl SASallinone.wsdl -output test -verbose
> WARNING: [ID = 'NoWSRPSchema'] No WS-RP schema found

I'm not quite sure, but this may be because you don't have
ResourceMetadataDescriptor document attached to your SAS portType as
well as a reference to wsrf-rp:ResourceProperties reference. Perhaps
someone can correct me on this?

> (MyCapability2) package net.opengis.www.sas._1.0.0; import
> org.apache.muse.core.AbstractCapability; import org.w3c.dom.Element;
> public class MyCapability extends AbstractCapability implements
> IMyCapability {    public Element getCapabilities() throws
> Exception    {        //TODO implement getCapabilities        throw
> new RuntimeException("Unimplemented Method: getCapabilities");    }    
> public Element describeSensor(Element SensorID) throws Exception    {
>        //TODO implement describeSensor        throw new
> RuntimeException("Unimplemented Method: describeSensor");    } }
I cannot see the element definition for sas:GetCapabilities in either
of the WSDLs... What does it look like?

There are several questions that I have
>    * concerning the generated sources:
>          o The getCapabilities method (in MyCapability2) should expect
>            some XML input - do you have any idea why the generated
>            method only has a return parameter? Is that due to the fact
>            that I used doc/literal?
No - I don't think it's because it's doc/lit. All my WSDLs use doc/lit
and they have input parameters for the methods. I am curious if the
element definition is being found properly.<br>

> o The describeSensor method (in MyCapability2) looks ok - if
>            the SensorID Element is actually the complete DescribeSensor
>            request XML document which would be send by a client in the
>            SOAP body. Looking at the registerPublisher method, it seems
>            like wsdl2java removes the top-level XML fragment from the
>            request (in this case the RegisterPublisher XML element) and
>            lists all elements contained in that element instead (even
>            converting them if they are of simple type).
>
What does the sas:DescribeSensor element look like? Is SensorID a
complex type? (Note that you can write your own Java classes to
represent this type and define a custom serializer in muse.xml to
convert to/from the xml wire format; this would allow you to use a Java
type as a method parameter)

> o Neither of the capability classes extends AbstractWsResourceCapability - is that due to the fact that I did not extend the resource type with my own elements (i.e., it just lists elements from WSN, WSRF and MUWS)?
 
The capabilities look fine. I've not seen any generated capability
extend AbstractWsResourceCapability...

> o The registerPublisher method (in MyCapability1) takes the
>            elements contained in a usual RegisterPublisher request,
>            i.e. as they are listed in the schema from OASIS, as
>            parameters. As I said earlier I would like to make use of
>            the extension mechanism for that operation. Do I therefore
>            have to modify the schema before generating source code or
>            is there some way to retrieve the pure request body via muse?
Were you planning on extending it using the <xsd:extension>system?

> * in general:
>          o According to the SubscriptionManager.wsdl that is contained
>            in the generated folders (WebContent/WEB-INF/classes/wsdl)
>            there will be one subscription manager that will be
>            referenced in all Subscribe request responses. So will each
>            subscription reference the same manager?

Could you clarify this point? My understanding is that when
subscribing, you set the producer EPR to the EPR of the resource that
you're subscribing to. That said, all subscribe operations are handled
by the same subscription manager under Muse's hood. Any renew, destroy
request etc. will contain a subscription reference that (using
reference parameters) will identify the exact subscription you want to
perform these operations on...

I hope this helps a bit at least.

Cheers,
Allen


---------------------------------------------------------------------
To unsubscribe, e-mail: muse-user-unsubscribe@...
For additional commands, e-mail: muse-user-help@...


RE: generating sources for service using quite complex schema

by Vinh Nguyen (vinguye2) :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Johannes,
Try breaking up this email into 1-2 questions at a time.  It's very hard
to read:)
Just a few points to help:

1) To be doc-literal, import the necessary XSDs.  Don't import another
WSDL and assume you'll inherit all the schemas used in that WSDL.

2) Try to avoid using wsdlmerge.  I've seen that after using wsdl2java,
the wsdl it generates which combines all schemas inline doesn't always
update the schema namespaces properly.  So I've always deployed my
original wsdls instead of the one wsdl2java outputs.

3) The "No WS-RP schema found" can safely be ignored.  It's probably
because your service has WSRP properties but no .wsrmd file, which is
not required.

4) If a generated capability method doesn't have parameters when it is
expected to, it might be due to your wsdl not being doc-literal.  The
message input might not be defined correctly.  Since you didn't include
your schemas (i.e. sas:GetCapabilities), I can't tell if you're defining
them correctly.

5) A capability only needs to implement AbstractWsResourceCapability if
it is providing the get/set methods for your custom resource properties.

6) A SubscriptionManager resource manages a single subscription.  So if
you call Subscribe 5 times, you will have 5 instances of
SubscriptionManager.

-Vinh


-----Original Message-----
From: Allen George [mailto:allen.george@...]
Sent: Tuesday, May 13, 2008 8:49 AM
To: muse-user@...
Subject: Re: generating sources for service using quite complex schema

Hi Johannes,

I'm not as expert as many on this list, but I thought I'd take a stab at
answering some of your questions anyways.

Looking through your SAS.wsdl, I was curious why you did a <wsdl:import>
of the WSRF/WSN wsdls. At least when I created my (much simpler)
WS-Resource I did not have to do that.

Another point: I noticed that you've split your schema definition for
the same namespace into two parts as follows:


<xsd:schema elementFormDefault="qualified"
            targetNamespace="http://www.opengis.net/sas/1.0.0">
            <xsd:include schemaLocation="OGC-SAS-1_0_0-sasAll.xsd"/>
            <xsd:include
schemaLocation="OGC-SAS-1_0_0-sasCapabilities.xsd"/>
            <xsd:include schemaLocation="OGC-SAS-1_0_0-sasCommon.xsd"/>
            <xsd:include
schemaLocation="OGC-SAS-1_0_0-sasDescribeSensor.xsd"/>
            <xsd:include
schemaLocation="OGC-SAS-1_0_0-sasMessageSchema.xsd"/>
        </xsd:schema>


        <xsd:schema elementFormDefault="qualified"
            targetNamespace="http://www.opengis.net/sas/1.0.0">

            <xsd:element name="SasResourceProperties">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element
ref="wsrf-rp:QueryExpressionDialect" minOccurs="0"
                            maxOccurs="unbounded"/>
                        <xsd:element ref="wsn-b:FixedTopicSet"/>
                        <xsd:element ref="wsn-t:TopicSet"
minOccurs="0"/>
                        <xsd:element ref="wsn-t:TopicExpression"
minOccurs="0" maxOccurs="unbounded"/>
                        <xsd:element ref="wsn-t:TopicExpressionDialect"
minOccurs="0"
                            maxOccurs="unbounded"/>
                        <xsd:element ref="muws1:ResourceId"/>
                        <xsd:element ref="muws1:ManageabilityCapability"

minOccurs="0"
                            maxOccurs="unbounded"/>
                        <!-- ??? -->
                        <xsd:element ref="muws2:Caption" minOccurs="0"
maxOccurs="unbounded"/>
                        <!-- ??? -->
                        <xsd:element ref="muws2:Description"
minOccurs="0" maxOccurs="unbounded"/>
                        <!-- ??? -->
                        <xsd:element ref="muws2:Version" minOccurs="0"/>
                        <!-- ??? -->
                        <xsd:element ref="muws2:OperationalStatus"/>
                        <!-- ??? -->
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:complexType name="ServiceExceptionType">
                <xsd:complexContent>
                    <xsd:extension base="wsrf-bf:BaseFaultType">
                        <xsd:choice>
                            <xsd:element ref="ows:ExceptionReport"/>
                            <xsd:element ref="ows:Exception"/>
                        </xsd:choice>
                    </xsd:extension>
                </xsd:complexContent>
            </xsd:complexType>

            <xsd:element name="ServiceException"
type="sas:ServiceExceptionType"/>

        </xsd:schema>

I am not sure how a parser will interpret this, but my understanding was
that each <xsd:schema></xsd:schema> pair is separate from the other. Was
there a reason you did not include the imports and message definitions
in one <xsd:schema> pair? Also, I assume that all the imported documents
are defined in the http://www.opengis.net/sas/1.0.0 namespace or have no
namespace?

> C:\muse-test\wsdl>wsdl2java.bat -j2ee mini -wsdl SASallinone.wsdl
> -output test -verbose
> WARNING: [ID = 'NoWSRPSchema'] No WS-RP schema found

I'm not quite sure, but this may be because you don't have
ResourceMetadataDescriptor document attached to your SAS portType as
well as a reference to wsrf-rp:ResourceProperties reference. Perhaps
someone can correct me on this?

> (MyCapability2) package net.opengis.www.sas._1.0.0; import
> org.apache.muse.core.AbstractCapability; import org.w3c.dom.Element;
> public class MyCapability extends AbstractCapability implements
> IMyCapability {    public Element getCapabilities() throws
> Exception    {        //TODO implement getCapabilities        throw
> new RuntimeException("Unimplemented Method: getCapabilities");    }

> public Element describeSensor(Element SensorID) throws Exception    {
>        //TODO implement describeSensor        throw new
> RuntimeException("Unimplemented Method: describeSensor");    } }
I cannot see the element definition for sas:GetCapabilities in either of
the WSDLs... What does it look like?

There are several questions that I have
>    * concerning the generated sources:
>          o The getCapabilities method (in MyCapability2) should expect
>            some XML input - do you have any idea why the generated
>            method only has a return parameter? Is that due to the fact
>            that I used doc/literal?
No - I don't think it's because it's doc/lit. All my WSDLs use doc/lit
and they have input parameters for the methods. I am curious if the
element definition is being found properly.<br>

> o The describeSensor method (in MyCapability2) looks ok - if
>            the SensorID Element is actually the complete
DescribeSensor
>            request XML document which would be send by a client in the
>            SOAP body. Looking at the registerPublisher method, it
seems
>            like wsdl2java removes the top-level XML fragment from the
>            request (in this case the RegisterPublisher XML element)
and
>            lists all elements contained in that element instead (even
>            converting them if they are of simple type).
>
What does the sas:DescribeSensor element look like? Is SensorID a
complex type? (Note that you can write your own Java classes to
represent this type and define a custom serializer in muse.xml to
convert to/from the xml wire format; this would allow you to use a Java
type as a method parameter)

> o Neither of the capability classes extends
AbstractWsResourceCapability - is that due to the fact that I did not
extend the resource type with my own elements (i.e., it just lists
elements from WSN, WSRF and MUWS)?
 
The capabilities look fine. I've not seen any generated capability
extend AbstractWsResourceCapability...

> o The registerPublisher method (in MyCapability1) takes the
>            elements contained in a usual RegisterPublisher request,
>            i.e. as they are listed in the schema from OASIS, as
>            parameters. As I said earlier I would like to make use of
>            the extension mechanism for that operation. Do I therefore
>            have to modify the schema before generating source code or
>            is there some way to retrieve the pure request body via
muse?
Were you planning on extending it using the <xsd:extension>system?

> * in general:
>          o According to the SubscriptionManager.wsdl that is contained
>            in the generated folders (WebContent/WEB-INF/classes/wsdl)
>            there will be one subscription manager that will be
>            referenced in all Subscribe request responses. So will each
>            subscription reference the same manager?

Could you clarify this point? My understanding is that when subscribing,
you set the producer EPR to the EPR of the resource that you're
subscribing to. That said, all subscribe operations are handled by the
same subscription manager under Muse's hood. Any renew, destroy request
etc. will contain a subscription reference that (using reference
parameters) will identify the exact subscription you want to perform
these operations on...

I hope this helps a bit at least.

Cheers,
Allen


---------------------------------------------------------------------
To unsubscribe, e-mail: muse-user-unsubscribe@...
For additional commands, e-mail: muse-user-help@...


---------------------------------------------------------------------
To unsubscribe, e-mail: muse-user-unsubscribe@...
For additional commands, e-mail: muse-user-help@...


Re: generating sources for service using quite complex schema

by Johannes Echterhoff-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi.

Thank you all for your responses. Right now I am at a workshop and do
not have enough time to try your suggestions and respond to your emails.
Once I am back at home I will definitely make up for that. I will also
try to break up my questions and the responses into separate emails. :-)

Talk to you soon.

Johannes



Vinh Nguyen (vinguye2) schrieb:

> Hi Johannes,
> Try breaking up this email into 1-2 questions at a time.  It's very hard
> to read:)
> Just a few points to help:
>
> 1) To be doc-literal, import the necessary XSDs.  Don't import another
> WSDL and assume you'll inherit all the schemas used in that WSDL.
>
> 2) Try to avoid using wsdlmerge.  I've seen that after using wsdl2java,
> the wsdl it generates which combines all schemas inline doesn't always
> update the schema namespaces properly.  So I've always deployed my
> original wsdls instead of the one wsdl2java outputs.
>
> 3) The "No WS-RP schema found" can safely be ignored.  It's probably
> because your service has WSRP properties but no .wsrmd file, which is
> not required.
>
> 4) If a generated capability method doesn't have parameters when it is
> expected to, it might be due to your wsdl not being doc-literal.  The
> message input might not be defined correctly.  Since you didn't include
> your schemas (i.e. sas:GetCapabilities), I can't tell if you're defining
> them correctly.
>
> 5) A capability only needs to implement AbstractWsResourceCapability if
> it is providing the get/set methods for your custom resource properties.
>
> 6) A SubscriptionManager resource manages a single subscription.  So if
> you call Subscribe 5 times, you will have 5 instances of
> SubscriptionManager.
>
> -Vinh
>
>
> -----Original Message-----
> From: Allen George [mailto:allen.george@...]
> Sent: Tuesday, May 13, 2008 8:49 AM
> To: muse-user@...
> Subject: Re: generating sources for service using quite complex schema
>
> Hi Johannes,
>
> I'm not as expert as many on this list, but I thought I'd take a stab at
> answering some of your questions anyways.
>
> Looking through your SAS.wsdl, I was curious why you did a <wsdl:import>
> of the WSRF/WSN wsdls. At least when I created my (much simpler)
> WS-Resource I did not have to do that.
>
> Another point: I noticed that you've split your schema definition for
> the same namespace into two parts as follows:
>
>
> <xsd:schema elementFormDefault="qualified"
>             targetNamespace="http://www.opengis.net/sas/1.0.0">
>             <xsd:include schemaLocation="OGC-SAS-1_0_0-sasAll.xsd"/>
>             <xsd:include
> schemaLocation="OGC-SAS-1_0_0-sasCapabilities.xsd"/>
>             <xsd:include schemaLocation="OGC-SAS-1_0_0-sasCommon.xsd"/>
>             <xsd:include
> schemaLocation="OGC-SAS-1_0_0-sasDescribeSensor.xsd"/>
>             <xsd:include
> schemaLocation="OGC-SAS-1_0_0-sasMessageSchema.xsd"/>
>         </xsd:schema>
>
>
>         <xsd:schema elementFormDefault="qualified"
>             targetNamespace="http://www.opengis.net/sas/1.0.0">
>
>             <xsd:element name="SasResourceProperties">
>                 <xsd:complexType>
>                     <xsd:sequence>
>                         <xsd:element
> ref="wsrf-rp:QueryExpressionDialect" minOccurs="0"
>                             maxOccurs="unbounded"/>
>                         <xsd:element ref="wsn-b:FixedTopicSet"/>
>                         <xsd:element ref="wsn-t:TopicSet"
> minOccurs="0"/>
>                         <xsd:element ref="wsn-t:TopicExpression"
> minOccurs="0" maxOccurs="unbounded"/>
>                         <xsd:element ref="wsn-t:TopicExpressionDialect"
> minOccurs="0"
>                             maxOccurs="unbounded"/>
>                         <xsd:element ref="muws1:ResourceId"/>
>                         <xsd:element ref="muws1:ManageabilityCapability"
>
> minOccurs="0"
>                             maxOccurs="unbounded"/>
>                         <!-- ??? -->
>                         <xsd:element ref="muws2:Caption" minOccurs="0"
> maxOccurs="unbounded"/>
>                         <!-- ??? -->
>                         <xsd:element ref="muws2:Description"
> minOccurs="0" maxOccurs="unbounded"/>
>                         <!-- ??? -->
>                         <xsd:element ref="muws2:Version" minOccurs="0"/>
>                         <!-- ??? -->
>                         <xsd:element ref="muws2:OperationalStatus"/>
>                         <!-- ??? -->
>                     </xsd:sequence>
>                 </xsd:complexType>
>             </xsd:element>
>
>             <xsd:complexType name="ServiceExceptionType">
>                 <xsd:complexContent>
>                     <xsd:extension base="wsrf-bf:BaseFaultType">
>                         <xsd:choice>
>                             <xsd:element ref="ows:ExceptionReport"/>
>                             <xsd:element ref="ows:Exception"/>
>                         </xsd:choice>
>                     </xsd:extension>
>                 </xsd:complexContent>
>             </xsd:complexType>
>
>             <xsd:element name="ServiceException"
> type="sas:ServiceExceptionType"/>
>
>         </xsd:schema>
>
> I am not sure how a parser will interpret this, but my understanding was
> that each <xsd:schema></xsd:schema> pair is separate from the other. Was
> there a reason you did not include the imports and message definitions
> in one <xsd:schema> pair? Also, I assume that all the imported documents
> are defined in the http://www.opengis.net/sas/1.0.0 namespace or have no
> namespace?
>
>  
>> C:\muse-test\wsdl>wsdl2java.bat -j2ee mini -wsdl SASallinone.wsdl
>> -output test -verbose
>> WARNING: [ID = 'NoWSRPSchema'] No WS-RP schema found
>>    
>
> I'm not quite sure, but this may be because you don't have
> ResourceMetadataDescriptor document attached to your SAS portType as
> well as a reference to wsrf-rp:ResourceProperties reference. Perhaps
> someone can correct me on this?
>
>  
>> (MyCapability2) package net.opengis.www.sas._1.0.0; import
>> org.apache.muse.core.AbstractCapability; import org.w3c.dom.Element;
>> public class MyCapability extends AbstractCapability implements
>> IMyCapability {    public Element getCapabilities() throws
>> Exception    {        //TODO implement getCapabilities        throw
>> new RuntimeException("Unimplemented Method: getCapabilities");    }
>>    
>
>  
>> public Element describeSensor(Element SensorID) throws Exception    {
>>        //TODO implement describeSensor        throw new
>> RuntimeException("Unimplemented Method: describeSensor");    } }
>>    
> I cannot see the element definition for sas:GetCapabilities in either of
> the WSDLs... What does it look like?
>
> There are several questions that I have
>  
>>    * concerning the generated sources:
>>          o The getCapabilities method (in MyCapability2) should expect
>>            some XML input - do you have any idea why the generated
>>            method only has a return parameter? Is that due to the fact
>>            that I used doc/literal?
>>    
> No - I don't think it's because it's doc/lit. All my WSDLs use doc/lit
> and they have input parameters for the methods. I am curious if the
> element definition is being found properly.<br>
>
>  
>> o The describeSensor method (in MyCapability2) looks ok - if
>>            the SensorID Element is actually the complete
>>    
> DescribeSensor
>  
>>            request XML document which would be send by a client in the
>>            SOAP body. Looking at the registerPublisher method, it
>>    
> seems
>  
>>            like wsdl2java removes the top-level XML fragment from the
>>            request (in this case the RegisterPublisher XML element)
>>    
> and
>  
>>            lists all elements contained in that element instead (even
>>            converting them if they are of simple type).
>>
>>    
> What does the sas:DescribeSensor element look like? Is SensorID a
> complex type? (Note that you can write your own Java classes to
> represent this type and define a custom serializer in muse.xml to
> convert to/from the xml wire format; this would allow you to use a Java
> type as a method parameter)
>
>  
>> o Neither of the capability classes extends
>>    
> AbstractWsResourceCapability - is that due to the fact that I did not
> extend the resource type with my own elements (i.e., it just lists
> elements from WSN, WSRF and MUWS)?
>  
> The capabilities look fine. I've not seen any generated capability
> extend AbstractWsResourceCapability...
>
>  
>> o The registerPublisher method (in MyCapability1) takes the
>>            elements contained in a usual RegisterPublisher request,
>>            i.e. as they are listed in the schema from OASIS, as
>>            parameters. As I said earlier I would like to make use of
>>            the extension mechanism for that operation. Do I therefore
>>            have to modify the schema before generating source code or
>>            is there some way to retrieve the pure request body via
>>    
> muse?
> Were you planning on extending it using the <xsd:extension>system?
>
>  
>> * in general:
>>          o According to the SubscriptionManager.wsdl that is contained
>>            in the generated folders (WebContent/WEB-INF/classes/wsdl)
>>            there will be one subscription manager that will be
>>            referenced in all Subscribe request responses. So will each
>>            subscription reference the same manager?
>>    
>
> Could you clarify this point? My understanding is that when subscribing,
> you set the producer EPR to the EPR of the resource that you're
> subscribing to. That said, all subscribe operations are handled by the
> same subscription manager under Muse's hood. Any renew, destroy request
> etc. will contain a subscription reference that (using reference
> parameters) will identify the exact subscription you want to perform
> these operations on...
>
> I hope this helps a bit at least.
>
> Cheers,
> Allen
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: muse-user-unsubscribe@...
> For additional commands, e-mail: muse-user-help@...
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: muse-user-unsubscribe@...
> For additional commands, e-mail: muse-user-help@...
>
>
>  



---------------------------------------------------------------------
To unsubscribe, e-mail: muse-user-unsubscribe@...
For additional commands, e-mail: muse-user-help@...


referencing subscriptions via EPRs (was: Re: generating sources for service using quite complex schema)

by Johannes Echterhoff-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi.

As suggested I break up my questions into separate emails. This one
covers the question on how subscriptions generated via muse reference
their manager endpoint. My question was:

According to the SubscriptionManager.wsdl that is contained in the
generated folders (WebContent/WEB-INF/classes/wsdl) there will be one
subscription manager that will be referenced in all Subscribe request
responses. So will each subscription reference the same manager?

Allen wrote:
> Could you clarify this point? My understanding is that when subscribing,
> you set the producer EPR to the EPR of the resource that you're
> subscribing to. That said, all subscribe operations are handled by the
> same subscription manager under Muse's hood. Any renew, destroy request
> etc. will contain a subscription reference that (using reference
> parameters) will identify the exact subscription you want to perform
> these operations on...
Vinh wrote:
> 6) A SubscriptionManager resource manages a single subscription.  So if
> you call Subscribe 5 times, you will have 5 instances of
> SubscriptionManager.
This seems to be contradictory. :-) Or is it not? Both approaches might
work. The first one using reference parameters to disambiguate the
subscription called for. The second approach could work if muse created
a new SubscriptionManager resource for each subscription. Any more
thoughts on this one?

Johannes


---------------------------------------------------------------------
To unsubscribe, e-mail: muse-user-unsubscribe@...
For additional commands, e-mail: muse-user-help@...


missing parameter for operation in generated source code (was: Re: generating sources for service using quite complex schema)

by Johannes Echterhoff-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi.

As suggested I break up my questions into separate emails. This one
covers the topic of the missing request parameter of my custom
GetCapabilities operation.

My question was: the getCapabilities method (in MyCapability2) should
expect some XML input - do you have any idea why the generated method
only has a return parameter? Is that due to the fact that I used
doc/literal?

Allen wrote:

>> (MyCapability2) package net.opengis.www.sas._1.0.0; import
>> org.apache.muse.core.AbstractCapability; import org.w3c.dom.Element;
>> public class MyCapability extends AbstractCapability implements
>> IMyCapability {    public Element getCapabilities() throws
>> Exception    {        //TODO implement getCapabilities        throw
>> new RuntimeException("Unimplemented Method: getCapabilities");    
>> }    public Element describeSensor(Element SensorID) throws
>> Exception    {        //TODO implement describeSensor        throw
>> new RuntimeException("Unimplemented Method: describeSensor");    } }
> I cannot see the element definition for sas:GetCapabilities in either
> of the WSDLs... What does it look like?
Vinh wrote:
> 4) If a generated capability method doesn't have parameters when it is
> expected to, it might be due to your wsdl not being doc-literal.  The
> message input might not be defined correctly.  Since you didn't include
> your schemas (i.e. sas:GetCapabilities), I can't tell if you're defining
> them correctly.
>  
You can find the complete schema definition I used - together with my
current wsdl files - in the zip package at
http://ifgi.uni-muenster.de/~echterhj/SAS/SAS_with_muse.zip (for
convenience I copied two schema fragments to the end of this email)
Maybe you can find some time to have a look at the schema - there are a
lot of schema files in there, the interesting ones should be named
OGC-SAS*, OGC-OWS* and OGC-SensorML*.

Allen also wrote:
>>    * concerning the generated sources:
>>          o The getCapabilities method (in MyCapability2) should expect
>>            some XML input - do you have any idea why the generated
>>            method only has a return parameter? Is that due to the fact
>>            that I used doc/literal?
> No - I don't think it's because it's doc/lit. All my WSDLs use doc/lit
> and they have input parameters for the methods. I am curious if the
> element definition is being found properly.<br>
That is a good question. Maybe there is a bug in my wsdl? At least
oXygen, my XML tool, seems to recognize the GetCapabilities operation in
my wsdl file as it generates both request and response templates as
expected.

>> The describeSensor method (in MyCapability2) looks ok - if the
>> SensorID Element is actually the complete DescribeSensor request XML
>> document which would be send by a client in the SOAP body. Looking at
>> the registerPublisher method, it seems like wsdl2java removes the
>> top-level XML fragment from the request (in this case the
>> RegisterPublisher XML element) and lists all elements contained in
>> that element instead (even converting them if they are of simple type).
> What does the sas:DescribeSensor element look like? Is SensorID a
> complex type? (Note that you can write your own Java classes to
> represent this type and define a custom serializer in muse.xml to
> convert to/from the xml wire format; this would allow you to use a Java
> type as a method parameter)
The SensorID is a simple element of type xs:token that is contained in
the DescribeSensor request element (see
OGC-SAS-1_0_0-sasDescribeSensor.xsd and OGC-SAS-1_0_0-sasCommon.xsd in
the zipfile mentioned earlier).

The custom serializer sounds interesting. I have read the passage in the
manual concerning the deployment-descriptor and also had a look at the
javadoc of org.apache.muse.core.serializer.Serializer. Usually I am
using XMLBeans for (de-)serializing XML, I hope it works here as well.

To summarize: wsdl2java still did not create a getCapabilities method
that expects an input parameter. Maybe that is due to the fact that the
schema for the request element is complex. If using my own serializer
helps I will give it a try, provided that I find out how to do this.

Cheers,
Johannes

---------------------------------------

Schema fragment for the GetCapabilities operation:

  <xs:element name="GetCapabilities">
    <xs:annotation>
      <xs:documentation>Request to a SAS to perform the GetCapabilities
operation. This operation allows a client to retrieve service metadata
(capabilities XML) providing metadata for the specific SAS server. In
this XML encoding, no "request" parameter is included, since the element
name specifies the specific operation. </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="ows:GetCapabilitiesType">
          <xs:attribute name="service" type="ows:ServiceType"
use="required" fixed="SAS"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>

where ows:GetCapabilitiesType is defined as follows:

<complexType name="GetCapabilitiesType">
    <annotation>
      <documentation>XML encoded GetCapabilities operation request. This
operation allows clients to retrieve service metadata about a specific
service instance. In this XML encoding, no "request" parameter is
included, since the element name specifies the specific operation. This
base type shall be extended by each specific OWS to include the
additional required "service" attribute, with the correct value for that
OWS. </documentation>
    </annotation>
    <sequence>
      <element name="AcceptVersions" type="ows:AcceptVersionsType"
minOccurs="0">
        <annotation>
          <documentation>When omitted, server shall return latest
supported version. </documentation>
        </annotation>
      </element>
      <element name="Sections" type="ows:SectionsType" minOccurs="0">
        <annotation>
          <documentation>When omitted or not supported by server, server
shall return complete service metadata (Capabilities) document.
</documentation>
        </annotation>
      </element>
      <element name="AcceptFormats" type="ows:AcceptFormatsType"
minOccurs="0">
        <annotation>
          <documentation>When omitted or not supported by server, server
shall return service metadata document using the MIME type "text/xml".
</documentation>
        </annotation>
      </element>
    </sequence>
    <attribute name="updateSequence" type="ows:UpdateSequenceType"
use="optional">
      <annotation>
        <documentation>When omitted or not supported by server, server
shall return latest complete service metadata document. </documentation>
      </annotation>
    </attribute>
  </complexType>

As you can see a lot of my message elements and types use definitions
from other namespaces or defined in separate elements/types - that Is
why I wrote "quite complex schema".

---------------------------------------------------------------------
To unsubscribe, e-mail: muse-user-unsubscribe@...
For additional commands, e-mail: muse-user-help@...


compiling wsdl (was: generating sources for service using quite complex schema)

by Johannes Echterhoff-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi.

As suggested I break up my questions into separate emails. This one
covers the problems I encountered when trying to compile my wsdl.

--------------------------------------------------------------------------------------------------------
Concerning wsdlmerge:
> Looking through your SAS.wsdl, I was curious why you did a
> <wsdl:import> of the WSRF/WSN wsdls. At least when I created my
> (much simpler) WS-Resource I did not have to do that.
I imported them in the SAS.wsdl so that I could reuse the message
definitions contained in them. Well, as compiling that wsdl did not work
I created the SASallinone.wsdl which does not import the WSRF/WSN wsdls
but instead imports the respective schema and defines the required
messages itself. So wsdlmerge did not work for me, but that is ok if
creating code via wsdl2java works in the end.

--------------------------------------------------------------------------------------------------------
Concerning wsdl2java:

Allen wrote:
>> C:\muse-test\wsdl>wsdl2java.bat -j2ee mini
>> -wsdl SASallinone.wsdl -output test -verbose
>> WARNING: [ID = 'NoWSRPSchema'] No WS-RP schema found
>
> I'm not quite sure, but this may be because you don't have
> ResourceMetadataDescriptor document attached to your SAS portType as
> well as a reference to wsrf-rp:ResourceProperties reference. Perhaps
> someone can correct me on this?
Vinh wrote:
> 3) The "No WS-RP schema found" can safely be ignored.  It's probably
> because your service has WSRP properties but no .wsrmd file, which is
> not required.
I just read the wsrmd spec and added the specific attributes to the SAS
portType and created a metadata descriptor file in the directory of the
wsdl. After some trials wsdl2java accepted my changes (i.e. it did no
longer complain about wrong names or invalid wsdlLocation - however, the
warning is still there. So I think it was not the missing wsrmd file.


Allen wrote:

> Another point: I noticed that you've split your schema definition for
> the same namespace into two parts
> ...
>
> I am not sure how a parser will interpret this, but my understanding
> was that each <xsd:schema></xsd:schema> pair is separate
> from the other. Was there a reason you did not include the imports and
> message definitions in one <xsd:schema> pair? Also, I assume that
> all the imported documents are defined in the
> http://www.opengis.net/sas/1.0.0 namespace or have no namespace?
All of the imported documents (which begin with OGC-SAS) have
targetNamespace http://www.opengis.net/sas/1.0.0. The reason why I did
not put the includes and additional definitions (the
SasResourceProperties and ServiceException) into one xsd:schema element
is because I simply did not think about this possibility. :-) I have put
them into one schema element now.

To summarize: I believe that wsdl2java now works for me. At least it
generated the artifacts based upon my wsdl files.

Cheers,
Johannes


---------------------------------------------------------------------
To unsubscribe, e-mail: muse-user-unsubscribe@...
For additional commands, e-mail: muse-user-help@...


extending the WSN RegisterPublisher operation (was: generating sources for service using quite complex schema)

by Johannes Echterhoff-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi.

As suggested I break up my questions into separate emails. This one
covers the topic of extending the RegisterPublisher request from
WS-BrokeredNotification.

As I wrote in my first email, the service I intend to implement might
realize the RegisterPublisher and Notify operation from WSN. It "might"
realize these operations because in some use cases there may be other
ways on how the service gets the required information from my event
producing entities (i.e., the sensors). However, if the additional
operations are implemented, the RegisterPublisher request would make use
of the extensibility mechanism defined in the OASIS specification for
that operation to send also the sensor description in XML.

After compiling my wsdl (SASallinone.wsdl), I had the following question
concerning the realization of the RegisterPublisher operation:
> The registerPublisher method (in MyCapability1) takes the elements
> contained in a usual RegisterPublisher request, i.e. as they are
> listed in the schema from OASIS, as parameters. As I said earlier I
> would like to make use of the extension mechanism for that operation.
> Do I therefore have to modify the schema before generating source code
> or is there some way to retrieve the pure request body via muse?
Allen wrote:
> Were you planning on extending it using the <xsd:extension>system?
I thought that this could be handled on the fly, i.e. I would not have
to extend the operations base schema but could just insert additional
elements into the request body and retrieve those somehow on the server
side. So that is why I am asking.

You mentioned that I could use my custom serializer for handling the
request body. If so, maybe that will do the trick. Usually I am working
with XMLBeans and I think that it would provide the means to extract the
additional elements from the request.

Cheers,
Johannes



---------------------------------------------------------------------
To unsubscribe, e-mail: muse-user-unsubscribe@...
For additional commands, e-mail: muse-user-help@...


RE: referencing subscriptions via EPRs (was: Re: generating sources for service using quite complex schema)

by Chris.Twiner :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi

One SubscriptionManager resource type exists, but for each subscribe
request a new resource instance will be created with a different
Reference Parameter used to seperate the instances.

It would be technically possible to proxy the different EPRs to a single
resource but that gets very complicated for subscription managers very
fast. (also would duplicate the wsa router without any notable gain).

cheers,
Chris

-----Original Message-----
From: Johannes Echterhoff [mailto:echterhoff@...]
Sent: Wednesday, May 21, 2008 4:33 PM
To: muse-user@...
Subject: referencing subscriptions via EPRs (was: Re: generating sources
for service using quite complex schema)

Hi.

As suggested I break up my questions into separate emails. This one
covers the question on how subscriptions generated via muse reference
their manager endpoint. My question was:

According to the SubscriptionManager.wsdl that is contained in the
generated folders (WebContent/WEB-INF/classes/wsdl) there will be one
subscription manager that will be referenced in all Subscribe request
responses. So will each subscription reference the same manager?

Allen wrote:
> Could you clarify this point? My understanding is that when
> subscribing, you set the producer EPR to the EPR of the resource that
> you're subscribing to. That said, all subscribe operations are handled

> by the same subscription manager under Muse's hood. Any renew, destroy

> request etc. will contain a subscription reference that (using
> reference
> parameters) will identify the exact subscription you want to perform
> these operations on...
Vinh wrote:
> 6) A SubscriptionManager resource manages a single subscription.  So
> if you call Subscribe 5 times, you will have 5 instances of
> SubscriptionManager.
This seems to be contradictory. :-) Or is it not? Both approaches might
work. The first one using reference parameters to disambiguate the
subscription called for. The second approach could work if muse created
a new SubscriptionManager resource for each subscription. Any more
thoughts on this one?

Johannes


---------------------------------------------------------------------
To unsubscribe, e-mail: muse-user-unsubscribe@...
For additional commands, e-mail: muse-user-help@...


---------------------------------------------------------------------
To unsubscribe, e-mail: muse-user-unsubscribe@...
For additional commands, e-mail: muse-user-help@...