Author: svkrish
Date: Thu Nov 22 09:41:28 2007
New Revision: 597465

URL: http://svn.apache.org/viewvc?rev=597465&view=rev
Log:
completing support for policies on implementation operations

Added:
    
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.java.PolicySetHandlers
Modified:
    
incubator/tuscany/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/implementation/java/impl/BeanJavaImplementationImpl.java
    
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaComponentContextProvider.java
    
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaImplementationProvider.java
    
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaImplementationProviderFactory.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/invocation/PolicyHandlingInterceptor.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/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/JavaImplementation.java
    
incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/JavaImplementationImpl.java
    
incubator/tuscany/java/sca/modules/policy-logging/src/main/java/org/apache/tuscany/sca/policy/logging/jdk/JDKLoggingPolicyHandler.java

Modified: 
incubator/tuscany/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/implementation/java/impl/BeanJavaImplementationImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/implementation/java/impl/BeanJavaImplementationImpl.java?rev=597465&r1=597464&r2=597465&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/implementation/java/impl/BeanJavaImplementationImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/implementation/java/impl/BeanJavaImplementationImpl.java
 Thu Nov 22 09:41:28 2007
@@ -23,17 +23,16 @@
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 
+import javax.xml.namespace.QName;
+
 import org.apache.tuscany.sca.implementation.java.JavaImplementation;
 import org.apache.tuscany.sca.implementation.java.impl.JavaConstructorImpl;
 import org.apache.tuscany.sca.implementation.java.impl.JavaElementImpl;
 import org.apache.tuscany.sca.implementation.java.impl.JavaResourceImpl;
 import org.apache.tuscany.sca.implementation.java.impl.JavaScopeImpl;
