Author: rfeng
Date: Mon Oct 12 23:45:39 2009
New Revision: 824540
URL: http://svn.apache.org/viewvc?rev=824540&view=rev
Log:
Add PolicyBuilder to the builder extension point
Use QName as the key to index and look up builders
Added:
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/PolicyBuilder.java
(with props)
Modified:
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BuilderExtensionPoint.java
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultBuilderExtensionPoint.java
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/ImplementationBuilder.java
tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java
tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.BindingBuilder
tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentBuilderImpl.java
tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferenceBindingBuilderImpl.java
tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentServiceBindingBuilderImpl.java
tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java
tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDeclarationParser.java
tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java
tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationBuilder.java
tuscany/java/sca/modules/implementation-spring/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.ImplementationBuilder
tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/WebImplementation.java
tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationBuilder.java
tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationImpl.java
tuscany/java/sca/modules/implementation-web/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.ImplementationBuilder
Modified:
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java
(original)
+++
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java
Mon Oct 12 23:45:39 2009
@@ -19,6 +19,8 @@
package org.apache.tuscany.sca.assembly.builder;
+import javax.xml.namespace.QName;
+
import org.apache.tuscany.sca.assembly.Binding;
import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.Contract;
@@ -39,6 +41,10 @@
*/
void build(Component component, Contract contract, B binding, Monitor
monitor);
- Class<B> getModelType();
+ /**
+ * Get QName of the binding type
+ * @return
+ */
+ QName getBindingType();
}
Modified:
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BuilderExtensionPoint.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BuilderExtensionPoint.java?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BuilderExtensionPoint.java
(original)
+++
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BuilderExtensionPoint.java
Mon Oct 12 23:45:39 2009
@@ -19,6 +19,8 @@
package org.apache.tuscany.sca.assembly.builder;
+import javax.xml.namespace.QName;
+
import org.apache.tuscany.sca.assembly.Binding;
import org.apache.tuscany.sca.assembly.Implementation;
@@ -63,7 +65,7 @@
* @param bindingType
* @return
*/
- <B extends Binding> BindingBuilder<B> getBindingBuilder(Class<B>
bindingType);
+ <B extends Binding> BindingBuilder<B> getBindingBuilder(QName bindingType);
/**
* Remove a binding builder
@@ -84,7 +86,7 @@
* @param implementationType
* @return
*/
- <I extends Implementation> ImplementationBuilder<I>
getImplementationBuilder(Class<I> implementationType);
+ <I extends Implementation> ImplementationBuilder<I>
getImplementationBuilder(QName implementationType);
/**
* Remove an implementation builder
@@ -92,5 +94,25 @@
* @param builder
*/
<I extends Implementation> void
removeImplementationBuilder(ImplementationBuilder<I> builder);
+
+ /**
+ * Add a policy builder
+ * @param policyBuilder
+ */
+ void addPolicyBuilder(PolicyBuilder<?> policyBuilder);
+ /**
+ * Look up a Policy builder by the Policy type
+ * @param <P>
+ * @param policyType
+ * @return
+ */
+ <P> PolicyBuilder<P> getPolicyBuilder(QName policyType);
+
+ /**
+ * Remove a Policy builder
+ * @param <P>
+ * @param builder
+ */
+ <P> void removePolicyBuilder(PolicyBuilder<P> builder);
}
Modified:
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultBuilderExtensionPoint.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultBuilderExtensionPoint.java?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultBuilderExtensionPoint.java
(original)
+++
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultBuilderExtensionPoint.java
Mon Oct 12 23:45:39 2009
@@ -26,11 +26,13 @@
import java.util.Map;
import javax.xml.namespace.QName;
+import javax.xml.ws.EndpointReference;
import org.apache.tuscany.sca.assembly.Binding;
import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.Contract;
+import org.apache.tuscany.sca.assembly.Endpoint;
import org.apache.tuscany.sca.assembly.Implementation;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.FactoryExtensionPoint;
@@ -38,6 +40,7 @@
import org.apache.tuscany.sca.core.UtilityExtensionPoint;
import org.apache.tuscany.sca.definitions.Definitions;
import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
+import org.apache.tuscany.sca.extensibility.ServiceDeclarationParser;
import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
import org.apache.tuscany.sca.monitor.Monitor;
@@ -51,9 +54,11 @@
private ExtensionPointRegistry registry;
private final Map<String, CompositeBuilder> builders = new HashMap<String,
CompositeBuilder>();
- private final Map<Class<?>, BindingBuilder> bindingBuilders = new
HashMap<Class<?>, BindingBuilder>();
- private final Map<Class<?>, ImplementationBuilder> implementationBuilders =
- new HashMap<Class<?>, ImplementationBuilder>();
+ private final Map<QName, BindingBuilder> bindingBuilders = new
HashMap<QName, BindingBuilder>();
+ private final Map<QName, ImplementationBuilder> implementationBuilders =
+ new HashMap<QName, ImplementationBuilder>();
+ private final Map<QName, PolicyBuilder> policyBuilders = new
HashMap<QName, PolicyBuilder>();
+
private boolean loaded;
public DefaultBuilderExtensionPoint(ExtensionPointRegistry registry) {
@@ -69,7 +74,7 @@
implementationBuilders.clear();
loaded = false;
}
-
+
public void addCompositeBuilder(CompositeBuilder builder) {
builders.put(builder.getID(), builder);
}
@@ -120,7 +125,7 @@
for (ServiceDeclaration builderDeclaration : builderDeclarations) {
BindingBuilder<?> builder = new
LazyBindingBuilder(builderDeclaration);
- bindingBuilders.put(builder.getModelType(), builder);
+ bindingBuilders.put(builder.getBindingType(), builder);
}
try {
@@ -131,59 +136,64 @@
for (ServiceDeclaration builderDeclaration : builderDeclarations) {
ImplementationBuilder<?> builder = new
LazyImplementationBuilder(builderDeclaration);
- implementationBuilders.put(builder.getModelType(), builder);
+ implementationBuilders.put(builder.getImplementationType(),
builder);
}
+ try {
+ builderDeclarations =
serviceDiscovery.getServiceDeclarations(PolicyBuilder.class);
+ } catch (Exception e) {
+ throw new IllegalStateException(e);
+ }
+
+ for (ServiceDeclaration builderDeclaration : builderDeclarations) {
+ PolicyBuilder<?> builder = new
LazyPolicyBuilder(builderDeclaration);
+ policyBuilders.put(builder.getPolicyType(), builder);
+ }
+
+
loaded = true;
}
public void addBindingBuilder(BindingBuilder<?> bindingBuilder) {
- bindingBuilders.put(bindingBuilder.getModelType(), bindingBuilder);
+ bindingBuilders.put(bindingBuilder.getBindingType(), bindingBuilder);
+ }
+
+ public <B extends Binding> BindingBuilder<B> getBindingBuilder(QName
bindingType) {
+ loadBuilders();
+ return (BindingBuilder<B>)bindingBuilders.get(bindingType);
+ }
+
+ public <B extends Binding> void removeBindingBuilder(BindingBuilder<B>
builder) {
+ bindingBuilders.remove(builder.getBindingType());
}
public void addImplementationBuilder(ImplementationBuilder<?>
implementationBuilder) {
- implementationBuilders.put(implementationBuilder.getModelType(),
implementationBuilder);
+
implementationBuilders.put(implementationBuilder.getImplementationType(),
implementationBuilder);
}
- public <B extends Binding> BindingBuilder<B> getBindingBuilder(Class<B>
bindingType) {
+ public <I extends Implementation> ImplementationBuilder<I>
getImplementationBuilder(QName implementationType) {
loadBuilders();
- if (bindingType.isInterface()) {
- return (BindingBuilder<B>)bindingBuilders.get(bindingType);
- }
- Class<?>[] classes = bindingType.getInterfaces();
- for (Class<?> i : classes) {
- BindingBuilder<B> builder =
(BindingBuilder<B>)bindingBuilders.get(i);
- if (builder != null) {
- return builder;
- }
- }
- return null;
+ return
(ImplementationBuilder<I>)implementationBuilders.get(implementationType);
}
- public <I extends Implementation> ImplementationBuilder<I>
getImplementationBuilder(Class<I> implementationType) {
- loadBuilders();
- if (implementationType.isInterface()) {
- return
(ImplementationBuilder<I>)implementationBuilders.get(implementationType);
- }
- Class<?>[] classes = implementationType.getInterfaces();
- for (Class<?> i : classes) {
- ImplementationBuilder<I> builder =
(ImplementationBuilder<I>)implementationBuilders.get(i);
- if (builder != null) {
- return builder;
- }
- }
- return null;
+ public <I extends Implementation> void
removeImplementationBuilder(ImplementationBuilder<I> builder) {
+ implementationBuilders.remove(builder.getImplementationType());
}
- public <B extends Binding> void removeBindingBuilder(BindingBuilder<B>
builder) {
- bindingBuilders.remove(builder.getModelType());
+ public void addPolicyBuilder(PolicyBuilder<?> policyBuilder) {
+ policyBuilders.put(policyBuilder.getPolicyType(), policyBuilder);
}
- public <I extends Implementation> void
removeImplementationBuilder(ImplementationBuilder<I> builder) {
- implementationBuilders.remove(builder.getModelType());
+ public <B> PolicyBuilder<B> getPolicyBuilder(QName policyType) {
+ loadBuilders();
+ return (PolicyBuilder<B>)policyBuilders.get(policyType);
}
+ public <B> void removePolicyBuilder(PolicyBuilder<B> builder) {
+ policyBuilders.remove(builder.getPolicyType());
+ }
+
/**
* A wrapper around a composite builder allowing lazy
* loading and initialization of implementation providers.
@@ -219,9 +229,9 @@
}
public Composite build(Composite composite,
- Definitions definitions,
- Map<QName, List<String>> bindingBaseURIs,
- Monitor monitor) throws CompositeBuilderException {
+ Definitions definitions,
+ Map<QName, List<String>> bindingBaseURIs,
+ Monitor monitor) throws
CompositeBuilderException {
return ((DeployedCompositeBuilder)getBuilder()).build(composite,
definitions, bindingBaseURIs, monitor);
}
@@ -257,9 +267,8 @@
private class LazyBindingBuilder implements BindingBuilder {
private ServiceDeclaration sd;
- private String model;
private BindingBuilder<?> builder;
- private Class<?> modelType;
+ private QName qname;;
/**
* @param sd
@@ -267,24 +276,18 @@
public LazyBindingBuilder(ServiceDeclaration sd) {
super();
this.sd = sd;
- this.model = sd.getAttributes().get("model");
+ this.qname =
ServiceDeclarationParser.getQName(sd.getAttributes().get("qname"));
}
public void build(Component component, Contract contract, Binding
binding, Monitor monitor) {
getBuilder().build(component, contract, binding, monitor);
}
- public Class getModelType() {
- if (modelType == null) {
- try {
- modelType = sd.loadClass(model);
- } catch (Exception e) {
- throw new IllegalStateException(e);
- }
- }
- return modelType;
+ public QName getBindingType() {
+ return qname;
}
+
private synchronized BindingBuilder getBuilder() {
if (builder == null) {
try {
@@ -308,9 +311,8 @@
private class LazyImplementationBuilder implements ImplementationBuilder {
private ServiceDeclaration sd;
- private String model;
private ImplementationBuilder<?> builder;
- private Class<?> modelType;
+ private QName qname;;
/**
* @param sd
@@ -318,34 +320,70 @@
public LazyImplementationBuilder(ServiceDeclaration sd) {
super();
this.sd = sd;
- this.model = sd.getAttributes().get("model");
+ this.qname =
ServiceDeclarationParser.getQName(sd.getAttributes().get("qname"));
}
public void build(Component component, Implementation implementation,
Monitor monitor) {
getBuilder().build(component, implementation, monitor);
}
- public Class getModelType() {
- if (modelType == null) {
+ public QName getImplementationType() {
+ return qname;
+ }
+
+ private synchronized ImplementationBuilder getBuilder() {
+ if (builder == null) {
try {
- modelType = sd.loadClass(model);
+ Class<?> builderClass = sd.loadClass();
+ try {
+ Constructor<?> constructor =
builderClass.getConstructor(ExtensionPointRegistry.class);
+ builder =
(ImplementationBuilder)constructor.newInstance(registry);
+ } catch (NoSuchMethodException e) {
+ Constructor<?> constructor =
builderClass.getConstructor();
+ builder =
(ImplementationBuilder)constructor.newInstance();
+
+ }
} catch (Exception e) {
throw new IllegalStateException(e);
}
}
- return modelType;
+ return builder;
}
- private synchronized ImplementationBuilder getBuilder() {
+ }
+
+ private class LazyPolicyBuilder implements PolicyBuilder {
+ private ServiceDeclaration sd;
+ private PolicyBuilder<?> builder;
+ private QName qname;;
+
+ /**
+ * @param sd
+ */
+ public LazyPolicyBuilder(ServiceDeclaration sd) {
+ super();
+ this.sd = sd;
+ this.qname =
ServiceDeclarationParser.getQName(sd.getAttributes().get("qname"));
+ }
+
+ public void build(Component component, Implementation implementation,
Definitions definitions, Monitor monitor) {
+ getBuilder().build(component, implementation, definitions,
monitor);
+ }
+
+ public QName getPolicyType() {
+ return qname;
+ }
+
+ private synchronized PolicyBuilder getBuilder() {
if (builder == null) {
try {
Class<?> builderClass = sd.loadClass();
try {
Constructor<?> constructor =
builderClass.getConstructor(ExtensionPointRegistry.class);
- builder =
(ImplementationBuilder)constructor.newInstance(registry);
+ builder =
(PolicyBuilder)constructor.newInstance(registry);
} catch (NoSuchMethodException e) {
Constructor<?> constructor =
builderClass.getConstructor();
- builder =
(ImplementationBuilder)constructor.newInstance();
+ builder = (PolicyBuilder)constructor.newInstance();
}
} catch (Exception e) {
@@ -355,6 +393,14 @@
return builder;
}
+ public void build(Endpoint endpoint, Definitions definitions, Monitor
monitor) {
+ getBuilder().build(endpoint, definitions, monitor);
+ }
+
+ public void build(org.apache.tuscany.sca.assembly.EndpointReference
endpointReference, Definitions definitions, Monitor monitor) {
+ getBuilder().build(endpointReference, definitions, monitor);
+ }
+
}
}
Modified:
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/ImplementationBuilder.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/ImplementationBuilder.java?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/ImplementationBuilder.java
(original)
+++
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/ImplementationBuilder.java
Mon Oct 12 23:45:39 2009
@@ -19,6 +19,8 @@
package org.apache.tuscany.sca.assembly.builder;
+import javax.xml.namespace.QName;
+
import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.Implementation;
import org.apache.tuscany.sca.monitor.Monitor;
@@ -38,6 +40,10 @@
*/
void build(Component component, I implmentation, Monitor monitor);
- Class<I> getModelType();
+ /**
+ * Get the QName of the implementation type
+ * @return
+ */
+ QName getImplementationType();
}
Added:
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/PolicyBuilder.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/PolicyBuilder.java?rev=824540&view=auto
==============================================================================
---
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/PolicyBuilder.java
(added)
+++
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/PolicyBuilder.java
Mon Oct 12 23:45:39 2009
@@ -0,0 +1,62 @@
+/*
+ * 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.assembly.builder;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Endpoint;
+import org.apache.tuscany.sca.assembly.EndpointReference;
+import org.apache.tuscany.sca.assembly.Implementation;
+import org.apache.tuscany.sca.definitions.Definitions;
+import org.apache.tuscany.sca.monitor.Monitor;
+
+/**
+ * A builder that is contributed by a specific policy languange to validate
the configurations
+ * for SCA endpoints, endpoint references and component implementations
+ */
+public interface PolicyBuilder<T> {
+ QName getPolicyType();
+
+ /**
+ * Build (and validate) the policy settings on the endpoint
+ * @param endpoint
+ * @param definitions
+ * @param monitor
+ */
+ void build(Endpoint endpoint, Definitions definitions, Monitor monitor);
+
+ /**
+ * Build (and validate) the policy settings on the endpoint reference
+ * @param endpointReference
+ * @param definitions
+ * @param monitor
+ */
+ void build(EndpointReference endpointReference, Definitions definitions,
Monitor monitor);
+
+ /**
+ * Build (and validate) the policy settings on the component implementation
+ * @param component
+ * @param implementation
+ * @param definitions
+ * @param monitor
+ */
+ void build(Component component, Implementation implementation, Definitions
definitions, Monitor monitor);
+}
Propchange:
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/PolicyBuilder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/PolicyBuilder.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified:
tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java
(original)
+++
tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java
Mon Oct 12 23:45:39 2009
@@ -19,6 +19,8 @@
package org.apache.tuscany.sca.binding.ws.wsdlgen;
+import javax.xml.namespace.QName;
+
import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.Contract;
import org.apache.tuscany.sca.assembly.builder.BindingBuilder;
@@ -46,8 +48,8 @@
BindingWSDLGenerator.generateWSDL(component, contract, binding,
extensionPoints, monitor);
}
- public Class<WebServiceBinding> getModelType() {
- return WebServiceBinding.class;
+ public QName getBindingType() {
+ return WebServiceBinding.TYPE;
}
}
Modified:
tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.BindingBuilder
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.BindingBuilder?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.BindingBuilder
(original)
+++
tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.BindingBuilder
Mon Oct 12 23:45:39 2009
@@ -14,4 +14,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-org.apache.tuscany.sca.binding.ws.wsdlgen.WebServiceBindingBuilder;model=org.apache.tuscany.sca.binding.ws.WebServiceBinding
+org.apache.tuscany.sca.binding.ws.wsdlgen.WebServiceBindingBuilder;qname=http://docs.oasis-open.org/ns/opencsa/sca/200903#binding.ws
Modified:
tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentBuilderImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentBuilderImpl.java?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentBuilderImpl.java
(original)
+++
tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentBuilderImpl.java
Mon Oct 12 23:45:39 2009
@@ -65,7 +65,6 @@
import org.apache.tuscany.sca.policy.ExtensionType;
import org.apache.tuscany.sca.policy.PolicySubject;
import org.w3c.dom.Document;
-import org.w3c.dom.DocumentFragment;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
@@ -125,7 +124,7 @@
// first carry out any implementation specific builder processing
Implementation impl = component.getImplementation();
if (impl != null) {
- ImplementationBuilder builder =
builders.getImplementationBuilder(impl.getClass());
+ ImplementationBuilder builder =
builders.getImplementationBuilder(impl.getType());
if (builder != null) {
builder.build(component, impl, monitor);
}
Modified:
tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferenceBindingBuilderImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferenceBindingBuilderImpl.java?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferenceBindingBuilderImpl.java
(original)
+++
tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferenceBindingBuilderImpl.java
Mon Oct 12 23:45:39 2009
@@ -62,7 +62,7 @@
for (Component component : composite.getComponents()) {
for (ComponentReference componentReference :
component.getReferences()) {
for (Binding binding : componentReference.getBindings()) {
- BindingBuilder builder =
builders.getBindingBuilder(binding.getClass());
+ BindingBuilder builder =
builders.getBindingBuilder(binding.getType());
if (builder != null) {
builder.build(component, componentReference, binding,
monitor);
}
Modified:
tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentServiceBindingBuilderImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentServiceBindingBuilderImpl.java?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentServiceBindingBuilderImpl.java
(original)
+++
tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentServiceBindingBuilderImpl.java
Mon Oct 12 23:45:39 2009
@@ -69,7 +69,7 @@
for (Component component : composite.getComponents()) {
for (ComponentService componentService : component.getServices()) {
for (Binding binding : componentService.getBindings()) {
- BindingBuilder builder =
builders.getBindingBuilder(binding.getClass());
+ BindingBuilder builder =
builders.getBindingBuilder(binding.getType());
if (builder != null) {
builder.build(component, componentService, binding,
monitor);
}
Modified:
tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
(original)
+++
tuscany/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
Mon Oct 12 23:45:39 2009
@@ -19,9 +19,12 @@
package org.apache.tuscany.sca.builder.impl;
+import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
+import javax.xml.namespace.QName;
+
import org.apache.tuscany.sca.assembly.Binding;
import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.ComponentReference;
@@ -36,11 +39,13 @@
import org.apache.tuscany.sca.assembly.Service;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.assembly.builder.PolicyBuilder;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.definitions.Definitions;
import org.apache.tuscany.sca.monitor.Monitor;
import org.apache.tuscany.sca.policy.Intent;
import org.apache.tuscany.sca.policy.IntentMap;
+import org.apache.tuscany.sca.policy.PolicyExpression;
import org.apache.tuscany.sca.policy.PolicySet;
import org.apache.tuscany.sca.policy.PolicySubject;
import org.apache.tuscany.sca.policy.Qualifier;
@@ -64,6 +69,7 @@
public Composite build(Composite composite, Definitions definitions,
Monitor monitor)
throws CompositeBuilderException {
computePolicies(composite, definitions, monitor);
+ buildPolicies(composite, definitions, monitor);
return composite;
}
@@ -407,4 +413,63 @@
// How to deal with implementation level policySets/intents
}
}
+
+ private Set<QName> getPolicyNames(PolicySubject subject) {
+ if (subject == null) {
+ return Collections.emptySet();
+ }
+ Set<QName> names = new HashSet<QName>();
+ for (PolicySet ps : subject.getPolicySets()) {
+ for (PolicyExpression exp : ps.getPolicies()) {
+ names.add(exp.getName());
+ }
+ }
+ return names;
+ }
+
+ protected void buildPolicies(Composite composite, Definitions definitions,
Monitor monitor) {
+
+ // compute policies recursively
+ for (Component component : composite.getComponents()) {
+ Implementation implementation = component.getImplementation();
+ if (implementation instanceof Composite) {
+ buildPolicies((Composite)implementation, definitions, monitor);
+ }
+ }
+
+ for (Component component : composite.getComponents()) {
+
+ for (ComponentService componentService : component.getServices()) {
+ for (Endpoint ep : componentService.getEndpoints()) {
+ for (QName policyType : getPolicyNames(ep)) {
+ PolicyBuilder builder =
builders.getPolicyBuilder(policyType);
+ if (builder != null) {
+ builder.build(ep, definitions, monitor);
+ }
+ }
+ }
+ }
+
+ for (ComponentReference componentReference :
component.getReferences()) {
+ for (EndpointReference epr :
componentReference.getEndpointReferences()) {
+ for (QName policyType : getPolicyNames(epr)) {
+ PolicyBuilder builder =
builders.getPolicyBuilder(policyType);
+ if (builder != null) {
+ builder.build(epr, definitions, monitor);
+ }
+ }
+ }
+ }
+
+ Implementation implementation = component.getImplementation();
+ if (implementation != null) {
+ for (QName policyType : getPolicyNames(implementation)) {
+ PolicyBuilder builder =
builders.getPolicyBuilder(policyType);
+ if (builder != null) {
+ builder.build(component, implementation, definitions,
monitor);
+ }
+ }
+ }
+ }
+ }
}
Modified:
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java
(original)
+++
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java
Mon Oct 12 23:45:39 2009
@@ -423,7 +423,7 @@
Binding binding = endpointReference.getBinding();
if (binding != null) {
- BindingBuilder bindingBuilder =
builders.getBindingBuilder(binding.getClass());
+ BindingBuilder bindingBuilder =
builders.getBindingBuilder(binding.getType());
if (bindingBuilder != null) {
bindingBuilder.build(component, reference,
endpointReference.getBinding(), null);
}
Modified:
tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDeclarationParser.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDeclarationParser.java?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDeclarationParser.java
(original)
+++
tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDeclarationParser.java
Mon Oct 12 23:45:39 2009
@@ -24,6 +24,8 @@
import java.util.List;
import java.util.Map;
+import javax.xml.namespace.QName;
+
/**
* Parser for the service descriptors. The syntax of the service declaration
is similar with the OSGi
* headers with the following exceptions:
@@ -260,5 +262,31 @@
}
}
+
+ /**
+ * Returns a QName object from a QName expressed as {ns}name
+ * or ns#name.
+ *
+ * @param qname
+ * @return
+ */
+ public 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));
+ }
+ }
+ return new QName(qname);
+ }
}
Modified:
tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java
(original)
+++
tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java
Mon Oct 12 23:45:39 2009
@@ -42,7 +42,7 @@
* @version $Rev$ $Date$
*/
public class SpringImplementation extends ImplementationImpl implements
Implementation, Extensible {
- private final static QName TYPE = new QName(SCA11_NS,
"implementation.spring");
+ public final static QName TYPE = new QName(SCA11_NS,
"implementation.spring");
// The location attribute which points to the Spring application-context
XML file
private String location;
// The application-context file as a Spring Resource
Modified:
tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationBuilder.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationBuilder.java?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationBuilder.java
(original)
+++
tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationBuilder.java
Mon Oct 12 23:45:39 2009
@@ -19,6 +19,8 @@
package org.apache.tuscany.sca.implementation.spring;
+import javax.xml.namespace.QName;
+
import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.builder.ImplementationBuilder;
import org.apache.tuscany.sca.monitor.Monitor;
@@ -32,9 +34,8 @@
implmentation.build(component);
}
- public Class<SpringImplementation> getModelType() {
- // TODO Auto-generated method stub
- return SpringImplementation.class;
+ public QName getImplementationType() {
+ return SpringImplementation.TYPE;
}
}
Modified:
tuscany/java/sca/modules/implementation-spring/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.ImplementationBuilder
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-spring/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.ImplementationBuilder?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/implementation-spring/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.ImplementationBuilder
(original)
+++
tuscany/java/sca/modules/implementation-spring/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.ImplementationBuilder
Mon Oct 12 23:45:39 2009
@@ -14,4 +14,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-org.apache.tuscany.sca.implementation.spring.SpringImplementationBuilder;model=org.apache.tuscany.sca.implementation.spring.SpringImplementation
+org.apache.tuscany.sca.implementation.spring.SpringImplementationBuilder;qname=http://docs.oasis-open.org/ns/opencsa/sca/200903#implementation.spring
Modified:
tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/WebImplementation.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/WebImplementation.java?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/WebImplementation.java
(original)
+++
tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/WebImplementation.java
Mon Oct 12 23:45:39 2009
@@ -18,6 +18,8 @@
*/
package org.apache.tuscany.sca.implementation.web;
+import javax.xml.namespace.QName;
+
import org.apache.tuscany.sca.assembly.Implementation;
@@ -26,7 +28,8 @@
* The model representing an Web implementation in an SCA assembly model.
*/
public interface WebImplementation extends Implementation {
-
+ QName TYPE = new QName(SCA11_NS, "implementation.web");
+
/**
* Returns the webapp URI.
* @return the webapp URI
Modified:
tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationBuilder.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationBuilder.java?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationBuilder.java
(original)
+++
tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationBuilder.java
Mon Oct 12 23:45:39 2009
@@ -19,6 +19,8 @@
package org.apache.tuscany.sca.implementation.web.impl;
+import javax.xml.namespace.QName;
+
import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.builder.ImplementationBuilder;
import org.apache.tuscany.sca.implementation.web.WebImplementation;
@@ -34,8 +36,8 @@
}
- public Class<WebImplementation> getModelType() {
- return WebImplementation.class;
+ public QName getImplementationType() {
+ return WebImplementation.TYPE;
}
}
Modified:
tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationImpl.java?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationImpl.java
(original)
+++
tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationImpl.java
Mon Oct 12 23:45:39 2009
@@ -22,8 +22,6 @@
import java.util.Collections;
import java.util.List;
-import javax.xml.namespace.QName;
-
import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.ConstrainingType;
import org.apache.tuscany.sca.assembly.Property;
@@ -38,7 +36,6 @@
* The model representing an Web implementation in an SCA assembly model.
*/
class WebImplementationImpl extends ImplementationImpl implements
WebImplementation {
- private static final QName TYPE = new QName(SCA11_NS,
"implementation.web");
private List<Property> properties = new ArrayList<Property>();
private List<Reference> references = new ArrayList<Reference>();
Modified:
tuscany/java/sca/modules/implementation-web/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.ImplementationBuilder
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-web/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.ImplementationBuilder?rev=824540&r1=824539&r2=824540&view=diff
==============================================================================
---
tuscany/java/sca/modules/implementation-web/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.ImplementationBuilder
(original)
+++
tuscany/java/sca/modules/implementation-web/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.ImplementationBuilder
Mon Oct 12 23:45:39 2009
@@ -14,4 +14,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-org.apache.tuscany.sca.implementation.web.impl.WebImplementationBuilder;model=org.apache.tuscany.sca.implementation.web.WebImplementation
+org.apache.tuscany.sca.implementation.web.impl.WebImplementationBuilder;qname=http://docs.oasis-open.org/ns/opencsa/sca/200903#implementation.web