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 2006/02/10 05:04:07 UTC
svn commit: r376538 - in
/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2:
deployment/DeploymentEngine.java description/AxisOperation.java
Author: deepal
Date: Thu Feb 9 20:04:04 2006
New Revision: 376538
URL: http://svn.apache.org/viewcvs?rev=376538&view=rev
Log:
-fixing module operation adding (control operation) when they engaged to an operation
Modified:
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisOperation.java
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java?rev=376538&r1=376537&r2=376538&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java Thu Feb 9 20:04:04 2006
@@ -185,6 +185,7 @@
Iterator services = serviceList.iterator();
while (services.hasNext()) {
+ ArrayList contolops = new ArrayList();
AxisService axisService = (AxisService) services.next();
axisService.setUseDefaultChains(false);
@@ -216,7 +217,11 @@
AxisModule module = axisConfig.getModule(moduleName);
if (module != null) {
- opDesc.engageModule(module, axisConfig);
+ ArrayList controlops = opDesc.engageModule(module, axisConfig);
+ for (int j = 0; j < controlops.size(); j++) {
+ AxisOperation axisOperation = (AxisOperation) controlops.get(j);
+ contolops.add(axisOperation);
+ }
} else {
throw new DeploymentException(
Messages.getMessage(
@@ -225,6 +230,11 @@
}
}
}
+ for (int i = 0; i < contolops.size(); i++) {
+ AxisOperation axisOperation = (AxisOperation) contolops.get(i);
+ axisService.addOperation(axisOperation);
+ }
+ contolops.clear();
}
axisConfig.addServiceGroup(serviceGroup);
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisOperation.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisOperation.java?rev=376538&r1=376537&r2=376538&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisOperation.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisOperation.java Thu Feb 9 20:04:04 2006
@@ -99,10 +99,10 @@
* @param moduleref
* @throws AxisFault
*/
- public final void engageModule(AxisModule moduleref, AxisConfiguration axisConfig)
+ public final ArrayList engageModule(AxisModule moduleref, AxisConfiguration axisConfig)
throws AxisFault {
if (moduleref == null) {
- return;
+ return null;
}
boolean needToadd = true;
@@ -118,24 +118,79 @@
needToadd = false;
}
}
- // adding control operations
- ((AxisService) getParent()).addModuleOperations(moduleref, axisConfig);
PhaseResolver phaseResolver = new PhaseResolver(axisConfig);
phaseResolver.engageModuleToOperation(this, moduleref);
- HashMap map = moduleref.getOperations();
- Collection col = map.values();
+ if (needToadd) {
+ engagedModules.add(moduleref);
+ }
+ return addModuleOperations(moduleref, axisConfig, (AxisService) getParent());
+ }
+
+ /**
+ * Adds an operation to a service if a module is required to do so.
+ *
+ * @param module
+ */
+ public ArrayList addModuleOperations(AxisModule module, AxisConfiguration axisConfig,
+ AxisService service)
+ throws AxisFault {
+ HashMap map = module.getOperations();
+ Collection col = map.values();
+ PhaseResolver phaseResolver = new PhaseResolver(axisConfig);
+ //this arry list is retun , to avoid concurrent modifications , in the deployment engine
+ ArrayList ops = new ArrayList();
for (Iterator iterator = col.iterator(); iterator.hasNext();) {
- AxisOperation axisOperation = (AxisOperation) iterator.next();
- AxisOperation serviceop =
- ((AxisService) getParent()).getOperation(axisOperation.getName());
- phaseResolver.engageModuleToOperation(serviceop, moduleref);
+ AxisOperation axisOperation = copyOperation((AxisOperation) iterator.next());
+ ArrayList wsamappings = axisOperation.getWsamappingList();
+
+ for (int j = 0; j < wsamappings.size(); j++) {
+ Parameter parameter = (Parameter) wsamappings.get(j);
+
+ service.mapActionToOperation((String) parameter.getValue(), axisOperation);
+ }
+ if (service.getOperation(axisOperation.getName()) == null) {
+ // this opration is a control operation.
+ axisOperation.setControlOperation(true);
+ phaseResolver.engageModuleToOperation(axisOperation, module);
+ ops.add(axisOperation);
+ }
}
- if (needToadd) {
- engagedModules.add(moduleref);
+ return ops;
+ }
+
+ /**
+ * Gets a copy from module operation.
+ *
+ * @param axisOperation
+ * @return Returns AxisOperation.
+ * @throws AxisFault
+ */
+ private AxisOperation copyOperation(AxisOperation axisOperation) throws AxisFault {
+ AxisOperation operation =
+ AxisOperationFactory.getOperationDescription(axisOperation.getMessageExchangePattern());
+
+ operation.setMessageReceiver(axisOperation.getMessageReceiver());
+ operation.setName(axisOperation.getName());
+
+ Iterator parameters = axisOperation.getParameters().iterator();
+
+ while (parameters.hasNext()) {
+ Parameter parameter = (Parameter) parameters.next();
+
+ operation.addParameter(parameter);
}
+
+ operation.setWsamappingList(axisOperation.getWsamappingList());
+ operation.setRemainingPhasesInFlow(axisOperation.getRemainingPhasesInFlow());
+ operation.setPhasesInFaultFlow(axisOperation.getPhasesInFaultFlow());
+ operation.setPhasesOutFaultFlow(axisOperation.getPhasesOutFaultFlow());
+ operation.setPhasesOutFlow(axisOperation.getPhasesOutFlow());
+
+ return operation;
}
+
/**
* Creates a new operation context if there is not one already.