Author: rfeng
Date: Tue Nov 27 12:36:29 2007
New Revision: 598762
URL: http://svn.apache.org/viewvc?rev=598762&view=rev
Log:
Change the registration of policy handlers
Added:
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.policy.util.PolicyHandler
- copied, changed from r598694,
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.java.PolicySetHandlers
Removed:
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.java.PolicySetHandlers
incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicySetHandlerUtil.java
Modified:
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/module/JavaRuntimeModuleActivator.java
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=598762&r1=598761&r2=598762&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
Tue Nov 27 12:36:29 2007
@@ -20,9 +20,7 @@
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;
@@ -33,6 +31,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.ServiceDeclaration;
import org.apache.tuscany.sca.contribution.util.ServiceDiscovery;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.ModuleActivator;
@@ -64,12 +63,11 @@
import
org.apache.tuscany.sca.implementation.java.invocation.JavaCallbackRuntimeWireProcessor;
import
org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationProviderFactory;
import
org.apache.tuscany.sca.implementation.java.invocation.JavaPolicyHandlingRuntimeWireProcessor;
-import
org.apache.tuscany.sca.implementation.java.invocation.PolicyHandlingInterceptor;
import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
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.policy.util.PolicyHandler;
import org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint;
import org.apache.tuscany.sca.runtime.RuntimeWireProcessorExtensionPoint;
@@ -77,93 +75,122 @@
* @version $Rev$ $Date$
*/
public class JavaRuntimeModuleActivator implements ModuleActivator {
- private static final String POLICY_HANDLERS_STORE_FILE =
"org.apache.tuscany.sca.implementation.java.PolicySetHandlers";
-
+ private static final String POLICY_HANDLERS_STORE_FILE =
+ "org.apache.tuscany.sca.implementation.java.PolicySetHandlers";
+
public JavaRuntimeModuleActivator() {
}
-
public void start(ExtensionPointRegistry registry) {
ModelFactoryExtensionPoint factories =
registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
AssemblyFactory assemblyFactory =
factories.getFactory(AssemblyFactory.class);
PolicyFactory policyFactory =
factories.getFactory(PolicyFactory.class);
-
+
MessageFactory messageFactory =
factories.getFactory(MessageFactory.class);
ProxyFactoryExtensionPoint proxyFactory =
registry.getExtensionPoint(ProxyFactoryExtensionPoint.class);
- proxyFactory.setClassProxyFactory(new
CglibProxyFactory(messageFactory, proxyFactory.getInterfaceContractMapper()));
-
+ proxyFactory.setClassProxyFactory(new
CglibProxyFactory(messageFactory, proxyFactory
+ .getInterfaceContractMapper()));
+
JavaInterfaceFactory javaFactory =
factories.getFactory(JavaInterfaceFactory.class);
JavaImplementationFactory javaImplementationFactory =
factories.getFactory(JavaImplementationFactory.class);
-
- BaseJavaClassVisitor[] extensions = new BaseJavaClassVisitor[] {
- new ConstructorProcessor(assemblyFactory),
- new AllowsPassByReferenceProcessor(assemblyFactory),
- new ComponentNameProcessor(assemblyFactory),
- new ContextProcessor(assemblyFactory),
- new ConversationIDProcessor(assemblyFactory),
- new ConversationProcessor(assemblyFactory),
- new DestroyProcessor(assemblyFactory),
- new EagerInitProcessor(assemblyFactory),
- new InitProcessor(assemblyFactory),
- new PropertyProcessor(assemblyFactory),
- new ReferenceProcessor(assemblyFactory, javaFactory),
- new ResourceProcessor(assemblyFactory),
- new ScopeProcessor(assemblyFactory),
- new ServiceProcessor(assemblyFactory, javaFactory),
- new HeuristicPojoProcessor(assemblyFactory, javaFactory),
- new PolicyProcessor(assemblyFactory, policyFactory)
- };
+
+ BaseJavaClassVisitor[] extensions =
+ new BaseJavaClassVisitor[] {new
ConstructorProcessor(assemblyFactory),
+ new
AllowsPassByReferenceProcessor(assemblyFactory),
+ new
ComponentNameProcessor(assemblyFactory),
+ new ContextProcessor(assemblyFactory),
+ new
ConversationIDProcessor(assemblyFactory),
+ new
ConversationProcessor(assemblyFactory),
+ new DestroyProcessor(assemblyFactory),
new EagerInitProcessor(assemblyFactory),
+ new InitProcessor(assemblyFactory),
new PropertyProcessor(assemblyFactory),
+ new
ReferenceProcessor(assemblyFactory, javaFactory),
+ new
ResourceProcessor(assemblyFactory), new ScopeProcessor(assemblyFactory),
+ new ServiceProcessor(assemblyFactory,
javaFactory),
+ new
HeuristicPojoProcessor(assemblyFactory, javaFactory),
+ new PolicyProcessor(assemblyFactory,
policyFactory)};
for (JavaClassVisitor extension : extensions) {
javaImplementationFactory.addClassVisitor(extension);
}
-
+
DataBindingExtensionPoint dataBindings =
registry.getExtensionPoint(DataBindingExtensionPoint.class);
TransformerExtensionPoint transformers =
registry.getExtensionPoint(TransformerExtensionPoint.class);
- MediatorImpl mediator =new MediatorImpl(dataBindings, transformers);
+ MediatorImpl mediator = new MediatorImpl(dataBindings, transformers);
JavaPropertyValueObjectFactory factory = new
JavaPropertyValueObjectFactory(mediator);
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 ) {
+ } catch (IOException e) {
throw new RuntimeException(e);
}
-
+
JavaImplementationProviderFactory javaImplementationProviderFactory =
- new JavaImplementationProviderFactory(proxyFactory,
- dataBindings,
- factory,
- componentContextFactory,
- requestContextFactory,
- policyHandlerClassNames);
-
- ProviderFactoryExtensionPoint providerFactories =
registry.getExtensionPoint(ProviderFactoryExtensionPoint.class);
+ new JavaImplementationProviderFactory(proxyFactory, dataBindings,
factory, componentContextFactory,
+ requestContextFactory,
policyHandlerClassNames);
+
+ ProviderFactoryExtensionPoint providerFactories =
+ registry.getExtensionPoint(ProviderFactoryExtensionPoint.class);
providerFactories.addProviderFactory(javaImplementationProviderFactory);
InterfaceContractMapper interfaceContractMapper =
registry.getExtensionPoint(InterfaceContractMapper.class);
- RuntimeWireProcessorExtensionPoint wireProcessorExtensionPoint =
registry.getExtensionPoint(RuntimeWireProcessorExtensionPoint.class);
+ RuntimeWireProcessorExtensionPoint wireProcessorExtensionPoint =
+
registry.getExtensionPoint(RuntimeWireProcessorExtensionPoint.class);
if (wireProcessorExtensionPoint != null) {
- wireProcessorExtensionPoint.addWireProcessor(new
JavaCallbackRuntimeWireProcessor(interfaceContractMapper, javaFactory));
+ wireProcessorExtensionPoint.addWireProcessor(new
JavaCallbackRuntimeWireProcessor(interfaceContractMapper,
+
javaFactory));
wireProcessorExtensionPoint.addWireProcessor(new
JavaPolicyHandlingRuntimeWireProcessor());
- }
+ }
}
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, 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)));
+ // Get the processor service declarations
+ Set<ServiceDeclaration> sds;
+ try {
+ sds =
ServiceDiscovery.getInstance().getServiceDeclarations(PolicyHandler.class);
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ }
+
+ 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 policyHandlerClassNames;
Copied:
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.policy.util.PolicyHandler
(from r598694,
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.policy.util.PolicyHandler?p2=incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.policy.util.PolicyHandler&p1=incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.java.PolicySetHandlers&r1=598694&r2=598762&rev=598762&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.java.PolicySetHandlers
(original)
+++
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.policy.util.PolicyHandler
Tue Nov 27 12:36:29 2007
@@ -15,4 +15,4 @@
# 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
+org.apache.tuscany.sca.policy.logging.jdk.JDKLoggingPolicyHandler;qname=http://tuscany.apache.org/xmlns/sca/1.0#JDKLoggingPolicy
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]