You are viewing a plain text version of this content. The canonical link for it is here.
Posted to muse-dev@ws.apache.org by wi...@apache.org on 2005/08/12 16:05:54 UTC

svn commit: r232301 - in /webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client: ./ AbstractWsdmInteropTestCase.java TestWcConfigAccess.java WebServicesMgmtTestCase.java

Author: wire
Date: Fri Aug 12 07:05:51 2005
New Revision: 232301

URL: http://svn.apache.org/viewcvs?rev=232301&view=rev
Log: (empty)

Added:
    webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client/
    webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client/AbstractWsdmInteropTestCase.java
    webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client/TestWcConfigAccess.java
    webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client/WebServicesMgmtTestCase.java

Added: webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client/AbstractWsdmInteropTestCase.java
URL: http://svn.apache.org/viewcvs/webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client/AbstractWsdmInteropTestCase.java?rev=232301&view=auto
==============================================================================
--- webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client/AbstractWsdmInteropTestCase.java (added)
+++ webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client/AbstractWsdmInteropTestCase.java Fri Aug 12 07:05:51 2005
@@ -0,0 +1,220 @@
+/*=============================================================================*
+ *  Copyright 2005 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *=============================================================================*/
+package org.apache.interop.client;
+
+import org.apache.interop.client.FaultException;
+import org.apache.interop.client.ResourceStub;
+import org.apache.ws.muws.v1_0.MuwsConstants;
+import org.apache.ws.muws.v1_0.capability.IdentityCapability;
+import org.apache.ws.muws.v1_0.capability.ManageabilityCharacteristicsCapability;
+import org.apache.ws.muws.v1_0.capability.OperationalStatusCapability;
+import org.apache.ws.notification.base.v2004_06.BaseNotificationConstants;
+import org.apache.ws.util.XmlBeanUtils;
+import org.apache.ws.util.jndi.XmlBeanJndiUtils;
+import org.apache.ws.util.test.PortListen;
+import org.apache.ws.util.test.axis.AbstractOneAxisTestCase;
+import org.apache.xmlbeans.XmlAnyURI;
+import org.apache.xmlbeans.XmlError;
+import org.apache.xmlbeans.XmlException;
+import org.apache.xmlbeans.XmlObject;
+import org.apache.xmlbeans.XmlOptions;
+import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart1.ManagementEventType;
+import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart2.OperationalStatusDocument;
+import org.oasisOpen.docs.wsn.x2004.x06.wsnWSBaseNotification12Draft01.NotificationMessageHolderType;
+import org.oasisOpen.docs.wsn.x2004.x06.wsnWSBaseNotification12Draft01.NotifyDocument;
+import org.xmlsoap.schemas.soap.envelope.Body;
+import org.xmlsoap.schemas.soap.envelope.EnvelopeDocument;
+import org.xmlsoap.schemas.ws.x2004.x08.addressing.EndpointReferenceDocument;
+
+import javax.xml.namespace.QName;
+import java.net.InetAddress;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * TODO
+ */
+public abstract class AbstractWsdmInteropTestCase extends AbstractOneAxisTestCase
+{
+
+    protected static final int NOTIF_LISTENER_TIMEOUT = 20000;
+    protected static final int NOTIF_LISTENER_PORT = 9101;
+    protected static String s_consumerURL;
+
+    private static final boolean RUN_AXIS_SERVER = Boolean.getBoolean( "runAxis" );
+    static final boolean DEBUG = true;//Boolean.getBoolean( "debug" );
+
+    public AbstractWsdmInteropTestCase()
+    {
+        super( RUN_AXIS_SERVER );
+    }
+
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        s_consumerURL = "http://" + InetAddress.getLocalHost().getHostAddress() + ":" + NOTIF_LISTENER_PORT + "/";
+        if ( RUN_AXIS_SERVER )
+        {
+            //init jndi from config
+            XmlBeanJndiUtils.initFromInputStream( Thread.currentThread().getContextClassLoader()
+                    .getResourceAsStream( XmlBeanJndiUtils.JNDI_CONFIG_FILENAME ) );
+        }
+    }
+
+    protected void performMuwsIdentityCharacteristicsAct( ResourceStub resource ) throws FaultException
+    {
+        XmlObject idPropElem = getSingleProperty( resource, IdentityCapability.PROP_NAME_RESOURCE_ID );
+        assertTrue( idPropElem instanceof XmlAnyURI );
+        XmlObject[] capabilityElems = resource.getResourceProperty(
+                ManageabilityCharacteristicsCapability.PROP_NAME_MANAGEABILITY_CAPABILITY );
+        assertContainsURI( capabilityElems, IdentityCapability.URI );
+    }
+
+    protected void performMuwsStatusAct( ResourceStub resource ) throws FaultException
+    {
+        XmlObject[] capabilityPropElems = resource.getResourceProperty(
+                ManageabilityCharacteristicsCapability.PROP_NAME_MANAGEABILITY_CAPABILITY );
+        assertContainsURI( capabilityPropElems, OperationalStatusCapability.URI );
+        XmlObject[] statusPropElems = resource.getResourceProperty(
+                OperationalStatusCapability.PROP_NAME_OPERATIONAL_STATUS );
+        assertEquals( 1, statusPropElems.length );
+        assertTrue( statusPropElems[0] instanceof OperationalStatusDocument.OperationalStatus );
+    }
+
+    protected XmlObject getSingleProperty( ResourceStub resource, QName propName )
+            throws FaultException
+    {
+        XmlObject[] propElems = resource.getResourceProperty( propName );
+        assertEquals(
+                "Incorrect number of " + propName.getPrefix() + ":" + propName.getLocalPart() + " property elements -",
+                1, propElems.length );
+        return propElems[0];
+    }
+
+    protected void setSingleProperty( ResourceStub resource, XmlObject propElem )
+            throws FaultException
+    {
+        resource.updateResourceProperty( new XmlObject[]{propElem} );
+    }
+
+    protected void assertContainsURI( XmlObject[] capabilityPropElems, String uri )
+    {
+        boolean result = false;
+        for ( int i = 0; i < capabilityPropElems.length; i++ )
+        {
+            XmlAnyURI capabilityElem = (XmlAnyURI) capabilityPropElems[i];
+            if ( capabilityElem.getStringValue().equals( uri ) )
+            {
+                result = true;
+                break;
+            }
+        }
+        assertTrue( "List of manageability capabilities does not include the URI: " + uri, result );
+    }
+
+    /**
+     * Reads a wsa03:EndpointReference XML document from the specified URL.
+     *
+     * @param url
+     *
+     * @return
+     *
+     * @throws Exception
+     */
+    protected EndpointReferenceDocument getEndpointReference( URL url ) throws Exception
+    {
+        XmlObject stuff=XmlObject.Factory.parse( url );
+    	return (EndpointReferenceDocument)stuff; 
+    }
+
+    protected ManagementEventType waitForManagementEvent( PortListen notifListener ) throws XmlException
+    {
+        String incomingMsg = notifListener.waitForIncomingMessage();
+        assertTrue( incomingMsg, incomingMsg.indexOf( "ERROR" ) == -1 );
+
+        //get envelope
+        XmlObject xmlObject = XmlObject.Factory.parse( incomingMsg );
+        assertTrue( "The returned message was not a SOAP Envelope.", xmlObject instanceof EnvelopeDocument );
+        EnvelopeDocument envelope = (EnvelopeDocument) xmlObject;
+        Body body = envelope.getEnvelope().getBody();
+
+        XmlObject mgmtEventElem = null;
+        if ( ResourceStub.USE_WRAPPED_NOTIFICATIONS ) //wrapped
+        {
+            //get notify
+            XmlObject bodyElems[] = XmlBeanUtils.getChildElements( body,
+                    new QName( BaseNotificationConstants.NSURI_WSNT_SCHEMA, "Notify" ) );
+            assertEquals( "The SOAP Body does not contain exactly one wsnt:Notify element.", 1, bodyElems.length );
+            XmlObject notifyDoc = bodyElems[0];
+            assertTrue( "The SOAP Body does not contain a wrapped notification with a Notify element.",
+                    notifyDoc instanceof NotifyDocument.Notify );
+            NotifyDocument.Notify notify = (NotifyDocument.Notify) notifyDoc;
+
+            //get contained management event
+            NotificationMessageHolderType notificationMessageType = notify.getNotificationMessageArray( 0 );
+            XmlObject message = notificationMessageType.getMessage();
+
+            XmlObject mgmtEventElems[] = XmlBeanUtils.getChildElements( message,
+                    new QName( MuwsConstants.NSURI_MUWS_PART1_SCHEMA, "ManagementEvent" ) );
+            assertEquals( "The Notify element does not contain exactly one muws-p1-xs:ManagementEvent element.", 1,
+                    mgmtEventElems.length );
+            mgmtEventElem = mgmtEventElems[0];
+            assertTrue( "The Notify element does not contain a ManagementEvent.",
+                    mgmtEventElem instanceof ManagementEventType );
+        }
+        else //unwrapped
+        {
+            XmlObject mgmtEventElems[] = XmlBeanUtils.getChildElements( body,
+                    new QName( MuwsConstants.NSURI_MUWS_PART1_SCHEMA, "ManagementEvent" ) );
+            assertEquals( "The SOAP Body does not contain exactly one muws-p1-xs:ManagementEvent element.", 1,
+                    mgmtEventElems.length );
+            mgmtEventElem = mgmtEventElems[0];
+            assertTrue( "The SOAP Body did not contain an unwrapped ManagementEvent.",
+                    mgmtEventElem instanceof ManagementEventType );
+        }
+        ManagementEventType mgmtEvent = (ManagementEventType) mgmtEventElem;
+        return mgmtEvent;
+    }
+
+    protected static boolean validate( XmlObject xBean )
+    {
+        // Create an XmlOptions instance and set the error listener.
+        XmlOptions validateOptions = new XmlOptions();
+        List errorList = new ArrayList();
+        validateOptions.setErrorListener( errorList );
+
+        // Validate the XML.
+        boolean isValid = xBean.validate( validateOptions );
+
+        // If the XML isn't valid, loop through the listener's contents,
+        // printing contained messages.
+        if ( !isValid )
+        {
+            for ( int i = 0; i < errorList.size(); i++ )
+            {
+                XmlError error = (XmlError) errorList.get( i );
+
+                System.out.println( "\n" );
+                System.out.println( "Message: " + error.getMessage() + "\n" );
+                System.out.println( "Location of invalid XML: " +
+                        error.getCursorLocation().xmlText() + "\n" );
+            }
+        }
+        return isValid;
+    }
+
+}

