You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sv...@apache.org on 2008/02/21 17:06:14 UTC

svn commit: r629842 - in /incubator/tuscany/java/sca/modules: assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ binding-sca-axis2/src/main/java/org/apache/tuscany/sca/bi...

Author: svkrish
Date: Thu Feb 21 08:06:10 2008
New Revision: 629842

URL: http://svn.apache.org/viewvc?rev=629842&view=rev
Log:
fixes for policy annotations processing, included policy handler invocationsin binding.ws, moved policyhandler classnames loaded to contribution util, added appliesTo attribute to policyhandler services file

Added:
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/util/PolicyHandlerDefinitionsLoader.java   (with props)
Modified:
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
    incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java
    incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeWireBuilderImpl.java
    incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java
    incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java
    incubator/tuscany/java/sca/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingProviderFactory.java
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingProviderFactory.java
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2OneWayBindingInvoker.java
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInMessageReceiver.java
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInOutSyncMessageReceiver.java
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/module/JavaRuntimeModuleActivator.java
    incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyHandlerTuple.java
    incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyHandlerUtils.java

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java Thu Feb 21 08:06:10 2008
@@ -251,6 +251,15 @@
                             resolvePolicySets(policiedImpl.getPolicySets(), resolver);
                             validatePolicySets(policiedImpl);
                             
