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