Added: webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client/TestWcConfigAccess.java
URL: http://svn.apache.org/viewcvs/webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client/TestWcConfigAccess.java?rev=232301&view=auto
==============================================================================
--- webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client/TestWcConfigAccess.java (added)
+++ webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client/TestWcConfigAccess.java Fri Aug 12 07:05:51 2005
@@ -0,0 +1,71 @@
+/*
+ * Created on Jun 6, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.apache.interop.client;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+
+import org.apache.interop.client.ResourceStub;
+import org.apache.interop.client.ServiceStub;
+import org.apache.ws.addressing.XmlBeansEndpointReference;
+import org.apache.xmlbeans.XmlObject;
+import org.xmlsoap.schemas.ws.x2004.x08.addressing.EndpointReferenceDocument;
+import org.xmlsoap.schemas.ws.x2004.x08.addressing.EndpointReferenceType;
+
+import junit.framework.TestCase;
+
+/**
+ * @author wire
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class TestWcConfigAccess extends AbstractWsdmInteropTestCase {
+
+	private static final String WEATHER_STATION_CONF_EPR_URL = "http://12.35.246.160:8080/muse/epr/weather-client-config-epr.xml";
+	private static final String WEATHER_STATION_CONFIG_URL = "http://12.35.246.160:8080/muse/services/WeatherClientConfig";
+	private ServiceStub m_service;
+	private EndpointReferenceDocument weatherStationEprDoc;
+	private ResourceStub m_resource;
+
+	/*
+	 * @see TestCase#setUp()
+	 */
+	protected void setUp() throws Exception {
+		super.setUp();
+        weatherStationEprDoc = getEndpointReference( new URL( WEATHER_STATION_CONF_EPR_URL ) );
+		//if ( DEBUG ) { System.out.println( "*** Using Weather Station EPR:\n" + weatherStationEprDoc ); }
+        //m_service = new ServiceStub( new URL( WEATHER_STATION_CONFIG_URL ) );
+        m_resource = new ResourceStub( new XmlBeansEndpointReference( weatherStationEprDoc.getEndpointReference() ) );
+	}
+
+	/*
+	 * @see TestCase#tearDown()
+	 */
+	protected void tearDown() throws Exception {
+		super.tearDown();
+	}
+	
+	/**
+	 * Objective: Get the current weather station reference
+	 * @throws MalformedURLException
+	 * @throws Exception
+	 */
+	public void testStuff() throws MalformedURLException, Exception{
+		
+		XmlObject[] Ws=m_resource.getResourceProperty(new QName("http://wsdmdemo.org/service/weather-client-config","WeatherStationReference"));
+		assertEquals(1,Ws.length);
+		XmlObject xWs=Ws[0];
+		assertTrue(xWs instanceof EndpointReferenceType);
+		System.out.println("Holy!");
+	}
+	
+	
+
+}