+                            if ( implementation instanceof OperationsConfigurator ) {
+                                OperationsConfigurator opsConfigurator = (OperationsConfigurator)implementation;
+                                for ( ConfiguredOperation implOp : opsConfigurator.getConfiguredOperations() ) {
+                                    resolveIntents(implOp.getRequiredIntents(), resolver);
+                                    resolvePolicySets(implOp.getPolicySets(), resolver);
+                                    validatePolicySets(implOp, policiedImpl.getApplicablePolicySets());
+                                }
+                            }
+                            
                             for ( Service service : implementation.getServices() ) {
                                 resolveIntents(service.getRequiredIntents(), resolver);
                                 resolvePolicySets(service.getPolicySets(), resolver);

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java Thu Feb 21 08:06:10 2008
@@ -96,8 +96,10 @@
             if ( binding instanceof PolicySetAttachPoint ) {
                 PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)binding;
                 
+                policiedBinding.getApplicablePolicySets().addAll(applicablePolicySets);
                 List<PolicySet> prunedPolicySets = computeInheritablePolicySets(policiedBinding,
-                                                                                inheritedPolicySets);
+                                                                                inheritedPolicySets,
+                                                                                applicablePolicySets);
                 policiedBinding.getPolicySets().addAll(prunedPolicySets);
                 computePolicySets(policiedBinding);
                 computePolicySetsForOperations(applicablePolicySets, policiedBinding);

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeWireBuilderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeWireBuilderImpl.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeWireBuilderImpl.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeWireBuilderImpl.java Thu Feb 21 08:06:10 2008
@@ -969,7 +969,7 @@
                 }
                 
                 try {
-                    //compute the intents for operations under service element
+                    //compute the intents for operations under reference element
                     bindingPolicyComputer.computeIntentsForOperations(componentReference);
                     //compute intents and policyset for each binding
                     addInheritedOpConfOnBindings(componentReference);

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java Thu Feb 21 08:06:10 2008
@@ -61,7 +61,8 @@
             
             
             List<PolicySet> prunedPolicySets = computeInheritablePolicySets(policiedImplementation, 
-                                                                            parent.getPolicySets());
+                                                                            parent.getPolicySets(),
+                                                                            parent.getApplicablePolicySets());
             parent.getPolicySets().clear();
             parent.getPolicySets().addAll(prunedPolicySets);
             computePolicySets(parent);

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java Thu Feb 21 08:06:10 2008
@@ -191,12 +191,13 @@
     }*/
     
     protected List<PolicySet> computeInheritablePolicySets(PolicySetAttachPoint policySetAttachPoint,
-                                                           List<PolicySet> inheritablePolicySets) 
+                                                           List<PolicySet> inheritablePolicySets,
+                                                           List<PolicySet> applicablePolicySets) 
                                                                throws PolicyValidationException {
         List<PolicySet> validInheritablePolicySets = new ArrayList<PolicySet>();
         for (PolicySet policySet : inheritablePolicySets) {
             if ( !policySet.isUnresolved() ) { 
-                if ( policySetAttachPoint.getApplicablePolicySets().contains(policySet) ) {
+                if ( applicablePolicySets.contains(policySet) ) {
                     validInheritablePolicySets.add(policySet);
                 }
             } else {

Modified: incubator/tuscany/java/sca/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingProviderFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingProviderFactory.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingProviderFactory.java (original)
+++ incubator/tuscany/java/sca/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingProviderFactory.java Thu Feb 21 08:06:10 2008
@@ -30,6 +30,7 @@
 
 import org.apache.tuscany.sca.binding.sca.DistributedSCABinding;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.util.PolicyHandlerDefinitionsLoader;
 import org.apache.tuscany.sca.contribution.util.ServiceDeclaration;
 import org.apache.tuscany.sca.contribution.util.ServiceDiscovery;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
@@ -66,7 +67,7 @@
         ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
         this.messageFactory = modelFactories.getFactory(MessageFactory.class);
         nodeFactory = modelFactories.getFactory(NodeFactory.class);
-        policyHandlerClassnames = loadPolicyHandlerClassnames();
+        policyHandlerClassnames = PolicyHandlerDefinitionsLoader.loadPolicyHandlerClassnames();
     }    
 
     public ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component,
@@ -84,51 +85,4 @@
     public Class<DistributedSCABinding> getModelType() {
         return DistributedSCABinding.class;
     }  
-    
-    private static QName getQName(String qname) { 
-        if (qname == null) {
-            return null;
-        }
-        qname = qname.trim();
-        if (qname.startsWith("{")) {
-            int h = qname.indexOf('}');
-            if (h != -1) {
-                return new QName(qname.substring(1, h), qname.substring(h + 1));
-            }
-        } else {
-            int h = qname.indexOf('#');
-            if (h != -1) {
-                return new QName(qname.substring(0, h), qname.substring(h + 1));
-            }
-        }
-        throw new IllegalArgumentException("Invalid qname: " + qname);
-    }
-    
-    private Map<ClassLoader, List<PolicyHandlerTuple>> loadPolicyHandlerClassnames() {
-        // Get the processor service declarations
-        Set<ServiceDeclaration> sds;
-        try {
-            sds = ServiceDiscovery.getInstance().getServiceDeclarations(PolicyHandler.class);
-        } catch (IOException e) {
-            throw new IllegalStateException(e);
-        }
-        
-        Map<ClassLoader, List<PolicyHandlerTuple>> handlerTuples = new Hashtable<ClassLoader, List<PolicyHandlerTuple>>();
-        for (ServiceDeclaration sd : sds) {
-            ClassLoader cl = sd.getClassLoader();
-            
-            List<PolicyHandlerTuple> handlerTupleList = handlerTuples.get(cl);
-            if ( handlerTupleList == null ) {
-                handlerTupleList = new ArrayList<PolicyHandlerTuple>();
-                handlerTuples.put(cl, handlerTupleList);
-            }
-            Map<String, String> attributes = sd.getAttributes();
-            String intentName = attributes.get("intent");
-            QName intentQName = getQName(intentName);
-            String policyModelClassName = attributes.get("model");
-            handlerTupleList.add(new PolicyHandlerTuple(sd.getClassName(), intentQName, policyModelClassName));
-        }
-        return handlerTuples;
-    }
-
 }

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java Thu Feb 21 08:06:10 2008
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.sca.binding.ws.axis2;
 
+import java.util.List;
+
 import javax.xml.namespace.QName;
 
 import org.apache.axiom.om.OMElement;
@@ -39,6 +41,7 @@
 import org.apache.tuscany.sca.invocation.Invoker;
 import org.apache.tuscany.sca.invocation.Message;
 import org.apache.tuscany.sca.invocation.PassByValueAware;
+import org.apache.tuscany.sca.policy.util.PolicyHandler;
 import org.apache.tuscany.sca.runtime.ReferenceParameters;
 
 /**
@@ -60,22 +63,34 @@
         new QName(Constants.SCA10_TUSCANY_NS, "CallbackID", TUSCANY_PREFIX);
     public static final QName CONVERSATION_ID_REFPARM_QN =
         new QName(Constants.SCA10_TUSCANY_NS, "ConversationID", TUSCANY_PREFIX);
+    
+    private List<PolicyHandler> policyHandlerList = null;
 
     public Axis2BindingInvoker(Axis2ServiceClient serviceClient,
                                QName wsdlOperationName,
                                Options options,
-                               SOAPFactory soapFactory) {
+                               SOAPFactory soapFactory,
+                               List<PolicyHandler> policyHandlerList) {
         this.serviceClient = serviceClient;
         this.wsdlOperationName = wsdlOperationName;
         this.options = options;
         this.soapFactory = soapFactory;
+        this.policyHandlerList = policyHandlerList;
     }
 
     private final static QName EXCEPTION = new QName("", "Exception");
     
     public Message invoke(Message msg) {
         try {
+            for ( PolicyHandler policyHandler : policyHandlerList ) {
+                policyHandler.beforeInvoke(msg);
+            }
+            
             Object resp = invokeTarget(msg);
+            
+            for ( PolicyHandler policyHandler : policyHandlerList ) {
+                policyHandler.afterInvoke(msg);
+            }
             msg.setBody(resp);
         } catch (AxisFault e) {
             if (e.getDetail() != null ) {

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingProviderFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingProviderFactory.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingProviderFactory.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingProviderFactory.java Thu Feb 21 08:06:10 2008
@@ -29,6 +29,7 @@
 
 import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.util.PolicyHandlerDefinitionsLoader;
 import org.apache.tuscany.sca.contribution.util.ServiceDeclaration;
 import org.apache.tuscany.sca.contribution.util.ServiceDiscovery;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
@@ -61,7 +62,7 @@
         this.servletHost = servletHosts.getServletHosts().get(0);
         ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
         this.messageFactory = modelFactories.getFactory(MessageFactory.class); 
-        policyHandlerClassnames = loadPolicyHandlerClassnames();
+        policyHandlerClassnames = PolicyHandlerDefinitionsLoader.loadPolicyHandlerClassnames();
     }
 
     public ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component, RuntimeComponentReference reference, WebServiceBinding binding) {
@@ -74,51 +75,5 @@
     
     public Class<WebServiceBinding> getModelType() {
         return WebServiceBinding.class;
-    }
-    
-    private static QName getQName(String qname) { 
-        if (qname == null) {
-            return null;
-        }
-        qname = qname.trim();
-        if (qname.startsWith("{")) {
-            int h = qname.indexOf('}');
-            if (h != -1) {
-                return new QName(qname.substring(1, h), qname.substring(h + 1));
-            }
-        } else {
-            int h = qname.indexOf('#');
-            if (h != -1) {
-                return new QName(qname.substring(0, h), qname.substring(h + 1));
-            }
-        }
-        throw new IllegalArgumentException("Invalid qname: " + qname);
-    }
-    
-    private Map<ClassLoader, List<PolicyHandlerTuple>> loadPolicyHandlerClassnames() {
-        // Get the processor service declarations
-        Set<ServiceDeclaration> sds;
-        try {
-            sds = ServiceDiscovery.getInstance().getServiceDeclarations(PolicyHandler.class);
-        } catch (IOException e) {
-            throw new IllegalStateException(e);
-        }
-        
-        Map<ClassLoader, List<PolicyHandlerTuple>> handlerTuples = new Hashtable<ClassLoader, List<PolicyHandlerTuple>>();
-        for (ServiceDeclaration sd : sds) {
-            ClassLoader cl = sd.getClassLoader();
-            
-            List<PolicyHandlerTuple> handlerTupleList = handlerTuples.get(cl);
-            if ( handlerTupleList == null ) {
-                handlerTupleList = new ArrayList<PolicyHandlerTuple>();
-                handlerTuples.put(cl, handlerTupleList);
-            }
-            Map<String, String> attributes = sd.getAttributes();
-            String intentName = attributes.get("intent");
-            QName intentQName = getQName(intentName);
-            String policyModelClassName = attributes.get("model");
-            handlerTupleList.add(new PolicyHandlerTuple(sd.getClassName(), intentQName, policyModelClassName));
-        }
-        return handlerTuples;
     }
 }

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2OneWayBindingInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2OneWayBindingInvoker.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2OneWayBindingInvoker.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2OneWayBindingInvoker.java Thu Feb 21 08:06:10 2008
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.sca.binding.ws.axis2;
 
+import java.util.List;
+
 import javax.xml.namespace.QName;
 
 import org.apache.axiom.soap.SOAPFactory;
@@ -28,15 +30,17 @@
 import org.apache.axis2.transport.http.HTTPConstants;
 import org.apache.axis2.wsdl.WSDLConstants;
 import org.apache.tuscany.sca.invocation.Message;
+import org.apache.tuscany.sca.policy.util.PolicyHandler;
 
 public class Axis2OneWayBindingInvoker extends Axis2BindingInvoker {
 
     public Axis2OneWayBindingInvoker(Axis2ServiceClient serviceClient,
                                      QName wsdlOperationName,
                                      Options options,
-                                     SOAPFactory soapFactory) {
+                                     SOAPFactory soapFactory,
+                                     List<PolicyHandler> policyHandlerList) {
 
-        super(serviceClient, wsdlOperationName, options, soapFactory);
+        super(serviceClient, wsdlOperationName, options, soapFactory, policyHandlerList);
     }
 
     @Override

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java Thu Feb 21 08:06:10 2008
@@ -20,6 +20,7 @@
 
 import java.io.IOException;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -50,7 +51,6 @@
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.description.AxisEndpoint;
 import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.Parameter;
 import org.apache.axis2.description.WSDL11ToAxisServiceBuilder;
 import org.apache.axis2.description.WSDL2Constants;
 import org.apache.axis2.transport.http.HTTPConstants;
@@ -58,7 +58,6 @@
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
 import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
-import org.apache.neethi.Policy;
 import org.apache.tuscany.sca.assembly.AbstractContract;
 import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
 import org.apache.tuscany.sca.host.http.ServletHost;
@@ -70,7 +69,6 @@
 import org.apache.tuscany.sca.policy.IntentAttachPoint;
 import org.apache.tuscany.sca.policy.PolicySet;
 import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
-import org.apache.tuscany.sca.policy.security.ws.Axis2ConfigParamPolicy;
 import org.apache.tuscany.sca.policy.util.PolicyHandler;
 import org.apache.tuscany.sca.policy.util.PolicyHandlerTuple;
 import org.apache.tuscany.sca.policy.util.PolicyHandlerUtils;
@@ -83,6 +81,8 @@
     private ServiceClient serviceClient;
     Map<ClassLoader, List<PolicyHandlerTuple>> policyHandlerClassnames = null;
     private static final QName SOAP12_INTENT = new QName("http://www.osoa.org/xmlns/sca/1.0", "soap12");
+    private List<PolicyHandler> policyHandlerList = new ArrayList<PolicyHandler>();
+
     
 
     public Axis2ServiceClient(RuntimeComponent component,
@@ -113,9 +113,8 @@
         try {
             TuscanyAxisConfigurator tuscanyAxisConfigurator = new TuscanyAxisConfigurator();
             ConfigurationContext configContext = tuscanyAxisConfigurator.getConfigurationContext();
-
-            //configureSecurity(configContext);
-            setupPolicies(configContext);
+            createPolicyHandlers();
+            setupPolicyHandlers(policyHandlerList, configContext);
             
             Definition wsdlDefinition = wsBinding.getWSDLDefinition().getDefinition();
             setServiceAndPort(wsBinding);
@@ -318,9 +317,9 @@
 
         Axis2BindingInvoker invoker;
         if (operation.isNonBlocking()) {
-            invoker = new Axis2OneWayBindingInvoker(this, wsdlOperationQName, options, soapFactory);
+            invoker = new Axis2OneWayBindingInvoker(this, wsdlOperationQName, options, soapFactory, policyHandlerList);
         } else {
-            invoker = new Axis2BindingInvoker(this, wsdlOperationQName, options, soapFactory);
+            invoker = new Axis2BindingInvoker(this, wsdlOperationQName, options, soapFactory, policyHandlerList);
         }
         return invoker;
     }
@@ -402,8 +401,9 @@
         return null;
     }
     
-    private void setupPolicies(ConfigurationContext configContext) throws IllegalAccessException,
-        InstantiationException, ClassNotFoundException {
+    
+    private void createPolicyHandlers() throws IllegalAccessException, InstantiationException,
+        ClassNotFoundException {
         if (wsBinding instanceof PolicySetAttachPoint) {
             PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)wsBinding;
             PolicyHandler policyHandler = null;
@@ -412,35 +412,15 @@
                     PolicyHandlerUtils.findPolicyHandler(policySet, policyHandlerClassnames);
                 if (policyHandler != null) {
                     policyHandler.setApplicablePolicySet(policySet);
-                    policyHandler.setUp(configContext);
+                    policyHandlerList.add(policyHandler);
                 }
             }
         }
     }
-    
-    /*private void configureSecurity(ConfigurationContext configContext) throws AxisFault {
-        if ( wsBinding instanceof PolicySetAttachPoint ) {
-            PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)wsBinding;
-            Parameter configParam = null;
-            Axis2ConfigParamPolicy axis2ConfigParamPolicy = null;
-            for ( PolicySet policySet : policiedBinding.getPolicySets() ) {
-                for ( Object policy : policySet.getPolicies() ) {
-                    if ( policy instanceof Axis2ConfigParamPolicy ) {
-                        axis2ConfigParamPolicy = (Axis2ConfigParamPolicy)policy;
-                        for ( String paramName : axis2ConfigParamPolicy.getParamElements().keySet() ) {
-                            configParam = new Parameter(paramName, 
-                                                        axis2ConfigParamPolicy.getParamElements().get(paramName).getFirstElement());
-                            configParam.setParameterElement(axis2ConfigParamPolicy.getParamElements().get(paramName));
-                            configContext.getAxisConfiguration().addParameter(configParam);
-                        }
-                    } else if ( policy instanceof Policy ) {
-                        Policy wsPolicy = (Policy)policy;
-                        configContext.getAxisConfiguration().applyPolicy(wsPolicy);
-                    }
-                }
-            }
-        }
-    }*/
-
 
+    private void setupPolicyHandlers(List<PolicyHandler> policyHandlers, ConfigurationContext configContext)  {
+        for ( PolicyHandler aHandler : policyHandlers ) {
+            aHandler.setUp(configContext);
+        }
+    }
 }

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInMessageReceiver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInMessageReceiver.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInMessageReceiver.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInMessageReceiver.java Thu Feb 21 08:06:10 2008
@@ -19,22 +19,27 @@
 package org.apache.tuscany.sca.binding.ws.axis2;
 
 import java.lang.reflect.InvocationTargetException;
+import java.util.List;
 
 import org.apache.axiom.om.OMElement;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.receivers.AbstractInMessageReceiver;
 import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.policy.util.PolicyHandler;
 
 public class Axis2ServiceInMessageReceiver extends AbstractInMessageReceiver {
 
     protected Operation operation;
 
     private Axis2ServiceProvider provider;
+    
+    private List<PolicyHandler> policyHandlerList = null;
 
-    public Axis2ServiceInMessageReceiver(Axis2ServiceProvider provider, Operation operation) {
+    public Axis2ServiceInMessageReceiver(Axis2ServiceProvider provider, Operation operation, List<PolicyHandler> policyHandlerList) {
         this.provider = provider;
         this.operation = operation;
+        this.policyHandlerList = policyHandlerList;
     }
 
     public Axis2ServiceInMessageReceiver() {
@@ -45,7 +50,16 @@
         try {
             OMElement requestOM = inMC.getEnvelope().getBody().getFirstElement();
             Object[] args = new Object[] {requestOM};
+            
+            for ( PolicyHandler policyHandler : policyHandlerList ) {
+                policyHandler.beforeInvoke(operation, args, inMC);
+            }
+            
             provider.invokeTarget(operation, args, inMC);
+            
+            for ( PolicyHandler policyHandler : policyHandlerList ) {
+                policyHandler.afterInvoke(operation, args, inMC);
+            }
 
         } catch (InvocationTargetException e) {
             Throwable t = e.getCause();

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInOutSyncMessageReceiver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInOutSyncMessageReceiver.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInOutSyncMessageReceiver.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInOutSyncMessageReceiver.java Thu Feb 21 08:06:10 2008
@@ -19,6 +19,7 @@
 package org.apache.tuscany.sca.binding.ws.axis2;
 
 import java.lang.reflect.InvocationTargetException;
+import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -30,18 +31,21 @@
 import org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.interfacedef.util.FaultException;
+import org.apache.tuscany.sca.policy.util.PolicyHandler;
 import org.osoa.sca.ServiceRuntimeException;
 
 public class Axis2ServiceInOutSyncMessageReceiver extends AbstractInOutSyncMessageReceiver {
     private static final Logger logger = Logger.getLogger(Axis2ServiceInOutSyncMessageReceiver.class.getName());
 	
     protected Operation operation;
+    private List<PolicyHandler> policyHandlerList = null;
 
     private Axis2ServiceProvider provider;
 
-    public Axis2ServiceInOutSyncMessageReceiver(Axis2ServiceProvider provider, Operation operation) {
+    public Axis2ServiceInOutSyncMessageReceiver(Axis2ServiceProvider provider, Operation operation, List<PolicyHandler> policyHandlerList) {
         this.provider = provider;
         this.operation = operation;
+        this.policyHandlerList = policyHandlerList;
     }
 
     public Axis2ServiceInOutSyncMessageReceiver() {
@@ -56,7 +60,16 @@
             if (requestOM != null) {
             	args = new Object[] {requestOM};
             }
+            
+            for ( PolicyHandler policyHandler : policyHandlerList ) {
+                policyHandler.beforeInvoke(operation, args, inMC);
+            }
+            
             OMElement responseOM = (OMElement)provider.invokeTarget(operation, args, inMC);
+            
+            for ( PolicyHandler policyHandler : policyHandlerList ) {
+                policyHandler.afterInvoke(operation, args, inMC, responseOM);
+            }
 
             SOAPEnvelope soapEnvelope = getSOAPFactory(inMC).getDefaultEnvelope();
             if (null != responseOM ) {

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java Thu Feb 21 08:06:10 2008
@@ -27,6 +27,7 @@
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.security.PrivilegedAction;
+import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -120,6 +121,7 @@
     private JMSSender jmsSender;
     private JMSListener jmsListener;
     private Map<ClassLoader, List<PolicyHandlerTuple>> policyHandlerClassnames = null;
+    private List<PolicyHandler> policyHandlerList = new ArrayList<PolicyHandler>();
 
     public static final QName QNAME_WSA_ADDRESS =
         new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.EPR_ADDRESS);
@@ -230,10 +232,11 @@
         // service for every port
 
         try {
+            createPolicyHandlers();
             AxisService axisService = createAxisService();
             configContext.getAxisConfiguration().addService( axisService );
             
-            setupPolicies(configContext);
+            setupPolicyHandlers(policyHandlerList, configContext);
           
             String endpointURL = axisService.getEndpointURL();
             if ( endpointURL.startsWith( "http://")  || endpointURL.startsWith("/")) {
@@ -544,9 +547,9 @@
 
                 MessageReceiver msgrec = null;
                 if (op.isNonBlocking()) {
-                    msgrec = new Axis2ServiceInMessageReceiver(this, op);
+                    msgrec = new Axis2ServiceInMessageReceiver(this, op, policyHandlerList);
                 } else {
-                    msgrec = new Axis2ServiceInOutSyncMessageReceiver(this, op);
+                    msgrec = new Axis2ServiceInOutSyncMessageReceiver(this, op, policyHandlerList);
                 }
                 axisOp.setMessageReceiver(msgrec);
             }
@@ -667,45 +670,29 @@
         return returnPolicySet;
     } 
     
-    private void setupPolicies(ConfigurationContext configContext) throws IllegalAccessException, 
-                                                                          InstantiationException,
-                                                                          ClassNotFoundException {
-        if ( wsBinding instanceof PolicySetAttachPoint ) {
-            PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)wsBinding; 
-            PolicyHandler policyHandler = null;
-            for ( PolicySet policySet : policiedBinding.getPolicySets() ) {
-                policyHandler = PolicyHandlerUtils.findPolicyHandler(policySet, policyHandlerClassnames);
-                    if ( policyHandler != null ) {
-                        policyHandler.setApplicablePolicySet(policySet);
-                        policyHandler.setUp(configContext);
-                    }
-            }
+    private void setupPolicyHandlers(List<PolicyHandler> policyHandlers, ConfigurationContext configContext)  {
+        for ( PolicyHandler aHandler : policyHandlers ) {
+            aHandler.setUp(configContext);
         }
     }
     
-    /*private void configureSecurity() throws AxisFault {
-        if ( wsBinding instanceof PolicySetAttachPoint ) {
-            PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)wsBinding; 
-            Parameter configParam = null;
-            Axis2ConfigParamPolicy axis2ConfigParamPolicy = null;
-            for ( PolicySet policySet : policiedBinding.getPolicySets() ) {
-                for ( Object policy : policySet.getPolicies() ) {
-                    if ( policy instanceof Axis2ConfigParamPolicy ) {
-                        axis2ConfigParamPolicy = (Axis2ConfigParamPolicy)policy;
-                        for ( String paramName : axis2ConfigParamPolicy.getParamElements().keySet() ) {
-                            configParam = new Parameter(paramName, 
-                                                        axis2ConfigParamPolicy.getParamElements().get(paramName).getFirstElement());
-                            configParam.setParameterElement(axis2ConfigParamPolicy.getParamElements().get(paramName));
-                            configContext.getAxisConfiguration().addParameter(configParam);
-                        }
-                    } else if ( policy instanceof Policy ) {
-                        Policy wsPolicy = (Policy)policy;
-                        configContext.getAxisConfiguration().applyPolicy(wsPolicy);
-                    }
+    private void createPolicyHandlers() throws IllegalAccessException,
+                                                              InstantiationException, 
+                                                              ClassNotFoundException {
+        if (wsBinding instanceof PolicySetAttachPoint) {
+            PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)wsBinding;
+            PolicyHandler policyHandler = null;
+            for (PolicySet policySet : policiedBinding.getPolicySets()) {
+                policyHandler =
+                    PolicyHandlerUtils.findPolicyHandler(policySet, policyHandlerClassnames);
+                if (policyHandler != null) {
+                    policyHandler.setApplicablePolicySet(policySet);
+                    policyHandlerList.add(policyHandler);
                 }
             }
         }
-    }*/
+    }
+     
     
     private void deployRampartModule()  throws DeploymentException, AxisFault {
     	ClassLoader tccl = (ClassLoader) org.apache.axis2.java.security.AccessController

Added: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/util/PolicyHandlerDefinitionsLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/util/PolicyHandlerDefinitionsLoader.java?rev=629842&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/util/PolicyHandlerDefinitionsLoader.java (added)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/util/PolicyHandlerDefinitionsLoader.java Thu Feb 21 08:06:10 2008
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.contribution.util;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.sca.policy.util.PolicyHandler;
+import org.apache.tuscany.sca.policy.util.PolicyHandlerTuple;
+
+/**
+ * Utility class for loading policy handler definitons from META-INF/services directories
+ */
+public class PolicyHandlerDefinitionsLoader {
+    
+    public static Map<ClassLoader, List<PolicyHandlerTuple>> loadPolicyHandlerClassnames()  {
+        // Get the processor service declarations
+        Set<ServiceDeclaration> sds;
+        try {
+            sds = ServiceDiscovery.getInstance().getServiceDeclarations(PolicyHandler.class);
+        } catch (IOException e) {
+            throw new IllegalStateException(e);
+        }
+        
+        Map<ClassLoader, List<PolicyHandlerTuple>> handlerTuples = new Hashtable<ClassLoader, List<PolicyHandlerTuple>>();
+        for (ServiceDeclaration sd : sds) {
+            ClassLoader cl = sd.getClassLoader();
+            
+            List<PolicyHandlerTuple> handlerTupleList = handlerTuples.get(cl);
+            if ( handlerTupleList == null ) {
+                handlerTupleList = new ArrayList<PolicyHandlerTuple>();
+                handlerTuples.put(cl, handlerTupleList);
+            }
+            Map<String, String> attributes = sd.getAttributes();
+            String intentName = attributes.get("intent");
+            QName intentQName = getQName(intentName);
+            String policyModelClassName = attributes.get("model");
+            String appliesTo = attributes.get("appliesTo");
+            if ( appliesTo != null && !appliesTo.startsWith("/") ) {
+                appliesTo = "//" + appliesTo;
+            }
+            handlerTupleList.add(new PolicyHandlerTuple(sd.getClassName(), intentQName, policyModelClassName, appliesTo));
+        }
+
+        return handlerTuples;
+    }
+    
+    private static QName getQName(String qname) { 
+        if (qname == null) {
+            return null;
+        }
+        qname = qname.trim();
+        if (qname.startsWith("{")) {
+            int h = qname.indexOf('}');
+            if (h != -1) {
+                return new QName(qname.substring(1, h), qname.substring(h + 1));
+            }
+        } else {
+            int h = qname.indexOf('#');
+            if (h != -1) {
+                return new QName(qname.substring(0, h), qname.substring(h + 1));
+            }
+        }
+        throw new IllegalArgumentException("Invalid qname: " + qname);
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/util/PolicyHandlerDefinitionsLoader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/util/PolicyHandlerDefinitionsLoader.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java Thu Feb 21 08:06:10 2008
@@ -21,23 +21,18 @@
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 import org.apache.tuscany.sca.assembly.ConfiguredOperation;
-import org.apache.tuscany.sca.assembly.Contract;
 import org.apache.tuscany.sca.assembly.OperationsConfigurator;
 import org.apache.tuscany.sca.implementation.java.JavaImplementation;
 import org.apache.tuscany.sca.invocation.Interceptor;
 import org.apache.tuscany.sca.invocation.InvocationChain;
 import org.apache.tuscany.sca.invocation.Invoker;
-import org.apache.tuscany.sca.policy.Intent;
 import org.apache.tuscany.sca.policy.PolicySet;
 import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
 import org.apache.tuscany.sca.policy.util.PolicyHandler;
-import org.apache.tuscany.sca.policy.util.PolicyHandlerTuple;
 import org.apache.tuscany.sca.policy.util.PolicyHandlerUtils;
 import org.apache.tuscany.sca.runtime.RuntimeComponent;
-import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
 import org.apache.tuscany.sca.runtime.RuntimeWire;
 import org.apache.tuscany.sca.runtime.RuntimeWireProcessor;
 
@@ -89,8 +84,12 @@
                                     for ( PolicySet policySet : confOp.getPolicySets() ) {
                                         policyHandler = 
                                             PolicyHandlerUtils.findPolicyHandler(policySet, javaImpl.getPolicyHandlerClassNames());
-                                        policyHandler.setUp(javaImpl);
-                                        applicablePolicyHandlers.add(policyHandler);
+                                        if ( policyHandler != null ) {
+                                            policyHandler.setUp(javaImpl);
+                                            applicablePolicyHandlers.add(policyHandler);
+                                        } else {
+                                            System.out.println("WARNING : No PolicyHandler registered for " + policySet);
+                                        }
                                     }
                                     break;
                                 }

Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/module/JavaRuntimeModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/module/JavaRuntimeModuleActivator.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/module/JavaRuntimeModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/module/JavaRuntimeModuleActivator.java Thu Feb 21 08:06:10 2008
@@ -34,6 +34,7 @@
 import org.apache.tuscany.sca.context.ContextFactoryExtensionPoint;
 import org.apache.tuscany.sca.context.RequestContextFactory;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.util.PolicyHandlerDefinitionsLoader;
 import org.apache.tuscany.sca.contribution.util.ServiceDeclaration;
 import org.apache.tuscany.sca.contribution.util.ServiceDiscovery;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
@@ -125,12 +126,8 @@
         RequestContextFactory requestContextFactory = contextFactories.getFactory(RequestContextFactory.class);
 
         Map<ClassLoader, List<PolicyHandlerTuple>> policyHandlerClassNames = null;
-        try {
-            policyHandlerClassNames = loadPolicyHandlerClassnames();
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-
+        policyHandlerClassNames = PolicyHandlerDefinitionsLoader.loadPolicyHandlerClassnames();
+        
         JavaImplementationProviderFactory javaImplementationProviderFactory =
             new JavaImplementationProviderFactory(proxyFactory, dataBindings, factory, componentContextFactory,
                                                   requestContextFactory, policyHandlerClassNames);
@@ -151,67 +148,4 @@
 
     public void stop(ExtensionPointRegistry registry) {
     }
-
-    private static QName getQName(String qname) {
-        if (qname == null) {
-            return null;
-        }
-        qname = qname.trim();
-        if (qname.startsWith("{")) {
-            int h = qname.indexOf('}');
-            if (h != -1) {
-                return new QName(qname.substring(1, h), qname.substring(h + 1));
-            }
-        } else {
-            int h = qname.indexOf('#');
-            if (h != -1) {
-                return new QName(qname.substring(0, h), qname.substring(h + 1));
-            }
-        }
-        throw new IllegalArgumentException("Invalid qname: " + qname);
-    }
-
-    private Map<ClassLoader, List<PolicyHandlerTuple>> loadPolicyHandlerClassnames() throws IOException {
-        // Get the processor service declarations
-        Set<ServiceDeclaration> sds;
-        try {
-            sds = ServiceDiscovery.getInstance().getServiceDeclarations(PolicyHandler.class);
-        } catch (IOException e) {
-            throw new IllegalStateException(e);
-        }
-        
-        Map<ClassLoader, List<PolicyHandlerTuple>> handlerTuples = new Hashtable<ClassLoader, List<PolicyHandlerTuple>>();
-        for (ServiceDeclaration sd : sds) {
-            ClassLoader cl = sd.getClassLoader();
-            
-            List<PolicyHandlerTuple> handlerTupleList = handlerTuples.get(cl);
-            if ( handlerTupleList == null ) {
-                handlerTupleList = new ArrayList<PolicyHandlerTuple>();
-                handlerTuples.put(cl, handlerTupleList);
-            }
-            Map<String, String> attributes = sd.getAttributes();
-            String intentName = attributes.get("intent");
-            QName intentQName = getQName(intentName);
-            String policyModelClassName = attributes.get("model");
-            handlerTupleList.add(new PolicyHandlerTuple(sd.getClassName(), intentQName, policyModelClassName));
-        }
-
-        /*Map<ClassLoader, Map<QName, String>> policyHandlerClassNames = new HashMap<ClassLoader, Map<QName, String>>();
-
-        for (ServiceDeclaration sd : sds) {
-            Map<String, String> attributes = sd.getAttributes();
-            String qname = attributes.get("qname");
-            QName name = getQName(qname);
-            ClassLoader cl = sd.getClassLoader();
-            Map<QName, String> map = policyHandlerClassNames.get(cl);
-            if (map == null) {
-                map = new HashMap<QName, String>();
-                policyHandlerClassNames.put(cl, map);
-            }
-            map.put(name, sd.getClassName());
-        }
-        */
-        return handlerTuples;
-    }
-
 }

Modified: incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyHandlerTuple.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyHandlerTuple.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyHandlerTuple.java (original)
+++ incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyHandlerTuple.java Thu Feb 21 08:06:10 2008
@@ -28,13 +28,24 @@
     private String policyHandlerClassName;
     private QName providedIntentName;
     private String policyModelClassName;
+    private String appliesTo;
     
+    public String getAppliesTo() {
+        return appliesTo;
+    }
+
+    public void setAppliesTo(String appliesTo) {
+        this.appliesTo = appliesTo;
+    }
+
     public PolicyHandlerTuple(String handlerClassName,
                               QName providedIntentName,
-                              String policyModelClassName) {
+                              String policyModelClassName,
+                              String appliesTo) {
         this.policyHandlerClassName = handlerClassName;
         this.providedIntentName = providedIntentName;
         this.policyModelClassName = policyModelClassName;
+        this.appliesTo = appliesTo;
     }
     
     public String getPolicyHandlerClassName() {
@@ -55,4 +66,9 @@
     public void setProvidedIntentName(QName providedIntentName) {
         this.providedIntentName = providedIntentName;
     }
+    
+    public String toString() {
+        return policyHandlerClassName + ", " + providedIntentName + ", " + policyModelClassName + ", " + appliesTo;
+    }
+    
 }

Modified: incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyHandlerUtils.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyHandlerUtils.java?rev=629842&r1=629841&r2=629842&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyHandlerUtils.java (original)
+++ incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyHandlerUtils.java Thu Feb 21 08:06:10 2008
@@ -37,16 +37,28 @@
         
         for (ClassLoader classLoader : policyHandlerClassNames.keySet()) {
             for ( PolicyHandlerTuple handlerTuple : policyHandlerClassNames.get(classLoader) ) {
+                //System.out.println(handlerTuple);
                 for ( Intent intent : policySet.getProvidedIntents() ) {
                     if ( intent.getName().equals(handlerTuple.getProvidedIntentName())) {
                         for ( Object policy : policySet.getPolicies() ) {
                             if ( policy.getClass().getName().equals(handlerTuple.getPolicyModelClassName())) {
-                                handler = 
-                                    (PolicyHandler)Class.forName(handlerTuple.getPolicyHandlerClassName(), 
-                                                                 true, 
-                                                                 classLoader).newInstance();
-                                    handler.setApplicablePolicySet(policySet);
-                                    return handler;
+                                if ( handlerTuple.getAppliesTo() != null  ) {
+                                    if ( handlerTuple.getAppliesTo().equals(policySet.getAppliesTo() )) {
+                                        handler = 
+                                            (PolicyHandler)Class.forName(handlerTuple.getPolicyHandlerClassName(), 
+                                                                         true, 
+                                                                         classLoader).newInstance();
+                                            handler.setApplicablePolicySet(policySet);
+                                            return handler;
+                                    }
+                                } else {
+                                    handler = 
+                                        (PolicyHandler)Class.forName(handlerTuple.getPolicyHandlerClassName(), 
+                                                                     true, 
+                                                                     classLoader).newInstance();
+                                        handler.setApplicablePolicySet(policySet);
+                                        return handler;
+                                }
                             }
                         }
                     }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org