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 he...@apache.org on 2006/03/06 14:44:15 UTC
svn commit: r383535 -
/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/WSDLBasedPolicyProcessor.java
Author: hemapani
Date: Mon Mar 6 05:44:13 2006
New Revision: 383535
URL: http://svn.apache.org/viewcvs?rev=383535&view=rev
Log:
updates to policy processing
Modified:
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/WSDLBasedPolicyProcessor.java
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/WSDLBasedPolicyProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/WSDLBasedPolicyProcessor.java?rev=383535&r1=383534&r2=383535&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/WSDLBasedPolicyProcessor.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/WSDLBasedPolicyProcessor.java Mon Mar 6 05:44:13 2006
@@ -16,104 +16,103 @@
package org.apache.axis2.client;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import org.apache.axis2.AxisFault;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.description.AxisModule;
import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.PolicyInclude;
import org.apache.axis2.engine.AxisConfiguration;
-import org.apache.axis2.i18n.Messages;
import org.apache.ws.policy.AndCompositeAssertion;
import org.apache.ws.policy.Policy;
import org.apache.ws.policy.PrimitiveAssertion;
import org.apache.ws.policy.XorCompositeAssertion;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-
public class WSDLBasedPolicyProcessor {
- private HashMap ns2modules = new HashMap();
-
- public WSDLBasedPolicyProcessor(ConfigurationContext configctx) {
- //create the Map for namespaces to modules this is 1:N mapping
- // so we got to use array lists
-
- AxisConfiguration axisConfiguration = configctx.getAxisConfiguration();
- for (Iterator iterator = axisConfiguration.getModules().values()
- .iterator(); iterator.hasNext();) {
- AxisModule axisModule = (AxisModule) iterator.next();
- String[] namespaces = axisModule.getSupportedPolicyNamespaces();
-
- if (namespaces == null) {
- continue;
- }
-
- for (int i = 0; i < namespaces.length; i++) {
- ArrayList moduleList;
- Object obj = ns2modules.get(namespaces[i]);
- if (obj == null) {
- moduleList = new ArrayList(5);
- ns2modules.put(namespaces[i], moduleList);
- } else {
- moduleList = (ArrayList) obj;
- }
- moduleList.add(axisModule);
-
- }
- }
-
- }
-
- public void configureOperationPolices(AxisOperation op, Policy policy) {
- if (!policy.isNormalized()) {
- policy = (Policy) policy.normalize();
- }
-
- HashMap map = new HashMap();
-
- XorCompositeAssertion XOR = (XorCompositeAssertion) policy.getTerms()
- .get(0);
- AndCompositeAssertion AND = (AndCompositeAssertion) XOR.getTerms().get(
- 0);
-
- for (Iterator iterator = AND.getTerms().iterator(); iterator.hasNext();) {
-
- AndCompositeAssertion nAND = new AndCompositeAssertion();
- PrimitiveAssertion pa = (PrimitiveAssertion) iterator.next();
-
- String namespace = pa.getName().getNamespaceURI();
- nAND.addTerm(pa);
-
- while (iterator.hasNext()) {
- pa = (PrimitiveAssertion) iterator.next();
-
- if (namespace.equals(pa.getName().getNamespaceURI())) {
- nAND.addTerm(pa);
- }
- }
-
- map.put(namespace, nAND);
- AND.getTerms().removeAll(nAND.getTerms());
-
- iterator = AND.getTerms().iterator();
- }
-
- for (Iterator iterator = map.keySet().iterator(); iterator.hasNext();) {
- String namespace = (String) iterator.next();
-
- //for each module intersted in
- ArrayList moduleList = (ArrayList) ns2modules.get(namespace);
-
- if (moduleList == null) {
- System.err.println(Messages
- .getMessage("cannotfindamoduletoprocess", namespace));
- } else {
- for (int i = 0; i < moduleList.size(); i++) {
- AxisModule axisModule = (AxisModule) moduleList.get(i);
- //we should be notifying/consulting modules here
- throw new UnsupportedOperationException();
-
- }
- }
- }
- }
+ private HashMap ns2modules = new HashMap();
+ private ConfigurationContext configctx;
+
+
+ public WSDLBasedPolicyProcessor(ConfigurationContext configctx){
+ //create the Map for namespaces to modules this is 1:N mapping
+ // so we got to use array lists
+ this.configctx = configctx;
+ AxisConfiguration axisConfiguration = configctx.getAxisConfiguration();
+ for (Iterator iterator = axisConfiguration.getModules().values()
+ .iterator(); iterator.hasNext();) {
+ AxisModule axisModule = (AxisModule) iterator.next();
+ String[] namespaces = axisModule.getSupportedPolicyNamespaces();
+
+ if (namespaces == null) {
+ continue;
+ }
+
+ for (int i = 0; i < namespaces.length; i++) {
+ ArrayList moduleList = null;
+ Object obj = ns2modules.get(namespaces[i]);
+ if(obj == null){
+ moduleList = new ArrayList(5);
+ ns2modules.put(namespaces[i], moduleList);
+ }else{
+ moduleList = (ArrayList)obj;
+ }
+ moduleList.add(axisModule);
+
+ }
+ }
+
+ }
+
+
+
+ public void configureServicePolices(AxisService axisService) throws AxisFault{
+ Iterator operations = axisService.getOperations();
+ while(operations.hasNext()){
+ AxisOperation axisOp = (AxisOperation)operations.next();
+ //TODO we support only Operation level Policy now
+ configureOperationPolices(axisOp);
+ }
+ }
+
+
+ public void configureOperationPolices(AxisOperation op)throws AxisFault{
+ PolicyInclude policyInclude = op.getPolicyInclude();
+
+ if(policyInclude != null ){
+ Policy policy = policyInclude.getEffectivePolicy();
+ if(policy != null){
+ if (!policy.isNormalized()) {
+ policy = (Policy) policy.normalize();
+ }
+
+ XorCompositeAssertion XOR = (XorCompositeAssertion) policy.getTerms()
+ .get(0);
+ AndCompositeAssertion AND = (AndCompositeAssertion) XOR.getTerms().get(
+ 0);
+
+ Iterator pAsserations = AND.getTerms().iterator();
+ while(pAsserations.hasNext()){
+ PrimitiveAssertion pa = (PrimitiveAssertion) pAsserations.next();
+ String namespace = pa.getName().getNamespaceURI();
+ ArrayList moduleList = (ArrayList)ns2modules.get(namespace);
+
+ if (moduleList == null) {
+ System.err.println("cannot find a module to process "
+ + namespace + "type assertions");
+ continue;
+ }else{
+ for(int i = 0;i<moduleList.size();i++){
+ AxisModule axisModule = (AxisModule) moduleList.get(i);
+ op.engageModule(axisModule,configctx.getAxisConfiguration());
+ axisModule.getModule().engageNotify(op);
+ }
+ }
+ }
+ }
+ }
+ }
}