Added: webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client/WebServicesMgmtTestCase.java
URL: http://svn.apache.org/viewcvs/webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client/WebServicesMgmtTestCase.java?rev=232301&view=auto
==============================================================================
--- webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client/WebServicesMgmtTestCase.java (added)
+++ webservices/muse/trunk/src/examples/ieeedemo/client/test/org/apache/interop/client/WebServicesMgmtTestCase.java Fri Aug 12 07:05:51 2005
@@ -0,0 +1,289 @@
+/*=============================================================================*
+ *  Copyright 2005 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *=============================================================================*/
+package org.apache.interop.client;
+
+import org.apache.interop.client.FaultException;
+import org.apache.interop.client.ResourceStub;
+import org.apache.interop.client.ServiceStub;
+import org.apache.ws.addressing.XmlBeansEndpointReference;
+import org.apache.ws.mows.v1_0.MowsConstants;
+import org.apache.ws.mows.v1_0.capability.IdentificationCapability;
+import org.apache.ws.mows.v1_0.capability.MetricsCapability;
+import org.apache.ws.mows.v1_0.capability.RequestProcessingStateCapability;
+import org.apache.ws.muws.v1_0.MuwsConstants;
+import org.apache.ws.muws.v1_0.capability.CorrelatablePropertiesCapability;
+import org.apache.ws.muws.v1_0.capability.IdentityCapability;
+import org.apache.ws.muws.v1_0.capability.ManageabilityCharacteristicsCapability;
+import org.apache.ws.muws.v1_0.capability.RelationshipsCapability;
+import org.apache.ws.util.XmlBeanUtils;
+import org.apache.ws.util.test.PortListen;
+import org.apache.xmlbeans.XmlAnyURI;
+import org.apache.xmlbeans.XmlDateTime;
+import org.apache.xmlbeans.XmlException;
+import org.apache.xmlbeans.XmlObject;
+import org.apache.xmlbeans.XmlQName;
+import org.apache.xmlbeans.XmlString;
+import org.apache.xmlbeans.XmlOptions;
+//import org.everestWeather.wsdm.samples.x2005.x04.schema.WeatherstationPropertyQNames;
+//import org.everestWeather.wsdm.samples.x2005.x04.schema.WeatherstationResource;
+import org.oasisOpen.docs.wsdm.x2004.x12.mows.wsdmMows.DurationMetric;
+import org.oasisOpen.docs.wsdm.x2004.x12.mows.wsdmMows.EndpointDescriptionsDocument;
+import org.oasisOpen.docs.wsdm.x2004.x12.mows.wsdmMows.IntegerCounter;
+import org.oasisOpen.docs.wsdm.x2004.x12.mows.wsdmMows.RequestProcessingNotificationDocument;
+import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart1.CorrelatablePropertiesType;
+import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart1.ManagementEventType;
+import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart2.RelationshipParticipantType;
+import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart2.RelationshipType;
+import org.xmlsoap.schemas.ws.x2004.x08.addressing.EndpointReferenceDocument;
+import org.xmlsoap.schemas.ws.x2004.x08.addressing.EndpointReferenceType;
+
+import javax.wsdl.Definition;
+import javax.wsdl.Port;
+import javax.wsdl.Service;
+import javax.wsdl.WSDLException;
+import javax.wsdl.extensions.soap.SOAPAddress;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLReader;
+import javax.xml.namespace.QName;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+/**
+ * A test case containing a test for each act in the "Web Services Management"
+ * playbook, as defined in the WSDM 1.0 interop scenarios doc.
+ *
+ * @author Ian Springer
+ */
+public class WebServicesMgmtTestCase extends AbstractWsdmInteropTestCase
+{
+
+    public static final String SYSPROP_WEATHER_STATION_URL = "weather_station.url"; // this is the Weather Station business Web service
+    public static final String SYSPROP_WEATHER_STATION_EPR_URL = "weather_station.epr";
+    public static final String SYSPROP_WEATHER_STATION_2_EPR_URL = "weather_station_2.epr";
+
+    private static final String HP_WEATHER_STATION_EPR_URL = "http://people.apache.org/~ips/interop/weather_station-epr.xml";
+    private static final String HP_WEATHER_STATION_2_EPR_URL = "http://people.apache.org/~ips/interop/weather_station_2-epr.xml";
+    private static final String HP_WEATHER_STATION_URL = "http://localhost:8080/muse/services/WeatherStationSoap";
+
+    private static final String IBM_WEATHER_STATION_EPR_URL = "http://24.211.145.38:4400/ettk/wsdm/InteropServlet?getepr=true";
+    private static final String IBM_WEATHER_STATION_URL = "http://24.211.145.38:4400/ettk/wsdm/services/WeatherStationSoap";
+
+    private static final String WEATHER_STATION_EPR_URL = System.getProperty( SYSPROP_WEATHER_STATION_EPR_URL, HP_WEATHER_STATION_EPR_URL );
+    private static final String WEATHER_STATION_2_EPR_URL = System.getProperty( SYSPROP_WEATHER_STATION_2_EPR_URL, HP_WEATHER_STATION_2_EPR_URL );
+    private static final String WEATHER_STATION_URL = System.getProperty( SYSPROP_WEATHER_STATION_URL, HP_WEATHER_STATION_URL );
+
+    private ServiceStub m_service;
+    private ResourceStub m_resource;
+
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        EndpointReferenceDocument weatherStationEprDoc = getEndpointReference( new URL( WEATHER_STATION_EPR_URL ) );
+        if ( DEBUG ) { System.out.println( "*** Using Weather Station EPR:\n" + weatherStationEprDoc ); }
+        m_service = new ServiceStub( new URL( WEATHER_STATION_URL ) );
+        m_resource = new ResourceStub( new XmlBeansEndpointReference( weatherStationEprDoc.getEndpointReference() ) );
+    }
+
+    public void testMuwsIdentityCharacteristics() throws FaultException
+    {
+        performMuwsIdentityCharacteristicsAct( m_resource );
+    }
+
+    public void testMowsIdentification() throws FaultException, WSDLException
+    {
+        XmlObject[] capabilityElems = m_resource.getResourceProperty( ManageabilityCharacteristicsCapability.PROP_NAME_MANAGEABILITY_CAPABILITY );
+        assertContainsURI( capabilityElems, IdentificationCapability.URI );
+        XmlObject eprPropElem = getSingleProperty( m_resource, IdentificationCapability.PROP_NAME_ENDPOINT_REFERENCE );
+        assertTrue( eprPropElem instanceof EndpointReferenceType );
+        EndpointReferenceType epr = (EndpointReferenceType) eprPropElem;
+        assertTrue( "mows-xs:EndpointReference element is not valid", epr.validate() );
+        String address = epr.getAddress().getStringValue();
+        XmlObject epDescsPropElem = getSingleProperty( m_resource, IdentificationCapability.PROP_NAME_ENDPOINT_DESCRIPTIONS );
+        assertTrue( epDescsPropElem instanceof EndpointDescriptionsDocument.EndpointDescriptions );
+        EndpointDescriptionsDocument.EndpointDescriptions epDescs = (EndpointDescriptionsDocument.EndpointDescriptions)epDescsPropElem;
+        assertTrue( "mows-xs:EndpointDescriptions element is not valid", epDescs.validate() );
+        String[] wsdlURLs = epDescs.getDescriptionArray();
+        for (int i = 0; i < wsdlURLs.length; i++)
+        {
+            String wsdlURL = wsdlURLs[i];
+            WSDLReader wsdlReader = WSDLFactory.newInstance().newWSDLReader();
+            Definition definition = wsdlReader.readWSDL(wsdlURL);
+            assertNotNull("WSDL at location: " + wsdlURL + " was null.",definition);//valid wsdls
+            assertEquals("There must only be exactly one service in the WSDL file.", 1, definition.getServices().size()); //single service
+            Service service = (Service) definition.getServices().values().iterator().next();
+            assertEquals("There must only be exactly one port associated with the service in the WSDL file.", 1, service.getPorts().size());  //single port
+            Port port = (Port) service.getPorts().values().iterator().next();
+            SOAPAddress soapAddress = (SOAPAddress) port.getExtensibilityElements().get(0);
+            assertEquals("The soap:address in WSDL at " + wsdlURL + " did not match the EPR address.", address, soapAddress.getLocationURI()); //EPR address matches that contained in soap:address
+        }
+    }
+
+    public void testMowsManageabilityReferences() throws FaultException
+    {
+        EndpointReferenceType[] mgmtEPRs = m_service.getManageabilityReferences();
+        assertTrue( "Response to GetManageabilityReferences operation did not contain any EPRs.", mgmtEPRs.length != 0 );
+        for ( int i = 0; i < mgmtEPRs.length; i++ )
+        {
+            ResourceStub mgmtResource = new ResourceStub( new XmlBeansEndpointReference( mgmtEPRs[i] ) );
+            XmlObject idPropElem = getSingleProperty( mgmtResource, IdentityCapability.PROP_NAME_RESOURCE_ID );
+            assertTrue( idPropElem instanceof XmlAnyURI );
+            XmlObject[] capabilityElems = mgmtResource.getResourceProperty(
+                    ManageabilityCharacteristicsCapability.PROP_NAME_MANAGEABILITY_CAPABILITY );
+            assertContainsURI( capabilityElems, IdentificationCapability.URI );
+        }
+    }
+
+    public void testMowsMetrics() throws FaultException
+    {
+        XmlObject[] capabilityElems = m_resource.getResourceProperty( ManageabilityCharacteristicsCapability.PROP_NAME_MANAGEABILITY_CAPABILITY );
+        assertContainsURI( capabilityElems, org.apache.ws.muws.v1_0.capability.MetricsCapability.URI );
+        assertContainsURI( capabilityElems, MetricsCapability.URI );
+        XmlObject currentTimePropElem = getSingleProperty( m_resource, org.apache.ws.muws.v1_0.capability.MetricsCapability.PROP_NAME_CURRENT_TIME );
+        assertTrue( currentTimePropElem instanceof XmlDateTime );
+        XmlObject numRequestsPropElem = getSingleProperty( m_resource, MetricsCapability.PROP_NAME_NUMBER_OF_REQUESTS );
+        assertTrue( numRequestsPropElem instanceof IntegerCounter );
+        IntegerCounter numRequestsMetric = ((IntegerCounter)numRequestsPropElem);
+        long numRequests = numRequestsMetric.getBigIntegerValue().longValue();
+        assertTrue( "ResetAt metadata attribute is not set", numRequestsMetric.isSetResetAt() );
+        assertFalse( "Duration metadata attribute is set", numRequestsMetric.isSetDuration() );
+        XmlObject numFailedRequestsPropElem = getSingleProperty( m_resource, MetricsCapability.PROP_NAME_NUMBER_OF_FAILED_REQUESTS );
+        assertTrue( numFailedRequestsPropElem instanceof IntegerCounter );
+        IntegerCounter numFailedRequestsMetric = ((IntegerCounter)numFailedRequestsPropElem);
+        long numFailedRequests = numFailedRequestsMetric.getBigIntegerValue().longValue();
+        assertTrue( "ResetAt metadata attribute is not set", numFailedRequestsMetric.isSetResetAt() );
+        assertFalse( "Duration metadata attribute is set", numFailedRequestsMetric.isSetDuration() );
+        XmlObject numSuccessfulRequestsPropElem = getSingleProperty( m_resource, MetricsCapability.PROP_NAME_NUMBER_OF_SUCCESSFUL_REQUESTS );
+        assertTrue( numSuccessfulRequestsPropElem instanceof IntegerCounter );
+        IntegerCounter numSuccessfulRequestsMetric = ((IntegerCounter)numSuccessfulRequestsPropElem);
+        long numSuccessfulRequests = numSuccessfulRequestsMetric.getBigIntegerValue().longValue();
+        assertTrue( "ResetAt metadata attribute is not set", numSuccessfulRequestsMetric.isSetResetAt() );
+        assertFalse( "Duration metadata attribute is set", numSuccessfulRequestsMetric.isSetDuration() );
+        assertTrue( numRequests >= numFailedRequests + numSuccessfulRequests );
+        XmlObject serviceTimePropElem = getSingleProperty( m_resource, MetricsCapability.PROP_NAME_SERVICE_TIME );
+        assertTrue( serviceTimePropElem instanceof DurationMetric );
+        DurationMetric serviceTimeMetric = ((DurationMetric)serviceTimePropElem);
+        assertTrue( "Duration metadata attribute is not set", serviceTimeMetric.isSetDuration() );
+        XmlObject maxResponseTimePropElem = getSingleProperty( m_resource, MetricsCapability.PROP_NAME_MAX_RESPONSE_TIME );
+        assertTrue( maxResponseTimePropElem instanceof DurationMetric );
+        DurationMetric maxResponseTimeMetric = ((DurationMetric)maxResponseTimePropElem);
+        assertTrue( "Duration metadata attribute is not set", maxResponseTimeMetric.isSetDuration() );
+        XmlObject lastResponseTimePropElem = getSingleProperty( m_resource, MetricsCapability.PROP_NAME_LAST_RESPONSE_TIME );
+        assertTrue( lastResponseTimePropElem instanceof DurationMetric );
+    }
+
+    public void testMuwsStatus() throws FaultException
+    {
+        performMuwsStatusAct( m_resource );
+    }
+
+//    public void testMowsRequestProcessingNotification() throws FaultException, XmlException
+//    {
+//        XmlObject[] capabilityElems = m_resource.getResourceProperty( ManageabilityCharacteristicsCapability.PROP_NAME_MANAGEABILITY_CAPABILITY );
+//        assertContainsURI( capabilityElems, RequestProcessingStateCapability.URI );
+//
+//        m_resource.subscribe( s_consumerURL, new QName( MowsConstants.NSURI_MOWS_TOPICS, "RequestProcessingObservations", MowsConstants.NSPREFIX_MOWS_TOPICS ) );
+//
+//        PortListen notifListener = new PortListen( NOTIF_LISTENER_PORT, NOTIF_LISTENER_TIMEOUT );
+//
+//        m_service.getCurrentTemperature();
+//
+//        ManagementEventType mgmtEvent = waitForManagementEvent( notifListener );
+//        if ( DEBUG ) { System.out.println( "Received ManagementEvent:\n" + mgmtEvent.xmlText( new XmlOptions().setSaveOuter().setSavePrettyPrint() ) ); }
+//
+//        XmlObject[] requestProcessingNotifElems = XmlBeanUtils.getChildElements(mgmtEvent, new QName(MowsConstants.NSURI_MOWS_SCHEMA, "RequestProcessingNotification", MowsConstants.NSPREFIX_MOWS_SCHEMA));
+//        assertEquals( 1, requestProcessingNotifElems.length );
+//        assertTrue( requestProcessingNotifElems[0] instanceof RequestProcessingNotificationDocument.RequestProcessingNotification );
+//        RequestProcessingNotificationDocument.RequestProcessingNotification requestProcessingNotif = (RequestProcessingNotificationDocument.RequestProcessingNotification) requestProcessingNotifElems[0];
+//
+//        System.out.println( requestProcessingNotif.xmlText( new XmlOptions().setSaveOuter().setSavePrettyPrint() ) );
+//        assertTrue( validate( requestProcessingNotif ) );
+//    }
+
+//    public void testMuwsRelationships() throws FaultException
+//    {
+//        XmlObject[] capabilityElems = m_resource.getResourceProperty( ManageabilityCharacteristicsCapability.PROP_NAME_MANAGEABILITY_CAPABILITY );
+//        assertContainsURI( capabilityElems, RelationshipsCapability.URI );
+//        XmlObject[] idElems = m_resource.getResourceProperty( IdentityCapability.PROP_NAME_RESOURCE_ID );
+//        assertEquals( 1, idElems.length );
+//        assertTrue( idElems[0] instanceof XmlAnyURI );
+//        XmlObject[] relationshipPropElems = m_resource.getResourceProperty( RelationshipsCapability.PROP_NAME_RELATIONSHIP );
+//        assertTrue( "muws-p2-xs:Relationship property does not contain any elements", relationshipPropElems.length >= 1 );
+//        for ( int i = 0; i < relationshipPropElems.length; i++ )
+//        {
+//            XmlObject relationshipPropElem = relationshipPropElems[i];
+//            assertTrue( relationshipPropElem instanceof RelationshipType );
+//            RelationshipType relationship = (RelationshipType)relationshipPropElem;
+//            assertTrue( "muws-p2-xs:Relationship element is not valid", relationship.validate() );
+//            RelationshipParticipantType[] participantArray = relationship.getParticipantArray();
+//            for (int j = 0; j < participantArray.length; j++)
+//            {
+//                RelationshipParticipantType relationshipParticipantType = participantArray[j];
+//                EndpointReferenceType[] manageabilityEndpointReferenceArray = relationshipParticipantType.getManageabilityEndpointReferenceArray();
+//                for (int k = 0; k < manageabilityEndpointReferenceArray.length; k++)
+//                {
+//                    EndpointReferenceType endpointReferenceType = manageabilityEndpointReferenceArray[k];
+//                    ResourceStub resource = new ResourceStub(new XmlBeansEndpointReference(endpointReferenceType));
+//                    XmlObject[] resourceProperty = resource.getResourceProperty(WeatherstationPropertyQNames.FCCID);
+//                    assertTrue("Unable to invoke operation on resource.",resourceProperty.length == 1);
+//                }
+//            }
+//        }
+//    }
+
+//    public void testWeatherStationCorrelateableProperties() throws Exception, MalformedURLException
+//    {
+//        XmlObject[] capabilityElems = m_resource.getResourceProperty( ManageabilityCharacteristicsCapability.PROP_NAME_MANAGEABILITY_CAPABILITY );
+//        assertContainsURI( capabilityElems, CorrelatablePropertiesCapability.URI );
+//        XmlObject correlatablePropertiesPropElem = getSingleProperty( m_resource, CorrelatablePropertiesCapability.PROP_NAME_CORRELATABLE_PROPERTIES );
+//        assertTrue( correlatablePropertiesPropElem instanceof CorrelatablePropertiesType );
+//        CorrelatablePropertiesType correlatableProperties = (CorrelatablePropertiesType)correlatablePropertiesPropElem;
+//        assertEquals( "Incorrect dialect", MuwsConstants.PBM_DIALECT, correlatableProperties.getDialect() );
+//        XmlObject[] matchElems = XmlBeanUtils.getChildElements( correlatableProperties, new QName( MuwsConstants.NSURI_PBM, "Match", MuwsConstants.NSPREFIX_PBM ) );
+//        assertEquals( "muws-p1-xs:CorrelatableProperties element does not contain exactly one pbm:Match element.", 1, matchElems.length );
+//        assertTrue( matchElems[0] instanceof XmlQName );
+//        XmlQName match = (XmlQName) matchElems[0];
+//        assertEquals( WeatherstationPropertyQNames.FCCID, match.getQNameValue() );
+//
+//        // get weather station resource #2
+//        EndpointReferenceDocument weatherStation2EprDoc = getEndpointReference( new URL( WEATHER_STATION_2_EPR_URL ) );
+//        ResourceStub resource2 = new ResourceStub(new XmlBeansEndpointReference( weatherStation2EprDoc.getEndpointReference()) ); //resource2
+//
+//        assertEquals("FCCIDs did not match.", getFCCID(m_resource), getFCCID(resource2));
+//    }
+
+//    public void testQueryRelationshipsByType() throws FaultException, MalformedURLException, XmlException
+//    {
+//        RelationshipType[] relationshipTypes = m_service.queryRelationshipsByType(WeatherstationResource.RELATIONSHIP_RELATION);
+//        assertNotNull(relationshipTypes);
+//        assertTrue(relationshipTypes.length == 1);
+//        XmlObject[] childElements = XmlBeanUtils.getChildElements(relationshipTypes[0].getType());
+//
+//        XmlObject childElement = childElements[0];
+//        QName typeName = XmlBeanUtils.getName(childElement);
+//
+//        assertEquals(WeatherstationResource.RELATIONSHIP_RELATION, typeName);
+//    }
+//
+//    private String getFCCID(ResourceStub resource)
+//            throws FaultException
+//    {
+//        XmlObject fccIdPropElem = getSingleProperty(resource, WeatherstationPropertyQNames.FCCID);
+//        assertTrue("FCCID was not an xs:String", fccIdPropElem instanceof XmlString);
+//        XmlString fccId = (XmlString) fccIdPropElem;
+//        return fccId.getStringValue();
+//    }
+
+}



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