-import org.apache.tuscany.sca.policy.PolicySet;
-import org.apache.tuscany.sca.policy.util.PolicyHandler;
 import org.springframework.beans.factory.support.BeanDefinitionRegistry;
 
 /**
@@ -60,7 +59,7 @@
     private long maxAge = -1;
     private long maxIdleTime = -1;
     private JavaScopeImpl scope = JavaScopeImpl.STATELESS;
-    private Map<PolicySet, PolicyHandler> policyHandlers = new 
Hashtable<PolicySet, PolicyHandler>();
+    private Map<ClassLoader, Map<QName, String>> policyHandlerClassNames = 
null;
 
     protected BeanJavaImplementationImpl(BeanDefinitionRegistry beanRegistry) {
         super(beanRegistry);
@@ -166,7 +165,11 @@
         this.maxIdleTime = maxIdleTime;
     }
     
-    public Map<PolicySet, PolicyHandler> getPolicyHandlers() {
-        return policyHandlers;
+    public Map<ClassLoader, Map<QName, String>> getPolicyHandlerClassNames() {
+        return policyHandlerClassNames;
+    }
+
+    public void setPolicyHandlerClassNames(Map<ClassLoader, Map<QName, 
String>> policyHandlerClassNames) {
+        this.policyHandlerClassNames = policyHandlerClassNames;
     }
 }

Modified: 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaComponentContextProvider.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/JavaComponentContextProvider.java?rev=597465&r1=597464&r2=597465&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaComponentContextProvider.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaComponentContextProvider.java
 Thu Nov 22 09:41:28 2007
@@ -28,6 +28,8 @@
 import java.util.List;
 import java.util.Map;
 
+import javax.xml.namespace.QName;
+
 import org.apache.tuscany.sca.assembly.ComponentProperty;
 import org.apache.tuscany.sca.assembly.ComponentReference;
 import org.apache.tuscany.sca.assembly.ComponentService;
@@ -57,7 +59,6 @@
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.interfacedef.java.impl.JavaInterfaceUtil;
 import org.apache.tuscany.sca.invocation.Invoker;
-import org.apache.tuscany.sca.policy.PolicySet;
 import org.apache.tuscany.sca.policy.util.PolicyHandler;
 import org.apache.tuscany.sca.runtime.RuntimeComponent;
 import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
@@ -76,15 +77,13 @@
     private RuntimeComponent component;
     private JavaInstanceFactoryProvider<?> instanceFactoryProvider;
     private ProxyFactory proxyFactory;
-    private Map<PolicySet, PolicyHandler> policyHandlers = null;
 
     public JavaComponentContextProvider(RuntimeComponent component,
                                         JavaInstanceFactoryProvider 
configuration,
                                         DataBindingExtensionPoint 
dataBindingExtensionPoint,
                                         JavaPropertyValueObjectFactory 
propertyValueObjectFactory,
                                         ComponentContextFactory 
componentContextFactory,
-                                        RequestContextFactory 
requestContextFactory,
-                                        Map<PolicySet, PolicyHandler> 
policyHandlers) {
+                                        RequestContextFactory 
requestContextFactory) {
         super();
         this.instanceFactoryProvider = configuration;
         this.proxyFactory = configuration.getProxyFactory();
@@ -96,7 +95,6 @@
         this.component = component;
         this.dataBindingRegistry = dataBindingExtensionPoint;
         this.propertyValueFactory = propertyValueObjectFactory;
-        this.policyHandlers = policyHandlers;
     }
 
     InstanceWrapper<?> createInstanceWrapper() throws ObjectCreationException {
@@ -250,7 +248,7 @@
         ComponentContextImpl ccImpl = 
(ComponentContextImpl)component.getComponentContext();
         ccImpl.setPropertyValueFactory(propertyValueFactory);
 
-        setUpPolicyHandlers();
+        //setUpPolicyHandlers();
     }
 
     void addResourceFactory(String name, ObjectFactory<?> factory) {
@@ -290,20 +288,14 @@
     }
 
     void stop() {
-        cleanUpPolicyHandlers();
+        //cleanUpPolicyHandlers();
     }
 
     Invoker createInvoker(Operation operation) throws NoSuchMethodException {
         Class<?> implClass = instanceFactoryProvider.getImplementationClass();
 
         Method method = JavaInterfaceUtil.findMethod(implClass, operation);
-
-        /*if ( component.getImplementation() instanceof PolicySetAttachPoint  
&&
-              
!((PolicySetAttachPoint)component.getImplementation()).getPolicySets().isEmpty()
 ) {
-            return new PoliciedJavaImplementationInvoker(operation, method, 
component, policyHandlers);
-        } else {*/
         return new JavaImplementationInvoker(operation, method, component);
-        //}
     }
 
     private static class OptimizedObjectFactory<T> implements ObjectFactory<T> 
{
@@ -375,16 +367,16 @@
         return component;
     }
 
-    private void setUpPolicyHandlers() {
+    /*private void setUpPolicyHandlers() {
         for (PolicyHandler policyHandler : policyHandlers.values()) {
             policyHandler.setUp(component.getImplementation());
         }
     }
 
     private void cleanUpPolicyHandlers() {
-        for (PolicyHandler policyHandler : policyHandlers.values()) {
+        for (PolicyHandler policyHandler : policyHandlers.values() ) {
             policyHandler.cleanUp(this);
         }
-    }
+    }*/
 
 }

Modified: 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaImplementationProvider.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/JavaImplementationProvider.java?rev=597465&r1=597464&r2=597465&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaImplementationProvider.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaImplementationProvider.java
 Thu Nov 22 09:41:28 2007
@@ -19,18 +19,13 @@
 
 package org.apache.tuscany.sca.implementation.java.invocation;
 
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Hashtable;
 import java.util.Map;
-import java.util.Set;
 
 import javax.xml.namespace.QName;
 
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.context.ComponentContextFactory;
 import org.apache.tuscany.sca.context.RequestContextFactory;
