Added: 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/resource/example/Disk.java
URL: 
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/resource/example/Disk.java?rev=232376&view=auto
==============================================================================
--- 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/resource/example/Disk.java
 (added)
+++ 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/resource/example/Disk.java
 Fri Aug 12 13:38:04 2005
@@ -0,0 +1,309 @@
+/*=============================================================================*

+ *  Copyright 2004 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.ws.resource.example;

+

+import org.apache.xmlbeans.GDuration;

+import java.io.Serializable;

+import java.math.BigInteger;

+import java.util.Calendar;

+import java.util.HashSet;

+import java.util.Set;

+

+/**

+ * Example bean representing a "backend" managed resource.

+ *

+ * NOTE: Here's a high-level algo for mapping resource prop XSD types to 
member var types:

+ * <pre>

+ * if ( minOccurs == "1" && maxOccurs == "1" )

+ *    type = single object or primitive

+ * elif ( maxOccurs != "unbounded" )

+ *    type = array of objects or primitives w/ size=maxOccurs

+ * elif

+ *    type = java.util.List

+ * fi

+ * </pre>

+ *

+ * @author Ian P. Springer

+ */

+public class Disk

+   implements Serializable

+{

+   private BigInteger   m_number_of_blocks = 
ExampleConstants.INITIAL_PROP_VALUE__NUMBER_OF_BLOCKS;

+   private Set          m_filesystems    = buildFileSystemSet(  );

+   private Set          m_state_info_set = buildStateInfoSet(  );

+   private String       m_manufacturer   = 
ExampleConstants.INITIAL_PROP_VALUE__MANUFACTURER;

+   private int          m_block_size     = 
ExampleConstants.INITIAL_PROP_VALUE__BLOCK_SIZE;

+   private boolean      m_isStarted;

+   private final String m_serialNumber;

+   private GDuration    m_activeTime     = 
ExampleConstants.INITIAL_PROP_VALUE__ACTIVE_TIME;

+

+   /**

+    * Creates a new [EMAIL PROTECTED] Disk} object with the specified serial 
number.

+    */

+   public Disk( String serialNumber )

+   {

+      m_serialNumber = serialNumber;

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @param activeTime DOCUMENT_ME

+    */

+   public void setActiveTime( GDuration activeTime )

+   {

+      m_activeTime = activeTime;

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @return DOCUMENT_ME

+    */

+   public GDuration getActiveTime(  )

+   {

+      return m_activeTime;

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @param blockSize DOCUMENT_ME

+    */

+   public void setBlockSize( int blockSize )

+   {

+      m_block_size = blockSize;

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @return DOCUMENT_ME

+    */

+   public int getBlockSize(  )

+   {

+      return m_block_size;

+   }

+

+   /**

+    * Returns the current capacity, computed via the formula: NumberOfBlocks * 
BlockSize

+    */

+   public BigInteger getCapacity(  )

+   {

+      return computeCapacity( m_number_of_blocks, m_block_size );

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @return DOCUMENT_ME

+    */

+   public String getSerialNumber(  )

+   {

+      return m_serialNumber;

+   }

+

+   /**

+    * Computes the capacity of a disk with the specified number of blocks and 
block size.

+    *

+    * @param numberOfBlocks number of blocks

+    * @param blockSize block size

+    *

+    * @return the capacity of a disk with specified number of blocks and block 
size

+    */

+   public static BigInteger computeCapacity( BigInteger numberOfBlocks,

+                                             int        blockSize )

+   {

+      return numberOfBlocks.multiply( new BigInteger( String.valueOf( 
blockSize ) ) );

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @return DOCUMENT_ME

+    */

+   public String[] getFilesystems(  )

+   {

+      return (String[]) m_filesystems.toArray( new String[0] );

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @param manufacturer DOCUMENT_ME

+    */

+   public void setManufacturer( String manufacturer )

+   {

+      m_manufacturer = manufacturer;

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @return DOCUMENT_ME

+    */

+   public String getManufacturer(  )

+   {

+      return m_manufacturer;

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @param numberOfBlocks DOCUMENT_ME

+    */

+   public void setNumberOfBlocks( BigInteger numberOfBlocks )

+   {

+      m_number_of_blocks = numberOfBlocks;

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @return DOCUMENT_ME

+    */

+   public BigInteger getNumberOfBlocks(  )

+   {

+      return m_number_of_blocks;

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @return DOCUMENT_ME

+    */

+   public boolean isStarted(  )

+   {

+      return m_isStarted;

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @return DOCUMENT_ME

+    */

+   public StateInfo[] getStateInfoList(  )

+   {

+      return (StateInfo[]) m_state_info_set.toArray( new StateInfo[0] );

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @param filesystem DOCUMENT_ME

+    */

+   public void addFilesystem( String filesystem )

+   {

+      m_filesystems.add( filesystem );

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @param stateInfo DOCUMENT_ME

+    */

+   public void addStateInfo( StateInfo stateInfo )

+   {

+      m_state_info_set.add( stateInfo );

+   }

+

+   /**

+    * DOCUMENT_ME

+    */

+   public void removeAllFilesystems(  )

+   {

+      m_filesystems = new HashSet(  );

+   }

+

+   /**

+    * DOCUMENT_ME

+    */

+   public void removeAllStateInfos(  )

+   {

+      m_state_info_set.clear(  );

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @param filesystem DOCUMENT_ME

+    */

+   public void removeFilesystem( String filesystem )

+   {

+      m_filesystems.remove( filesystem );

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @param stateInfo DOCUMENT_ME

+    */

+   public void removeStateInfo( StateInfo stateInfo )

+   {

+      m_state_info_set.remove( stateInfo );

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @throws Exception DOCUMENT_ME

+    */

+   public void start(  )

+   throws Exception

+   {

+      if ( !m_isStarted )

+      {

+         m_isStarted = true;

+         System.out.println( "Backend disk with serial # " + m_serialNumber + 
" has been started." );

+      }

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @throws Exception DOCUMENT_ME

+    */

+   public void stop(  )

+   throws Exception

+   {

+      if ( m_isStarted )

+      {

+         m_isStarted = false;

+         System.out.println( "Backend disk with serial # " + m_serialNumber + 
" has been stopped." );

+      }

+   }

+

+   private Set buildFileSystemSet(  )

+   {

+      Set set = new HashSet(  );

+      set.add( "/" );

+      return set;

+   }

+

+   private Set buildStateInfoSet(  )

+   {

+      Set       set        = new HashSet(  );

+      StateInfo stateInfo1 = new StateInfo(  );

+      stateInfo1.setState( "http://stopped"; );

+      stateInfo1.setTimeEntered( Calendar.getInstance(  ) );

+      set.add( stateInfo1 );

+      StateInfo stateInfo2 = new StateInfo(  );

+      stateInfo2.setState( "http://starting"; );

+      stateInfo2.setTimeEntered( Calendar.getInstance(  ) );

+      set.add( stateInfo2 );

+      return set;

+   }

+}
\ No newline at end of file

Added: 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/resource/example/ExampleConstants.java
URL: 
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/resource/example/ExampleConstants.java?rev=232376&view=auto
==============================================================================
--- 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/resource/example/ExampleConstants.java
 (added)
+++ 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/resource/example/ExampleConstants.java
 Fri Aug 12 13:38:04 2005
@@ -0,0 +1,83 @@
+/*=============================================================================*

+ *  Copyright 2004 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.ws.resource.example;

+

+import org.apache.xmlbeans.GDuration;

+import javax.xml.namespace.QName;

+import java.math.BigInteger;

+

+/**

+ * Example-related constants.

+ *

+ * @author Ian P. Springer

+ */

+public interface ExampleConstants

+{

+   /** DOCUMENT_ME */

+   BigInteger INITIAL_PROP_VALUE__NUMBER_OF_BLOCKS = new BigInteger( 
"20000000000" );

+

+   /** Target namespace prefix for the disk WSDL */

+   String NSPREFIX_XYZ = "xyz";

+

+   /** Target namespace URI of the disk WSDL */

+   String NSURI_XYZ = "http://xyz.com/";;

+

+   /** QNames */

+   QName RESOURCE_PROP_QNAME_ACTIVE_TIME = new QName( NSURI_XYZ, "ActiveTime", 
NSPREFIX_XYZ );

+

+   /** DOCUMENT_ME */

+   QName RESOURCE_PROP_QNAME_BLOCK_SIZE = new QName( NSURI_XYZ, "BlockSize", 
NSPREFIX_XYZ );

+

+   /** DOCUMENT_ME */

+   QName RESOURCE_PROP_QNAME_CAPACITY = new QName( NSURI_XYZ, "Capacity", 
NSPREFIX_XYZ );

+

+   /** DOCUMENT_ME */

+   QName RESOURCE_PROP_QNAME_FILE_SYSTEM = new QName( NSURI_XYZ, "FileSystem", 
NSPREFIX_XYZ );

+

+   /** DOCUMENT_ME */

+   QName RESOURCE_PROP_QNAME_MANUFACTURER = new QName( NSURI_XYZ, 
"Manufacturer", NSPREFIX_XYZ );

+

+   /** DOCUMENT_ME */

+   QName RESOURCE_PROP_QNAME_NUMBER_OF_BLOCKS = new QName( NSURI_XYZ, 
"NumberOfBlocks", NSPREFIX_XYZ );

+

+   /** DOCUMENT_ME */

+   QName RESOURCE_PROP_QNAME_STATE_INFO = new QName( NSURI_XYZ, "StateInfo", 
NSPREFIX_XYZ );

+

+   /** DOCUMENT_ME */

+   QName RESOURCE_PROP_QNAME_TOPIC_SPACE = new QName( NSURI_XYZ, "TopicSpace", 
NSPREFIX_XYZ );

+

+   /** DOCUMENT_ME */

+   String INITIAL_PROP_VALUE__MANUFACTURER = "Hewlett-Packard Company";

+

+   /** Name of the deployed disk Web service */

+   String SERVICE_NAME = "disk";

+

+   /** Qualified name of the deployed disk Web service */

+   QName SERVICE_QNAME = new QName( NSURI_XYZ, SERVICE_NAME );

+

+   /** URL path of the disk Web service */

+   String SERVICE_URL_PATH = "/axis/services/" + SERVICE_NAME;

+

+   /** DOCUMENT_ME */

+   int INITIAL_PROP_VALUE__BLOCK_SIZE = 1024;

+

+   /** DOCUMENT_ME */

+   BigInteger INITIAL_PROP_VALUE__CAPACITY =

+      Disk.computeCapacity( INITIAL_PROP_VALUE__NUMBER_OF_BLOCKS, 
INITIAL_PROP_VALUE__BLOCK_SIZE );

+

+   /** DOCUMENT_ME */

+   GDuration INITIAL_PROP_VALUE__ACTIVE_TIME = new GDuration( "P0M" );

+}
\ No newline at end of file

Added: 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/resource/example/StateInfo.java
URL: 
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/resource/example/StateInfo.java?rev=232376&view=auto
==============================================================================
--- 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/resource/example/StateInfo.java
 (added)
+++ 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/resource/example/StateInfo.java
 Fri Aug 12 13:38:04 2005
@@ -0,0 +1,69 @@
+/*=============================================================================*

+ *  Copyright 2004 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.ws.resource.example;

+

+import java.io.Serializable;

+import java.util.Calendar;

+

+/**

+ * @author Ian P. Springer

+ */

+public class StateInfo

+   implements Serializable

+{

+   private Calendar m_timeEntered;

+   private String   m_state;

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @param state DOCUMENT_ME

+    */

+   public void setState( String state )

+   {

+      m_state = state;

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @return DOCUMENT_ME

+    */

+   public String getState(  )

+   {

+      return m_state;

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @param timeEntered DOCUMENT_ME

+    */

+   public void setTimeEntered( Calendar timeEntered )

+   {

+      m_timeEntered = timeEntered;

+   }

+

+   /**

+    * DOCUMENT_ME

+    *

+    * @return DOCUMENT_ME

+    */

+   public Calendar getTimeEntered(  )

+   {

+      return ( m_timeEntered );

+   }

+}
\ No newline at end of file

Added: 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/resource/example/discovery/DiskDiscoveryAgent.java
URL: 
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/resource/example/discovery/DiskDiscoveryAgent.java?rev=232376&view=auto
==============================================================================
--- 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/resource/example/discovery/DiskDiscoveryAgent.java
 (added)
+++ 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/resource/example/discovery/DiskDiscoveryAgent.java
 Fri Aug 12 13:38:04 2005
@@ -0,0 +1,100 @@
+package org.apache.ws.resource.example.discovery;

+           

+

+import javax.xml.namespace.QName;

+

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+import org.apache.ws.resource.discovery.DiscoveryAgent;

+import org.apache.ws.resource.discovery.RegistrationManager;

+import org.apache.ws.resource.discovery.faults.RegistrationFailureException;

+import org.apache.ws.resource.discovery.impl.DiscoveryAgentProperty;

+

+import axis.com.xyz.DiskWsdmServiceWSResource;

+

+/**

+ * This is a sample discovery agent that will add one new instance of a

+ * disk resource for each Agent property with an id of ResourceID.

+ * Its value will be the resource id to be used.

+ * <p/>

+ * Below is a sample of how to instantiate 2 instances of

+ * disk resource, one with the id of 1234 and another with one

+ * of 5678.

+ * <p/>

+ * <pre>

+ *  <agent-list >

+ *   <agent>

+ *       <name>Disk Resource Discovery Agent</name>

+ *       
<class>org.apache.ws.resource.example.discovery.DiskDiscoveryAgent</class>

+ *       <properties>

+ *           <property id="ResourceID">1234</property>

+ *           <property id="ResourceID">5678</property>

+ *       </properties>

+ *    </agent>

+ *   </agent-list>

+ * </pre>

+ *

+ * @author wire

+ * @version $Revision: 1.1 $

+ */

+public class DiskDiscoveryAgent

+   implements DiscoveryAgent

+{

+   /**

+    * Provides log access for this class.

+    */

+   private static final Log LOG = LogFactory.getLog( DiskDiscoveryAgent.class 
);

+

+   /**

+    * @see DiscoveryAgent#discover(String, RegistrationManager, 
DiscoveryAgentProperty[])

+    */

+   public void discover( String                   agentname,

+                         RegistrationManager      registrationManager,

+                         DiscoveryAgentProperty[] agentProps )

+   {

+      // See how many agentProps there are with ResourceID

+      // For each one, create a DiskResource and register it

+      int discoveredCount = 0;

+      for ( int i = 0; i < agentProps.length; i++ )

+      {

+         DiscoveryAgentProperty agentProp = agentProps[i];

+         if ( agentProp.getId(  ).equals( "ResourceID" ) )

+         {

+            DiskWsdmServiceWSResource resource = null;

+            try

+            {

+               String resourceId = agentProp.getValue(  );

+               resource = new DiskWsdmServiceWSResource( resourceId );

+               resource.getPropertiesManager(  ).setReadOnly(new QName( 
"http://xyz.com/";, "Capacity", "xyz" ), true );

+               discoveredCount++;

+            }

+            catch ( Throwable t )

+            {

+               LOG.error( "Discovery failed for DiskWsdmServiceWSResource with 
Id " + agentProp.getId(  ), t );

+               continue;

+            }

+

+            LOG.info( "Attempting to register an instance of 
DiskWsdmServiceWSResource ResourceID="

+                      + agentProp.getValue(  ) );

+            try

+            {

+               registrationManager.register( resource );

+            }

+            catch ( RegistrationFailureException rfe )

+            {

+               LOG.error( "Discovery failed to register " + agentProp.getId(  
), rfe );

+            }

+         }

+      }

+

+      //Just for conveniance, if nothing was discovered, write that to the log.

+      if ( discoveredCount == 0 )

+      {

+         LOG.warn( "Discovery completed on agent " + agentname + " but no new 
resources where added." );

+      }

+      else

+      {

+         LOG.info( "Discovery agent <" + agentname + "> finished." );

+      }

+   }

+}
\ No newline at end of file

Added: 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractAxisTestCase.java
URL: 
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractAxisTestCase.java?rev=232376&view=auto
==============================================================================
--- 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractAxisTestCase.java
 (added)
+++ 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractAxisTestCase.java
 Fri Aug 12 13:38:04 2005
@@ -0,0 +1,239 @@
+/*=============================================================================*

+ *  Confidential Copyright (c) 2004 Hewlett-Packard Development Company, L.P.  
*

+ 
*=============================================================================*/

+package org.apache.ws.test;

+

+import org.apache.ws.http.NotSoSimpleAxisServer;

+import org.apache.ws.rpc.JaxRpcConstants;

+import org.apache.ws.soap.SaajConstants;

+

+import junit.framework.AssertionFailedError;

+import junit.framework.TestCase;

+

+import org.apache.axis.configuration.FileProvider;

+

+import java.net.MalformedURLException;

+import java.net.ServerSocket;

+import java.net.URL;

+

+/**

+ * Provides some conviencence functionality for easier testing of web services.

+ * Methods provided by this JUnit test case superclass will allow an embedded

+ * Axis server to be started and stopped.

+ *

+ * @author mazz

+ */

+public abstract class AbstractAxisTestCase

+   extends TestCase

+{

+   private static final int ANY_FREE_PORT = 0;

+

+   /*

+    * Make sure JAX-RPC and SAAJ factories all are set to Axis' impls.

+    */

+   static

+   {

+      System.setProperty( JaxRpcConstants.SYSPROP_SERVICE_FACTORY, 
JaxRpcConstants.IMPL_SERVICE_FACTORY_AXIS );

+      System.setProperty( SaajConstants.SYSPROP_SOAP_FACTORY, 
SaajConstants.IMPL_SOAP_FACTORY_AXIS );

+      System.setProperty( SaajConstants.SYSPROP_MESSAGE_FACTORY, 
SaajConstants.IMPL_MESSAGE_FACTORY_AXIS );

+      System.setProperty( SaajConstants.SYSPROP_SOAP_CONNECTION_FACTORY,

+                          SaajConstants.IMPL_SOAP_CONNECTION_FACTORY_AXIS );

+      System.setProperty( SaajConstants.SYSPROP_SOAP_ELEMENT_FACTORY, 
SaajConstants.IMPL_SOAP_ELEMENT_FACTORY_AXIS );

+   }

+

+   /**

+    * the embedded Axis server

+    */

+   private NotSoSimpleAxisServer m_simpleAxisServer;

+

+

+   /**

+    * @see TestCase#TestCase()

+    */

+   public AbstractAxisTestCase(  )

+   {

+      super(  );

+   }

+

+   /**

+    * @see TestCase#TestCase(String)

+    */

+   public AbstractAxisTestCase( String name )

+   {

+      super( name );

+   }

+

+   /**

+    * Returns the base URL used to contact the Axis server.  To access a web 
service hosted inside

+    * of the embedded Axis server, append the name of the web service to this 
base URL.

+    * <p/>

+    * Subclasses may override this method if the default is not acceptable. The

+    * default is <code>http://127.0.0.1:####/axis/services/</code> where 
<code>####</code>

+    * is the [EMAIL PROTECTED] #getAxisServerSocketPort() Axis port number} 
and <code>axis</code> is

+    * the [EMAIL PROTECTED] #getAxisContextName() Axis context name}.

+    *

+    * @return base URL for all web services hosted in the embedded Axis server

+    */

+   protected URL getAxisBaseUrl(  )

+   {

+      try

+      {

+         return new URL( "http",

+                         "127.0.0.1",

+                         m_simpleAxisServer.getServerSocket().getLocalPort(),

+                         "/" + getAxisContextName(  ) + "/services/" );

+      }

+      catch ( MalformedURLException murle )

+      { // should never occur - throw error so as not to force a throws clause 
in signature

+         throw new AssertionFailedError( murle.toString(  ) );

+      }

+   }

+

+   /**

+    * Returns the full directory path containing the WSDD configuration 
file(s).

+    * This is the base path that is prepended to the

+    * [EMAIL PROTECTED] #getAxisConfigFileName() configuration file name}.

+    * <p/>

+    * Subclasses may override this method if the default is not acceptable. The

+    * default is the current directory as defined by the system property

+    * <code>user.dir</code>.

+    *

+    * @return filename of the WSDD configuration file

+    */

+   protected String getAxisConfigBasePath(  )

+   {

+      return System.getProperty( "user.dir" );

+   }

+

+   /**

+    * Returns the filename of the actual Axis WSDD configuration file, 
excluding

+    * all directory paths.

+    * <p/>

+    * Subclasses may override this method if the default is not acceptable. The

+    * default is <code>server-config.wsdd</code>.

+    *

+    * @return filename of the WSDD configuration file

+    */

+   protected String getAxisConfigFileName(  )

+   {

+      return "server-config.wsdd";

+   }

+

+   /**

+    * Returns the context name of the Axis servlet for use within an endpoint 
URL.

+    *

+    * @return context name of the Axis servlet

+    */

+   protected String getAxisContextName(  )

+   {

+      return "axis";

+   }

+

+   /**

+    * This setter is to allow subclasses to tell us if we should use an 
already existing Axis server.

+    *

+    * @param server the embedded Axis server to be used by the tests

+    */

+   protected void setAxisServer( NotSoSimpleAxisServer server )

+   {

+      m_simpleAxisServer = server;

+   }

+

+   /**

+    * @return the embedded Axis server to be used by the tests

+    */

+   protected NotSoSimpleAxisServer getAxisServer(  )

+   {

+      return m_simpleAxisServer;

+   }

+

+   /**

+    * Returns the number of the port that the embedded Axis server will accept

+    * requests on.

+    * <p/>

+    * Subclasses may override this method if the default is not acceptable. The

+    * default is <code>8080</code>.

+    *

+    * @return port number that the Axis server will listen to

+    */

+   protected int getAxisServerSocketPort(  )

+   {

+      return ANY_FREE_PORT;

+   }

+

+

+   /**

+    * Returns a URL used to request a WSDL document for a web service with the 
given name.

+    * This method uses [EMAIL PROTECTED] #getAxisBaseUrl()} to determine the 
base URL.

+    *

+    * @param serviceName the name of the web service

+    * 

+    * @return URL used to request a web service WSDL document

+    * 

+    * @see #getAxisBaseUrl()

+    */

+   protected URL getAxisWebServiceUrl( String serviceName )

+   {

+      try

+      {

+         return new URL( getAxisBaseUrl(  ), serviceName );

+      }

+      catch ( MalformedURLException murle )

+      { // should never occur - throw error so as not to force a throws clause 
in signature

+         throw new AssertionFailedError( murle.toString(  ) );

+      }

+   }

+

+   /**

+    * Returns a URL used to request a WSDL document for a web service with the 
given name.

+    * This method uses [EMAIL PROTECTED] #getAxisBaseUrl()} to determine the 
base URL.

+    *

+    * @param serviceName the name of the web service

+    *

+    * @return URL used to request a web service WSDL document

+    *

+    * @see #getAxisBaseUrl()

+    */

+   protected URL getAxisWebServiceWsdlUrl( String serviceName )

+   {

+      try

+      {

+         return new URL( getAxisBaseUrl(  ).toString(  ) + serviceName + 
"?wsdl" );

+      }

+      catch ( MalformedURLException murle )

+      { // should never occur - throw error so as not to force a throws clause 
in signature

+         throw new AssertionFailedError( murle.toString(  ) );

+      }

+   }

+

+   /**

+    * Reads in the Axis configuration file, creates a server socket to accept

+    * requests and then starts the embedded Axis server.

+    *

+    * @throws Exception if failed to get the configuration file, failed to 
start

+    *                   the server socket or failed to start the server

+    */

+   protected void startAxisServer(  )

+   throws Exception

+   {

+      FileProvider config = new FileProvider( getAxisConfigBasePath(  ),

+                                              getAxisConfigFileName(  ) );

+      ServerSocket ss = new ServerSocket( getAxisServerSocketPort(  ) );

+      m_simpleAxisServer = new NotSoSimpleAxisServer(  );

+      m_simpleAxisServer.setServerSocket( ss );

+      m_simpleAxisServer.setMyConfig( config );

+      m_simpleAxisServer.start(  );

+   }

+

+   /**

+    * Stops the embedded Axis server if it is running.

+    */

+   protected void stopAxisServer(  )

+   {

+      if ( m_simpleAxisServer != null )

+      {

+         m_simpleAxisServer.stop(  );

+         m_simpleAxisServer = null;

+      }

+   }

+}
\ No newline at end of file

Added: 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractMultipleAxisTestCase.java
URL: 
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractMultipleAxisTestCase.java?rev=232376&view=auto
==============================================================================
--- 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractMultipleAxisTestCase.java
 (added)
+++ 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractMultipleAxisTestCase.java
 Fri Aug 12 13:38:04 2005
@@ -0,0 +1,55 @@
+/*=============================================================================*

+ *  Confidential Copyright (c) 2004 Hewlett-Packard Development Company, L.P.  
*

+ 
*=============================================================================*/

+package org.apache.ws.test;

+

+import junit.framework.TestCase;

+

+/**

+ * A JUnit test case superclass that will setup each individual test with its 
own

+ * Axis server.  Multiple Axis servers will be started/stopped - one per test 
method.

+ *

+ * @author mazz

+ */

+public abstract class AbstractMultipleAxisTestCase

+   extends AbstractAxisTestCase

+{

+   /**

+    * @see AbstractAxisTestCase#AbstractAxisTestCase()

+    */

+   public AbstractMultipleAxisTestCase(  )

+   {

+   }

+

+   /**

+    * @see AbstractAxisTestCase#AbstractAxisTestCase(String)

+    */

+   public AbstractMultipleAxisTestCase( String name )

+   {

+      super( name );

+   }

+

+   /**

+    * Starts the embedded Axis server.

+    *

+    * @see TestCase#setUp()

+    */

+   protected void setUp(  )

+   throws Exception

+   {

+      super.setUp(  );

+      startAxisServer(  );

+   }

+

+   /**

+    * Stops the embedded Axis server.

+    *

+    * @see TestCase#tearDown()

+    */

+   protected void tearDown(  )

+   throws Exception

+   {

+      super.tearDown(  );

+      stopAxisServer(  );

+   }

+}


Added: 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractNoAxisTestCase.java
URL: 
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractNoAxisTestCase.java?rev=232376&view=auto
==============================================================================
--- 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractNoAxisTestCase.java
 (added)
+++ 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractNoAxisTestCase.java
 Fri Aug 12 13:38:04 2005
@@ -0,0 +1,23 @@
+/*=============================================================================*

+ *  Confidential Copyright (c) 2004 Hewlett-Packard Development Company, L.P.  
*

+ 
*=============================================================================*/

+package org.apache.ws.test;

+

+/**

+ * For running tests against an Axis instance running in another JVM (i.e. 
under Tomcat).

+ *

+ * @author Ian P. Springer

+ */

+public abstract class AbstractNoAxisTestCase

+   extends AbstractAxisTestCase

+{

+   /**

+    * Context is wsdm when not running under a [EMAIL PROTECTED] 
org.apache.axis.transport.http.SimpleAxisServer}.

+    *

+    * @return "wsdm"

+    */

+   protected String getAxisContextName(  )

+   {

+      return "wsdm";

+   }

+}
\ No newline at end of file

Added: 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractOneAxisTestCase.java
URL: 
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractOneAxisTestCase.java?rev=232376&view=auto
==============================================================================
--- 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractOneAxisTestCase.java
 (added)
+++ 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractOneAxisTestCase.java
 Fri Aug 12 13:38:04 2005
@@ -0,0 +1,167 @@
+/*=============================================================================*

+ *  Confidential Copyright (c) 2004 Hewlett-Packard Development Company, L.P.  
*

+ 
*=============================================================================*/

+package org.apache.ws.test;

+

+import org.apache.ws.http.NotSoSimpleAxisServer;

+

+import junit.framework.Test;

+import junit.framework.TestCase;

+

+import java.lang.reflect.Method;

+import java.lang.reflect.Modifier;

+import java.util.Vector;

+

+/**

+ * A JUnit test case superclass that will setup one global Axis server for use 
across all

+ * individual test methods.  An embedded Axis server is started before the

+ * first test is run and that one Axis server remains running until the last 
test completes

+ * its run at which time the Axis server is stopped.

+ *

+ * @author Ian P. Springer

+ */

+public abstract class AbstractOneAxisTestCase

+   extends AbstractAxisTestCase

+{

+   /** number of test methods that have been run (static since JUnit creates 
one instance of this class per test method) */

+   private static int s_testsRun = 0;

+

+   /** total number of test methods found in the test case (static since JUnit 
creates one instance of this class per test method) */

+   private static int s_testCount = 0;

+

+   /** axis server for use across all tests in the test case (static since 
JUnit creates one instance of this class per test method) */

+   private static NotSoSimpleAxisServer s_simpleAxisServer;

+

+   /**

+    * @see AbstractAxisTestCase#AbstractAxisTestCase()

+    */

+   public AbstractOneAxisTestCase(  )

+   {

+      super(  );

+   }

+

+   /**

+    * @see AbstractAxisTestCase#AbstractAxisTestCase(String)

+    */

+   public AbstractOneAxisTestCase( String name )

+   {

+      super( name );

+   }

+

+   /**

+    * Starts the embedded Axis server iff this is the first test being run 
within this test case.

+    *

+    * @see TestCase#setUp()

+    */

+   protected void setUp(  )

+   throws Exception

+   {

+      super.setUp(  );

+

+      if ( s_testsRun++ == 0 )

+      {

+         startAxisServer(  );

+         s_simpleAxisServer = getAxisServer(  );

+      }

+      else

+      {

+         // a prior test method was run so the Axis server is already started, 
reuse it

+         setAxisServer( s_simpleAxisServer );

+      }

+   }

+

+   /**

+    * Stops the embedded Axis server after the last test within this test case 
has finished running.

+    *

+    * @see TestCase#tearDown()

+    */

+   protected void tearDown(  )

+   throws Exception

+   {

+      super.tearDown(  );

+      if ( s_testsRun == getTestCount(  ) )

+      {

+         stopAxisServer(  );

+         s_simpleAxisServer    = null;

+

+         // reset the counters to prepare for the next test case

+         s_testsRun     = 0;

+         s_testCount    = 0;

+      }

+   }

+

+   /**

+    * Returns the number of tests in this TestCase.

+    *

+    * @return the number of tests in this TestCase

+    */

+   private int getTestCount(  )

+   {

+      if ( s_testCount == 0 )

+      {

+         s_testCount = countTests( this.getClass(  ) );

+      }

+      return s_testCount;

+   }

+

+   /**

+    * Examines the given <code>Method</code> and returns <code>true</code> if 
it is a JUnit test method.

+    *

+    * A method is considered a test method if all of the following are 
<code>true</code>:

+    * <ol>

+    *    <li>The method's name starts with "test"</li>

+    *    <li>The method takes 0 parameters</li>

+    *    <li>The method returns "void"</li>

+    *    <li>The method is public</li>

+    * </ol>

+    *

+    * @param m the method to check

+    *

+    * @return <code>true</code> if the given method is a JUnit test method; 
<code>false</code> otherwise

+    */

+   private boolean isTestMethod( Method m )

+   {

+      String  name       = m.getName(  );

+      Class[] parameters = m.getParameterTypes(  );

+      Class   returnType = m.getReturnType(  );

+      boolean is_public  = Modifier.isPublic( m.getModifiers(  ) );

+

+      return ( parameters.length == 0 ) && name.startsWith( "test" ) && 
returnType.equals( Void.TYPE )

+             && is_public;

+   }

+

+   /**

+    * Counts the test methods in the specified JUnit TestCase class.

+    *

+    * @param testCaseClass a JUnit TestCase class

+    *

+    * @return the number of test methods in the specified TestCase class

+    *

+    * @see #isTestMethod(Method)

+    */

+   private int countTests( final Class testCaseClass )

+   {

+      Class  superClass = testCaseClass;

+      Vector tests = new Vector(  );

+

+      while ( Test.class.isAssignableFrom( superClass ) )

+      {

+         Method[] methods = superClass.getDeclaredMethods(  );

+

+         for ( int i = 0; i < methods.length; i++ )

+         {

+            if ( !tests.contains( methods[i].getName(  ) ) )

+            {

+               if ( isTestMethod( methods[i] ) )

+               {

+                  tests.add( methods[i].getName(  ) );

+               }

+            }

+         }

+

+         superClass = superClass.getSuperclass(  );

+      }

+

+      return tests.size(  );

+   }

+}
\ No newline at end of file

Added: 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractSerializationTestCase.java
URL: 
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractSerializationTestCase.java?rev=232376&view=auto
==============================================================================
--- 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractSerializationTestCase.java
 (added)
+++ 
webservices/muse/trunk/src/examples/client/src/test/org/apache/ws/test/AbstractSerializationTestCase.java
 Fri Aug 12 13:38:04 2005
@@ -0,0 +1,96 @@
+/*=============================================================================*

+ *  Confidential Copyright (c) 2004 Hewlett-Packard Development Company, L.P.  
*

+ 
*=============================================================================*/

+package org.apache.ws.test;

+

+import junit.framework.TestCase;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import java.io.ByteArrayInputStream;

+import java.io.ByteArrayOutputStream;

+import java.io.IOException;

+import java.io.ObjectInputStream;

+import java.io.ObjectOutputStream;

+

+/**

+ * Superclass test case for use if a test case wants to perform serialization 
checks.

+ *

+ * @author mazz

+ */

+public abstract class AbstractSerializationTestCase

+   extends TestCase

+{

+   private static final Log LOG = LogFactory.getLog( 
AbstractSerializationTestCase.class );

+

+   /**

+    * De-Serializes the given string into an object.

+    *

+    * @param s bytes to de-serialize

+    *

+    * @return de-serialized object

+    */

+   protected Object deSerializeObject( byte[] s )

+   {

+      Object ret_obj;

+

+      try

+      {

+         ByteArrayInputStream bais = new ByteArrayInputStream( s );

+         ObjectInputStream    ois = new ObjectInputStream( bais );

+

+         ret_obj = ois.readObject(  );

+

+         assertNotNull( ret_obj );

+

+         LOG.debug( "DeserializedObject.toString(): " + ret_obj ); // just to 
see what the de-serialized data looks like

+

+         return ret_obj;

+      }

+      catch ( Exception e )

+      {

+         fail( "Cannot de-serialize object: " + e );

+

+         return null; // never gets here

+      }

+   }

+

+   /**

+    * Serializes the given object then immediately de-serializes it.

+    *

+    * @param o object to serialize then de-serialize

+    *

+    * @return the de-serialized object - should be equal to the input though 
will not be the same

+    */

+   protected Object roundTrip( Object o )

+   {

+      return deSerializeObject( serializeObject( o ) );

+   }

+

+   /**

+    * Serializes the given object.

+    *

+    * @param o object to serialize

+    *

+    * @return serialized data

+    */

+   protected byte[] serializeObject( Object o )

+   {

+      try

+      {

+         ByteArrayOutputStream baos = new ByteArrayOutputStream(  );

+         ObjectOutputStream    oos = new ObjectOutputStream( baos );

+

+         oos.writeObject( o );

+

+         //System.out.println( baos.toString(  ) ); // just to see what the 
serialized data looks like

+         return baos.toByteArray(  );

+      }

+      catch ( IOException ioe )

+      {

+         fail( "Cannot serialize object '" + o.getClass(  ) + "': " + ioe );

+

+         return null; // never gets here

+      }

+   }

+}
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to