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>