-import org.apache.tuscany.sca.contribution.util.ServiceDiscovery;
 import org.apache.tuscany.sca.core.context.InstanceWrapper;
 import org.apache.tuscany.sca.core.factory.ObjectFactory;
 import org.apache.tuscany.sca.core.invocation.ProxyFactory;
@@ -45,10 +40,6 @@
 import 
org.apache.tuscany.sca.implementation.java.injection.ResourceObjectFactory;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.invocation.Invoker;
-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.PolicySetHandlerUtil;
 import org.apache.tuscany.sca.runtime.RuntimeComponent;
 import org.apache.tuscany.sca.runtime.RuntimeComponentService;
 import org.osoa.sca.ComponentContext;
@@ -61,8 +52,6 @@
     private JavaImplementation implementation;
     private JavaComponentContextProvider componentContextProvider;
     private RequestContextFactory requestContextFactory;
-    private Map<ClassLoader, Map<QName, String>> policyHandlerClassNames = 
null;
-    private static final String POLICY_HANDLERS_STORE_FILE = 
"org.apache.tuscany.sca.implementation.java.PolicySetHandlers";
     
     public JavaImplementationProvider(RuntimeComponent component,
                                       JavaImplementation implementation,
@@ -70,16 +59,23 @@
                                       DataBindingExtensionPoint 
dataBindingRegistry,
                                       JavaPropertyValueObjectFactory 
propertyValueObjectFactory,
                                       ComponentContextFactory 
componentContextFactory,
-                                      RequestContextFactory 
requestContextFactory) {
+                                      RequestContextFactory 
requestContextFactory,
+                                      Map<ClassLoader, Map<QName, String>> 
policyHandlerClassNames) {
         super();
         this.implementation = implementation;
         this.requestContextFactory = requestContextFactory;
+        
this.implementation.setPolicyHandlerClassNames(policyHandlerClassNames);
+        
         try {
             JavaInstanceFactoryProvider configuration = new 
JavaInstanceFactoryProvider(implementation);
             configuration.setProxyFactory(proxyService);
             componentContextProvider =
-                new JavaComponentContextProvider(component, configuration, 
dataBindingRegistry, propertyValueObjectFactory,
-                                      componentContextFactory, 
requestContextFactory, implementation.getPolicyHandlers());
+                new JavaComponentContextProvider(component, 
+                                                 configuration, 
+                                                 dataBindingRegistry,
+                                                 propertyValueObjectFactory,
+                                                 componentContextFactory, 
+                                                 requestContextFactory);
 
             Scope scope = getScope();
 
@@ -108,7 +104,6 @@
 
             
componentContextProvider.configureProperties(component.getProperties());
             handleResources(implementation, proxyService);
-            loadPolicyHandlers(implementation);
         } catch (Exception e) {
             throw new IllegalStateException(e);
         }
@@ -116,7 +111,7 @@
     }
     
 
