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 de...@apache.org on 2005/02/08 04:10:57 UTC

svn commit: r151824 - in webservices/axis/trunk/java/dev/scratch/prototype2/src: java/org/apache/axis/deployment/ java/org/apache/axis/engine/ java/org/apache/axis/impl/engine/ java/org/apache/axis/phaseresolver/ test-resources/deployment/

Author: deepal
Date: Mon Feb  7 19:10:54 2005
New Revision: 151824

URL: http://svn.apache.org/viewcvs?view=rev&rev=151824
Log:
provide a way to add transport handlers . and phase resolving related to that

Modified:
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/DeploymentEngine.java
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/engine/EngineRegistry.java
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/engine/EngineRegistryImpl.java
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/phaseresolver/PhaseHolder.java
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/phaseresolver/PhaseResolver.java
    webservices/axis/trunk/java/dev/scratch/prototype2/src/test-resources/deployment/server-transport.xml

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/DeploymentEngine.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/DeploymentEngine.java?view=diff&r1=151823&r2=151824
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/DeploymentEngine.java (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/DeploymentEngine.java Mon Feb  7 19:10:54 2005
@@ -192,6 +192,7 @@
         }
         PhaseResolver phaseResolver = new PhaseResolver(engineRegistry);
         phaseResolver.buildGlobalChains(server);
