Author: nadiramra
Date: Wed Nov 9 17:01:45 2011
New Revision: 1199848
URL: http://svn.apache.org/viewvc?rev=1199848&view=rev
Log:
AXIS2-4440 excludeOperations with static WSDL does not work
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisService.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.java?rev=1199848&r1=1199847&r2=1199848&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.java
Wed Nov 9 17:01:45 2011
@@ -409,6 +409,7 @@ public class ServiceBuilder extends Desc
for (String opName : excludeops) {
service.removeOperation(new QName(opName));
+ service.addExcludeOperationName(opName);
}
// Need to call the same logic towice
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisService.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisService.java?rev=1199848&r1=1199847&r2=1199848&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisService.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisService.java
Wed Nov 9 17:01:45 2011
@@ -256,8 +256,11 @@ public class AxisService extends AxisDes
private CopyOnWriteArrayList<MessageContextListener>
messageContextListeners =
new CopyOnWriteArrayList<MessageContextListener>();
- // names list keep to preserve the parameter order
- private List operationsNameList;
+ // names list keep to preserve the parameter order
+ private List operationsNameList;
+
+ // Excluded operations name list to know which operations to exclude.
+ private List excludeOperationsNameList;
private String[] eprs;
private boolean customWsdl = false;
@@ -325,6 +328,7 @@ public class AxisService extends AxisDes
super();
this.operationsAliasesMap = new HashMap();
this.invalidOperationsAliases = new ArrayList();
+ this.excludeOperationsNameList = new ArrayList();
moduleConfigmap = new HashMap();
// by default service scope is for the request
scope = Constants.SCOPE_REQUEST;
@@ -597,6 +601,36 @@ public class AxisService extends AxisDes
moduleRefs.add(moduleref);
}
+ /**
+ * Adds operation name to exclude list.
+ *
+ * @param operation operation name to add to exclude list
+ *
+ */
+ public void addExcludeOperationName(String operation){
+ excludeOperationsNameList.add(operation);
+ }
+
+ /**
+ * Removes operation name from exclude list.
+ *
+ * @param operation operation name to remove from exclude list
+ *
+ */
+ public void removeExcludeOperationName(String operation){
+ excludeOperationsNameList.remove(operation);
+ }
+
+ /**
+ * Returns whether operation name is in exclude list.
+ *
+ * @param operation name to check if operation is in the exlude list.
+ * @return boolean indicating whether operation name is in exlude list.
+ */
+ public boolean isExcludedOperation(String operation){
+ return excludeOperationsNameList.contains(operation);
+ }
+
/*
* (non-Javadoc)
*
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java?rev=1199848&r1=1199847&r2=1199848&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
Wed Nov 9 17:01:45 2011
@@ -83,6 +83,21 @@ public class DispatchPhase extends Phase
AxisService service = msgContext.getAxisService();
AxisOperation operation = msgContext.getAxisOperation();
+
+ // If operation is an excluded operation, throw an exception.
+ // This code is needed to enable exclude operations for static WSDL
files.
+ // Without this code, if one specifies excludeOperations in
services.xml
+ // file and a static WSDL is used that contains the operation,
+ // the operation would succeed.
+ if (operation != null
+ &&
service.isExcludedOperation(operation.getName().getLocalPart())) {
+ AxisFault fault = new
AxisFault(Messages.getMessage("operationnotfoundforepr2",
+ ((toEPR != null) ? toEPR.getAddress()
+ : ""), msgContext.getWSAAction()));
+
fault.setFaultCode(org.apache.axis2.namespace.Constants.FAULT_CLIENT);
+ throw fault;
+ }
+
// If we're configured to do so, check the service for a single op...
if (operation == null &&
JavaUtils.isTrue(service.getParameterValue(AxisService.SUPPORT_SINGLE_OP))) {