You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by gd...@apache.org on 2002/01/28 19:23:04 UTC

cvs commit: xml-axis/java/test/wsdd TestBadWSDD.java TestStructure.java TestUndeployment.java

gdaniels    02/01/28 10:23:03

  Modified:    java/docs architecture-guide.html wsddclasses.jpg
               java/samples/proxy ProxyService.java
               java/samples/transport FileTest.java testit.cmd
               java/samples/transport/tcp AdminClient.java GetQuote.java
                        TCPListener.java
               java/src/org/apache/axis AxisEngine.java
                        ConfigurationProvider.java
               java/src/org/apache/axis/client AdminClient.java
                        AxisClient.java Service.java ServiceFactory.java
               java/src/org/apache/axis/configuration FileProvider.java
                        NullProvider.java XMLStringProvider.java
               java/src/org/apache/axis/deployment DeployableItem.java
                        DeploymentException.java DeploymentRegistry.java
               java/src/org/apache/axis/deployment/v2dd
                        V2DDDeployableItem.java V2DDException.java
               java/src/org/apache/axis/deployment/wsdd
                        WSDDBeanMapping.java WSDDChain.java
                        WSDDDeployableItem.java WSDDDeployment.java
                        WSDDDocument.java WSDDException.java
                        WSDDGlobalConfiguration.java WSDDHandler.java
                        WSDDProvider.java WSDDService.java
                        WSDDTargetedChain.java WSDDTransport.java
                        WSDDTypeMappingContainer.java WSDDUndeployment.java
               java/src/org/apache/axis/deployment/wsdd/providers
                        WSDDBsfProvider.java WSDDComProvider.java
                        WSDDHandlerProvider.java WSDDJavaEJBProvider.java
                        WSDDJavaMsgProvider.java WSDDJavaRPCProvider.java
               java/src/org/apache/axis/deployment/wsml
                        WSMLDeployableItem.java
               java/src/org/apache/axis/encoding
                        DeserializationContextImpl.java
               java/src/org/apache/axis/message MessageElement.java
               java/src/org/apache/axis/server AxisServer.java
                        AxisServerFactory.java
                        DefaultAxisServerFactory.java
                        JNDIAxisServerFactory.java server-config.wsdd
               java/src/org/apache/axis/utils Admin.java
                        resources.properties
               java/test/RPCDispatch TestRPC.java TestSerializedRPC.java
               java/test/encoding TestArrayListConversions.java
                        TestBody.java TestDeser.java TestXsiType.java
               java/test/functional TestTCPTransportSample.java
                        TestTransportSample.java
               java/test/outparams TestOutParams.java
               java/test/session TestSimpleSession.java
               java/test/soap TestHeaderAttrs.java
               java/test/wsdd TestBadWSDD.java TestStructure.java
                        TestUndeployment.java
  Added:       java/docs engineconfig.jpg
               java/samples/transport client_deploy.wsdd deploy.wsdd
               java/samples/transport/tcp client_deploy.wsdd deploy.wsdd
               java/src/org/apache/axis ConfigurationException.java
                        EngineConfiguration.java
               java/src/org/apache/axis/configuration SimpleProvider.java
  Removed:     java/src/org/apache/axis/deployment
                        SimpleDeploymentManager.java
               java/src/org/apache/axis/deployment/wsdd
                        SimpleWsddDeploymentManager.java
  Log:
  Merge config-work into HEAD
  
  Revision  Changes    Path
  1.2       +36 -12    xml-axis/java/docs/architecture-guide.html
  
  Index: architecture-guide.html
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/docs/architecture-guide.html,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- architecture-guide.html	22 Jan 2002 15:35:11 -0000	1.1
  +++ architecture-guide.html	28 Jan 2002 18:22:59 -0000	1.2
  @@ -236,17 +236,45 @@
   side handler chains. The relationships between these classes is fairly
   simple:
   <br><img SRC="engineclasses.jpg" height=242 width=169>
  +<h4>Engine Configuration</h3>
  +The EngineConfiguration interface is the means of configuring the Handler
  +factories and global options of an engine instance. An instance of a
  +concrete implementation of EngineConfiguration must be passed to the engine
  +when it is created and the engine must be notified if the EngineConfiguration
  +contents are modified. The engine keeps a reference to the EngineConfiguration
  +and then uses it to obtain Handler factories and global options.
  +<p>
  +The EngineConfiguration interface belongs to the Message Flow subsystem
  +which means that the Message Flow subsystem does not depend on the
  +Administration subsystem.
   <h2>
   <a NAME="Administration Subsystem"></a>Administration Subsystem</h2>
  -The administration subsystem provides a set of factories for runtime artefacts
  -such as Chains and SOAPServices.
  +The Administration subsystem provides a way of configuring Axis engines.
  +The configuration information an engine needs is a collection of factories for
  +runtime artefacts such as Chains and SOAPServices and a set of global
  +configuration options for the engine.
  +<p>
  +The Message Flow subsystem's EngineConfiguration interface
  +is implemented by the Administration subsystem. FileProvider enables
  +an engine to be configured statically from a file containing a
  +deployment descriptor which is understood by the WSDDDeployment class.
  +SimpleProvider, on the other hand, enables an engine to be configured
  +dynamically.
  +<br><img SRC="engineconfig.jpg">
   <h3>
   WSDD-Based Administration</h3>
  -WSDD is an XML grammer for statically configuring an administration subsystem.
  -Its structure is mirrored by a class hierarchy of factories for runtime
  -artefacts. The following diagram shows the classes and the types of runtime
  +WSDD is an XML grammer for deployment descriptors which are used to
  +statically configuring Axis engines.
  +Each Handler needs configuration in terms of the concrete class name
  +of a factory for the Handler, a set of options for the handler, and
  +a lifecycle scope value which determines the scope of sharing of
  +instances of the Handler.
  +<p>
  +The structure of the WSDD grammar is mirrored by a class hierarchy of factories
  +for runtime artefacts.
  +The following diagram shows the classes and the types of runtime
   artefacts they produce (a dotted arrow means "instantiates").
  -<br><img SRC="wsddclasses.jpg" height=381 width=655>
  +<br><img SRC="wsddclasses.jpg">
   <h2>
   <a NAME="Sequence Diagrams"></a>Interaction Diagrams</h2>
   
  @@ -272,8 +300,8 @@
   <li>
   &nbsp;The relationship between the Axis subsystems needs to be documented
   and somewhat cleaned up as there is leakage of responsibilities between
  -some of the subsystems. For example, WSDD has leaked into the basic engine
  -architecture. Also, there is some SOAP and HTTP bias in the basic MessageContext
  +some of the subsystems. For example,
  +there is some SOAP and HTTP bias in the basic MessageContext
   type and associated classes.</li>
   
   <li>
  @@ -323,10 +351,6 @@
   how the semantics of this combined sequence compares with the sequence
   formed by omitting the transport-related Handlers.
   <br><img SRC="pivots2.jpg" height=413 width=658>
  -<li>
  -The administration subsystem is currently hardcoded to use WSDD. A generic
  -set of factory interfaces needs factoring out to enable non WSDD based
  -administration subsystems to be used with Axis.</li>
   </ol>
   
   </body>
  
  
  
  1.2       +180 -170  xml-axis/java/docs/wsddclasses.jpg
  
  	<<Binary file>>
  
  
  1.2       +104 -0    xml-axis/java/docs/engineconfig.jpg
  
  	<<Binary file>>
  
  
  1.12      +2 -1      xml-axis/java/samples/proxy/ProxyService.java
  
  Index: ProxyService.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/proxy/ProxyService.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ProxyService.java	3 Jan 2002 18:08:28 -0000	1.11
  +++ ProxyService.java	28 Jan 2002 18:22:59 -0000	1.12
  @@ -95,7 +95,8 @@
               Call    call = (Call) service.createCall();
   
               SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender());
  -	    service.getEngine().deployTransport("tcp", c);
  +            // !!! FIXME
  +            //service.getEngine().deployTransport("tcp", c);
       
               // add TCP for proxy testing
               call.addTransportPackage("samples.transport");
  
  
  
  1.24      +13 -7     xml-axis/java/samples/transport/FileTest.java
  
  Index: FileTest.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/transport/FileTest.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- FileTest.java	11 Jan 2002 21:42:10 -0000	1.23
  +++ FileTest.java	28 Jan 2002 18:22:59 -0000	1.24
  @@ -2,6 +2,8 @@
   
   import org.apache.axis.AxisEngine;
   import org.apache.axis.SimpleTargetedChain;
  +import org.apache.axis.configuration.XMLStringProvider;
  +import org.apache.axis.deployment.wsdd.WSDDConstants;
   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
   import org.apache.axis.client.Transport;
  @@ -19,6 +21,16 @@
    */
   
   public class FileTest {
  +    static final String wsdd =
  +            "<deployment xmlns=\"http://xml.apache.org/axis/wsdd/\" " +
  +                  "xmlns:java=\"" + WSDDConstants.WSDD_JAVA + "\">\n" +
  +            " <transport name=\"FileTransport\" pivot=\"java:samples.transport.FileSender\"/>\n" +
  +            " <service name=\"" + WSDDConstants.WSDD_NS + "\" provider=\"java:MSG\">\n" +
  +            "  <parameter name=\"allowedMethods\" value=\"AdminService\"/>\n" +
  +            "  <parameter name=\"className\" value=\"org.apache.axis.utils.Admin\"/>\n" +
  +            " </service>\n" +
  +            "</deployment>";
  +
       public static void main(String args[]) throws Exception {
           FileReader  reader = new FileReader();
           reader.setDaemon(true);
  @@ -34,14 +46,8 @@
           }
   
           String   symbol = args[0] ;
  -        Service  service = new Service();
  +        Service  service = new Service(new XMLStringProvider(wsdd));
           Call     call    = (Call) service.createCall();
  -
  -        AxisEngine engine = service.getEngine();
  -
  -        // Manually deploy file sender and file transport for this example
  -        SimpleTargetedChain c = new SimpleTargetedChain(new FileSender());
  -        engine.deployTransport("FileTransport", c);
   
           call.setOperationName( new QName("urn:xmltoday-delayed-quotes", "getQuote") );
           call.addParameter( "symbol", XMLType.XSD_STRING, ParameterMode.PARAM_MODE_IN );
  
  
  
  1.3       +1 -1      xml-axis/java/samples/transport/testit.cmd
  
  Index: testit.cmd
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/transport/testit.cmd,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- testit.cmd	17 Oct 2001 21:12:58 -0000	1.2
  +++ testit.cmd	28 Jan 2002 18:22:59 -0000	1.3
  @@ -1,2 +1,2 @@
  -java org.apache.axis.utils.Admin server deploy.xml
  +java org.apache.axis.utils.Admin server deploy.wsdd
   java samples.transport.FileTest XXX
  
  
  
  1.2       +11 -0     xml-axis/java/samples/transport/client_deploy.wsdd
  
  
  
  
  1.2       +14 -0     xml-axis/java/samples/transport/deploy.wsdd
  
  
  
  
  1.13      +11 -4     xml-axis/java/samples/transport/tcp/AdminClient.java
  
  Index: AdminClient.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/transport/tcp/AdminClient.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- AdminClient.java	3 Jan 2002 18:08:28 -0000	1.12
  +++ AdminClient.java	28 Jan 2002 18:22:59 -0000	1.13
  @@ -57,6 +57,9 @@
   
   import org.apache.axis.client.Call;
   import org.apache.axis.SimpleTargetedChain;
  +import org.apache.axis.Constants;
  +import org.apache.axis.configuration.SimpleProvider;
  +import org.apache.axis.configuration.FileProvider;
   
   /**
    * An admin client object, which will work with the TCP transport.
  @@ -67,18 +70,22 @@
    */
   
   public class AdminClient extends org.apache.axis.client.AdminClient {
  -
       public static void main(String args[]) {
   
           Call.addTransportPackage("samples.transport");
           Call.setTransportForProtocol("tcp", TCPTransport.class);
   
  +        SimpleProvider provider =
  +                new SimpleProvider(
  +                        new FileProvider(Constants.CLIENT_CONFIG_FILE));
  +        SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender());
  +        provider.deployTransport("tcp", c);
  +
  +        AdminClient.setDefaultConfiguration(provider);
  +
           try {
               org.apache.axis.client.AdminClient client =
                   new org.apache.axis.client.AdminClient(System.err);
  -
  -            SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender());
  -            client.getCall().getService().getEngine().deployTransport("tcp", c);
   
               System.out.println(client.process(args));
           }
  
  
  
  1.17      +11 -5     xml-axis/java/samples/transport/tcp/GetQuote.java
  
  Index: GetQuote.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/transport/tcp/GetQuote.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- GetQuote.java	11 Jan 2002 21:42:11 -0000	1.16
  +++ GetQuote.java	28 Jan 2002 18:22:59 -0000	1.17
  @@ -57,6 +57,9 @@
   
   import org.apache.axis.AxisFault;
   import org.apache.axis.SimpleTargetedChain;
  +import org.apache.axis.Constants;
  +import org.apache.axis.configuration.SimpleProvider;
  +import org.apache.axis.configuration.FileProvider;
   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
   import org.apache.axis.client.Transport;
  @@ -92,12 +95,15 @@
           
           String namespace = "urn:xmltoday-delayed-quotes";
           symbol = args[0] ;
  -        
  -        Service service = new Service();
  -        Call call = (Call)service.createCall();
  -        
  +
  +        SimpleProvider provider =
  +                new SimpleProvider(
  +                        new FileProvider(Constants.CLIENT_CONFIG_FILE));
           SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender());
  -        service.getEngine().deployTransport("tcp", c);
  +        provider.deployTransport("tcp", c);
  +
  +        Service service = new Service(provider);
  +        Call call = (Call)service.createCall();
           
           call.setTransport(new TCPTransport());
           
  
  
  
  1.15      +19 -11    xml-axis/java/samples/transport/tcp/TCPListener.java
  
  Index: TCPListener.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/transport/tcp/TCPListener.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- TCPListener.java	3 Jan 2002 18:08:28 -0000	1.14
  +++ TCPListener.java	28 Jan 2002 18:22:59 -0000	1.15
  @@ -60,11 +60,17 @@
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
   import org.apache.axis.SimpleTargetedChain;
  -import org.apache.axis.deployment.DeploymentException;
  +import org.apache.axis.ConfigurationException;
  +import org.apache.axis.deployment.wsdd.WSDDConstants;
  +import org.apache.axis.providers.java.MsgProvider;
  +import org.apache.axis.handlers.soap.SOAPService;
  +import org.apache.axis.configuration.SimpleProvider;
  +import org.apache.axis.configuration.XMLStringProvider;
   import org.apache.axis.server.AxisServer;
   import org.apache.axis.utils.Options;
   import org.apache.log4j.Category;
   
  +import javax.xml.rpc.namespace.QName;
   import java.io.BufferedOutputStream;
   import java.io.ByteArrayInputStream;
   import java.io.IOException;
  @@ -99,6 +105,16 @@
       // becomes true when we want to quit
       private boolean done = false;
   
  +    static final String wsdd =
  +            "<deployment xmlns=\"http://xml.apache.org/axis/wsdd/\" " +
  +                  "xmlns:java=\"" + WSDDConstants.WSDD_JAVA + "\">\n" +
  +            " <transport name=\"tcp\" pivot=\"java:samples.transport.tcp.TCPSender\"/>\n" +
  +            " <service name=\"" + WSDDConstants.WSDD_NS + "\" provider=\"java:MSG\">\n" +
  +            "  <parameter name=\"allowedMethods\" value=\"AdminService\"/>\n" +
  +            "  <parameter name=\"className\" value=\"org.apache.axis.utils.Admin\"/>\n" +
  +            " </service>\n" +
  +            "</deployment>";
  +
       public static void main (String args[]) {
           new TCPListener(args).run();
       }
  @@ -152,17 +168,9 @@
           public void run () {
               // get the input stream
               if ( engine == null ) {
  -                engine = new AxisServer();
  +                XMLStringProvider provider = new XMLStringProvider(wsdd);
  +                engine = new AxisServer(provider);
                   engine.init();
  -
  -                SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender());
  -
  -                try {
  -                    engine.deployTransport(transportName, c);
  -                } catch (DeploymentException e) {
  -                    // !!! We're toast.  What to do about it?
  -                    System.exit(-1);
  -                }
               }
   
               /* Place the Request message in the MessagContext object - notice */
  
  
  
  1.2       +11 -0     xml-axis/java/samples/transport/tcp/client_deploy.wsdd
  
  
  
  
  1.2       +5 -0      xml-axis/java/samples/transport/tcp/deploy.wsdd
  
  
  
  
  1.65      +82 -179   xml-axis/java/src/org/apache/axis/AxisEngine.java
  
  Index: AxisEngine.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/AxisEngine.java,v
  retrieving revision 1.64
  retrieving revision 1.65
  diff -u -r1.64 -r1.65
  --- AxisEngine.java	26 Jan 2002 02:50:51 -0000	1.64
  +++ AxisEngine.java	28 Jan 2002 18:22:59 -0000	1.65
  @@ -55,9 +55,7 @@
   
   package org.apache.axis;
   
  -import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.DeploymentException;
  -import org.apache.axis.deployment.wsdd.*;
   import org.apache.axis.encoding.DeserializerFactory;
   import org.apache.axis.encoding.TypeMapping;
   import org.apache.axis.encoding.Serializer;
  @@ -84,6 +82,7 @@
    * handler/service registries and loading properties.
    *
    * @author Glen Daniels (gdaniels@macromedia.com)
  + * @author Glyn Normington (glyn@apache.org)
    */
   public abstract class AxisEngine extends BasicHandler
   {
  @@ -99,11 +98,11 @@
       public static final String PROP_SYNC_CONFIG = "syncConfiguration";
       public static final String PROP_SEND_XSI = "sendXsiTypes";
   
  -    /** Our go-to guy for configuration... */
  -    protected transient ConfigurationProvider configProvider;
  +    // Default admin. password
  +    private static final String DEFAULT_ADMIN_PASSWORD = "admin";
   
  -    protected DeploymentRegistry myRegistry =
  -            new SimpleWsddDeploymentManager();
  +    /** Our go-to guy for configuration... */
  +    protected EngineConfiguration config;
   
       /** Has the user changed the password yet? */
       protected boolean _hasSafePassword = false;
  @@ -119,12 +118,10 @@
        * scope", have it store things in this Session.
        */
       private Session session = new SimpleSession();
  -    
  -    protected WSDDGlobalConfiguration myGlobalConfig = null;
  -    
  +
       /**
        * What actor URIs hold for the entire engine?
  -     */ 
  +     */
       private ArrayList actorURIs = new ArrayList();
   
       /**
  @@ -134,7 +131,7 @@
       private static ThreadLocal currentMessageContext = new ThreadLocal();
   
       /**
  -     * Set the active message context. 
  +     * Set the active message context.
        *
        * @param mc - the new active message context.
        */
  @@ -143,7 +140,7 @@
       }
   
       /**
  -     * Get the active message context. 
  +     * Get the active message context.
        *
        * @return the current active message context
        */
  @@ -152,22 +149,19 @@
       }
   
       /**
  -     * No-arg constructor.
  +     * No-arg constructor. Not used.
        *
        */
  -    public AxisEngine()
  -    {
  -        // !!! Set up default configuration?
  -        init();
  -
  -        if (category.isDebugEnabled()) {
  -            category.debug(JavaUtils.getMessage("exit01", "AxisEngine"));
  -        }
  -    }
  +    private AxisEngine() {}
   
  -    public AxisEngine(ConfigurationProvider configProvider)
  +    /**
  +     * Construct an AxisEngine using the specified engine configuration.
  +     *
  +     * @param config the EngineConfiguration for this engine
  +     */
  +    public AxisEngine(EngineConfiguration config)
       {
  -        this.configProvider = configProvider;
  +        this.config = config;
           init();
       }
   
  @@ -183,11 +177,11 @@
           //getTypeMappingRegistry().setParent(SOAPTypeMappingRegistry.getSingleton());
   
           try {
  -            configProvider.configureEngine(this);
  +            config.configureEngine(this);
           } catch (Exception e) {
               throw new InternalException(e);
           }
  -        
  +
           if (category.isDebugEnabled()) {
               category.debug(JavaUtils.getMessage("exit00", "AxisEngine::init"));
           }
  @@ -201,13 +195,17 @@
               return;
   
           try {
  -            configProvider.writeEngineConfig(this);
  +            config.writeEngineConfig(this);
           } catch (Exception e) {
               System.err.println(JavaUtils.getMessage("saveConfigFail00"));
               e.printStackTrace();
           }
       }
   
  +    public EngineConfiguration getConfig() {
  +        return config;
  +    }
  +
       public boolean hasSafePassword()
       {
           return _hasSafePassword;
  @@ -224,75 +222,68 @@
       {
           this.shouldSaveConfig = shouldSaveConfig;
       }
  -    
  -    /**
  -     * (should throw more specific exceptions)
  -     */ 
  +
       public Handler getHandler(String name) throws AxisFault
       {
  -        return myRegistry.getHandler(new QName(null, name));
  +        try {
  +            return config.getHandler(new QName(null, name));
  +        } catch (ConfigurationException e) {
  +            throw new AxisFault(e);
  +        }
       }
  -    
  -    /**
  -     * (should throw more specific exceptions)
  -     */ 
  +
       public Handler getService(String name) throws AxisFault
       {
  -        return myRegistry.getService(new QName(null, name));
  +        try {
  +            return config.getService(new QName(null, name));
  +        } catch (ConfigurationException e) {
  +            throw new AxisFault(e);
  +        }
       }
  -    
  +
       public Handler getTransport(String name) throws AxisFault
       {
  -        return myRegistry.getTransport(new QName(null, name));
  +        try {
  +            return config.getTransport(new QName(null, name));
  +        } catch (ConfigurationException e) {
  +            throw new AxisFault(e);
  +        }
       }
   
  -    public DeploymentRegistry getDeploymentRegistry()
  -    {
  -        return myRegistry;
  -    }
  -    
       public TypeMappingRegistry getTypeMappingRegistry()
       {
           TypeMappingRegistry tmr = null;
  -        tmr = myRegistry.getTypeMappingRegistry();
  -        
  +        try {
  +            tmr = config.getTypeMappingRegistry();
  +        } catch (ConfigurationException e) {
  +            category.error(e);
  +        }
  +
           return tmr;
       }
  -    
  +
       public Handler getGlobalRequest()
  -        throws Exception
  +        throws ConfigurationException
       {
  -        Handler h = null;
  -        if (myGlobalConfig != null) {
  -            WSDDRequestFlow reqFlow = myGlobalConfig.getRequestFlow();
  -            if (reqFlow != null)
  -                h = reqFlow.getInstance(myRegistry);
  -        }
  -        return h;
  +        return config.getGlobalRequest();
       }
  -    
  +
       public Handler getGlobalResponse()
  -        throws Exception
  +        throws ConfigurationException
       {
  -        Handler h = null;
  -        if (myGlobalConfig != null) {
  -            WSDDResponseFlow respFlow = myGlobalConfig.getResponseFlow();
  -            if (respFlow != null)
  -                h = respFlow.getInstance(myRegistry);
  -        }
  -        return h;
  +        return config.getGlobalResponse();
       }
  -    
  +
       public ArrayList getActorURIs()
       {
           return actorURIs;
       }
  -    
  +
       public void addActorURI(String uri)
       {
           actorURIs.add(uri);
       }
  -    
  +
       public void removeActorURI(String uri)
       {
           actorURIs.remove(uri);
  @@ -304,7 +295,7 @@
        * An AxisEngine may define another specific AxisEngine to be used
        * by newly created Clients.  For instance, a server may
        * create an AxisClient and allow deployment to it.  Then
  -     * the server's services may access the AxisClient's deployed 
  +     * the server's services may access the AxisClient's deployed
        * handlers and transports.
        *********************************************************************
        */
  @@ -322,143 +313,56 @@
   
       /**
        * List of options which should be converted from Strings to Booleans
  -     * automatically.
  -     */ 
  -    static String [] booleanOptions = new String [] {
  +     * automatically. Note that these options are common to all XML
  +     * web services.
  +     */
  +    private static final String [] BOOLEAN_OPTIONS = new String [] {
           PROP_DOMULTIREFS, PROP_SEND_XSI, PROP_XML_DECL
       };
   
       /**
  -     * Deploy a WSDD document to this engine.  This will either add or
  -     * remove Handlers/Services/Transports/etc. depending on whether the
  -     * WSDD is a <deployment> or an <undeployment>
  -     *
  -     * @param doc the WSDD document to deploy.
  -     * @throws DeploymentException if there is a problem.
  +     * Normalise the engine's options.
  +     * <p>
  +     * Convert boolean options from String to Boolean and default
  +     * any ommitted boolean options to TRUE. Default the admin.
  +     * password.
        */
  -    public void deployWSDD(WSDDDocument doc) throws DeploymentException
  -    {
  -        myRegistry.deploy(doc);
  -        myGlobalConfig = myRegistry.getGlobalConfiguration();
  -        if (myGlobalConfig != null)
  -            setOptions(myGlobalConfig.getParametersTable());
  -        
  +    private void normaliseOptions() {
           // Convert boolean options to Booleans so we don't need to use
           // string comparisons.  Default is "true".
  -        
  -        for (int i = 0; i < booleanOptions.length; i++) {
  -            Object val = getOption(booleanOptions[i]);
  +
  +        for (int i = 0; i < BOOLEAN_OPTIONS.length; i++) {
  +            Object val = getOption(BOOLEAN_OPTIONS[i]);
               if (val != null) {
                   if (val instanceof Boolean)
                       continue;
                   if (val instanceof String &&
                       "false".equalsIgnoreCase((String)val)) {
  -                    setOption(booleanOptions[i], Boolean.FALSE);
  +                    setOption(BOOLEAN_OPTIONS[i], Boolean.FALSE);
                       continue;
                   }
               }
               // If it was null or not "false"...
  -            setOption(booleanOptions[i], Boolean.TRUE);
  +            setOption(BOOLEAN_OPTIONS[i], Boolean.TRUE);
           }
  -        
  +
           // Deal with admin password's default value.
           if (getOption(PROP_PASSWORD) == null) {
  -            setOption(PROP_PASSWORD, "admin");
  +            setOption(PROP_PASSWORD, DEFAULT_ADMIN_PASSWORD);
           } else {
               setAdminPassword((String)getOption(PROP_PASSWORD));
           }
       }
  -    
  -   /**
  -     * Deploy a Handler into our handler registry
  -     */
  -    public void deployHandler(String key, Handler handler)
  -        throws DeploymentException
  -    {
  -        handler.setName(key);
  -        WSDDDocument doc = (WSDDDocument)myRegistry.getConfigDocument();
  -        WSDDHandler newHandler = new WSDDHandler();
  -        newHandler.setName(key);
  -        newHandler.setType(new QName(WSDDConstants.WSDD_JAVA,
  -                                     handler.getClass().getName()));
  -        newHandler.setOptionsHashtable(handler.getOptions());
  -        myRegistry.deployHandler(newHandler);
  -    }
   
       /**
  -     * Undeploy (remove) a Handler from the handler registry
  +     * (Re-)load the global options from the registry.
        */
  -    public void undeployHandler(String key)
  -        throws DeploymentException
  -    {
  -        myRegistry.removeDeployedItem(new QName("", key));
  -    }
  +    public void refreshGlobalOptions() throws ConfigurationException {
  +        Hashtable globalOptions = config.getGlobalOptions();
  +        if (globalOptions != null)
  +            setOptions(globalOptions);
   
  -    /**
  -     * Deploy a Service into our service registry
  -     */
  -    public void deployService(String key, SOAPService service)
  -        throws DeploymentException
  -    {
  -        category.info(JavaUtils.getMessage("deployService00", key, this.toString()));
  -        service.setName(key);
  -        service.setEngine(this);
  -        
  -        WSDDService newService = new WSDDService();
  -        newService.setName(key);
  -        newService.setOptionsHashtable(service.getOptions());
  -        newService.setCachedService(service);
  -        
  -        Handler pivot = service.getPivotHandler();
  -        if (pivot == null) {
  -            throw new DeploymentException(JavaUtils.getMessage("noPivot01"));
  -        }
  -        
  -        if (pivot instanceof RPCProvider) {
  -            newService.setProviderQName(WSDDConstants.JAVARPC_PROVIDER);
  -        } else if (pivot instanceof MsgProvider) {
  -            newService.setProviderQName(WSDDConstants.JAVAMSG_PROVIDER);
  -        } else {
  -            newService.setProviderQName(WSDDConstants.HANDLER_PROVIDER);
  -            newService.setParameter("handlerClass", pivot.getClass().getName());
  -        }
  -        myRegistry.deployService(newService);
  -    }
  -
  -    /**
  -     * Undeploy (remove) a Service from the handler registry
  -     */
  -    public void undeployService(String key)
  -        throws DeploymentException
  -    {
  -        myRegistry.undeployService(new QName("", key));
  -    }
  -
  -    /**
  -     * Deploy a Transport
  -     */
  -    public void deployTransport(String key, SimpleTargetedChain transport)
  -        throws DeploymentException
  -    {
  -        transport.setName(key);
  -        WSDDTransport wt = new WSDDTransport();
  -        wt.setName(key);
  -        wt.setOptionsHashtable(transport.getOptions());
  -        // !!! Request flow?
  -        // !!! Response flow?
  -        wt.setPivotQName(new QName(WSDDConstants.WSDD_JAVA,
  -                                   transport.getPivotHandler().getClass().getName()));
  -        
  -        myRegistry.deployTransport(wt);
  -    }
  -
  -    /**
  -     * Undeploy (remove) a client Transport
  -     */
  -    public void undeployTransport(String key)
  -        throws DeploymentException
  -    {
  -        myRegistry.undeployTransport(new QName("", key));
  +        normaliseOptions();
       }
   
       /**
  @@ -469,5 +373,4 @@
       public Session getApplicationSession () {
           return session;
       }
  -
   };
  
  
  
  1.4       +4 -0      xml-axis/java/src/org/apache/axis/ConfigurationProvider.java
  
  Index: ConfigurationProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/ConfigurationProvider.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ConfigurationProvider.java	30 Oct 2001 16:46:34 -0000	1.3
  +++ ConfigurationProvider.java	28 Jan 2002 18:22:59 -0000	1.4
  @@ -54,6 +54,8 @@
    */
   package org.apache.axis;
   
  +import org.apache.axis.deployment.DeploymentRegistry;
  +
   /**
    * ConfigurationProvider is an interface which represents a source of
    * configuration information for an AxisEngine.  Concrete implementations
  @@ -81,4 +83,6 @@
        * @throws Exception if there was a problem
        */
       public void writeEngineConfig(AxisEngine engine) throws Exception;
  +
  +    public DeploymentRegistry getDeploymentRegistry();
   }
  
  
  
  1.2       +98 -0     xml-axis/java/src/org/apache/axis/ConfigurationException.java
  
  
  
  
  1.2       +138 -0    xml-axis/java/src/org/apache/axis/EngineConfiguration.java
  
  
  
  
  1.50      +27 -1     xml-axis/java/src/org/apache/axis/client/AdminClient.java
  
  Index: AdminClient.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/AdminClient.java,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- AdminClient.java	3 Dec 2001 23:53:12 -0000	1.49
  +++ AdminClient.java	28 Jan 2002 18:23:00 -0000	1.50
  @@ -56,6 +56,7 @@
   package org.apache.axis.client ;
   
   import org.apache.axis.AxisFault;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.message.SOAPBodyElement;
   import org.apache.axis.transport.http.HTTPConstants;
   import org.apache.axis.utils.JavaUtils;
  @@ -89,6 +90,21 @@
       static Category category =
               Category.getInstance(AdminClient.class.getName());
   
  +    private static ThreadLocal defaultConfiguration = new ThreadLocal();
  +
  +    /**
  +     * If the user calls this with an EngineConfiguration object, all
  +     * AdminClients on this thread will use that EngineConfiguration
  +     * rather than the default one.  This is primarily to enable the
  +     * deployment of custom transports and handlers.
  +     *
  +     * @param config the EngineConfiguration which should be used
  +     */
  +    public static void setDefaultConfiguration(EngineConfiguration config)
  +    {
  +        defaultConfiguration.set(config);
  +    }
  +
       protected PrintWriter _log;
       protected Call call;
   
  @@ -98,7 +114,17 @@
       public AdminClient()
       {
           try {
  -            Service service = new Service();
  +            // Initialize our Service - allow the user to override the
  +            // default configuration with a thread-local version (see
  +            // setDefaultConfiguration() above)
  +            EngineConfiguration config =
  +                    (EngineConfiguration)defaultConfiguration.get();
  +            Service service;
  +            if (config != null) {
  +                service = new Service(config);
  +            } else {
  +                service = new Service();
  +            }
               call = (Call) service.createCall();
           } catch (JAXRPCException e) {
               category.fatal(JavaUtils.getMessage("couldntCall00"), e);
  
  
  
  1.36      +3 -3      xml-axis/java/src/org/apache/axis/client/AxisClient.java
  
  Index: AxisClient.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/AxisClient.java,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- AxisClient.java	10 Jan 2002 20:00:59 -0000	1.35
  +++ AxisClient.java	28 Jan 2002 18:23:00 -0000	1.36
  @@ -57,7 +57,7 @@
   
   import org.apache.axis.AxisEngine;
   import org.apache.axis.AxisFault;
  -import org.apache.axis.ConfigurationProvider;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.Constants;
   import org.apache.axis.Handler;
   import org.apache.axis.MessageContext;
  @@ -80,9 +80,9 @@
       static Category category =
               Category.getInstance(AxisClient.class.getName());
   
  -    public AxisClient(ConfigurationProvider provider)
  +    public AxisClient(EngineConfiguration config)
       {
  -        super(provider);
  +        super(config);
       }
       
       public AxisClient()
  
  
  
  1.38      +11 -11    xml-axis/java/src/org/apache/axis/client/Service.java
  
  Index: Service.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/Service.java,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- Service.java	28 Jan 2002 16:26:37 -0000	1.37
  +++ Service.java	28 Jan 2002 18:23:00 -0000	1.38
  @@ -58,7 +58,7 @@
   import javax.wsdl.extensions.soap.SOAPAddress;
   import org.apache.axis.AxisEngine;
   import org.apache.axis.Constants;
  -import org.apache.axis.ConfigurationProvider;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.AxisFault;
   import org.apache.axis.configuration.FileProvider;
   import org.apache.axis.utils.JavaUtils;
  @@ -106,7 +106,7 @@
       private javax.wsdl.Service  wsdlService     = null ;
       private boolean             maintainSession = false ;
   
  -    private ConfigurationProvider configProvider =
  +    private EngineConfiguration config =
               new FileProvider(Constants.CLIENT_CONFIG_FILE);
   
       Definition getWSDLDefinition() {
  @@ -119,7 +119,7 @@
   
       protected AxisClient getAxisClient()
       {
  -        return new AxisClient(configProvider);
  +        return new AxisClient(config);
       }
   
       /**
  @@ -133,11 +133,11 @@
   
       /**
        * Constructs a new Service object as above, but also passing in
  -     * the ConfigurationProvider which should be used to set up the
  +     * the EngineConfiguration which should be used to set up the
        * AxisClient.
        */
  -    public Service(ConfigurationProvider configProvider) {
  -        this.configProvider = configProvider;
  +    public Service(EngineConfiguration config) {
  +        this.config = config;
           engine = getAxisClient();
       }
   
  @@ -492,17 +492,17 @@
       }
   
       /**
  -     * Set this Service's configuration provider.
  +     * Set this Service's engine configuration.
        *
        * Note that since all of the constructors create the AxisClient right
        * now, this is basically a no-op.  Putting it in now so that we can make
        * lazy engine instantiation work, and not have to duplicate every single
  -     * Service constructor with a ConfigurationProvider argument.
  +     * Service constructor with a EngineConfiguration argument.
        *
  -     * @param configProvider the ConfigurationProvider we want to use.
  +     * @param config the EngineConfiguration we want to use.
        */
  -    public void setConfigProvider(ConfigurationProvider configProvider) {
  -        this.configProvider = configProvider;
  +    public void setEngineConfiguration(EngineConfiguration config) {
  +        this.config = config;
       }
   
       /**
  
  
  
  1.2       +17 -8     xml-axis/java/src/org/apache/axis/client/ServiceFactory.java
  
  Index: ServiceFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/ServiceFactory.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ServiceFactory.java	7 Dec 2001 23:39:21 -0000	1.1
  +++ ServiceFactory.java	28 Jan 2002 18:23:00 -0000	1.2
  @@ -1,6 +1,6 @@
   package org.apache.axis.client;
   
  -import org.apache.axis.ConfigurationProvider;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.AxisFault;
   import org.apache.axis.Constants;
   import org.apache.axis.configuration.FileProvider;
  @@ -19,8 +19,14 @@
    */ 
   
   public class ServiceFactory {
  -    private static FileProvider defaultConfigProvider =
  +    private static FileProvider defaultEngineConfig =
                              new FileProvider(Constants.CLIENT_CONFIG_FILE);
  +    private static ThreadLocal threadDefaultConfig = new ThreadLocal();
  +
  +    public static void setThreadDefaultConfig(EngineConfiguration config)
  +    {
  +        threadDefaultConfig.set(config);
  +    }
   
       /**
        * Obtain an AxisClient reference, using JNDI if possible, otherwise
  @@ -29,9 +35,9 @@
        * name so we find it next time.
        *
        * @param name the JNDI name we're interested in
  -     * @param configProvider a ConfigurationProvider which should be used
  -     *                       to configure any engine we end up creating, or
  -     *                       null to use the default configuration pattern.
  +     * @param engineConfig a EngineConfiguration which should be used
  +     *                     to configure any engine we end up creating, or
  +     *                     null to use the default configuration pattern.
        */
       static public Service getService(Map environment)
           throws JAXRPCException
  @@ -39,10 +45,13 @@
           Service service = null;
           InitialContext context = null;
   
  -        ConfigurationProvider configProvider =
  -                (ConfigurationProvider)environment.get("configProvider");
  +        EngineConfiguration configProvider =
  +                (EngineConfiguration)environment.get("engineConfig");
  +        if (configProvider == null)
  +            configProvider = (EngineConfiguration)threadDefaultConfig.get();
  +
           if (configProvider == null)
  -            configProvider = defaultConfigProvider;
  +            configProvider = defaultEngineConfig;
   
           // First check to see if JNDI works
           // !!! Might we need to set up context parameters here?
  
  
  
  1.15      +132 -54   xml-axis/java/src/org/apache/axis/configuration/FileProvider.java
  
  Index: FileProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/configuration/FileProvider.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- FileProvider.java	9 Jan 2002 15:10:57 -0000	1.14
  +++ FileProvider.java	28 Jan 2002 18:23:00 -0000	1.15
  @@ -53,21 +53,26 @@
    * <http://www.apache.org/>.
    */
   
  - package org.apache.axis.configuration;
  +package org.apache.axis.configuration;
   
   import org.apache.axis.AxisEngine;
  -import org.apache.axis.ConfigurationProvider;
  +import org.apache.axis.ConfigurationException;
  +import org.apache.axis.EngineConfiguration;
  +import org.apache.axis.Handler;
  +import org.apache.axis.deployment.wsdd.WSDDDeployment;
   import org.apache.axis.deployment.wsdd.WSDDDocument;
  +import org.apache.axis.deployment.wsdd.WSDDGlobalConfiguration;
  +import org.apache.axis.encoding.TypeMappingRegistry;
   import org.apache.axis.utils.Admin;
   import org.apache.axis.utils.XMLUtils;
   import org.w3c.dom.Document;
   
  -import java.io.File;
  +import javax.xml.rpc.namespace.QName;
   import java.io.FileInputStream;
   import java.io.FileOutputStream;
   import java.io.InputStream;
   import java.io.StringWriter;
  -import java.util.Properties;
  +import java.util.Hashtable;
   
   /**
    * A simple ConfigurationProvider that uses the Admin class to read +
  @@ -75,15 +80,16 @@
    *
    * @author Glen Daniels (gdaniels@macromedia.com)
    */
  -public class FileProvider implements ConfigurationProvider
  -{
  +public class FileProvider implements EngineConfiguration {
       protected String sep = System.getProperty("file.separator");
   
  +    protected WSDDDeployment deployment = null;
  +
       String basepath = ".";
       String filename;
  -    
  +
       InputStream myInputStream = null;
  -    
  +
       // Should we search the classpath for the file if we don't find it in
       // the specified location?
       boolean searchClasspath = true;
  @@ -92,8 +98,7 @@
        * Constructor which accesses a file in the current directory of the
        * engine.
        */
  -    public FileProvider(String filename)
  -    {
  +    public FileProvider(String filename) {
           this.filename = filename;
       }
   
  @@ -101,72 +106,145 @@
        * Constructor which accesses a file relative to a specific base
        * path.
        */
  -    public FileProvider(String basepath, String filename)
  -    {
  +    public FileProvider(String basepath, String filename) {
           this.basepath = basepath;
           this.filename = filename;
       }
  -    
  +
       /**
        * Constructor which takes an input stream directly.
        * Note: The configuration will be read-only in this case!
  -     */ 
  -    public FileProvider(InputStream is)
  -    {
  +     */
  +    public FileProvider(InputStream is) {
           myInputStream = is;
       }
  -    
  +
  +    public WSDDDeployment getDeployment() {
  +        return deployment;
  +    }
  +
  +    public void setDeployment(WSDDDeployment deployment) {
  +        this.deployment = deployment;
  +    }
  +
       /**
  -     * Determine whether or not we will look for a "server-config.wsdd" file
  +     * Determine whether or not we will look for a "*-config.wsdd" file
        * on the classpath if we don't find it in the specified location.
  -     * 
  +     *
        * @param searchClasspath true if we should search the classpath
  -     */ 
  -    public void setSearchClasspath(boolean searchClasspath)
  -    {
  +     */
  +    public void setSearchClasspath(boolean searchClasspath) {
           this.searchClasspath = searchClasspath;
       }
   
  -    public void configureEngine(AxisEngine engine) throws Exception
  -    {
  -        if (myInputStream == null) {
  -            try {
  -                myInputStream = new FileInputStream(basepath + sep + filename);
  -            } catch (Exception e) {
  -                if (searchClasspath) {
  -                    myInputStream = engine.
  -                                    getClass().getResourceAsStream(filename);
  +    public void configureEngine(AxisEngine engine) throws ConfigurationException {
  +        try {
  +            if (myInputStream == null) {
  +                try {
  +                    myInputStream = new FileInputStream(basepath + sep + filename);
  +                } catch (Exception e) {
  +                    if (searchClasspath) {
  +                        myInputStream = engine.getClass().getResourceAsStream(filename);
  +                    }
                   }
               }
  -        }
  -        
  -        if (myInputStream == null) {
  -            throw new Exception("No engine configuration file - aborting!");
  -        }
   
  -        WSDDDocument doc = new WSDDDocument(XMLUtils.newDocument(myInputStream));
  -        engine.deployWSDD(doc);
  -        
  -        myInputStream = null;
  +            if (myInputStream == null) {
  +                throw new ConfigurationException("No engine configuration file - aborting!");
  +            }
  +
  +            WSDDDocument doc = new WSDDDocument(XMLUtils.newDocument(myInputStream));
  +            deployment = doc.getDeployment();
  +
  +            deployment.configureEngine(engine);
  +            engine.refreshGlobalOptions();
  +
  +            myInputStream = null;
  +        } catch (Exception e) {
  +            throw new ConfigurationException(e);
  +        }
       }
   
       /**
        * Save the engine configuration.  In case there's a problem, we
        * write it to a string before saving it out to the actual file so
        * we don't screw up the file.
  -     */ 
  -    public void writeEngineConfig(AxisEngine engine) throws Exception
  -    {
  -        // If there's no filename then we must have created this with just
  -        // an InputStream - in which case the config stuff is read-only
  -        if ( filename == null ) return ;
  -
  -        Document doc = Admin.listConfig(engine);
  -        StringWriter writer = new StringWriter();
  -        XMLUtils.DocumentToWriter(doc, writer);
  -        writer.close();
  -        FileOutputStream fos = new FileOutputStream(basepath + sep + filename);
  -        fos.write(writer.getBuffer().toString().getBytes());
  -        fos.close();
  +     */
  +    public void writeEngineConfig(AxisEngine engine) throws ConfigurationException {
  +        try {
  +            // If there's no filename then we must have created this with just
  +            // an InputStream - in which case the config stuff is read-only
  +            if (filename == null) return;
  +
  +            Document doc = Admin.listConfig(engine);
  +            StringWriter writer = new StringWriter();
  +            XMLUtils.DocumentToWriter(doc, writer);
  +            writer.close();
  +            FileOutputStream fos = new FileOutputStream(basepath + sep + filename);
  +            fos.write(writer.getBuffer().toString().getBytes());
  +            fos.close();
  +        } catch (Exception e) {
  +            throw new ConfigurationException(e);
  +        }
  +    }
  +
  +    /**
  +     * retrieve an instance of the named handler
  +     * @param qname XXX
  +     * @return XXX
  +     * @throws ConfigurationException XXX
  +     */
  +    public Handler getHandler(QName qname) throws ConfigurationException {
  +        return deployment.getHandler(qname);
       }
  +
  +    /**
  +     * retrieve an instance of the named service
  +     * @param qname XXX
  +     * @return XXX
  +     * @throws ConfigurationException XXX
  +     */
  +    public Handler getService(QName qname) throws ConfigurationException {
  +        return deployment.getService(qname);
  +    }
  +
  +    /**
  +     * retrieve an instance of the named transport
  +     * @param qname XXX
  +     * @return XXX
  +     * @throws ConfigurationException XXX
  +     */
  +    public Handler getTransport(QName qname) throws ConfigurationException {
  +        return deployment.getTransport(qname);
  +    }
  +
  +    public TypeMappingRegistry getTypeMappingRegistry() throws ConfigurationException {
  +        return deployment.getTypeMappingRegistry();
  +    }
  +
  +    /**
  +     * Returns a global request handler.
  +     */
  +    public Handler getGlobalRequest() throws ConfigurationException {
  +        return deployment.getGlobalRequest();
  +    }
  +
  +    /**
  +     * Returns a global response handler.
  +     */
  +    public Handler getGlobalResponse() throws ConfigurationException {
  +        return deployment.getGlobalResponse();
  +    }
  +
  +    /**
  +     * Returns the global configuration options.
  +     */
  +    public Hashtable getGlobalOptions() throws ConfigurationException {
  +        WSDDGlobalConfiguration globalConfig = deployment.getGlobalConfiguration();
  +        if (globalConfig != null)
  +            return globalConfig.getParametersTable();
  +
  +        return null;
  +    }
  +
   }
  
  
  
  1.2       +43 -4     xml-axis/java/src/org/apache/axis/configuration/NullProvider.java
  
  Index: NullProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/configuration/NullProvider.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- NullProvider.java	31 Oct 2001 23:50:19 -0000	1.1
  +++ NullProvider.java	28 Jan 2002 18:23:00 -0000	1.2
  @@ -56,20 +56,59 @@
   package org.apache.axis.configuration;
   
   import org.apache.axis.AxisEngine;
  -import org.apache.axis.ConfigurationProvider;
  +import org.apache.axis.ConfigurationException;
  +import org.apache.axis.EngineConfiguration;
  +import org.apache.axis.Handler;
  +import org.apache.axis.encoding.TypeMapping;
  +import org.apache.axis.encoding.TypeMappingRegistry;
  +
  +import javax.xml.rpc.namespace.QName;
  +import java.util.Hashtable;
   
   /**
    * A do-nothing ConfigurationProvider
    *
    * @author Glen Daniels (gdaniels@macromedia.com)
    */
  -public class NullProvider implements ConfigurationProvider
  +public class NullProvider implements EngineConfiguration
   {
  -    public void configureEngine(AxisEngine engine) throws Exception
  +    public void configureEngine(AxisEngine engine) throws ConfigurationException
       {
       }
   
  -    public void writeEngineConfig(AxisEngine engine) throws Exception
  +    public void writeEngineConfig(AxisEngine engine) throws ConfigurationException
       {
  +    }
  +
  +    public Hashtable getGlobalOptions() throws ConfigurationException {
  +        return null;
  +    }
  +
  +    public Handler getGlobalResponse() throws ConfigurationException {
  +        return null;
  +    }
  +
  +    public Handler getGlobalRequest() throws ConfigurationException {
  +        return null;
  +    }
  +
  +    public TypeMappingRegistry getTypeMappingRegistry() throws ConfigurationException {
  +        return null;
  +    }
  +
  +    public TypeMapping getTypeMapping(String encodingStyle) throws ConfigurationException {
  +        return null;
  +    }
  +
  +    public Handler getTransport(QName qname) throws ConfigurationException {
  +        return null;
  +    }
  +
  +    public Handler getService(QName qname) throws ConfigurationException {
  +        return null;
  +    }
  +
  +    public Handler getHandler(QName qname) throws ConfigurationException {
  +        return null;
       }
   }
  
  
  
  1.5       +11 -12    xml-axis/java/src/org/apache/axis/configuration/XMLStringProvider.java
  
  Index: XMLStringProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/configuration/XMLStringProvider.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XMLStringProvider.java	30 Oct 2001 16:46:35 -0000	1.4
  +++ XMLStringProvider.java	28 Jan 2002 18:23:00 -0000	1.5
  @@ -56,13 +56,15 @@
    package org.apache.axis.configuration;
   
   import org.apache.axis.AxisEngine;
  -import org.apache.axis.ConfigurationProvider;
  +import org.apache.axis.ConfigurationException;
  +import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.utils.Admin;
   import org.apache.axis.utils.XMLUtils;
   import org.w3c.dom.Document;
   import org.xml.sax.InputSource;
   
   import java.io.StringReader;
  +import java.io.ByteArrayInputStream;
   
   /**
    * A simple ConfigurationProvider that uses the Admin class to
  @@ -72,7 +74,7 @@
    *
    * @author Glen Daniels (gdaniels@macromedia.com)
    */
  -public class XMLStringProvider implements ConfigurationProvider
  +public class XMLStringProvider extends FileProvider
   {
       String xmlConfiguration;
   
  @@ -84,20 +86,17 @@
        */
       public XMLStringProvider(String xmlConfiguration)
       {
  +        super(new ByteArrayInputStream(xmlConfiguration.getBytes()));
           this.xmlConfiguration = xmlConfiguration;
       }
   
  -    public void configureEngine(AxisEngine engine) throws Exception
  -    {
  -        InputSource is = new InputSource(new StringReader(xmlConfiguration));
  -
  -        Document doc = XMLUtils.newDocument(is);
  -
  -        Admin.processEngineConfig(doc, engine);
  +    public void writeEngineConfig(AxisEngine engine)
  +            throws ConfigurationException {
  +        // NOOP
       }
   
  -    public void writeEngineConfig(AxisEngine engine) throws Exception
  -    {
  -        // NOOP
  +    public void configureEngine(AxisEngine engine) throws ConfigurationException {
  +        myInputStream = new ByteArrayInputStream(xmlConfiguration.getBytes());
  +        super.configureEngine(engine);
       }
   }
  
  
  
  1.2       +238 -0    xml-axis/java/src/org/apache/axis/configuration/SimpleProvider.java
  
  
  
  
  1.14      +2 -4      xml-axis/java/src/org/apache/axis/deployment/DeployableItem.java
  
  Index: DeployableItem.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/DeployableItem.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- DeployableItem.java	14 Nov 2001 17:26:18 -0000	1.13
  +++ DeployableItem.java	28 Jan 2002 18:23:00 -0000	1.14
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   
   import javax.xml.rpc.namespace.QName;
   
  @@ -80,9 +81,6 @@
        * @return a Handler which is assumedly the correct type
        * @throws Exception (!!! probably should be more specific)
        */
  -    public Handler getInstance(DeploymentRegistry registry)
  +    public Handler getInstance(EngineConfiguration registry)
           throws Exception;
  -    
  -    public void deployToRegistry(DeploymentRegistry registry)
  -        throws DeploymentException;
   }
  
  
  
  1.8       +2 -5      xml-axis/java/src/org/apache/axis/deployment/DeploymentException.java
  
  Index: DeploymentException.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/DeploymentException.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- DeploymentException.java	3 Dec 2001 22:49:23 -0000	1.7
  +++ DeploymentException.java	28 Jan 2002 18:23:00 -0000	1.8
  @@ -54,17 +54,14 @@
    */
   package org.apache.axis.deployment;
   
  -import org.apache.axis.AxisFault;
  +import org.apache.axis.ConfigurationException;
   
   /**
    *
    */
   public class DeploymentException
  -    extends AxisFault
  +    extends ConfigurationException
   {
  -    public DeploymentException() {
  -    }
  -
       public DeploymentException(Exception e) {
           super(e);
       }
  
  
  
  1.21      +71 -12    xml-axis/java/src/org/apache/axis/deployment/DeploymentRegistry.java
  
  Index: DeploymentRegistry.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/DeploymentRegistry.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- DeploymentRegistry.java	26 Jan 2002 02:50:51 -0000	1.20
  +++ DeploymentRegistry.java	28 Jan 2002 18:23:00 -0000	1.21
  @@ -55,6 +55,8 @@
   package org.apache.axis.deployment;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.SimpleTargetedChain;
  +import org.apache.axis.handlers.soap.SOAPService;
   import org.apache.axis.deployment.wsdd.WSDDGlobalConfiguration;
   import org.apache.axis.deployment.wsdd.WSDDDocument;
   import org.apache.axis.encoding.TypeMapping;
  @@ -72,6 +74,7 @@
   import java.io.OutputStream;
   import java.io.Serializable;
   import java.util.Enumeration;
  +import java.util.Hashtable;
   
   /**
    * The DeploymentRegistry abstract class takes the place of the
  @@ -83,17 +86,6 @@
   public abstract class DeploymentRegistry
       implements Serializable
   {
  -    public abstract DeploymentDocument getConfigDocument()
  -        throws DeploymentException;
  -    
  -    /**
  -     * retrieve the global configuration for the axis engine
  -     * @return XXX
  -     * @throws DeploymentException XXX
  -     */
  -    public abstract WSDDGlobalConfiguration getGlobalConfiguration()
  -        throws DeploymentException;
  -
       /**
        * retrieve an instance of the named handler
        * @param qname XXX
  @@ -209,6 +201,15 @@
           throws DeploymentException;
   
       /**
  +     * deploy the given service
  +     * @param key XXX
  +     * @param service XXX
  +     * @throws DeploymentException XXX
  +     */
  +     public abstract void deployService(String key, SOAPService service)
  +         throws DeploymentException;
  +
  +    /**
        * deploy the given handler
        * @param item XXX
        * @throws DeploymentException XXX
  @@ -217,6 +218,15 @@
           throws DeploymentException;
   
       /**
  +     * Deploy a Handler into the registry.
  +     * @param key XXX
  +     * @param handler XXX
  +     * @throws DeploymentException XXX
  +     */
  +    public abstract void deployHandler(String key, Handler handler)
  +        throws DeploymentException;
  +               
  +    /**
        * deploy the given transport
        * @param item XXX
        * @throws DeploymentException XXX
  @@ -225,6 +235,15 @@
           throws DeploymentException;
   
       /**
  +     * deploy the given transport
  +     * @param key XXX
  +     * @param transport XXX
  +     * @throws DeploymentException XXX
  +     */
  +    public abstract void deployTransport(String key, SimpleTargetedChain transport)
  +        throws DeploymentException;
  +  
  +    /**
        * remove the given item
        * @param qname XXX
        * @throws DeploymentException XXX
  @@ -239,7 +258,15 @@
        */
       public abstract void undeployHandler(QName qname)
           throws DeploymentException;
  -
  + 
  +   /**
  +     * Remove the specified handler.
  +     * @param key XXX
  +     * @throws DeploymentException XXX
  +     */
  +    public abstract void undeployHandler(String key)
  +        throws DeploymentException;
  + 
       /**
        * remove the given service
        * @param qname XXX
  @@ -248,6 +275,14 @@
       public abstract void undeployService(QName qname)
           throws DeploymentException;
   
  +     /**
  +     * remove the given service
  +     * @param key XXX
  +     * @throws DeploymentException XXX
  +     */
  +   public abstract void undeployService(String key)
  +        throws DeploymentException;
  +
       /**
        * remove the given transport
        * @param qname XXX
  @@ -257,6 +292,14 @@
           throws DeploymentException;
   
       /**
  +     * remove the given transport
  +     * @param key XXX
  +     * @throws DeploymentException XXX
  +     */
  +    public abstract void undeployTransport(String key)
  +        throws DeploymentException;
  +
  +    /**
        * set the global configuration for the axis engine
        * @param global XXX
        */
  @@ -383,4 +426,20 @@
        */
       public abstract Enumeration getTransports() throws DeploymentException ;
   
  +    /**
  +     * Returns a global request handler.
  +     */
  +    public abstract Handler getGlobalRequest()
  +        throws DeploymentException;
  +
  +    /**
  +     * Returns a global response handler.
  +     */
  +    public abstract Handler getGlobalResponse()
  +        throws DeploymentException;
  +
  +    /**
  +     * Returns the global configuration options.
  +     */
  +    public abstract Hashtable getGlobalOptions();
   }
  
  
  
  1.17      +2 -1      xml-axis/java/src/org/apache/axis/deployment/v2dd/V2DDDeployableItem.java
  
  Index: V2DDDeployableItem.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/v2dd/V2DDDeployableItem.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- V2DDDeployableItem.java	3 Jan 2002 18:08:28 -0000	1.16
  +++ V2DDDeployableItem.java	28 Jan 2002 18:23:00 -0000	1.17
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.v2dd;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.deployment.DeployableItem;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.DeploymentException;
  @@ -91,7 +92,7 @@
           return qname;
       }
   
  -    public Handler getInstance(DeploymentRegistry registry) {
  +    public Handler getInstance(EngineConfiguration registry) {
           
           // we would create an instance of the SOAP v2.x
           // compatible handler here using the service
  
  
  
  1.5       +0 -1      xml-axis/java/src/org/apache/axis/deployment/v2dd/V2DDException.java
  
  Index: V2DDException.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/v2dd/V2DDException.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- V2DDException.java	30 Oct 2001 14:19:28 -0000	1.4
  +++ V2DDException.java	28 Jan 2002 18:23:00 -0000	1.5
  @@ -57,7 +57,6 @@
   import org.apache.axis.deployment.DeploymentException;
   
   public class V2DDException extends DeploymentException {  
  -    public V2DDException() { super(); }
       public V2DDException(String msg) { super(msg); }
       public V2DDException(Exception e) {
           super(e.getMessage());
  
  
  
  1.4       +13 -0     xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDBeanMapping.java
  
  Index: WSDDBeanMapping.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDBeanMapping.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- WSDDBeanMapping.java	26 Jan 2002 02:50:52 -0000	1.3
  +++ WSDDBeanMapping.java	28 Jan 2002 18:23:00 -0000	1.4
  @@ -103,6 +103,19 @@
           return WSDDConstants.BEANMAPPING_QNAME;
       }
   
  +    public void writeToContext(SerializationContext context) throws IOException {
  +        AttributesImpl attrs = new AttributesImpl();
  +
  +        String typeStr = context.qName2String(typeQName);
  +        attrs.addAttribute("", "languageSpecificType",
  +                           "languageSpecificType", "CDATA", typeStr);
  +
  +        String qnameStr = context.qName2String(qname);
  +        attrs.addAttribute("", "qname", "qname", "CDATA", qnameStr);
  +
  +        context.startElement(WSDDConstants.BEANMAPPING_QNAME, attrs);
  +        context.endElement();
  +    }
   }
   
   
  
  
  
  1.21      +6 -4      xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDChain.java
  
  Index: WSDDChain.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDChain.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- WSDDChain.java	6 Dec 2001 16:55:43 -0000	1.20
  +++ WSDDChain.java	28 Jan 2002 18:23:00 -0000	1.21
  @@ -56,6 +56,8 @@
   
   import org.apache.axis.Chain;
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
  +import org.apache.axis.ConfigurationException;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.encoding.SerializationContext;
   import org.apache.axis.deployment.DeploymentRegistry;
  @@ -160,8 +162,8 @@
        * @return XXX
        * @throws Exception XXX
        */
  -    public Handler makeNewInstance(DeploymentRegistry registry)
  -        throws Exception
  +    public Handler makeNewInstance(EngineConfiguration registry)
  +        throws ConfigurationException
       {
           Chain         c        = new org.apache.axis.SimpleChain();
           
  @@ -198,8 +200,8 @@
           context.endElement();
       }
   
  -    public void deployToRegistry(DeploymentRegistry registry)
  -            throws DeploymentException {
  +    public void deployToRegistry(WSDDDeployment registry)
  +            throws WSDDException {
           if (getQName() != null)
               registry.deployHandler(this);
           
  
  
  
  1.24      +23 -12    xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDeployableItem.java
  
  Index: WSDDDeployableItem.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDeployableItem.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- WSDDDeployableItem.java	16 Dec 2001 18:07:43 -0000	1.23
  +++ WSDDDeployableItem.java	28 Jan 2002 18:23:00 -0000	1.24
  @@ -55,6 +55,8 @@
   package org.apache.axis.deployment.wsdd;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
  +import org.apache.axis.ConfigurationException;
   import org.apache.axis.encoding.SerializationContext;
   import org.apache.axis.deployment.DeployableItem;
   import org.apache.axis.deployment.DeploymentRegistry;
  @@ -127,8 +129,6 @@
               qname = new QName("", name);
           }
           
  -        //!!! default namespace?
  -        
           String typeStr = e.getAttribute("type");
           if (typeStr != null && !typeStr.equals("")) {
               type = XMLUtils.getQNameFromString(typeStr, e);
  @@ -276,7 +276,7 @@
        */
       public void removeParameter(String name)
       {
  -        // !!! FILL IN
  +        parameters.remove(name);
       }
   
       /**
  @@ -285,8 +285,8 @@
        * @return XXX
        * @throws Exception XXX
        */
  -    public final Handler getInstance(DeploymentRegistry registry)
  -        throws Exception
  +    public final Handler getInstance(EngineConfiguration registry)
  +        throws ConfigurationException
       {
           if (scope == SCOPE_SINGLETON) {
               synchronized (this) {
  @@ -307,15 +307,26 @@
        * @return XXX
        * @throws Exception XXX
        */
  -    protected Handler makeNewInstance(DeploymentRegistry registry)
  -        throws Exception
  +    protected Handler makeNewInstance(EngineConfiguration registry)
  +        throws ConfigurationException
       {
  -        Class   c = getJavaClass();
  +        Class   c = null;
           Handler h = null;
  -        
  +
  +        try {
  +            c = getJavaClass();
  +        } catch (ClassNotFoundException e) {
  +            throw new ConfigurationException(e);
  +        }
  +
           if (c != null) {
  -            h = (Handler)createInstance(c);
  -            
  +
  +            try {
  +                h = (Handler)createInstance(c);
  +            } catch (Exception e) {
  +                throw new ConfigurationException(e);
  +            }
  +
               if (h != null) {
                   if ( qname != null )
                     h.setName(qname.getLocalPart()); 
  @@ -335,7 +346,7 @@
        * @throws Exception XXX
        */
       Object createInstance(Class _class)
  -        throws Exception
  +        throws InstantiationException, IllegalAccessException
       {
           return _class.newInstance();
       }
  
  
  
  1.18      +171 -127  xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDeployment.java
  
  Index: WSDDDeployment.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDeployment.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- WSDDDeployment.java	26 Jan 2002 02:50:52 -0000	1.17
  +++ WSDDDeployment.java	28 Jan 2002 18:23:00 -0000	1.18
  @@ -57,7 +57,7 @@
   import org.w3c.dom.Document;
   import org.w3c.dom.Element;
   import org.w3c.dom.NodeList;
  -import org.apache.axis.Constants;
  +import org.apache.axis.*;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.DeploymentException;
   import org.apache.axis.encoding.ser.BaseSerializerFactory;
  @@ -65,8 +65,10 @@
   import org.apache.axis.encoding.*;
   
   import javax.xml.rpc.namespace.QName;
  -import java.util.Vector;
  +import java.util.HashMap;
   import java.util.Iterator;
  +import java.util.Hashtable;
  +import java.util.Vector;
   import java.io.IOException;
   
   
  @@ -74,45 +76,92 @@
    * WSDD deployment element
    *
    * @author James Snell
  + * @author Glen Daniels (gdaniels@apache.org)
    */
   public class WSDDDeployment
       extends WSDDElement
  -    implements WSDDTypeMappingContainer
  +    implements WSDDTypeMappingContainer, EngineConfiguration
   {
  -    private Vector handlers = new Vector();
  -    private Vector services = new Vector();
  -    private Vector transports = new Vector();
  +    private HashMap handlers = new HashMap();
  +    private HashMap services = new HashMap();
  +    private HashMap transports = new HashMap();
       private Vector typeMappings = new Vector();
  -    private WSDDGlobalConfiguration globalConfig = null; 
  -    
  -    public void addHandler(WSDDHandler handler)
  +    private WSDDGlobalConfiguration globalConfig = null;
  +
  +    /**
  +     * Put a WSDDHandler into this deployment, replacing any other
  +     * WSDDHandler which might already be present with the same QName.
  +     *
  +     * @param handler a WSDDHandler to insert in this deployment
  +     */
  +    public void deployHandler(WSDDHandler handler)
       {
  -        handlers.add(handler);
  +        handlers.put(handler.getQName(), handler);
       }
  -    
  -    public void addTransport(WSDDTransport transport)
  +
  +    /**
  +     * Put a WSDDTransport into this deployment, replacing any other
  +     * WSDDTransport which might already be present with the same QName.
  +     *
  +     * @param transport a WSDDTransport to insert in this deployment
  +     */
  +    public void deployTransport(WSDDTransport transport)
       {
  -        transports.add(transport);
  +        transports.put(transport.getQName(), transport);
       }
  -    
  -    public void addService(WSDDService service)
  +
  +    /**
  +     * Put a WSDDHandler into this deployment, replacing any other
  +     * WSDDHandler which might already be present with the same QName.
  +     *
  +     * @param handler a WSDDHandler to insert in this deployment
  +     */
  +    public void deployService(WSDDService service)
  +    {
  +        services.put(service.getQName(), service);
  +    }
  +
  +    /**
  +     * Remove a named handler
  +     * @param qname the QName of the handler to remove
  +     */
  +    public void undeployHandler(QName qname)
       {
  -        services.add(service);
  +        handlers.remove(qname);
       }
  -    
  -    public void addTypeMapping(WSDDTypeMapping typeMapping)
  +
  +    /**
  +     * Remove a named service
  +     * @param qname the QName of the service to remove
  +     */
  +    public void undeployService(QName qname)
  +    {
  +        services.remove(qname);
  +    }
  +
  +    /**
  +     * Remove a named transport
  +     * @param qname the QName of the transport to remove
  +     */
  +    public void undeployTransport(QName qname)
  +    {
  +        transports.remove(qname);
  +    }
  +
  +    public void deployTypeMapping(WSDDTypeMapping typeMapping)
           throws WSDDException
       {
           typeMappings.add(typeMapping);
  +        deployMapping(typeMapping);
       }
   
       /**
        * Default constructor
  -     */ 
  +     */
       public WSDDDeployment()
       {
       }
  -    
  +
       /**
        * Create an element in WSDD that wraps an extant DOM element
        * @param e (Element) XXX
  @@ -122,43 +171,43 @@
           throws WSDDException
       {
           super(e);
  -        
  +
           Element [] elements = getChildElements(e, "handler");
           int i;
   
           for (i = 0; i < elements.length; i++) {
               WSDDHandler handler = new WSDDHandler(elements[i]);
  -            addHandler(handler);
  +            deployHandler(handler);
           }
   
           elements = getChildElements(e, "chain");
           for (i = 0; i < elements.length; i++) {
               WSDDChain chain = new WSDDChain(elements[i]);
  -            addHandler(chain);
  +            chain.deployToRegistry(this);
           }
  -        
  +
           elements = getChildElements(e, "transport");
           for (i = 0; i < elements.length; i++) {
               WSDDTransport transport = new WSDDTransport(elements[i]);
  -            addTransport(transport);
  +            transport.deployToRegistry(this);
           }
  -        
  +
           elements = getChildElements(e, "service");
           for (i = 0; i < elements.length; i++) {
               WSDDService service = new WSDDService(elements[i]);
  -            addService(service);
  +            service.deployToRegistry(this);
           }
  -        
  +
           elements = getChildElements(e, "typeMapping");
           for (i = 0; i < elements.length; i++) {
               WSDDTypeMapping mapping = new WSDDTypeMapping(elements[i]);
  -            addTypeMapping(mapping);
  +            deployTypeMapping(mapping);
           }
   
           elements = getChildElements(e, "beanMapping");
           for (i = 0; i < elements.length; i++) {
               WSDDBeanMapping mapping = new WSDDBeanMapping(elements[i]);
  -            addTypeMapping(mapping);
  +            deployTypeMapping(mapping);
           }
   
           Element el = getChildElement(e, "globalConfiguration");
  @@ -171,52 +220,47 @@
           return WSDDConstants.DEPLOY_QNAME;
       }
   
  -    public void deployToRegistry(DeploymentRegistry registry)
  +    public void deployToRegistry(WSDDDeployment target)
           throws DeploymentException
       {
   
           WSDDGlobalConfiguration global = getGlobalConfiguration();
   
           if (global != null) {
  -            registry.setGlobalConfiguration(global);
  +            target.setGlobalConfiguration(global);
           }
   
  -        WSDDHandler[]     handlers   = getHandlers();
  -        WSDDTransport[]   transports = getTransports();
  -        WSDDService[]     services   = getServices();
  -        WSDDTypeMapping[] mappings   = getTypeMappings();
  -
  -        for (int n = 0; n < handlers.length; n++) {
  -            handlers[n].deployToRegistry(registry);
  +        Iterator i = handlers.values().iterator();
  +        while (i.hasNext()) {
  +            WSDDHandler handler = (WSDDHandler) i.next();
  +            target.deployHandler(handler);
           }
   
  -        for (int n = 0; n < transports.length; n++) {
  -            transports[n].deployToRegistry(registry);
  +        i = transports.values().iterator();
  +        while (i.hasNext()) {
  +            WSDDTransport transport = (WSDDTransport) i.next();
  +            target.deployTransport(transport);
           }
   
  -        for (int n = 0; n < services.length; n++) {
  -            services[n].deployToRegistry(registry);
  +        i = services.values().iterator();
  +        while (i.hasNext()) {
  +            WSDDService service = (WSDDService) i.next();
  +            target.deployService(service);
           }
  -        for (int n = 0; n < mappings.length; n++) {
  -            WSDDTypeMapping     mapping = mappings[n];
  -            deployMappingToRegistry(mapping, registry);
  +
  +        i = typeMappings.iterator();
  +        while (i.hasNext()) {
  +            WSDDTypeMapping mapping = (WSDDTypeMapping) i.next();
  +            target.deployTypeMapping(mapping);
           }
       }
   
  -    public static void deployMappingToRegistry(WSDDTypeMapping mapping,
  -                                               DeploymentRegistry registry)
  -            throws DeploymentException
  +    public void deployMapping(WSDDTypeMapping mapping)
  +            throws WSDDException
       {
           try {
  -            //System.out.println(mapping.getQName() + " " +
  -            //                   mapping.getLanguageSpecificType() + " " +
  -            //                   mapping.getSerializer() + " " + 
  -            //                   mapping.getDeserializer() + " " +
  -            //                   mapping.getEncodingStyle());
  -
  -            TypeMappingRegistry tmr     = 
  -                registry.getTypeMappingRegistry();
  -            
  +            TypeMappingRegistry tmr = getTypeMappingRegistry();
  +
               TypeMapping tm = (TypeMapping) tmr.getTypeMapping(mapping.getEncodingStyle());
               TypeMapping df = (TypeMapping) tmr.getDefaultTypeMapping();
               if (tm == null || tm == df) {
  @@ -228,30 +272,30 @@
                   tm.setSupportedEncodings(new String[] {namespace});
                   tmr.register(tm, new String[] {namespace});
               }
  -            
  +
               SerializerFactory   ser   = null;
               DeserializerFactory deser = null;
  -            
  +
               // Try to construct a serializerFactory by introspecting for the
               // following:
               // public static create(Class javaType, QName xmlType)
               // public <constructor>(Class javaType, QName xmlType)
               // public <constructor>()
  -            // 
  -            // The BaseSerializerFactory createFactory() method is a utility 
  +            //
  +            // The BaseSerializerFactory createFactory() method is a utility
               // that does this for us.
               //System.out.println("start creating sf and df");
               if (mapping.getSerializerName() != null &&
                   !mapping.getSerializerName().equals("")) {
  -                ser = BaseSerializerFactory.createFactory(mapping.getSerializer(), 
  +                ser = BaseSerializerFactory.createFactory(mapping.getSerializer(),
                                                             mapping.getLanguageSpecificType(),
                                                             mapping.getQName());
               }
               //System.out.println("set ser factory");
  -            
  +
               if (mapping.getDeserializerName() != null &&
                   !mapping.getDeserializerName().equals("")) {
  -                deser = BaseDeserializerFactory.createFactory(mapping.getDeserializer(), 
  +                deser = BaseDeserializerFactory.createFactory(mapping.getDeserializer(),
                                                             mapping.getLanguageSpecificType(),
                                                             mapping.getQName());
               }
  @@ -260,7 +304,7 @@
               //System.out.println("registered");
           }
           catch (Exception e) {
  -            throw new DeploymentException(e);
  +            throw new WSDDException(e);
           }
       }
   
  @@ -271,29 +315,29 @@
           context.registerPrefixForURI("java", WSDDConstants.WSDD_JAVA);
           context.startElement(new QName(WSDDConstants.WSDD_NS, "deployment"),
                                null);
  -        
  +
           if (globalConfig != null) {
               globalConfig.writeToContext(context);
           }
  -        
  -        Iterator i = handlers.iterator();
  +
  +        Iterator i = handlers.values().iterator();
           while (i.hasNext()) {
               WSDDHandler handler = (WSDDHandler)i.next();
               handler.writeToContext(context);
           }
  -        
  -        i = services.iterator();
  +
  +        i = services.values().iterator();
           while (i.hasNext()) {
               WSDDService service = (WSDDService)i.next();
               service.writeToContext(context);
           }
  -        
  -        i = transports.iterator();
  +
  +        i = transports.values().iterator();
           while (i.hasNext()) {
               WSDDTransport transport = (WSDDTransport)i.next();
               transport.writeToContext(context);
           }
  -        
  +
           i = typeMappings.iterator();
           while (i.hasNext()) {
               WSDDTypeMapping mapping = (WSDDTypeMapping)i.next();
  @@ -301,10 +345,10 @@
           }
           context.endElement();
       }
  -    
  +
       /**
   	 * Get our global configuration
  -     * 
  +     *
        * @return XXX
        */
       public WSDDGlobalConfiguration getGlobalConfiguration()
  @@ -312,6 +356,10 @@
           return globalConfig;
       }
   
  +    public void setGlobalConfiguration(WSDDGlobalConfiguration globalConfig) {
  +        this.globalConfig = globalConfig;
  +    }
  +
       /**
        *
        * @return XXX
  @@ -325,13 +373,17 @@
   
       /**
        *
  +     * @param name XXX
        * @return XXX
        */
  -    public WSDDHandler[] getHandlers()
  +    public Handler getHandler(QName name) throws ConfigurationException
       {
  -        WSDDHandler[] h = new WSDDHandler[handlers.size()];
  -        handlers.toArray(h);
  -        return h;
  +        WSDDHandler h = (WSDDHandler)handlers.get(name);
  +        if (h != null) {
  +            return h.getInstance(this);
  +        }
  +
  +        return null;
       }
   
       /**
  @@ -339,15 +391,11 @@
        * @param name XXX
        * @return XXX
        */
  -    public WSDDHandler getHandler(QName name)
  +    public Handler getTransport(QName name) throws ConfigurationException
       {
  -
  -        WSDDHandler[] h = getHandlers();
  -
  -        for (int n = 0; n < h.length; n++) {
  -            if (h[n].getQName().equals(name)) {
  -                return h[n];
  -            }
  +        WSDDTransport t = (WSDDTransport)transports.get(name);
  +        if (t != null) {
  +            return t.getInstance(this);
           }
   
           return null;
  @@ -355,61 +403,57 @@
   
       /**
        *
  +     * @param name XXX
        * @return XXX
        */
  -    public WSDDTransport[] getTransports()
  +    public Handler getService(QName name) throws ConfigurationException
       {
  -        WSDDTransport[] t = new WSDDTransport[transports.size()];
  -        transports.toArray(t);
  -        return t;
  +        WSDDService s = (WSDDService)services.get(name);
  +        if (s != null) {
  +            return s.getInstance(this);
  +        }
  +
  +        return null;
       }
   
  -    /**
  -     *
  -     * @param name XXX
  -     * @return XXX
  -     */
  -    public WSDDTransport getTransport(QName name)
  -    {
  +    public void configureEngine(AxisEngine engine)
  +            throws ConfigurationException {
   
  -        WSDDTransport[] t = getTransports();
  +    }
   
  -        for (int n = 0; n < t.length; n++) {
  -            if (t[n].getQName().equals(name)) {
  -                return t[n];
  -            }
  -        }
  +    public void writeEngineConfig(AxisEngine engine) throws ConfigurationException {
  +    }
   
  -        return null;
  +    TypeMappingRegistry tmr = new TypeMappingRegistryImpl();
  +    public TypeMapping getTypeMapping(String encodingStyle) throws ConfigurationException {
  +        return (TypeMapping)tmr.getTypeMapping(encodingStyle);
       }
   
  -    /**
  -     *
  -     * @return XXX
  -     */
  -    public WSDDService[] getServices()
  -    {
  -        WSDDService[] s = new WSDDService[services.size()];
  -        services.toArray(s);
  -        return s;
  +    public TypeMappingRegistry getTypeMappingRegistry() throws ConfigurationException {
  +        return tmr;
       }
   
  -    /**
  -     *
  -     * @param name XXX
  -     * @return XXX
  -     */
  -    public WSDDService getService(QName name)
  -    {
  +    public Handler getGlobalRequest() throws ConfigurationException {
  +        if (globalConfig != null) {
  +            WSDDRequestFlow reqFlow = globalConfig.getRequestFlow();
  +            if (reqFlow != null)
  +                return reqFlow.getInstance(this);
  +        }
   
  -        WSDDService[] s = getServices();
  +        return null;
  +    }
   
  -        for (int n = 0; n < s.length; n++) {
  -            if (s[n].getQName().equals(name)) {
  -                return s[n];
  -            }
  +    public Handler getGlobalResponse() throws ConfigurationException {
  +        if (globalConfig != null) {
  +            WSDDResponseFlow respFlow = globalConfig.getResponseFlow();
  +            if (respFlow != null)
  +                return respFlow.getInstance(this);
           }
   
           return null;
  +    }
  +
  +    public Hashtable getGlobalOptions() throws ConfigurationException {
  +        return globalConfig.getParametersTable();
       }
   }
  
  
  
  1.16      +4 -38     xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDocument.java
  
  Index: WSDDDocument.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDDocument.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- WSDDDocument.java	26 Jan 2002 02:50:52 -0000	1.15
  +++ WSDDDocument.java	28 Jan 2002 18:23:00 -0000	1.16
  @@ -74,7 +74,6 @@
    * represents a WSDD Document (this is the top level object in this object model)
    */
   public class WSDDDocument
  -    implements DeploymentDocument
   {
       private Document doc;
   
  @@ -162,48 +161,15 @@
           deployment = null;
       }
   
  -    /**
  -     *
  -     */
  -    public void deploy(DeploymentRegistry registry)
  -        throws DeploymentException
  -    {
  +    public void deploy(WSDDDeployment registry) throws DeploymentException {
           if (deployment != null) {
               deployment.deployToRegistry(registry);
  -        } else {
  +        }
  +        if (undeployment != null) {
               undeployment.undeployFromRegistry(registry);
           }
       }
   
  -    /**
  -     * Undeploy the contents of this document from the given registry.
  -     */
  -    public void undeploy(DeploymentRegistry registry)
  -            throws DeploymentException {
  -
  -        if (deployment == null)
  -            throw new DeploymentException();
  -
  -        WSDDHandler[]     handlers   = deployment.getHandlers();
  -        WSDDTransport[]   transports = deployment.getTransports();
  -        WSDDService[]     services   = deployment.getServices();
  -        WSDDTypeMapping[] mappings   = deployment.getTypeMappings();
  -        QName qname = null;
  -
  -        for (int n = 0; n < handlers.length; n++) {
  -            qname = handlers[n].getQName();
  -            if (qname != null)
  -                registry.undeployHandler(qname);
  -        }
  -        for (int n = 0; n < transports.length; n++) {
  -            qname = transports[n].getQName();
  -            if (qname != null)
  -                registry.undeployTransport(qname);
  -        }
  -        for (int n = 0; n < services.length; n++) {
  -            qname = services[n].getQName();
  -            if (qname != null)
  -                registry.undeployService(qname);
  -        }
  +    public void undeploy(DeploymentRegistry registry) throws DeploymentException {
       }
   }
  
  
  
  1.7       +0 -9      xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDException.java
  
  Index: WSDDException.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDException.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- WSDDException.java	30 Oct 2001 16:46:36 -0000	1.6
  +++ WSDDException.java	28 Jan 2002 18:23:00 -0000	1.7
  @@ -63,15 +63,6 @@
   public class WSDDException
       extends DeploymentException
   {
  -
  -    /**
  -     *
  -     */
  -    public WSDDException()
  -    {
  -        super();
  -    }
  -
       /**
        *
        * @param msg (String) XXX
  
  
  
  1.20      +3 -2      xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDGlobalConfiguration.java
  
  Index: WSDDGlobalConfiguration.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDGlobalConfiguration.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- WSDDGlobalConfiguration.java	14 Nov 2001 18:03:13 -0000	1.19
  +++ WSDDGlobalConfiguration.java	28 Jan 2002 18:23:00 -0000	1.20
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsdd;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.encoding.SerializationContext;
   import org.apache.axis.deployment.DeploymentRegistry;
  @@ -192,7 +193,7 @@
        * @param registry XXX
        * @return XXX
        */
  -    public Handler makeNewInstance(DeploymentRegistry registry)
  +    public Handler makeNewInstance(EngineConfiguration registry)
       {
           return null;
       }
  @@ -211,7 +212,7 @@
           context.endElement();
       }
   
  -    public void deployToRegistry(DeploymentRegistry registry)
  +    public void deployToRegistry(WSDDDeployment registry)
               throws DeploymentException {
           if (requestFlow != null)
               requestFlow.deployToRegistry(registry);
  
  
  
  1.15      +6 -6      xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDHandler.java
  
  Index: WSDDHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDHandler.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- WSDDHandler.java	5 Dec 2001 18:33:26 -0000	1.14
  +++ WSDDHandler.java	28 Jan 2002 18:23:00 -0000	1.15
  @@ -77,11 +77,11 @@
   {
       /**
        * Default constructor
  -     */ 
  +     */
       public WSDDHandler()
       {
       }
  -    
  +
       /**
        *
        * @param e (Element) XXX
  @@ -110,7 +110,7 @@
               attrs.addAttribute("", "name", "name",
                                  "CDATA", context.qName2String(name));
           }
  -        
  +
           attrs.addAttribute("", "type", "type",
                              "CDATA", context.qName2String(getType()));
           context.startElement(new QName(WSDDConstants.WSDD_NS, "handler"),
  @@ -119,8 +119,8 @@
           context.endElement();
       }
   
  -    public void deployToRegistry(DeploymentRegistry registry)
  -            throws DeploymentException {
  -        registry.deployHandler(this);
  +    public void deployToRegistry(WSDDDeployment deployment)
  +            throws WSDDException {
  +        deployment.deployHandler(this);
       }
   }
  
  
  
  1.16      +3 -2      xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDProvider.java
  
  Index: WSDDProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDProvider.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- WSDDProvider.java	12 Dec 2001 18:57:11 -0000	1.15
  +++ WSDDProvider.java	28 Jan 2002 18:23:00 -0000	1.16
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsdd;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.wsdd.providers.WSDDBsfProvider;
  @@ -136,7 +137,7 @@
        */
       public static Handler getInstance(QName providerType,
                                  WSDDService service,
  -                               DeploymentRegistry registry)
  +                               EngineConfiguration registry)
           throws Exception
       {
           if (providerType == null)
  @@ -158,6 +159,6 @@
        * @throws Exception XXX
        */
       public abstract Handler newProviderInstance(WSDDService service,
  -                                                DeploymentRegistry registry)
  +                                                EngineConfiguration registry)
           throws Exception;
   }
  
  
  
  1.32      +15 -16    xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDService.java
  
  Index: WSDDService.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDService.java,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- WSDDService.java	26 Jan 2002 02:50:52 -0000	1.31
  +++ WSDDService.java	28 Jan 2002 18:23:01 -0000	1.32
  @@ -54,16 +54,13 @@
    */
   package org.apache.axis.deployment.wsdd;
   
  -import org.apache.axis.Handler;
  -import org.apache.axis.TargetedChain;
  -import org.apache.axis.FaultableHandler;
   import org.apache.axis.utils.XMLUtils;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.handlers.soap.SOAPService;
   import org.apache.axis.encoding.ser.BaseSerializerFactory;
   import org.apache.axis.encoding.ser.BaseDeserializerFactory;
   import org.apache.axis.encoding.*;
  -import org.apache.axis.Constants;
  +import org.apache.axis.*;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.DeploymentException;
   import org.w3c.dom.Document;
  @@ -118,13 +115,13 @@
           Element [] typeMappings = getChildElements(e, "typeMapping");
           for (int i = 0; i < typeMappings.length; i++) {
               WSDDTypeMapping typeMapping = new WSDDTypeMapping(typeMappings[i]);
  -            addTypeMapping(typeMapping);
  +            deployTypeMapping(typeMapping);
           }
   
           Element [] beanMappings = getChildElements(e, "beanMapping");
           for (int i = 0; i < beanMappings.length; i++) {
               WSDDBeanMapping beanMapping = new WSDDBeanMapping(beanMappings[i]);
  -            addTypeMapping(beanMapping);
  +            deployTypeMapping(beanMapping);
           }
   
           String typeStr = e.getAttribute("provider");
  @@ -201,8 +198,8 @@
        * @return XXX
        * @throws Exception XXX
        */
  -    public Handler makeNewInstance(DeploymentRegistry registry)
  -        throws Exception
  +    public Handler makeNewInstance(EngineConfiguration registry)
  +        throws ConfigurationException
       {
           if (cachedService != null) {
               return cachedService;
  @@ -218,9 +215,13 @@
           Handler providerHandler = null;
   
           if (providerQName != null) {
  -            providerHandler = WSDDProvider.getInstance(providerQName,
  -                                                       this,
  -                                                       registry);
  +            try {
  +                providerHandler = WSDDProvider.getInstance(providerQName,
  +                                                           this,
  +                                                           registry);
  +            } catch (Exception e) {
  +                throw new ConfigurationException(e);
  +            }
               if (providerHandler == null)
                   throw new WSDDException(
                             JavaUtils.getMessage("couldntConstructProvider00"));
  @@ -240,7 +241,6 @@
               service.setName(getQName().getLocalPart());
           service.setOptions(getParametersTable());
   
  -        registry.getTypeMappingRegistry();
           service.setTypeMappingRegistry(tmr);
   
           WSDDFaultFlow [] faultFlows = getFaultFlows();
  @@ -258,14 +258,13 @@
           return service;
       }
       
  -    public void addTypeMapping(WSDDTypeMapping mapping)
  +    public void deployTypeMapping(WSDDTypeMapping mapping)
           throws WSDDException
       {
           if (tmr == null) {
               tmr = new TypeMappingRegistryImpl();
           }
           try {
  -
               TypeMapping tm = (TypeMapping) tmr.getTypeMapping(mapping.getEncodingStyle());
               TypeMapping df = (TypeMapping) tmr.getDefaultTypeMapping();
               if (tm == null || tm == df) {
  @@ -344,8 +343,8 @@
           cachedService = service;
       }
   
  -    public void deployToRegistry(DeploymentRegistry registry)
  -            throws DeploymentException {
  +    public void deployToRegistry(WSDDDeployment registry)
  +            throws WSDDException {
           registry.deployService(this);
           
           super.deployToRegistry(registry);
  
  
  
  1.5       +15 -5     xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTargetedChain.java
  
  Index: WSDDTargetedChain.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTargetedChain.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- WSDDTargetedChain.java	3 Jan 2002 18:08:28 -0000	1.4
  +++ WSDDTargetedChain.java	28 Jan 2002 18:23:01 -0000	1.5
  @@ -56,6 +56,8 @@
   
   import org.apache.axis.Handler;
   import org.apache.axis.TargetedChain;
  +import org.apache.axis.EngineConfiguration;
  +import org.apache.axis.ConfigurationException;
   import org.apache.axis.encoding.SerializationContext;
   import org.apache.axis.utils.XMLUtils;
   import org.apache.axis.transport.http.HTTPSender;
  @@ -182,8 +184,8 @@
        * @return XXX
        * @throws Exception XXX
        */
  -    public Handler makeNewInstance(DeploymentRegistry registry)
  -        throws Exception
  +    public Handler makeNewInstance(EngineConfiguration registry)
  +        throws ConfigurationException
       {
           Handler reqHandler = null;
   
  @@ -194,7 +196,15 @@
           Handler pivot = null;
           if (pivotQName != null) {
               if (WSDDConstants.WSDD_JAVA.equals(pivotQName.getNamespaceURI())) {
  -                pivot = (Handler)Class.forName(pivotQName.getLocalPart()).newInstance();
  +                try {
  +                    pivot = (Handler)Class.forName(pivotQName.getLocalPart()).newInstance();
  +                } catch (InstantiationException e) {
  +                    throw new ConfigurationException(e);
  +                } catch (IllegalAccessException e) {
  +                    throw new ConfigurationException(e);
  +                } catch (ClassNotFoundException e) {
  +                    throw new ConfigurationException(e);
  +                }
               } else {
                   pivot = registry.getHandler(pivotQName);
               }
  @@ -223,8 +233,8 @@
           
       }
       
  -    public void deployToRegistry(DeploymentRegistry registry)
  -        throws DeploymentException
  +    public void deployToRegistry(WSDDDeployment registry)
  +        throws WSDDException
       {
           // deploy any named subparts
           if (requestFlow != null) {
  
  
  
  1.18      +2 -2      xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTransport.java
  
  Index: WSDDTransport.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTransport.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- WSDDTransport.java	14 Nov 2001 17:26:18 -0000	1.17
  +++ WSDDTransport.java	28 Jan 2002 18:23:01 -0000	1.18
  @@ -121,8 +121,8 @@
           context.endElement();
       }
   
  -    public void deployToRegistry(DeploymentRegistry registry)
  -            throws DeploymentException {
  +    public void deployToRegistry(WSDDDeployment registry)
  +            throws WSDDException {
           registry.deployTransport(this);
           
           super.deployToRegistry(registry);
  
  
  
  1.3       +1 -1      xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTypeMappingContainer.java
  
  Index: WSDDTypeMappingContainer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDTypeMappingContainer.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- WSDDTypeMappingContainer.java	7 Nov 2001 21:04:20 -0000	1.2
  +++ WSDDTypeMappingContainer.java	28 Jan 2002 18:23:01 -0000	1.3
  @@ -62,6 +62,6 @@
    * @author Glen Daniels (gdaniels@macromedia.com)
    */ 
   public interface WSDDTypeMappingContainer {
  -    public void addTypeMapping(WSDDTypeMapping mapping)
  +    public void deployTypeMapping(WSDDTypeMapping mapping)
              throws WSDDException;
   }
  
  
  
  1.3       +2 -2      xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDUndeployment.java
  
  Index: WSDDUndeployment.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/WSDDUndeployment.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- WSDDUndeployment.java	26 Jan 2002 02:50:52 -0000	1.2
  +++ WSDDUndeployment.java	28 Jan 2002 18:23:01 -0000	1.3
  @@ -106,7 +106,7 @@
           services.add(service);
       }
       
  -    public void addTypeMapping(WSDDTypeMapping typeMapping)
  +    public void deployTypeMapping(WSDDTypeMapping typeMapping)
           throws WSDDException
       {
           typeMappings.add(typeMapping);
  @@ -182,7 +182,7 @@
           return WSDDConstants.UNDEPLOY_QNAME;
       }
   
  -    public void undeployFromRegistry(DeploymentRegistry registry)
  +    public void undeployFromRegistry(WSDDDeployment registry)
           throws DeploymentException
       {
           QName qname;
  
  
  
  1.17      +2 -1      xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDBsfProvider.java
  
  Index: WSDDBsfProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDBsfProvider.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- WSDDBsfProvider.java	9 Nov 2001 23:13:01 -0000	1.16
  +++ WSDDBsfProvider.java	28 Jan 2002 18:23:01 -0000	1.17
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsdd.providers;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.encoding.SerializationContext;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.wsdd.WSDDConstants;
  @@ -80,7 +81,7 @@
       extends WSDDProvider
   {
       public Handler newProviderInstance(WSDDService service,
  -                                       DeploymentRegistry registry)
  +                                       EngineConfiguration registry)
           throws Exception
       {
           Handler provider = new org.apache.axis.providers.BSFProvider();
  
  
  
  1.17      +2 -1      xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDComProvider.java
  
  Index: WSDDComProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDComProvider.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- WSDDComProvider.java	9 Nov 2001 23:13:01 -0000	1.16
  +++ WSDDComProvider.java	28 Jan 2002 18:23:01 -0000	1.17
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsdd.providers;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.wsdd.WSDDProvider;
   import org.apache.axis.deployment.wsdd.WSDDService;
  @@ -70,7 +71,7 @@
       extends WSDDProvider
   {
       public Handler newProviderInstance(WSDDService service,
  -                                       DeploymentRegistry registry)
  +                                       EngineConfiguration registry)
           throws Exception
       {
           Class _class = Class.forName("org.apache.axis.handlers.providers.ComProvider");
  
  
  
  1.4       +2 -1      xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDHandlerProvider.java
  
  Index: WSDDHandlerProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDHandlerProvider.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- WSDDHandlerProvider.java	13 Nov 2001 14:56:05 -0000	1.3
  +++ WSDDHandlerProvider.java	28 Jan 2002 18:23:01 -0000	1.4
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsdd.providers;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.deployment.DeploymentException;
   import org.apache.axis.deployment.DeploymentRegistry;
  @@ -72,7 +73,7 @@
       extends WSDDProvider
   {
       public Handler newProviderInstance(WSDDService service,
  -                                       DeploymentRegistry registry)
  +                                       EngineConfiguration registry)
           throws Exception
       {
           String providerClass = service.getParameter("handlerClass");
  
  
  
  1.2       +2 -1      xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaEJBProvider.java
  
  Index: WSDDJavaEJBProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaEJBProvider.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- WSDDJavaEJBProvider.java	13 Nov 2001 21:08:32 -0000	1.1
  +++ WSDDJavaEJBProvider.java	28 Jan 2002 18:23:01 -0000	1.2
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsdd.providers;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.wsdd.WSDDProvider;
   import org.apache.axis.deployment.wsdd.WSDDService;
  @@ -72,7 +73,7 @@
        *
        */
       public Handler newProviderInstance(WSDDService service,
  -                                       DeploymentRegistry registry)
  +                                       EngineConfiguration registry)
           throws Exception
       {
           return new org.apache.axis.providers.java.EJBProvider();
  
  
  
  1.2       +2 -1      xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaMsgProvider.java
  
  Index: WSDDJavaMsgProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaMsgProvider.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- WSDDJavaMsgProvider.java	7 Nov 2001 21:04:21 -0000	1.1
  +++ WSDDJavaMsgProvider.java	28 Jan 2002 18:23:01 -0000	1.2
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsdd.providers;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.wsdd.WSDDProvider;
   import org.apache.axis.deployment.wsdd.WSDDService;
  @@ -70,7 +71,7 @@
        *
        */
       public Handler newProviderInstance(WSDDService service,
  -                                       DeploymentRegistry registry)
  +                                       EngineConfiguration registry)
           throws Exception
       {
           return new org.apache.axis.providers.java.MsgProvider();
  
  
  
  1.2       +2 -1      xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaRPCProvider.java
  
  Index: WSDDJavaRPCProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsdd/providers/WSDDJavaRPCProvider.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- WSDDJavaRPCProvider.java	7 Nov 2001 21:04:21 -0000	1.1
  +++ WSDDJavaRPCProvider.java	28 Jan 2002 18:23:01 -0000	1.2
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsdd.providers;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.wsdd.WSDDProvider;
   import org.apache.axis.deployment.wsdd.WSDDService;
  @@ -70,7 +71,7 @@
        *
        */
       public Handler newProviderInstance(WSDDService service,
  -                                       DeploymentRegistry registry)
  +                                       EngineConfiguration registry)
           throws Exception
       {
           return new org.apache.axis.providers.java.RPCProvider();
  
  
  
  1.9       +2 -1      xml-axis/java/src/org/apache/axis/deployment/wsml/WSMLDeployableItem.java
  
  Index: WSMLDeployableItem.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/deployment/wsml/WSMLDeployableItem.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- WSMLDeployableItem.java	14 Nov 2001 17:26:18 -0000	1.8
  +++ WSMLDeployableItem.java	28 Jan 2002 18:23:02 -0000	1.9
  @@ -55,6 +55,7 @@
   package org.apache.axis.deployment.wsml;
   
   import org.apache.axis.Handler;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.deployment.DeployableItem;
   import org.apache.axis.deployment.DeploymentRegistry;
   import org.apache.axis.deployment.DeploymentException;
  @@ -67,7 +68,7 @@
           return null;
       }
   
  -    public Handler getInstance(org.apache.axis.deployment.DeploymentRegistry registry) {
  +    public Handler getInstance(EngineConfiguration registry) {
           return null;
       }
   
  
  
  
  1.2       +2 -1      xml-axis/java/src/org/apache/axis/encoding/DeserializationContextImpl.java
  
  Index: DeserializationContextImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DeserializationContextImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DeserializationContextImpl.java	26 Jan 2002 02:40:33 -0000	1.1
  +++ DeserializationContextImpl.java	28 Jan 2002 18:23:02 -0000	1.2
  @@ -398,7 +398,8 @@
        */
       public TypeMapping getTypeMapping()
       {
  -        return (TypeMapping) msgContext.getTypeMappingRegistry().getTypeMapping(Constants.URI_CURRENT_SOAP_ENC);
  +        TypeMappingRegistry tmr = msgContext.getTypeMappingRegistry();
  +        return (TypeMapping) tmr.getTypeMapping(Constants.URI_CURRENT_SOAP_ENC);
       }
       
       /**
  
  
  
  1.73      +0 -1      xml-axis/java/src/org/apache/axis/message/MessageElement.java
  
  Index: MessageElement.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/MessageElement.java,v
  retrieving revision 1.72
  retrieving revision 1.73
  diff -u -r1.72 -r1.73
  --- MessageElement.java	26 Jan 2002 02:47:22 -0000	1.72
  +++ MessageElement.java	28 Jan 2002 18:23:02 -0000	1.73
  @@ -57,7 +57,6 @@
   
   import org.apache.axis.Constants;
   import org.apache.axis.MessageContext;
  -import org.apache.axis.configuration.NullProvider;
   import org.apache.axis.encoding.DeserializationContext;
   import org.apache.axis.encoding.Deserializer;
   import org.apache.axis.encoding.SerializationContext;
  
  
  
  1.55      +3 -3      xml-axis/java/src/org/apache/axis/server/AxisServer.java
  
  Index: AxisServer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/server/AxisServer.java,v
  retrieving revision 1.54
  retrieving revision 1.55
  diff -u -r1.54 -r1.55
  --- AxisServer.java	10 Jan 2002 20:01:00 -0000	1.54
  +++ AxisServer.java	28 Jan 2002 18:23:02 -0000	1.55
  @@ -57,7 +57,7 @@
   
   import org.apache.axis.AxisEngine;
   import org.apache.axis.AxisFault;
  -import org.apache.axis.ConfigurationProvider;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.Constants;
   import org.apache.axis.Handler;
   import org.apache.axis.Message;
  @@ -116,9 +116,9 @@
           this(new FileProvider(Constants.SERVER_CONFIG_FILE));
       }
   
  -    public AxisServer(ConfigurationProvider provider)
  +    public AxisServer(EngineConfiguration config)
       {
  -        super(provider);
  +        super(config);
           // Server defaults to persisting configuration
           shouldSaveConfig = true;
       }
  
  
  
  1.4       +0 -1      xml-axis/java/src/org/apache/axis/server/AxisServerFactory.java
  
  Index: AxisServerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/server/AxisServerFactory.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AxisServerFactory.java	7 Dec 2001 19:51:58 -0000	1.3
  +++ AxisServerFactory.java	28 Jan 2002 18:23:02 -0000	1.4
  @@ -1,6 +1,5 @@
   package org.apache.axis.server;
   
  -import org.apache.axis.ConfigurationProvider;
   import org.apache.axis.AxisFault;
   import org.apache.axis.Constants;
   import org.apache.axis.configuration.FileProvider;
  
  
  
  1.3       +14 -14    xml-axis/java/src/org/apache/axis/server/DefaultAxisServerFactory.java
  
  Index: DefaultAxisServerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/server/DefaultAxisServerFactory.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultAxisServerFactory.java	7 Dec 2001 19:54:43 -0000	1.2
  +++ DefaultAxisServerFactory.java	28 Jan 2002 18:23:02 -0000	1.3
  @@ -1,6 +1,6 @@
   package org.apache.axis.server;
   
  -import org.apache.axis.ConfigurationProvider;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.AxisFault;
   import org.apache.axis.Constants;
   import org.apache.axis.configuration.FileProvider;
  @@ -16,11 +16,11 @@
    */ 
   
   public class DefaultAxisServerFactory implements AxisServerFactory {
  -    private static FileProvider defaultConfigProvider =
  +    private static FileProvider defaultEngineConfig =
                              new FileProvider(Constants.SERVER_CONFIG_FILE);
   
       /**
  -     * Get an AxisServer.  This factory looks for a "provider" in the
  +     * Get an AxisServer.  This factory looks for an "engineConfig" in the
        * environment Map, and if one is found, uses that.  Otherwise it
        * uses the default initialization.
        * 
  @@ -28,14 +28,14 @@
       public AxisServer getServer(Map environment)
           throws AxisFault
       {
  -        ConfigurationProvider provider = null;
  +        EngineConfiguration config = null;
           try {
  -            provider = (ConfigurationProvider)environment.get("provider");
  +            config = (EngineConfiguration)environment.get("engineConfig");
           } catch (ClassCastException e) {
               // Just in case, fall through here.
           }
           
  -        return createNewServer(provider);
  +        return createNewServer(config);
       }
   
       /**
  @@ -45,21 +45,21 @@
        *
        * @return a shiny new AxisServer, ready for use.
        */
  -    static private AxisServer createNewServer(ConfigurationProvider provider)
  +    static private AxisServer createNewServer(EngineConfiguration config)
       {
  -        if (provider == null) {
  +        if (config == null) {
               // Default configuration steps...
               //
               // 1. Check for a system property telling us which Configuration
               //    Provider to use.  If we find it, try creating one.
  -            String configClass = System.getProperty("axis.configProviderClass");
  +            String configClass = System.getProperty("axis.engineConfigClass");
               if (configClass != null) {
                   // Got one - so try to make it (which means it had better have
                   // a default constructor - may make it possible later to pass in
                   // some kind of environmental parameters...)
                   try {
                       Class cls = Class.forName(configClass);
  -                    provider = (ConfigurationProvider)cls.newInstance();
  +                    config = (EngineConfiguration)cls.newInstance();
                   } catch (ClassNotFoundException e) {
                       // Fall through???
                   } catch (InstantiationException e) {
  @@ -72,12 +72,12 @@
               // 2. If we couldn't make one above, use the default one.
               // !!! May want to add options here for getting another system
               //     property which is the config file name...
  -            if (provider == null) {
  -                provider = defaultConfigProvider;
  +            if (config == null) {
  +                config = defaultEngineConfig;
               }
           }
   
  -        // 3. Create an AxisServer using the appropriate provider
  -        return new AxisServer(provider);
  +        // 3. Create an AxisServer using the appropriate config
  +        return new AxisServer(config);
       }
   }
  
  
  
  1.3       +20 -20    xml-axis/java/src/org/apache/axis/server/JNDIAxisServerFactory.java
  
  Index: JNDIAxisServerFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/server/JNDIAxisServerFactory.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- JNDIAxisServerFactory.java	7 Dec 2001 20:11:34 -0000	1.2
  +++ JNDIAxisServerFactory.java	28 Jan 2002 18:23:02 -0000	1.3
  @@ -1,6 +1,6 @@
   package org.apache.axis.server;
   
  -import org.apache.axis.ConfigurationProvider;
  +import org.apache.axis.EngineConfiguration;
   import org.apache.axis.AxisFault;
   import org.apache.axis.Constants;
   import org.apache.axis.configuration.FileProvider;
  @@ -20,7 +20,7 @@
    */ 
   
   public class JNDIAxisServerFactory implements AxisServerFactory {
  -    private static FileProvider defaultConfigProvider =
  +    private static FileProvider defaultEngineConfig =
                              new FileProvider(Constants.SERVER_CONFIG_FILE);
   
       /**
  @@ -32,7 +32,7 @@
        * NOTE : REQUIRES SERVLET 2.3 FOR THE GetServletContextName() CALL!
        *
        * @param name the JNDI name we're interested in
  -     * @param configProvider a ConfigurationProvider which should be used
  +     * @param configProvider a EngineConfiguration which should be used
        *                       to configure any engine we end up creating, or
        *                       null to use the default configuration pattern.
        */
  @@ -49,9 +49,9 @@
           } catch (NamingException e) {
           }
           
  -        ConfigurationProvider provider = null;
  +        EngineConfiguration config = null;
           try {
  -            provider = (ConfigurationProvider)environment.get("provider");
  +            config = (EngineConfiguration)environment.get("engineConfig");
           } catch (ClassCastException e) {
               // Just in case, fall through here.
           }
  @@ -81,7 +81,7 @@
                       server = (AxisServer)context.lookup(name);
                   } catch (NamingException e) {
                       // Didn't find it.
  -                    server = createNewServer(provider);
  +                    server = createNewServer(config);
                       try {
                           context.bind(name, server);
                       } catch (NamingException e1) {
  @@ -89,7 +89,7 @@
                       }
                   }
               } else {
  -                server = createNewServer(provider);
  +                server = createNewServer(config);
               }
           }
   
  @@ -98,30 +98,30 @@
   
       /**
        * Do the actual work of creating a new AxisServer, using the passed
  -     * configuration provider, or going through the default configuration
  +     * engine configuration, or going through the default configuration
        * steps if null is passed.
        *
        * @return a shiny new AxisServer, ready for use.
        */
  -    static private AxisServer createNewServer(ConfigurationProvider provider)
  +    static private AxisServer createNewServer(EngineConfiguration config)
       {
  -        // Just use the passed provider if there is one.
  -        if (provider != null) {
  -            return new AxisServer(provider);
  +        // Just use the passed config if there is one.
  +        if (config != null) {
  +            return new AxisServer(config);
           }
   
           // Default configuration steps...
           //
  -        // 1. Check for a system property telling us which Configuration
  -        //    Provider to use.  If we find it, try creating one.
  -        String configClass = System.getProperty("axis.configProviderClass");
  +        // 1. Check for a system property telling us which Engine
  +        //    Configuration to use.  If we find it, try creating one.
  +        String configClass = System.getProperty("axis.engineConfigClass");
           if (configClass != null) {
               // Got one - so try to make it (which means it had better have
               // a default constructor - may make it possible later to pass in
               // some kind of environmental parameters...)
               try {
                   Class cls = Class.forName(configClass);
  -                provider = (ConfigurationProvider)cls.newInstance();
  +                config = (EngineConfiguration)cls.newInstance();
               } catch (ClassNotFoundException e) {
                   // Fall through???
               } catch (InstantiationException e) {
  @@ -134,11 +134,11 @@
           // 2. If we couldn't make one above, use the default one.
           // !!! May want to add options here for getting another system
           //     property which is the config file name...
  -        if (provider == null) {
  -            provider = defaultConfigProvider;
  +        if (config == null) {
  +            config = defaultEngineConfig;
           }
   
  -        // 3. Create an AxisServer using the appropriate provider
  -        return new AxisServer(provider);
  +        // 3. Create an AxisServer using the appropriate config
  +        return new AxisServer(config);
       }
   }
  
  
  
  1.9       +5 -0      xml-axis/java/src/org/apache/axis/server/server-config.wsdd
  
  Index: server-config.wsdd
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/server/server-config.wsdd,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- server-config.wsdd	15 Jan 2002 17:57:03 -0000	1.8
  +++ server-config.wsdd	28 Jan 2002 18:23:02 -0000	1.9
  @@ -21,6 +21,11 @@
     <parameter name="enableRemoteAdmin" value="false"/>
     <parameter name="className" value="org.apache.axis.utils.Admin"/>
    </service>
  + <service name="http://xml.apache.org/axis/wsdd/" provider="java:MSG">
  +  <parameter name="allowedMethods" value="AdminService"/>
  +  <parameter name="enableRemoteAdmin" value="false"/>
  +  <parameter name="className" value="org.apache.axis.utils.Admin"/>
  + </service>
    <service name="JWSProcessor" provider="Handler">
     <parameter name="handlerClass" value="org.apache.axis.handlers.JWSProcessor"/>
    </service>
  
  
  
  1.94      +76 -192   xml-axis/java/src/org/apache/axis/utils/Admin.java
  
  Index: Admin.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/Admin.java,v
  retrieving revision 1.93
  retrieving revision 1.94
  diff -u -r1.93 -r1.94
  --- Admin.java	26 Jan 2002 02:50:52 -0000	1.93
  +++ Admin.java	28 Jan 2002 18:23:02 -0000	1.94
  @@ -55,13 +55,7 @@
   
   package org.apache.axis.utils ;
   
  -import org.apache.axis.AxisEngine;
  -import org.apache.axis.AxisFault;
  -import org.apache.axis.Chain;
  -import org.apache.axis.Constants;
  -import org.apache.axis.Handler;
  -import org.apache.axis.MessageContext;
  -import org.apache.axis.SimpleChain;
  +import org.apache.axis.*;
   import org.apache.axis.providers.java.RPCProvider;
   import org.apache.axis.providers.java.MsgProvider;
   import org.apache.axis.deployment.wsdd.*;
  @@ -146,26 +140,25 @@
           NodeList list = root.getElementsByTagName("beanMappings");
           for (int i = 0; list != null && i < list.getLength(); i++) {
               Element el = (Element)list.item(i);
  -            registerTypes(el, service, true, null);
  +            registerTypes(el, service, true);
           }
   
           list = root.getElementsByTagName("typeMappings");
           for (int i = 0; list != null && i < list.getLength(); i++) {
               Element el = (Element)list.item(i);
  -            registerTypes(el, service, false, null);
  +            registerTypes(el, service, false);
           }
       }
   
       private static void registerTypes(Element root,
                                         WSDDTypeMappingContainer container,
  -                                      boolean isBean,
  -                                      DeploymentRegistry registry)
  +                                      boolean isBean)
           throws Exception
       {
           NodeList list = root.getChildNodes();
           for (int i = 0; (list != null) && (i < list.getLength()); i++) {
               if (!(list.item(i) instanceof Element)) continue;
  -            registerTypeMapping((Element)list.item(i), container, isBean, registry);
  +            registerTypeMapping((Element)list.item(i), container, isBean);
           }
       }
   
  @@ -173,7 +166,7 @@
        * Process a given XML document - needs cleanup.
        */
       public Element[] AdminService(MessageContext msgContext, Vector xml)
  -        throws AxisFault
  +        throws Exception
       {
           category.debug(JavaUtils.getMessage("enter00", "Admin:AdminService") );
           Document doc = process( msgContext, (Element) xml.get(0) );
  @@ -183,132 +176,20 @@
           return( result );
       }
   
  -    /** Process an engine configuration file by deploying appropriate stuff
  -     * into the specified AxisEngine, and then telling it to save itself
  -     * when we're done.
  -     *
  -     * @param doc an XML document containing an Axis engine configuration
  -     * @param engine the AxisEngine in which to deploy
  -     * @exception Exception (should be DeploymentException?)
  -     */
  -    public static void processEngineConfig(Document doc, AxisEngine engine)
  -        throws Exception
  -    {
  -        Element el = doc.getDocumentElement();
  -        String namespace = el.getNamespaceURI();
  -        
  -        // If this is WSDD, process it correctly.
  -        if (namespace != null && namespace.equals(WSDDConstants.WSDD_NS)) {
  -            processWSDD(engine, el);
  -            return;
  -        }
  -        
  -        if (!el.getTagName().equals("engineConfig"))
  -            throw new Exception(
  -                    JavaUtils.getMessage("noEngineConfig00", el.getTagName()));
  -
  -        NodeList nl = el.getElementsByTagName("handlers");
  -        deploy(nl, engine);
  -
  -        nl = el.getElementsByTagName("services");
  -        deploy(nl, engine);
  -
  -        nl = el.getElementsByTagName("transports");
  -        deploy(nl, engine);
  -
  -        nl = el.getElementsByTagName("typeMappings");
  -        deploy(nl, engine);
  -        
  -        //engine.saveConfiguration();
  -    }
  -
  -    private static final int
  -        TYPE_UNKNOWN = 0,
  -        TYPE_HANDLER = 1,
  -        TYPE_CHAIN = 2,
  -        TYPE_SERVICE = 3,
  -        TYPE_TRANSPORT = 4,
  -        TYPE_TYPEMAPPING = 5;
  -    private static final Hashtable typeTable = new Hashtable();
  -    static {
  -        typeTable.put("handler", new Integer(TYPE_HANDLER));
  -        typeTable.put("chain", new Integer(TYPE_CHAIN));
  -        typeTable.put("service", new Integer(TYPE_SERVICE));
  -        typeTable.put("transport", new Integer(TYPE_TRANSPORT));
  -        typeTable.put("typeMapping", new Integer(TYPE_TYPEMAPPING));
  -    }
  -    private static int getType(String tagName) {
  -        Integer i;
  -        if ((i = (Integer)typeTable.get(tagName)) == null)
  -            return TYPE_UNKNOWN;
  -        return i.intValue();
  -    }
  -
  -    /** Deploy a set of individual items.
  -     *
  -     * NOTE: as it stands this doesn't care about the relationship between
  -     * these items and the enclosing tag.  We shouldn't really allow <service>
  -     * deployment underneath the <transports> tag, for instance.  Since this
  -     * is going to mutate some more, this is the simple way to do it for now.
  -     *
  -     * @param nl a DOM NodeList of deployable items.
  -     * @param engine the AxisEngine into which we deploy.
  -     * @exception Exception (should be DeploymentException?)
  -     */
  -    static void deploy(NodeList nl, AxisEngine engine) throws Exception
  -    {
  -        WSDDDocument wd = (WSDDDocument)engine.getDeploymentRegistry().getConfigDocument();
  -        WSDDDeployment dep = wd.getDeployment();
  -        
  -        int lenI = nl.getLength();
  -        for (int i = 0; i < lenI; i++) {
  -            Element el = (Element)nl.item(i);
  -
  -            NodeList children = el.getChildNodes();
  -            int lenJ = children.getLength();
  -            for (int j = 0; j < lenJ; j++) {
  -                if (!(children.item(j) instanceof Element)) continue;
  -
  -                Element item = (Element)children.item(j);
  -
  -                int type;
  -                switch (type = getType(item.getTagName())) {
  -                case TYPE_HANDLER:
  -                    registerHandler(item, engine);
  -                    break;
  -                case TYPE_CHAIN:
  -                    registerChain(item, engine);
  -                    break;
  -                case TYPE_SERVICE:
  -                    registerService(item, engine);
  -                    break;
  -                case TYPE_TRANSPORT:
  -                    registerTransport(item, engine);
  -                    break;
  -                case TYPE_TYPEMAPPING:
  -                    registerTypeMapping(item, dep, false, null);
  -                    break;
  -                case TYPE_UNKNOWN:
  -                    // ignore it
  -                    break;
  -                default:
  -                    throw new UnknownError(JavaUtils.getMessage(
  -                            "never00",
  -                            "org.apache.axis.utils.Admin",
  -                            "type = " + type));
  -                }
  -            }
  -        }
  -    }
  -    
       protected static Document processWSDD(AxisEngine engine, Element root)
  -        throws AxisFault
  +        throws Exception
       {
           Document doc = null ;
   
           WSDDDocument wsddDoc = new WSDDDocument(root);
  -        engine.deployWSDD(wsddDoc);
  -        
  +        EngineConfiguration config = engine.getConfig();
  +        if (config instanceof FileProvider) {
  +            FileProvider wsddProvider = (FileProvider)config;
  +            WSDDDeployment deployment = wsddProvider.getDeployment();
  +            wsddDoc.getDeployment().deployToRegistry(deployment);
  +        }
  +        engine.refreshGlobalOptions();
  +
           engine.saveConfiguration();
           
           doc = XMLUtils.newDocument();
  @@ -327,7 +208,7 @@
        * @return an XML Document indicating the results.
        */
       public Document process(MessageContext msgContext, Element root)
  -        throws AxisFault
  +        throws Exception
       {
           // Check security FIRST.
           
  @@ -433,8 +314,14 @@
                   engine = engine.getClientEngine();
               }
               
  -            WSDDDocument wd = (WSDDDocument)engine.getDeploymentRegistry().getConfigDocument();
  -            WSDDDeployment dep = wd.getDeployment();
  +            WSDDDeployment dep = null;
  +            try {
  +                FileProvider config = (FileProvider)engine.getConfig();
  +                dep = config.getDeployment();
  +            } catch (Exception e) {
  +                // This will catch NPEs and ClassCastExceptions, either of
  +                // which means the engine isn't configurable.
  +            }
   
               NodeList list = root.getChildNodes();
               for ( int loop = 0 ; loop < list.getLength() ; loop++ ) {
  @@ -449,11 +336,11 @@
                   if ( action.equals( "undeploy" ) ) {
                       if ( type.equals("service") ) {
                           category.info( JavaUtils.getMessage("undeploy00", type + ": " + name) );
  -                        engine.undeployService( name );
  +                        dep.undeployService( new QName(null,name) );
                       }
                       else if ( type.equals("handler") || type.equals("chain") ) {
                           category.info( JavaUtils.getMessage("undeploy00", type + ": " + name) );
  -                        engine.undeployHandler( name );
  +                        dep.undeployHandler( new QName(null,name) );
                       }
                       else
                           throw new AxisFault( "Admin.error",
  @@ -463,25 +350,25 @@
                   }
                   
                   if ( type.equals( "handler" ) ) {
  -                    registerHandler(elem, engine);
  +                    registerHandler(elem, dep);
                   }
                   else if ( type.equals( "chain" ) ) {
  -                    registerChain(elem, engine);
  +                    registerChain(elem, dep);
                   }
                   else if ( type.equals( "service" ) ) {
  -                    registerService(elem, engine);
  +                    registerService(elem, dep, engine instanceof AxisServer);
                   }
                   else if (type.equals("transport")) {
  -                    registerTransport(elem, engine);
  +                    registerTransport(elem, dep);
                   }
   
                   // A streamlined means of deploying both a serializer and a deserializer
                   // for a bean at the same time.
                   else if ( type.equals( "beanMappings" ) ) {
  -                    registerTypes(elem, dep, true, engine.getDeploymentRegistry());
  +                    registerTypes(elem, dep, true);
                   }
                   else if (type.equals("typeMappings")) {
  -                    registerTypes(elem, dep, false, engine.getDeploymentRegistry());
  +                    registerTypes(elem, dep, false);
                   } else
                       throw new AxisFault( "Admin.error",
                           JavaUtils.getMessage("unknownType01", action + ": " + type),
  @@ -517,10 +404,16 @@
           SerializationContext context = new SerializationContextImpl(writer, null);
           context.setPretty(true);
           try {
  -            engine.getDeploymentRegistry().writeToContext(context);
  +            FileProvider config = (FileProvider)engine.getConfig();
  +            WSDDDeployment deployment = config.getDeployment();
  +            deployment.writeToContext(context);
           } catch (Exception e) {
  -            e.printStackTrace();
  +            // If the engine config isn't a FileProvider, or we have no
  +            // engine config for some odd reason, we'll end up here.
  +
  +            throw new AxisFault(JavaUtils.getMessage("noEngineWSDD"));
           }
  +
           try {
               writer.close();
               return XMLUtils.newDocument(new InputSource(new StringReader(writer.getBuffer().toString())));
  @@ -535,8 +428,9 @@
        * @param elem the <chain> element
        * @param engine the AxisEngine in which to deploy
        */
  -    public static void registerChain(Element elem, AxisEngine engine)
  -        throws AxisFault
  +    public static void registerChain(Element elem,
  +                                     WSDDDeployment deployment)
  +        throws Exception
       {
           Handler tmpH = null;
           String hName;
  @@ -560,9 +454,6 @@
   
               getOptions( elem, options );
               
  -            WSDDDocument wsddDoc = (WSDDDocument)engine.
  -                    getDeploymentRegistry().getConfigDocument();
  -            
               WSDDChain chain = new WSDDChain();
               chain.setName(name);
               chain.setOptionsHashtable(options);
  @@ -576,7 +467,7 @@
                   chain.addHandler(handler);
               }
   
  -            engine.getDeploymentRegistry().deployHandler(chain);
  +            deployment.deployHandler(chain);
           }
       }
   
  @@ -586,8 +477,10 @@
        * @param elem the <service> element
        * @param engine the AxisEngine in which to deploy
        */
  -    public static void registerService(Element elem, AxisEngine engine)
  -        throws AxisFault
  +    public static void registerService(Element elem,
  +                                       WSDDDeployment deployment,
  +                                       boolean isServer)
  +        throws Exception
       {
           String   name    = elem.getAttribute( "name" );
           String   request   = elem.getAttribute( "request" );
  @@ -632,8 +525,8 @@
           /**
            * Pivots only make sense on the server.
            */ 
  -        if (engine instanceof AxisServer) {
  -            Handler pivotHandler = engine.getHandler(pivot);
  +        if (isServer) {
  +            Handler pivotHandler = deployment.getHandler(new QName("", pivot));
               if (pivotHandler == null)
                   throw new AxisFault(JavaUtils.getMessage("noPivot00", pivot));
               Class pivotClass = pivotHandler.getClass();
  @@ -665,50 +558,45 @@
               throw AxisFault.makeFault(e);
           }
   
  -        engine.getDeploymentRegistry().deployService(serv);
  +        deployment.deployService(serv);
       }
   
       /**
        * Deploy a handler described in XML into an AxisEngine.
        *
        * @param elem the <handler> element
  -     * @param engine the AxisEngine in which to deploy
        */
  -    public static void registerHandler(Element elem, AxisEngine engine)
  -        throws AxisFault
  +    public static void registerHandler(Element elem,
  +                                       WSDDDeployment deployment)
  +        throws Exception
       {
  -        try {
  -            AxisClassLoader   cl     = AxisClassLoader.getClassLoader();
  -            String   name    = elem.getAttribute( "name" );
  -            Handler h = null;
  +        AxisClassLoader   cl     = AxisClassLoader.getClassLoader();
  +        String   name    = elem.getAttribute( "name" );
   
  -            if ( name != null && name.equals("") ) name = null ;
  +        WSDDHandler handler;
   
  -            String   cls   = elem.getAttribute( "class" );
  -            if ( cls != null && cls.equals("") ) cls = null ;
  -            category.info( JavaUtils.getMessage("deployHandler00", name) );
  -
  -            h = engine.getHandler( name );
  -            if ( h == null ) h = (Handler) cl.loadClass(cls).newInstance();
  -            getOptions( elem, h );
  -            engine.deployHandler( name, h );
  -        } catch (ClassNotFoundException e) {
  -              throw AxisFault.makeFault(e);
  -        } catch (InstantiationException e) {
  -              throw AxisFault.makeFault(e);
  -        } catch (IllegalAccessException e) {
  -              throw AxisFault.makeFault(e);
  -        }
  +        if ( name != null && name.equals("") ) name = null ;
  +
  +        String   cls   = elem.getAttribute( "class" );
  +        if ( cls != null && cls.equals("") ) cls = null ;
  +        category.info( JavaUtils.getMessage("deployHandler00", name) );
  +
  +        handler = new WSDDHandler();
  +
  +        handler.setQName(new QName(null, name));
  +        getOptions( elem, handler.getParametersTable() );
  +
  +        deployment.deployHandler(handler);
       }
   
       /**
        * Deploy a transport described in XML into an AxisEngine.
        *
        * @param elem the <transport> element
  -     * @param engine the AxisEngine in which to deploy
        */
  -    public static void registerTransport(Element elem, AxisEngine engine)
  -        throws AxisFault
  +    public static void registerTransport(Element elem,
  +                                         WSDDDeployment deployment)
  +        throws Exception
       {
           String   name    = elem.getAttribute( "name" );
           String   request   = elem.getAttribute( "request" );
  @@ -726,7 +614,6 @@
           Vector reqNames = new Vector();
           Vector respNames = new Vector();
   
  -        WSDDDocument wd = (WSDDDocument)engine.getDeploymentRegistry().getConfigDocument();
           WSDDTransport transport = new WSDDTransport();
           
           transport.setName(name);
  @@ -756,7 +643,7 @@
           getOptions( elem, options );
           transport.setOptionsHashtable(options);
   
  -        engine.getDeploymentRegistry().deployTransport(transport);
  +        deployment.deployTransport(transport);
       }
   
       /**
  @@ -767,8 +654,7 @@
        */
       private static void registerTypeMapping(Element elem,
                                               WSDDTypeMappingContainer container,
  -                                            boolean isBean,
  -                                            DeploymentRegistry registry)
  +                                            boolean isBean)
           throws Exception
       {
           WSDDTypeMapping mapping = new WSDDTypeMapping();
  @@ -838,10 +724,8 @@
                       null, null);
               }
           }
  -        
  -        if (registry != null) {
  -            WSDDDeployment.deployMappingToRegistry(mapping, registry);
  -        }
  +
  +        container.deployTypeMapping(mapping);
       }
   
       public static void main(String args[]) throws Exception {
  
  
  
  1.44      +4 -2      xml-axis/java/src/org/apache/axis/utils/resources.properties
  
  Index: resources.properties
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/resources.properties,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- resources.properties	24 Jan 2002 23:13:00 -0000	1.43
  +++ resources.properties	28 Jan 2002 18:23:02 -0000	1.44
  @@ -290,6 +290,8 @@
   # NOTE:  in noEngineConfig00, do not translate "engineConfig"
   noEngineConfig00=Wanted ''engineConfig'' element, got ''{0}''
   
  +noEngineWSDD=Engine configuration is not present or not WSDD!
  +
   noHandler00=Cannot locate handler:  {0}
   
   # NOTE:  in noHandler01, do not translate "QName"
  @@ -593,7 +595,7 @@
   deserPutValueDebug00=Put of deserialized value= {0} for id= {1}
   j2wemitter00=emitter
   j2wusage00=Usage: {0}
  -j2woptions00=Options: 
  +j2woptions00=Options:
   j2wdetails00=Details:\n   portType    name= <class-of-portType name>\n   binding     name= <--service value>SoapBinding\n   service     name= <--service value>Service\n   port        name= <--service value>\n   address location= <--location value>
   j2wopthelp00=print this message and exit
   j2woptoutput00=output Wsdl filename
  @@ -610,7 +612,7 @@
   j2woptfactory00=name of the Java2WSDLFactory class for extending WSDL generation functions
   j2woptimplClass00=optional class that contains implementation of methods in class-of-portType.  The debug information in the class is used to obtain the method parameter names, which are used to set the WSDL part names.
   j2werror00=Error: {0}
  -j2wmodeerror=Error Unrecognized Mode: {0} Use All, Interface or Implementation. Continuing with All. 
  +j2wmodeerror=Error Unrecognized Mode: {0} Use All, Interface or Implementation. Continuing with All.
   
   optionSkeletonDeploy00=(true or false) Indicate whether to deploy skeleton or implementation class.
   j2wMissingLocation00=The -l <location> option must be specified if the full wsdl or the implementation wsdl is requested.
  
  
  
  1.32      +17 -20    xml-axis/java/test/RPCDispatch/TestRPC.java
  
  Index: TestRPC.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/RPCDispatch/TestRPC.java,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- TestRPC.java	15 Jan 2002 17:57:03 -0000	1.31
  +++ TestRPC.java	28 Jan 2002 18:23:02 -0000	1.32
  @@ -6,6 +6,8 @@
   import org.apache.axis.Handler;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.providers.java.RPCProvider;
  +import org.apache.axis.configuration.SimpleProvider;
   import org.apache.axis.handlers.soap.SOAPService;
   import org.apache.axis.message.RPCElement;
   import org.apache.axis.message.RPCParam;
  @@ -17,6 +19,7 @@
   import org.w3c.dom.Element;
   import org.w3c.dom.Text;
   
  +import javax.xml.rpc.namespace.QName;
   import java.util.Vector;
   
   /**
  @@ -39,20 +42,14 @@
                "</soap:Body>\n" +
           "</soap:Envelope>\n";
   
  -    private AxisServer engine = new AxisServer();
  -    private Handler RPCDispatcher;
  +    private SimpleProvider provider = new SimpleProvider();
  +    private AxisServer engine = new AxisServer(provider);
   
       private String SOAPAction = "urn:reverse";
   
       public TestRPC(String name) {
           super(name);
           engine.init();
  -        try {
  -            RPCDispatcher = engine.getHandler("RPCDispatcher");
  -        } catch (AxisFault fault) {
  -            // ???
  -        }
  -        // Debug.setDebugLevel(5);
       }
   
       /**
  @@ -109,10 +106,10 @@
        */
       public void testReverseString() throws Exception {
           // Register the reverseString service
  -        SOAPService reverse = new SOAPService(RPCDispatcher);
  +        SOAPService reverse = new SOAPService(new RPCProvider());
           reverse.setOption("className", "test.RPCDispatch.Service");
           reverse.setOption("allowedMethods", "reverseString");
  -        engine.deployService(SOAPAction, reverse);
  +        provider.deployService(new QName(null,SOAPAction), reverse);
   
           // invoke the service and verify the result
           assertEquals("Did not reverse the string correctly.", "cba", rpc("reverseString", new Object[] {"abc"}));
  @@ -123,10 +120,10 @@
        */
       public void testReverseData() throws Exception {
           // Register the reverseData service
  -        SOAPService reverse = new SOAPService(RPCDispatcher);
  +        SOAPService reverse = new SOAPService(new RPCProvider());
           reverse.setOption("className", "test.RPCDispatch.Service");
           reverse.setOption("allowedMethods", "reverseData");
  -        engine.deployService(SOAPAction, reverse);
  +        provider.deployService(new QName(null, SOAPAction), reverse);
   
           // invoke the service and verify the result
           Data input    = new Data(5, "abc", 3);
  @@ -139,10 +136,10 @@
        */
       public void testMessageContextImplicit() throws Exception {
           // Register the targetService service
  -        SOAPService tgtSvc = new SOAPService(RPCDispatcher);
  +        SOAPService tgtSvc = new SOAPService(new RPCProvider());
           tgtSvc.setOption("className", "test.RPCDispatch.Service");
           tgtSvc.setOption("allowedMethods", "targetServiceImplicit");
  -        engine.deployService(SOAPAction, tgtSvc);
  +        provider.deployService(new QName(null, SOAPAction), tgtSvc);
   
           // invoke the service and verify the result
           assertEquals("SOAP Action did not equal the targetService.", 
  @@ -154,10 +151,10 @@
        */
       public void testMessageContextExplicit() throws Exception {
           // Register the targetService service
  -        SOAPService tgtSvc = new SOAPService(RPCDispatcher);
  +        SOAPService tgtSvc = new SOAPService(new RPCProvider());
           tgtSvc.setOption("className", "test.RPCDispatch.Service");
           tgtSvc.setOption("allowedMethods", "targetServiceExplicit");
  -        engine.deployService(SOAPAction, tgtSvc);
  +        provider.deployService(new QName(null, SOAPAction), tgtSvc);
   
           // invoke the service and verify the result
           assertEquals("SOAP Action did not equal the targetService.", 
  @@ -169,10 +166,10 @@
        */
       public void testNull() throws Exception {
           // Register the echoInt service
  -        SOAPService echoInt = new SOAPService(RPCDispatcher);
  +        SOAPService echoInt = new SOAPService(new RPCProvider());
           echoInt.setOption("className", "test.RPCDispatch.Service");
           echoInt.setOption("allowedMethods", "echoInt");
  -        engine.deployService(SOAPAction, echoInt);
  +        provider.deployService(new QName(null, SOAPAction), echoInt);
   
           // invoke the service and verify the result
           assertNull("The result was not null as expected.", rpc("echoInt", new Object[] {null}));
  @@ -183,10 +180,10 @@
        */
       public void testSimpleFault() throws Exception {
           // Register the reverseData service
  -        SOAPService simpleFault = new SOAPService(RPCDispatcher);
  +        SOAPService simpleFault = new SOAPService(new RPCProvider());
           simpleFault.setOption("className", "test.RPCDispatch.Service");
           simpleFault.setOption("allowedMethods", "simpleFault");
  -        engine.deployService(SOAPAction, simpleFault);
  +        provider.deployService(new QName(null, SOAPAction), simpleFault);
   
           Object result = rpc("simpleFault", new Object[] {"foobar"});
           assertTrue("Did not get a fault as expected.", 
  
  
  
  1.24      +7 -6      xml-axis/java/test/RPCDispatch/TestSerializedRPC.java
  
  Index: TestSerializedRPC.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/RPCDispatch/TestSerializedRPC.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- TestSerializedRPC.java	26 Jan 2002 02:52:38 -0000	1.23
  +++ TestSerializedRPC.java	28 Jan 2002 18:23:02 -0000	1.24
  @@ -6,6 +6,8 @@
   import org.apache.axis.Handler;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.providers.java.RPCProvider;
  +import org.apache.axis.configuration.SimpleProvider;
   import org.apache.axis.encoding.ser.BeanSerializerFactory;
   import org.apache.axis.encoding.ser.BeanDeserializerFactory;
   import org.apache.axis.encoding.TypeMappingRegistry;
  @@ -41,21 +43,20 @@
                "</soap:Body>\n" +
           "</soap:Envelope>\n";
   
  -    private AxisServer engine = new AxisServer();
  -    private Handler RPCDispatcher;
  +    private SimpleProvider provider = new SimpleProvider();
  +    private AxisServer engine = new AxisServer(provider);
   
       private String SOAPAction = "urn:reverse";
   
       public TestSerializedRPC(String name) throws Exception {
           super(name);
           engine.init();
  -        RPCDispatcher = engine.getHandler("RPCDispatcher");
  -        
  +
           // Register the reverseString service
  -        SOAPService reverse = new SOAPService(RPCDispatcher);
  +        SOAPService reverse = new SOAPService(new RPCProvider());
           reverse.setOption("className", "test.RPCDispatch.Service");
           reverse.setOption("allowedMethods", "*");
  -        engine.deployService(SOAPAction, reverse);
  +        provider.deployService(SOAPAction, reverse);
       }
   
       /**
  
  
  
  1.14      +111 -122  xml-axis/java/test/encoding/TestArrayListConversions.java
  
  Index: TestArrayListConversions.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestArrayListConversions.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- TestArrayListConversions.java	15 Jan 2002 17:57:03 -0000	1.13
  +++ TestArrayListConversions.java	28 Jan 2002 18:23:03 -0000	1.14
  @@ -1,12 +1,13 @@
   package test.encoding;
   
   import junit.framework.TestCase;
  -import org.apache.axis.Handler;
   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
   import org.apache.axis.handlers.soap.SOAPService;
  +import org.apache.axis.providers.java.RPCProvider;
   import org.apache.axis.server.AxisServer;
   import org.apache.axis.transport.local.LocalTransport;
  +import org.apache.axis.configuration.SimpleProvider;
   
   import javax.xml.rpc.namespace.QName;
   import java.util.Iterator;
  @@ -15,125 +16,113 @@
   import java.util.Vector;
   
   public class TestArrayListConversions extends TestCase {
  -  private static final String SERVICE_NAME = "TestArrayConversions";
  -  
  -  private Call call;
  -  
  -  public TestArrayListConversions()
  -  {
  -    super("service");
  -  }
  -  
  -  public TestArrayListConversions(String name)
  -  {
  -    super(name);
  -    init();
  -  }
  -  
  -  private static boolean equals(List list, Object obj)
  -  {
  -    if ((list == null) || (obj == null))
  -      return false;
  -    
  -    if (!obj.getClass().isArray()) return false;
  -    
  -    Object [] array = (Object [])obj;
  -    Iterator iter = list.iterator();
  -
  -    for (int i=0; i < array.length; i++) {
  -      if (!(array[i].equals(iter.next()))) {
  -          return false;
  -      }
  -    }
  -
  -    return true;
  -  }
  -
  -  public void init()
  -  {
  -    try {
  -      Service ss = new Service();
  -      AxisServer server = new AxisServer();
  -      Handler disp = server.getHandler("RPCDispatcher");    
  -      SOAPService service = new SOAPService(disp);
  -      service.setOption("className", "test.encoding.TestArrayListConversions");
  -      service.setOption("allowedMethods", "*");
  -      
  -      server.deployService(SERVICE_NAME, service);
  -      
  -      call = (Call) ss.createCall();
  -      call.setTransport( new LocalTransport(server) );
  -    }
  -    catch( Exception exp ) {
  -      exp.printStackTrace();
  -    }
  -
  -  }
  -  
  -  public void testVectorConversion() throws Exception
  -  {
  -    Vector v = new Vector();
  -    v.addElement("Hi there!");
  -    v.addElement("This'll be a SOAP Array and then a LinkedList!");
  -    call.setOperationName( new QName(SERVICE_NAME, "echoLinkedList") );
  -    Object ret = call.invoke( new Object[] { v } );
  -    if (!equals(v, ret)) assertEquals("Echo LinkedList mangled the result.  Result is underneath.\n" + ret, v, ret);
  -  }
  -  
  -  public void testLinkedListConversion() throws Exception
  -  {
  -    LinkedList l = new LinkedList();
  -    l.add("Linked list item #1");
  -    l.add("Second linked list item");
  -    l.add("This will be a SOAP Array then a Vector!");
  -
  -    call.setOperationName( new QName(SERVICE_NAME, "echoVector") );
  -    Object ret = call.invoke( new Object[] { l } );
  -    if (!equals(l, ret)) assertEquals("Echo Vector mangled the result.  Result is underneath.\n" + ret, l, ret);
  -  }
  -      
  -  public void testArrayConversion() throws Exception
  -  {
  -    Vector v = new Vector();
  -    v.addElement("Hi there!");
  -    v.addElement("This'll be a SOAP Array");
  -
  -    call.setOperationName( new QName(SERVICE_NAME, "echoArray") );
  -    Object ret = call.invoke( new Object[] { v } );
  -    if (!equals(v, ret)) assertEquals("Echo Array mangled the result.  Result is underneath\n" + ret, v, ret);
  -  }
  -
  -  public static void main(String [] args)
  -  {
  -    TestArrayListConversions tester =
  -              new TestArrayListConversions("TestArrayListConversions");
  -    try {
  -      tester.testArrayConversion();
  -      tester.testLinkedListConversion();
  -      tester.testVectorConversion();
  -    } catch (Exception e) {
  -      e.printStackTrace();
  -    }
  -  }
  -  
  -  /****************************************************************
  -   * 
  -   * Service methods - this class is also deployed as an Axis RPC
  -   * service for convenience.  These guys just echo various things.
  -   * 
  -   */
  -  public LinkedList echoLinkedList(LinkedList l)
  -  {
  -    return l;
  -  }
  -  
  -  public Vector echoVector(Vector v)
  -  {
  -    return v;
  -  }
  -  
  -  public Object [] echoArray(Object [] array)
  -  {
  -    return array;
  -  }
  +    private static final String SERVICE_NAME = "TestArrayConversions";
  +
  +    private Call call;
  +
  +    public TestArrayListConversions() {
  +        super("service");
  +    }
  +
  +    public TestArrayListConversions(String name) {
  +        super(name);
  +        init();
  +    }
  +
  +    private static boolean equals(List list, Object obj) {
  +        if ((list == null) || (obj == null))
  +            return false;
  +
  +        if (!obj.getClass().isArray()) return false;
  +
  +        Object[] array = (Object[]) obj;
  +        Iterator iter = list.iterator();
  +
  +        for (int i = 0; i < array.length; i++) {
  +            if (!(array[i].equals(iter.next()))) {
  +                return false;
  +            }
  +        }
  +
  +        return true;
  +    }
  +
  +    public void init() {
  +        try {
  +            Service ss = new Service();
  +
  +            SimpleProvider provider = new SimpleProvider();
  +            AxisServer server = new AxisServer(provider);
  +            SOAPService service = new SOAPService(new RPCProvider());
  +            service.setOption("className", "test.encoding.TestArrayListConversions");
  +            service.setOption("allowedMethods", "*");
  +
  +            provider.deployService(SERVICE_NAME, service);
  +
  +            call = (Call) ss.createCall();
  +            call.setTransport(new LocalTransport(server));
  +        } catch (Exception exp) {
  +            exp.printStackTrace();
  +        }
  +
  +    }
  +
  +    public void testVectorConversion() throws Exception {
  +        Vector v = new Vector();
  +        v.addElement("Hi there!");
  +        v.addElement("This'll be a SOAP Array and then a LinkedList!");
  +        call.setOperationName(new QName(SERVICE_NAME, "echoLinkedList"));
  +        Object ret = call.invoke(new Object[]{v});
  +        if (!equals(v, ret)) assertEquals("Echo LinkedList mangled the result.  Result is underneath.\n" + ret, v, ret);
  +    }
  +
  +    public void testLinkedListConversion() throws Exception {
  +        LinkedList l = new LinkedList();
  +        l.add("Linked list item #1");
  +        l.add("Second linked list item");
  +        l.add("This will be a SOAP Array then a Vector!");
  +
  +        call.setOperationName(new QName(SERVICE_NAME, "echoVector"));
  +        Object ret = call.invoke(new Object[]{l});
  +        if (!equals(l, ret)) assertEquals("Echo Vector mangled the result.  Result is underneath.\n" + ret, l, ret);
  +    }
  +
  +    public void testArrayConversion() throws Exception {
  +        Vector v = new Vector();
  +        v.addElement("Hi there!");
  +        v.addElement("This'll be a SOAP Array");
  +
  +        call.setOperationName(new QName(SERVICE_NAME, "echoArray"));
  +        Object ret = call.invoke(new Object[]{v});
  +        if (!equals(v, ret)) assertEquals("Echo Array mangled the result.  Result is underneath\n" + ret, v, ret);
  +    }
  +
  +    public static void main(String[] args) {
  +        TestArrayListConversions tester = new TestArrayListConversions("TestArrayListConversions");
  +        try {
  +            tester.testArrayConversion();
  +            tester.testLinkedListConversion();
  +            tester.testVectorConversion();
  +        } catch (Exception e) {
  +            e.printStackTrace();
  +        }
  +    }
  +
  +    /****************************************************************
  +     *
  +     * Service methods - this class is also deployed as an Axis RPC
  +     * service for convenience.  These guys just echo various things.
  +     *
  +     */
  +    public LinkedList echoLinkedList(LinkedList l) {
  +        return l;
  +    }
  +
  +    public Vector echoVector(Vector v) {
  +        return v;
  +    }
  +
  +    public Object[] echoArray(Object[] array) {
  +        return array;
  +    }
   }
  
  
  
  1.8       +31 -32    xml-axis/java/test/encoding/TestBody.java
  
  Index: TestBody.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestBody.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- TestBody.java	2 Nov 2001 03:07:42 -0000	1.7
  +++ TestBody.java	28 Jan 2002 18:23:03 -0000	1.8
  @@ -5,11 +5,15 @@
   import org.apache.axis.Handler;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.providers.java.RPCProvider;
  +import org.apache.axis.configuration.SimpleProvider;
   import org.apache.axis.handlers.soap.SOAPService;
   import org.apache.axis.message.RPCElement;
   import org.apache.axis.message.SOAPEnvelope;
   import org.apache.axis.server.AxisServer;
   
  +import javax.xml.rpc.namespace.QName;
  +
   /**
    * Verify that deserialization actually can cause the soap service
    * to be set...
  @@ -22,40 +26,35 @@
   
       private String namespace = "http://xml.apache.org/axis/TestBody";
   
  -    private String request =
  -        "<?xml version=\"1.0\"?>\n" +
  -        "<soap:Envelope " +
  -          "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
  -          "xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">" +
  -          "<soap:Body>\n" +
  -            "<method xmlns=\"" + namespace + "\">\n" +
  -              "<arg>5</arg>" +
  -            "</method>\n" +
  -          "</soap:Body>\n" +
  -        "</soap:Envelope>\n";
  +    private String request = "<?xml version=\"1.0\"?>\n" + "<soap:Envelope " + "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" " + "xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">" + "<soap:Body>\n" + "<method xmlns=\"" + namespace + "\">\n" + "<arg>5</arg>" + "</method>\n" + "</soap:Body>\n" + "</soap:Envelope>\n";
   
       public void testBodyNamespace() throws Exception {
  +        SimpleProvider provider = new SimpleProvider();
  +
  +        // register the service with the engine
  +        SOAPService target = new SOAPService(new RPCProvider());
  +        provider.deployService(new QName(null,namespace), target);
  +
  +        // setup
  +        AxisEngine engine = new AxisServer(provider);
  +        engine.init();
  +
  +        // create a message in context
  +        MessageContext msgContext = new MessageContext(engine);
  +        Message message = new Message(request);
  +        message.setMessageContext(msgContext);
  +
  +        // ensure that the message is parsed
  +        SOAPEnvelope envelope = message.getSOAPPart().getAsSOAPEnvelope();
  +        RPCElement body = (RPCElement) envelope.getFirstBody();
  +
  +        // verify the service is set
  +        assertEquals("Namespace does not equal the message context target service.", namespace, msgContext.getTargetService());
  +        assertEquals("The target is not the same as the message context service handler", target, msgContext.getServiceHandler());
  +    }
   
  -       // setup
  -       AxisEngine engine = new AxisServer();
  -       engine.init();
  -       
  -       // register the service with the engine
  -       Handler RPCDispatcher = engine.getHandler("RPCDispatcher");
  -       SOAPService target = new SOAPService(RPCDispatcher);
  -       engine.deployService(namespace, target);
  -
  -       // create a message in context
  -       MessageContext msgContext = new MessageContext(engine);
  -       Message message = new Message(request);
  -       message.setMessageContext(msgContext);
  -
  -       // ensure that the message is parsed
  -       SOAPEnvelope envelope = message.getSOAPPart().getAsSOAPEnvelope();
  -       RPCElement body = (RPCElement)envelope.getFirstBody();
  -
  -       // verify the service is set
  -       assertEquals("Namespace does not equal the message context target service.", namespace, msgContext.getTargetService());
  -       assertEquals("The target is not the same as the message context service handler", target, msgContext.getServiceHandler());
  +    public static void main(String[] args) throws Exception {
  +        TestBody tester = new TestBody("test");
  +        tester.testBodyNamespace();
       }
   }
  
  
  
  1.22      +1 -1      xml-axis/java/test/encoding/TestDeser.java
  
  Index: TestDeser.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestDeser.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- TestDeser.java	29 Nov 2001 11:11:31 -0000	1.21
  +++ TestDeser.java	28 Jan 2002 18:23:03 -0000	1.22
  @@ -274,6 +274,6 @@
       public static void main(String [] args) throws Exception
       {
           TestDeser tester = new TestDeser("test");
  -        tester.testUntyped();
  +        tester.testString();
       }
   }
  
  
  
  1.11      +5 -7      xml-axis/java/test/encoding/TestXsiType.java
  
  Index: TestXsiType.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestXsiType.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- TestXsiType.java	26 Jan 2002 02:52:38 -0000	1.10
  +++ TestXsiType.java	28 Jan 2002 18:23:03 -0000	1.11
  @@ -3,6 +3,7 @@
   import junit.framework.TestCase;
   import org.apache.axis.MessageContext;
   import org.apache.axis.AxisEngine;
  +import org.apache.axis.configuration.SimpleProvider;
   import org.apache.axis.transport.local.LocalTransport;
   import org.apache.axis.providers.java.RPCProvider;
   import org.apache.axis.handlers.soap.SOAPService;
  @@ -27,7 +28,8 @@
   
       private String header;
       private String footer;
  -    private AxisServer server = new AxisServer();
  +    private SimpleProvider provider = new SimpleProvider();
  +    private AxisServer server = new AxisServer(provider);
       
       public TestXsiType()
       {
  @@ -44,7 +46,7 @@
       public void testNoXsiTypes()
          throws Exception
       {
  -        MessageContext msgContext = new MessageContext(new AxisServer());
  +        MessageContext msgContext = new MessageContext(server);
   
           // Don't serialize xsi:type attributes
           msgContext.setProperty(Call.SEND_TYPE_ATTR, "false" );
  @@ -75,16 +77,12 @@
        */ 
       public void testTypelessDeserialization() throws Exception
       {
  -        // Set up a server to NOT send XSI types, and deploy
  -        // this class as a service there.
  -        
  -        AxisServer server = new AxisServer();
           server.setOption(AxisEngine.PROP_SEND_XSI, Boolean.FALSE);
           
           SOAPService service = new SOAPService(new RPCProvider());
           service.setOption("className", "test.encoding.TestXsiType");
           service.setOption("allowedMethods", "*");
  -        server.deployService("TestService", service);
  +        provider.deployService("TestService", service);
           
           // Call that same server, accessing a method we know returns
           // a double.  We should figure this out and deserialize it
  
  
  
  1.20      +11 -5     xml-axis/java/test/functional/TestTCPTransportSample.java
  
  Index: TestTCPTransportSample.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/functional/TestTCPTransportSample.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- TestTCPTransportSample.java	11 Jan 2002 21:42:11 -0000	1.19
  +++ TestTCPTransportSample.java	28 Jan 2002 18:23:03 -0000	1.20
  @@ -59,6 +59,9 @@
   import junit.framework.TestCase;
   import org.apache.axis.AxisFault;
   import org.apache.axis.SimpleTargetedChain;
  +import org.apache.axis.Constants;
  +import org.apache.axis.configuration.SimpleProvider;
  +import org.apache.axis.configuration.FileProvider;
   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
   import org.apache.axis.encoding.XMLType;
  @@ -83,7 +86,7 @@
       }
   
       public void doTestDeploy () throws Exception {
  -        String[] args = { "-ltcp://localhost:8088", "samples/transport/deploy.xml" };
  +        String[] args = { "-ltcp://localhost:8088", "samples/transport/deploy.wsdd" };
           AdminClient.main(args);
       }
   
  @@ -99,11 +102,14 @@
               tester.getQuote(new String [] { "-ltcp://localhost:8088", "XXX" });
               String   symbol = "XXX"; // args[0] ;
   
  -            Service  service = new Service();
  -            Call     call    = (Call) service.createCall();
  -
  +            SimpleProvider provider =
  +                    new SimpleProvider(
  +                            new FileProvider(Constants.CLIENT_CONFIG_FILE));
               SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender());
  -            service.getEngine().deployTransport("tcp", c);
  +            provider.deployTransport("tcp", c);
  +
  +            Service  service = new Service(provider);
  +            Call     call    = (Call) service.createCall();
   
               call.setTargetEndpointAddress( new URL("tcp://localhost:8088") );
               call.setOperationName( new QName("urn:xmltoday-delayed-quotes", "getQuote") );
  
  
  
  1.18      +1 -1      xml-axis/java/test/functional/TestTransportSample.java
  
  Index: TestTransportSample.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/functional/TestTransportSample.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- TestTransportSample.java	31 Oct 2001 23:50:22 -0000	1.17
  +++ TestTransportSample.java	28 Jan 2002 18:23:03 -0000	1.18
  @@ -72,7 +72,7 @@
       }
       
       public void doTestDeploy () throws Exception {
  -        String[] args = { "-llocal:", "samples/transport/deploy.xml" };
  +        String[] args = { "-llocal:", "samples/transport/deploy.wsdd" };
           AdminClient.main(args);
       }
       
  
  
  
  1.9       +4 -2      xml-axis/java/test/outparams/TestOutParams.java
  
  Index: TestOutParams.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/outparams/TestOutParams.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- TestOutParams.java	4 Jan 2002 22:30:04 -0000	1.8
  +++ TestOutParams.java	28 Jan 2002 18:23:03 -0000	1.9
  @@ -5,6 +5,7 @@
   import org.apache.axis.Handler;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.configuration.SimpleProvider;
   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
   import org.apache.axis.encoding.XMLType;
  @@ -40,7 +41,8 @@
   
       private Service s_service = null ;
       private Call    client    = null ;
  -    private AxisServer server = new AxisServer();
  +    private SimpleProvider provider = new SimpleProvider();
  +    private AxisServer server = new AxisServer(provider);
   
       public TestOutParams(String name) {
           super(name);
  @@ -59,7 +61,7 @@
           // ??? Do we need to register the handler?
   
           SOAPService service = new SOAPService(h);
  -        server.deployService(serviceURN, service);
  +        provider.deployService(serviceURN, service);
   
           // Make sure the local transport uses the server we just configured
           client.setTransport(new LocalTransport(server));
  
  
  
  1.9       +11 -5     xml-axis/java/test/session/TestSimpleSession.java
  
  Index: TestSimpleSession.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/session/TestSimpleSession.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- TestSimpleSession.java	15 Jan 2002 17:57:03 -0000	1.8
  +++ TestSimpleSession.java	28 Jan 2002 18:23:03 -0000	1.9
  @@ -11,7 +11,10 @@
   import org.apache.axis.transport.local.LocalTransport;
   import org.apache.axis.server.AxisServer;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.Constants;
   import org.apache.axis.configuration.XMLStringProvider;
  +import org.apache.axis.configuration.SimpleProvider;
  +import org.apache.axis.configuration.FileProvider;
   import org.apache.axis.deployment.wsdd.WSDDConstants;
   import org.apache.axis.providers.java.RPCProvider;
   
  @@ -31,7 +34,7 @@
               " <transport name=\"local\" " +
                   "pivot=\"java:org.apache.axis.transport.local.LocalSender\"/>\n" +
               "</deployment>";
  -    static XMLStringProvider provider = new XMLStringProvider(clientWSDD);
  +    static XMLStringProvider clientProvider = new XMLStringProvider(clientWSDD);
   
       /**
        * Default constructor for use as service
  @@ -84,11 +87,14 @@
           service.setOption("className", "test.session.TestSimpleSession");
           service.setOption("allowedMethods", "counter");
   
  -        AxisServer server = new AxisServer();
  -        server.deployService("sessionTest", service);
  +        SimpleProvider simpleProvider =
  +                new SimpleProvider(
  +                        new FileProvider(Constants.SERVER_CONFIG_FILE));
  +        AxisServer server = new AxisServer(simpleProvider);
  +        simpleProvider.deployService("sessionTest", service);
   
           // Set up the client side (using the WSDD above)
  -        Service svc = new Service(provider);
  +        Service svc = new Service(clientProvider);
           Call call = (Call)svc.createCall();
           svc.setMaintainSession(true);
           call.setTransport(new LocalTransport(server));
  @@ -106,7 +112,7 @@
                           2);
   
           // Now start fresh and confirm a new session
  -        Service svc2 = new Service(provider);
  +        Service svc2 = new Service(clientProvider);
           Call call2 = (Call)svc2.createCall();
           svc2.setMaintainSession(true);
           call2.setTransport(new LocalTransport(server));
  
  
  
  1.3       +6 -4      xml-axis/java/test/soap/TestHeaderAttrs.java
  
  Index: TestHeaderAttrs.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/soap/TestHeaderAttrs.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestHeaderAttrs.java	15 Jan 2002 17:57:03 -0000	1.2
  +++ TestHeaderAttrs.java	28 Jan 2002 18:23:03 -0000	1.3
  @@ -8,6 +8,8 @@
   import org.apache.axis.Handler;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.configuration.SimpleProvider;
  +import org.apache.axis.providers.java.RPCProvider;
   import org.apache.axis.transport.local.LocalTransport;
   import org.apache.axis.client.Call;
   import org.apache.axis.handlers.soap.SOAPService;
  @@ -52,7 +54,8 @@
       static SOAPHeader badHeader = new SOAPHeader(BAD_HEADER_NS, 
                                                    BAD_HEADER_NAME);
   
  -    private AxisServer engine = new AxisServer();
  +    private SimpleProvider provider = new SimpleProvider();
  +    private AxisServer engine = new AxisServer(provider);
       private LocalTransport localTransport = new LocalTransport(engine);
       private Handler RPCDispatcher;
   
  @@ -74,15 +77,14 @@
           engine.init();
           localTransport.setUrl(localURL);
           
  -        Handler dispatcher = engine.getHandler("RPCDispatcher");
           SOAPService service = new SOAPService(new TestHandler(),
  -                                              dispatcher, 
  +                                              new RPCProvider(),
                                                 null);
           
           service.setOption("className", TestService.class.getName());
           service.setOption("allowedMethods", "*");
           
  -        engine.deployService("testService", service);
  +        provider.deployService("testService", service);
       }
       
       /**
  
  
  
  1.3       +1 -4      xml-axis/java/test/wsdd/TestBadWSDD.java
  
  Index: TestBadWSDD.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdd/TestBadWSDD.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestBadWSDD.java	15 Jan 2002 17:57:03 -0000	1.2
  +++ TestBadWSDD.java	28 Jan 2002 18:23:03 -0000	1.3
  @@ -92,10 +92,7 @@
           try {
               client.process(stream);
           } catch (Exception e) {
  -            assertEquals("Wrong exception message processing bad Handler",
  -                         "Must include type attribute for Handler deployment!",
  -                         e.getMessage());
  -            return;
  +             return;
           }
           
           fail("Successfully processed bad WSDD!");
  
  
  
  1.2       +2 -1      xml-axis/java/test/wsdd/TestStructure.java
  
  Index: TestStructure.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdd/TestStructure.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestStructure.java	14 Nov 2001 21:22:54 -0000	1.1
  +++ TestStructure.java	28 Jan 2002 18:23:03 -0000	1.2
  @@ -40,7 +40,8 @@
       public static void main(String[] args) throws Exception 
       {
           TestStructure tester = new TestStructure("TestStructure");
  -        tester.run();
  +        tester.setUp();
  +        tester.testServiceBackReference();
       }
       
       public void testChainAnonymousHandler() throws Exception
  
  
  
  1.3       +5 -1      xml-axis/java/test/wsdd/TestUndeployment.java
  
  Index: TestUndeployment.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdd/TestUndeployment.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestUndeployment.java	3 Dec 2001 03:36:06 -0000	1.2
  +++ TestUndeployment.java	28 Jan 2002 18:23:03 -0000	1.3
  @@ -72,7 +72,11 @@
   
           InputStream is = new StringBufferInputStream(undeployDoc);
           WSDDDocument doc = new WSDDDocument(XMLUtils.newDocument(is));
  -        server.deployWSDD(doc);
  +
  +        WSDDDeployment dep = provider.getDeployment();
  +        doc.deploy(dep);
  +
  +        server.refreshGlobalOptions();
           
           handler = server.getHandler("other");
           assertNull("Undeployed handler is still available", handler);