-    private void loadPolicyHandlers(JavaImplementation javaImpl) throws 
Exception {
+    /*private void loadPolicyHandlers(JavaImplementation javaImpl) throws 
Exception {
         if ( policyHandlerClassNames == null ) {
             Hashtable<ClassLoader, Set<URL>> policySetResources = 
                        
ServiceDiscovery.getInstance().getServiceResources(POLICY_HANDLERS_STORE_FILE);
@@ -127,28 +122,33 @@
             }
         }
         
+        
         if ( implementation instanceof PolicySetAttachPoint ) {
-            PolicyHandler aHandler = null;
-            PolicySetAttachPoint policiedImpl = 
(PolicySetAttachPoint)implementation;
-            for ( PolicySet policySet : policiedImpl.getPolicySets() ) {
-                String handlerClassName = null;
-                for (ClassLoader classLoader : 
policyHandlerClassNames.keySet()) {
-                       handlerClassName = 
policyHandlerClassNames.get(classLoader).get(policySet.getName());
-                       if ( handlerClassName != null ) {
-                        aHandler = 
-                            (PolicyHandler)Class.forName(handlerClassName, 
true, classLoader).newInstance();
-                        aHandler.setApplicablePolicySet(policySet);
-                        javaImpl.getPolicyHandlers().put(policySet, aHandler);
-                        break;
-                       }
-                }
-                                
-                if (aHandler == null) {
-                    //FIXME : maybe there must be a warning thrown here
+            loadHandlerClasses(javaImpl);
+        }
+            
+            
+    }*/
+    
+    /*private void loadHandlerClasses(JavaImplementation javaImpl) throws 
Exception {
+        String handlerClassName = null;
+        PolicyHandler aHandler = null;
+        for (ClassLoader classLoader : policyHandlerClassNames.keySet()) {
+            Map<QName, String> policyHandlerClassnamesMap = 
policyHandlerClassNames.get(classLoader);
+            for ( QName policySetName : policyHandlerClassnamesMap.keySet() ) {
+                handlerClassName = 
policyHandlerClassnamesMap.get(policySetName);
+                if ( handlerClassName != null ) {
+                    aHandler = 
+                        (PolicyHandler)Class.forName(handlerClassName, true, 
classLoader).newInstance();
+                    if ( aHandler != null ) {
+                        javaImpl.getPolicyHandlers().put(policySetName, 
aHandler);
+                    } 
                 }
             }
-        }      
-    }
+        }
+        
+    }*/
+    
 
     private void handleResources(JavaImplementation componentType, 
ProxyFactory proxyService) {
         for (JavaResourceImpl resource : 
componentType.getResources().values()) {

Modified: 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaImplementationProviderFactory.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/JavaImplementationProviderFactory.java?rev=597465&r1=597464&r2=597465&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaImplementationProviderFactory.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaImplementationProviderFactory.java
 Thu Nov 22 09:41:28 2007
@@ -19,6 +19,10 @@
 
 package org.apache.tuscany.sca.implementation.java.invocation;
 
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
 import org.apache.tuscany.sca.context.ComponentContextFactory;
 import org.apache.tuscany.sca.context.RequestContextFactory;
 import org.apache.tuscany.sca.core.invocation.ProxyFactory;
@@ -38,24 +42,33 @@
     private ProxyFactory proxyService;
     private ComponentContextFactory componentContextFactory;
     private RequestContextFactory requestContextFactory;
+    private Map<ClassLoader, Map<QName, String>> policyHandlerClassNames = 
null;
 
     public JavaImplementationProviderFactory(ProxyFactory proxyService,
                                              DataBindingExtensionPoint 
dataBindingRegistry,
                                              JavaPropertyValueObjectFactory 
propertyValueObjectFactory,
                                              ComponentContextFactory 
componentContextFactory,
-                                             RequestContextFactory 
requestContextFactory) {
+                                             RequestContextFactory 
requestContextFactory,
+                                             Map<ClassLoader, Map<QName, 
String>> policyHandlerClassNames) {
         super();
         this.proxyService = proxyService;
         this.dataBindingRegistry = dataBindingRegistry;
         this.propertyValueObjectFactory = propertyValueObjectFactory;
         this.componentContextFactory = componentContextFactory;
         this.requestContextFactory = requestContextFactory;
+        this.policyHandlerClassNames = policyHandlerClassNames;
     }
 
     public ImplementationProvider 
createImplementationProvider(RuntimeComponent component,
                                                                
JavaImplementation implementation) {
-        return new JavaImplementationProvider(component, implementation, 
proxyService, dataBindingRegistry,
-                                              propertyValueObjectFactory, 
componentContextFactory, requestContextFactory);
+        return new JavaImplementationProvider(component, 
+                                              implementation, 
+                                              proxyService, 
+                                              dataBindingRegistry,
+                                              propertyValueObjectFactory, 
+                                              componentContextFactory, 
+                                              requestContextFactory,
+                                              policyHandlerClassNames);
     }
 
     public Class<JavaImplementation> getModelType() {

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=597465&r1=597464&r2=597465&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 Nov 22 09:41:28 2007
@@ -19,9 +19,20 @@
 
 package org.apache.tuscany.sca.implementation.java.invocation;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+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.InvocationChain;
+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.runtime.RuntimeComponent;
 import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
 import org.apache.tuscany.sca.runtime.RuntimeWire;
@@ -45,17 +56,66 @@
         if ( component != null && component.getImplementation() instanceof 
JavaImplementation ) {
             JavaImplementation javaImpl = 
(JavaImplementation)component.getImplementation();
             
-            //if the implementation has policysets specified and if there are 
-            //handlers for those policysets
-            if ( !javaImpl.getPolicyHandlers().isEmpty() ) {
-                //TODO: Right now we assume policy handlers are to be applied 
for all operations
-                //... need to modify this if certain policies apply only to 
select operations 
-                for (InvocationChain chain : wire.getInvocationChains() ) { 
-                    chain.addInterceptor(0, new 
PolicyHandlingInterceptor(chain.getTargetOperation(),
-                                                                       
javaImpl.getPolicyHandlers()));
-                }   
+            if ( javaImpl instanceof PolicySetAttachPoint ) {
+                PolicyHandler policyHandler = null;
+                List<PolicyHandler> implPolicyHandlers = new 
ArrayList<PolicyHandler>();
+                PolicySetAttachPoint policiedImpl = 
(PolicySetAttachPoint)javaImpl;
+                
+                try {
+                    for ( PolicySet policySet : policiedImpl.getPolicySets() ) 
{
+                        policyHandler = getPolicyHandler(policySet, 
javaImpl.getPolicyHandlerClassNames());
+                        policyHandler.setUp(javaImpl);
+                        implPolicyHandlers.add(policyHandler);
+                    }    
+                    
+                    List<PolicyHandler> applicablePolicyHandlers = null;
+                    for (InvocationChain chain : wire.getInvocationChains() ) {
+                        applicablePolicyHandlers = new 
ArrayList<PolicyHandler>(implPolicyHandlers);
+                        if ( javaImpl instanceof OperationsConfigurator ) {
+                            String operationName = 
chain.getTargetOperation().getName();
+                            OperationsConfigurator opConfigurator = 
(OperationsConfigurator)javaImpl;
+                            for ( ConfiguredOperation confOp : 
opConfigurator.getConfiguredOperations() ) {
+                                if ( confOp.getName().equals(operationName)) {
+                                    for ( PolicySet policySet : 
confOp.getPolicySets() ) {
+                                        policyHandler = 
getPolicyHandler(policySet, javaImpl.getPolicyHandlerClassNames());
+                                        policyHandler.setUp(javaImpl);
+                                        
applicablePolicyHandlers.add(policyHandler);
+                                    }
+                                }
+                            }
+                        }
+                        
+                        if ( !applicablePolicyHandlers.isEmpty() ) {
+                            chain.addInterceptor(0, new 
PolicyHandlingInterceptor(chain.getTargetOperation(),
+                                                                               
   applicablePolicyHandlers));
+                        }
+                    }
+                } catch ( Exception e ) {
+                    throw new RuntimeException(e);
+                }
             }
         }
     }
-
+    
+    private PolicyHandler getPolicyHandler(PolicySet policySet, 
+                                           Map<ClassLoader, Map<QName, 
String>> policyHandlerClassNames) throws IllegalAccessException, 
ClassNotFoundException, InstantiationException {
+        PolicyHandler handler = null;
+        String handlerClassName = null;
+        
+        for (ClassLoader classLoader : policyHandlerClassNames.keySet()) {
+            Map<QName, String> policyHandlerClassnamesMap = 
policyHandlerClassNames.get(classLoader);
+            for ( QName policySetName : policyHandlerClassnamesMap.keySet() ) {
+                if ( policySet.getName().equals(policySetName) ) {
+                    handlerClassName = 
policyHandlerClassnamesMap.get(policySet.getName());
+                    if ( handlerClassName != null ) {
+                        handler = 
+                            (PolicyHandler)Class.forName(handlerClassName, 
true, classLoader).newInstance();
+                        handler.setApplicablePolicySet(policySet);
+                        break;
+                    }
+                }
+            }
+        } 
+        return handler;
+    }
 }

Modified: 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/PolicyHandlingInterceptor.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/PolicyHandlingInterceptor.java?rev=597465&r1=597464&r2=597465&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/PolicyHandlingInterceptor.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/PolicyHandlingInterceptor.java
 Thu Nov 22 09:41:28 2007
@@ -18,13 +18,12 @@
  */
 package org.apache.tuscany.sca.implementation.java.invocation;
 
-import java.util.Map;
+import java.util.List;
 
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.invocation.Interceptor;
 import org.apache.tuscany.sca.invocation.Invoker;
 import org.apache.tuscany.sca.invocation.Message;
-import org.apache.tuscany.sca.policy.PolicySet;
 import org.apache.tuscany.sca.policy.util.PolicyHandler;
 
 /**
@@ -33,11 +32,11 @@
  */
 public class PolicyHandlingInterceptor implements Interceptor {
     private Invoker next;
-    private Map<PolicySet, PolicyHandler> policyHandlers = null;
+    private List<PolicyHandler> policyHandlers = null;
     private Operation targetOperation = null;
 
     public PolicyHandlingInterceptor(Operation targetOperation,
-                                     Map<PolicySet, PolicyHandler> 
policyHandlers) {
+                                     List<PolicyHandler> policyHandlers) {
         this.policyHandlers = policyHandlers;
         this.targetOperation = targetOperation;
     }
@@ -58,13 +57,13 @@
     }
     
     private void applyPreInvocationPolicies(Object... context) {
-        for ( PolicyHandler policyHandler : policyHandlers.values() ) {
+        for ( PolicyHandler policyHandler : policyHandlers ) {
             policyHandler.beforeInvoke(context);
         }
     }
     
     private void applyPostInvocationPolices(Object...  context) {
-        for ( PolicyHandler policyHandler : policyHandlers.values() ) {
+        for ( PolicyHandler policyHandler : policyHandlers ) {
             policyHandler.afterInvoke(context);
         }
     }

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=597465&r1=597464&r2=597465&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 Nov 22 09:41:28 2007
@@ -19,11 +19,21 @@
 
 package org.apache.tuscany.sca.implementation.java.module;
 
+import java.io.IOException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.namespace.QName;
+
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.context.ComponentContextFactory;
 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.ServiceDiscovery;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.ModuleActivator;
 import org.apache.tuscany.sca.core.invocation.CglibProxyFactory;
@@ -59,6 +69,7 @@
 import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
 import org.apache.tuscany.sca.invocation.MessageFactory;
 import org.apache.tuscany.sca.policy.PolicyFactory;
+import org.apache.tuscany.sca.policy.util.PolicySetHandlerUtil;
 import org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint;
 import org.apache.tuscany.sca.runtime.RuntimeWireProcessorExtensionPoint;
 
@@ -66,6 +77,7 @@
  * @version $Rev$ $Date$
  */
 public class JavaRuntimeModuleActivator implements ModuleActivator {
+    private static final String POLICY_HANDLERS_STORE_FILE = 
"org.apache.tuscany.sca.implementation.java.PolicySetHandlers";
     
     public JavaRuntimeModuleActivator() {
     }
@@ -114,9 +126,21 @@
         ContextFactoryExtensionPoint contextFactories = 
registry.getExtensionPoint(ContextFactoryExtensionPoint.class);
         ComponentContextFactory componentContextFactory = 
contextFactories.getFactory(ComponentContextFactory.class);
         RequestContextFactory requestContextFactory = 
contextFactories.getFactory(RequestContextFactory.class);
+        
+        Map<ClassLoader, Map<QName, String>> policyHandlerClassNames = null;
+        try {
+            policyHandlerClassNames = loadPolicyHandlerClassnames();
+        } catch ( IOException e ) {
+            throw new RuntimeException(e);
+        }
+        
         JavaImplementationProviderFactory javaImplementationProviderFactory =
-            new JavaImplementationProviderFactory(proxyFactory, dataBindings, 
factory, componentContextFactory,
-                                                  requestContextFactory);
+            new JavaImplementationProviderFactory(proxyFactory, 
+                                                  dataBindings, 
+                                                  factory, 
+                                                  componentContextFactory,
+                                                  requestContextFactory,
+                                                  policyHandlerClassNames);
         
         ProviderFactoryExtensionPoint providerFactories = 
registry.getExtensionPoint(ProviderFactoryExtensionPoint.class);
         
providerFactories.addProviderFactory(javaImplementationProviderFactory);
@@ -130,6 +154,19 @@
     }
 
     public void stop(ExtensionPointRegistry registry) {
+    }
+    
+    private Map<ClassLoader, Map<QName, String>> loadPolicyHandlerClassnames() 
throws IOException {
+        Map<ClassLoader, Map<QName, String>> policyHandlerClassNames = 
+                                    new HashMap<ClassLoader, Map<QName, 
String>>();
+        Hashtable<ClassLoader, Set<URL>> policySetResources = 
+                
ServiceDiscovery.getInstance().getServiceResources(POLICY_HANDLERS_STORE_FILE);
+        for (ClassLoader classLoader : policySetResources.keySet()) {
+            policyHandlerClassNames.put(classLoader, 
PolicySetHandlerUtil.getPolicyHandlers(
+                    classLoader, policySetResources.get(classLoader)));
+        }
+
+        return policyHandlerClassNames;
     }
 
 }

Added: 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.java.PolicySetHandlers
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.java.PolicySetHandlers?rev=597465&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.java.PolicySetHandlers
 (added)
+++ 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.java.PolicySetHandlers
 Thu Nov 22 09:41:28 2007
@@ -0,0 +1,18 @@
+# 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.
+# Implementation class for the ModuleActivator
+{http\://tuscany.apache.org/xmlns/sca/1.0}JDKLoggingPolicy=org.apache.tuscany.sca.policy.logging.jdk.JDKLoggingPolicyHandler

Modified: 
incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/JavaImplementation.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/JavaImplementation.java?rev=597465&r1=597464&r2=597465&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/JavaImplementation.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/JavaImplementation.java
 Thu Nov 22 09:41:28 2007
@@ -25,12 +25,12 @@
 import java.util.List;
 import java.util.Map;
 
+import javax.xml.namespace.QName;
+
 import org.apache.tuscany.sca.implementation.java.impl.JavaConstructorImpl;
 import org.apache.tuscany.sca.implementation.java.impl.JavaElementImpl;
 import org.apache.tuscany.sca.implementation.java.impl.JavaResourceImpl;
 import org.apache.tuscany.sca.implementation.java.impl.JavaScopeImpl;
-import org.apache.tuscany.sca.policy.PolicySet;
-import org.apache.tuscany.sca.policy.util.PolicyHandler;
 
 /**
  * Represents a Java implementation.
@@ -186,8 +186,13 @@
     public void setMaxIdleTime(long maxIdleTime);
     
     /**
-     * @return the map of policy handlers that need to be applied to the 
implementation instance
+     * @return the map of a policy handler classnames
      */
-    public Map<PolicySet, PolicyHandler> getPolicyHandlers();
-
+    public Map<ClassLoader, Map<QName, String>> getPolicyHandlerClassNames();
+    
+    /**
+     * @param map of policyhandler classnames
+     */
+    public void setPolicyHandlerClassNames(Map<ClassLoader, Map<QName, 
String>> policyHandlerClassNames);
+        
 }

Modified: 
incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/JavaImplementationImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/JavaImplementationImpl.java?rev=597465&r1=597464&r2=597465&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/JavaImplementationImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/JavaImplementationImpl.java
 Thu Nov 22 09:41:28 2007
@@ -23,14 +23,12 @@
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.tuscany.sca.assembly.ConfiguredOperation;
+import javax.xml.namespace.QName;
+
 import org.apache.tuscany.sca.implementation.java.JavaImplementation;
-import org.apache.tuscany.sca.policy.PolicySet;
-import org.apache.tuscany.sca.policy.util.PolicyHandler;
 
 /**
  * A component type specialization for POJO implementations
@@ -53,7 +51,7 @@
     private long maxAge = -1;
     private long maxIdleTime = -1;
     private JavaScopeImpl scope = JavaScopeImpl.STATELESS;
-    private Map<PolicySet, PolicyHandler> policyHandlers = new 
Hashtable<PolicySet, PolicyHandler>();
+    private Map<ClassLoader, Map<QName, String>> policyHandlerClassNames = 
null;
     
     protected JavaImplementationImpl() {
         super();
@@ -159,7 +157,12 @@
         this.maxIdleTime = maxIdleTime;
     }
 
-    public Map<PolicySet, PolicyHandler> getPolicyHandlers() {
-        return policyHandlers;
+    public Map<ClassLoader, Map<QName, String>> getPolicyHandlerClassNames() {
+        return policyHandlerClassNames;
+    }
+
+    public void setPolicyHandlerClassNames(Map<ClassLoader, Map<QName, 
String>> policyHandlerClassNames) {
+        this.policyHandlerClassNames = policyHandlerClassNames;
     }
+ 
 }

Modified: 
incubator/tuscany/java/sca/modules/policy-logging/src/main/java/org/apache/tuscany/sca/policy/logging/jdk/JDKLoggingPolicyHandler.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/policy-logging/src/main/java/org/apache/tuscany/sca/policy/logging/jdk/JDKLoggingPolicyHandler.java?rev=597465&r1=597464&r2=597465&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/policy-logging/src/main/java/org/apache/tuscany/sca/policy/logging/jdk/JDKLoggingPolicyHandler.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/policy-logging/src/main/java/org/apache/tuscany/sca/policy/logging/jdk/JDKLoggingPolicyHandler.java
 Thu Nov 22 09:41:28 2007
@@ -1,5 +1,6 @@
 package org.apache.tuscany.sca.policy.logging.jdk;
 import java.util.logging.ConsoleHandler;
+import java.util.logging.Handler;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -41,7 +42,7 @@
     private Logger logger = null;
     
     private PolicySet applicablePolicySet = null;
-
+    
     public void setUp(Object... context) {
         if ( applicablePolicySet != null ) {
             JDKLoggingPolicy policy = 
(JDKLoggingPolicy)applicablePolicySet.getPolicies().get(0);
@@ -49,9 +50,19 @@
             logger.setLevel(policy.getLogLevel());
             logger.setUseParentHandlers(policy.isUseParentHandlers());
             
-            ConsoleHandler consoleHandler = new ConsoleHandler();
-            consoleHandler.setLevel(Level.ALL);
-            logger.addHandler(consoleHandler);
+            boolean found = false;
+            for ( Handler handler : logger.getHandlers() ) {
+                if ( handler instanceof ConsoleHandler ) {
+                    found = true;
+                    break;
+                }
+            }
+            
+            if ( !found ) {
+                ConsoleHandler consoleHandler = new ConsoleHandler();
+                consoleHandler.setLevel(Level.ALL);
+                logger.addHandler(consoleHandler);
+            }
         }
     }
     



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to