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]