+        phaseResolver.buildTranspotsChains();
 
     }
 

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/engine/EngineRegistry.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/engine/EngineRegistry.java?view=diff&r1=151823&r2=151824
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/engine/EngineRegistry.java (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/engine/EngineRegistry.java Mon Feb  7 19:10:54 2005
@@ -24,6 +24,7 @@
 
 import javax.xml.namespace.QName;
 import java.util.ArrayList;
+import java.util.HashMap;
 
 /**
  *  The palce where all the Globel states of Axis is kept. 
@@ -51,6 +52,7 @@
     
     public AxisTransport getTransport(QName name) throws AxisFault;
     public void addTransport(AxisTransport transport) throws AxisFault;
+    public HashMap getTransports() throws AxisFault;
     /**
      * Ordred list of phases
      */

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/engine/EngineRegistryImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/engine/EngineRegistryImpl.java?view=diff&r1=151823&r2=151824
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/engine/EngineRegistryImpl.java (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/engine/EngineRegistryImpl.java Mon Feb  7 19:10:54 2005
@@ -72,6 +72,11 @@
     public synchronized  void addTransport(AxisTransport transport) throws AxisFault {
         transports.put(transport.getName(),transport);
      }
+
+    public HashMap getTransports() throws AxisFault {
+        return transports;
+    }
+
     /**
      * @return
      */

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/phaseresolver/PhaseHolder.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/phaseresolver/PhaseHolder.java?view=diff&r1=151823&r2=151824
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/phaseresolver/PhaseHolder.java (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/phaseresolver/PhaseHolder.java Mon Feb  7 19:10:54 2005
@@ -3,9 +3,11 @@
 import org.apache.axis.deployment.DeploymentConstants;
 import org.apache.axis.description.AxisGlobal;
 import org.apache.axis.description.HandlerMetaData;
+import org.apache.axis.description.AxisTransport;
 import org.apache.axis.engine.AxisFault;
 import org.apache.axis.engine.EngineRegistry;
 import org.apache.axis.engine.Phase;
+import org.apache.axis.engine.Handler;
 import org.apache.axis.impl.description.AxisService;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -207,6 +209,97 @@
         } 
     }
 
+    public void buildTransportChain(AxisTransport trnsport , int chainType) throws PhaseException {
+        try{
+            OrderdPhases();
+            Vector tempHander = new Vector();
+            HandlerMetaData[] handlers;
+            Class handlerClass = null;
+            Handler handler;
+            switch (chainType) {
+                case 1 : {
+                    ArrayList inChain =  new ArrayList();//       service.getExecutableInChain();
+                    for (int i = 0; i < phaseholder.size(); i++) {
+                        PhaseMetaData phase = (PhaseMetaData) phaseholder.elementAt(i);
+                        Phase axisPhase = new Phase(phase.getName());
+                        handlers = phase.getOrderedHandlers();
+                        for (int j = 0; j < handlers.length; j++) {
+                            try{
+                                handlerClass = Class.forName(handlers[j].getClassName(), true, Thread.currentThread().getContextClassLoader());//getHandlerClass(handlermd.getClassName(), loader1);
+                                handler = (Handler) handlerClass.newInstance();
+                                handler.init(handlers[j]);
+                                handlers[j].setHandler(handler);
+                                axisPhase.addHandler(handlers[j].getHandler());
+                            }catch (ClassNotFoundException e){
+                                throw new PhaseException(e);
+                            } catch (IllegalAccessException e) {
+                                throw new PhaseException(e);
+                            } catch (InstantiationException e) {
+                                throw new PhaseException(e);
+                            }
+                        }
+                        inChain.add(axisPhase);
+                    }
+                    trnsport.setPhases(inChain,EngineRegistry.INFLOW);
+                    break;
+                }
+                case 2 : {
+                    ArrayList outChain =new ArrayList();// service.getExecutableOutChain();
+                    for (int i = 0; i < phaseholder.size(); i++) {
+                        PhaseMetaData phase = (PhaseMetaData) phaseholder.elementAt(i);
+                        Phase axisPhase = new Phase(phase.getName());
+                        handlers = phase.getOrderedHandlers();
+                        for (int j = 0; j < handlers.length; j++) {
+                            try{
+                                handlerClass = Class.forName(handlers[j].getClassName(), true, Thread.currentThread().getContextClassLoader());//getHandlerClass(handlermd.getClassName(), loader1);
+                                handler = (Handler) handlerClass.newInstance();
+                                handler.init(handlers[j]);
+                                handlers[j].setHandler(handler);
+                                axisPhase.addHandler(handlers[j].getHandler());
+                            }catch (ClassNotFoundException e){
+                                throw new PhaseException(e);
+                            } catch (IllegalAccessException e) {
+                                throw new PhaseException(e);
+                            } catch (InstantiationException e) {
+                                throw new PhaseException(e);
+                            }
+                        }
+                        outChain.add(axisPhase);
+                    }
+                    trnsport.setPhases(outChain,EngineRegistry.OUTFLOW);
+                    break;
+                }
+                case 3 : {
+                    ArrayList faultChain = new ArrayList();//service.getExecutableFaultChain();
+                    for (int i = 0; i < phaseholder.size(); i++) {
+                        PhaseMetaData phase = (PhaseMetaData) phaseholder.elementAt(i);
+                        Phase axisPhase = new Phase(phase.getName());
+                        handlers = phase.getOrderedHandlers();
+                        for (int j = 0; j < handlers.length; j++) {
+                            try{
+                                handlerClass = Class.forName(handlers[j].getClassName(), true, Thread.currentThread().getContextClassLoader());//getHandlerClass(handlermd.getClassName(), loader1);
+                                handler = (Handler) handlerClass.newInstance();
+                                handler.init(handlers[j]);
+                                handlers[j].setHandler(handler);
+                                axisPhase.addHandler(handlers[j].getHandler());
+                            }catch (ClassNotFoundException e){
+                                throw new PhaseException(e);
+                            } catch (IllegalAccessException e) {
+                                throw new PhaseException(e);
+                            } catch (InstantiationException e) {
+                                throw new PhaseException(e);
+                            }
+                        }
+                        faultChain.add(axisPhase);
+                    }
+                    trnsport.setPhases(faultChain,EngineRegistry.FAULTFLOW);
+                    break;
+                }
+            }
+        }   catch (AxisFault e) {
+            throw new PhaseException(e);
+        }
+    }
 
     public  void buildGoblalChain(AxisGlobal axisGlobal, int chainType) throws PhaseException {
         try {

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/phaseresolver/PhaseResolver.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/phaseresolver/PhaseResolver.java?view=diff&r1=151823&r2=151824
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/phaseresolver/PhaseResolver.java (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/phaseresolver/PhaseResolver.java Mon Feb  7 19:10:54 2005
@@ -1,9 +1,6 @@
 package org.apache.axis.phaseresolver;
 
-import org.apache.axis.description.AxisGlobal;
-import org.apache.axis.description.AxisModule;
-import org.apache.axis.description.Flow;
-import org.apache.axis.description.HandlerMetaData;
+import org.apache.axis.description.*;
 import org.apache.axis.engine.AxisFault;
 import org.apache.axis.engine.EngineRegistry;
 import org.apache.axis.impl.description.AxisService;
@@ -12,6 +9,7 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Vector;
+import java.util.HashMap;
 
 /**
  * Copyright 2001-2004 The Apache Software Foundation.
@@ -69,8 +67,8 @@
     private  void buildExcutionChains(int type) throws AxisFault, PhaseException {
         int flowtype =  type;
         Vector allHandlers = new Vector();
-       // int count = server.getModuleCount();
-      //  QName moduleName;
+        // int count = server.getModuleCount();
+        //  QName moduleName;
         AxisModule module;
         Flow flow = null;
         /*
@@ -106,11 +104,11 @@
         Collection collection = axisService.getModules();
         Iterator itr = collection.iterator();
         while(itr.hasNext()){
-           QName moduleref = (QName)itr.next();
-       // }
-       // Vector modules = (Vector)axisService.getModules();
-       // for (int i = 0; i < modules.size(); i++) {
-         //   QName moduleref = (QName) modules.elementAt(i);
+            QName moduleref = (QName)itr.next();
+            // }
+            // Vector modules = (Vector)axisService.getModules();
+            // for (int i = 0; i < modules.size(); i++) {
+            //   QName moduleref = (QName) modules.elementAt(i);
             module = engineRegistry.getModule(moduleref);
             switch (flowtype){
                 case 1 : {
@@ -169,6 +167,54 @@
             phaseHolder.addHandler(handlerMetaData);
         }
         phaseHolder.getOrderdHandlers(type);
+
+    }
+
+    public void buildTranspotsChains() throws PhaseException  {
+        try {
+            HashMap transports = engineRegistry.getTransports();
+            Collection coltrnsport = transports.values();
+            for (Iterator iterator = coltrnsport.iterator(); iterator.hasNext();) {
+                AxisTransport   transport = (AxisTransport)iterator.next();
+                buildTransportChains(transport);
+            }
+        } catch (AxisFault axisFault) {
+            throw new PhaseException("AxisFault" + axisFault.getMessage());
+        }
+
+    }
+
+    private void buildTransportChains(AxisTransport   transport) throws PhaseException {
+        Flow flow = null;
+        for(int type =1 ; type <4 ; type ++){
+            phaseHolder = new PhaseHolder(engineRegistry,null);
+            switch(type){
+                case 1 : {
+                    flow = transport.getInFlow();
+                    break;
+                }
+                case 2 : {
+                    flow = transport.getOutFlow();
+                    break;
+                }
+                case 3 : {
+                    flow = transport.getFaultFlow();
+                    break;
+                }
+            }
+            if(flow != null ){
+                for(int j= 0 ; j < flow.getHandlerCount() ; j++ ){
+                    HandlerMetaData metadata = flow.getHandler(j);
+                    //todo change this in properway
+                    if (metadata.getRules().getPhaseName().equals("")){
+                        metadata.getRules().setPhaseName("transport");
+                    }
+                    phaseHolder.addHandler(metadata);
+
+                }
+            }
+         phaseHolder.buildTransportChain(transport, type);
+        }
 
     }
 

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/test-resources/deployment/server-transport.xml
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/test-resources/deployment/server-transport.xml?view=diff&r1=151823&r2=151824
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/test-resources/deployment/server-transport.xml (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/test-resources/deployment/server-transport.xml Mon Feb  7 19:10:54 2005
@@ -3,16 +3,16 @@
         <transport name ="http">
             <parameter name="para1" locked="xsd:true">10</parameter>
 			<inflow>
-    			<handler name="h1" class="Handler1"/>
-		        <handler name="h2" class="Handler1"/>
+    			<handler name="h1" class="org.apache.axis.description.SpeakingHandler"/>
+		        <handler name="h2" class="org.apache.axis.description.SpeakingHandler"/>
     		</inflow>
 		    <outflow>
-		        <handler name="h3" class="Handler1"/>
+		        <handler name="h3" class="org.apache.axis.description.SpeakingHandler"/>
 		    </outflow>
         </transport>
         <transport name ="smtp">
 		    <faultflow>
-        		<handler name="h4" class="Handler1"/>
+        		<handler name="h4" class="org.apache.axis.description.SpeakingHandler"/>
 		    </faultflow>
         </transport>
     </transports>