You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2010/12/06 15:53:37 UTC
svn commit: r1042665 -
/tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/
Author: antelder
Date: Mon Dec 6 14:53:37 2010
New Revision: 1042665
URL: http://svn.apache.org/viewvc?rev=1042665&view=rev
Log:
Start updating the sca binding to be able to choose the binding type impl on a per service basis instead of a single global choice
Modified:
tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/DefaultSCABindingMapper.java
tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java
tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java
tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/SCABindingMapper.java
Modified: tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/DefaultSCABindingMapper.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/DefaultSCABindingMapper.java?rev=1042665&r1=1042664&r2=1042665&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/DefaultSCABindingMapper.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/DefaultSCABindingMapper.java Mon Dec 6 14:53:37 2010
@@ -57,51 +57,55 @@ public class DefaultSCABindingMapper imp
private final static Logger logger = Logger.getLogger(DefaultSCABindingMapper.class.getName());
protected ExtensionPointRegistry registry;
protected ProviderFactoryExtensionPoint providerFactories;
- protected StAXArtifactProcessor processor;
- protected BindingBuilder builder;
- protected QName mappedBinding;
- private Binding bindingTemplate;
- private boolean remotable;
+ protected StAXArtifactProcessorExtensionPoint processors;
+ protected QName defaultMappedBinding;
public DefaultSCABindingMapper(ExtensionPointRegistry registry, Map<String, String> attributes) {
this.registry = registry;
+ providerFactories = registry.getExtensionPoint(ProviderFactoryExtensionPoint.class);
+ processors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
+ defaultMappedBinding = getDefaultMappedBinding(attributes);
+ }
+
+ protected QName getDefaultMappedBinding(Map<String, String> attributes) {
+ QName defaultMappedBinding = null;
if (attributes != null) {
String qname = attributes.get("mappedBinding");
if (qname != null) {
- mappedBinding = ServiceDeclarationParser.getQName(qname);
+ defaultMappedBinding = ServiceDeclarationParser.getQName(qname);
}
}
- if (mappedBinding == null) {
+ if (defaultMappedBinding == null) {
String qname =
System.getProperty("org.apache.tuscany.sca.binding.sca.provider.SCABindingMapper.mappedBinding");
if (qname != null) {
- mappedBinding = ServiceDeclarationParser.getQName(qname);
+ defaultMappedBinding = ServiceDeclarationParser.getQName(qname);
} else {
// By default, mapping to binding.ws or if thats not available then binding.rmi
- mappedBinding = new QName(Base.SCA11_TUSCANY_NS, "binding.hazelcast");
- if (registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class).getProcessor(mappedBinding) == null) {
- mappedBinding = new QName(Base.SCA11_NS, "binding.ws");
- if (registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class).getProcessor(mappedBinding) == null) {
- mappedBinding = new QName(Base.SCA11_TUSCANY_NS, "binding.rmi");
+ defaultMappedBinding = new QName(Base.SCA11_TUSCANY_NS, "binding.hazelcast");
+ if (registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class).getProcessor(defaultMappedBinding) == null) {
+ defaultMappedBinding = new QName(Base.SCA11_NS, "binding.ws");
+ if (registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class).getProcessor(defaultMappedBinding) == null) {
+ defaultMappedBinding = new QName(Base.SCA11_TUSCANY_NS, "binding.rmi");
}
}
}
}
+ return defaultMappedBinding;
+ }
- providerFactories = registry.getExtensionPoint(ProviderFactoryExtensionPoint.class);
- StAXArtifactProcessorExtensionPoint processors =
- registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
- processor = processors.getProcessor(mappedBinding);
+ private BindingBuilder getBindingBuilder(QName binding) {
+ StAXArtifactProcessor processor = processors.getProcessor(binding);
if (processor == null) {
- logger.warning("Mapped binding for binding.sca is not supported: " + mappedBinding);
+ logger.warning("Mapped binding for binding.sca is not supported: " + binding);
}
try {
if (processor != null) {
- bindingTemplate = createDelegatingBinding();
+ Binding bindingTemplate = createDelegatingBinding(defaultMappedBinding);
ProviderFactory providerFactory = providerFactories.getProviderFactory(bindingTemplate.getClass());
if (providerFactory == null) {
- logger.warning("Mapped binding for binding.sca is not supported: " + mappedBinding);
+ logger.warning("Mapped binding for binding.sca is not supported: " + binding);
processor = null;
}
}
@@ -109,13 +113,13 @@ public class DefaultSCABindingMapper imp
throw new ServiceRuntimeException(e);
}
BuilderExtensionPoint builders = registry.getExtensionPoint(BuilderExtensionPoint.class);
- builder = builders.getBindingBuilder(mappedBinding);
- remotable = isDistributed() && processor != null;
+ BindingBuilder builder = builders.getBindingBuilder(binding);
+ return builder;
}
// FIXME: [rfeng] This is a HACK to check if we should make binding.sca remotable
// by checking if we have distributed domain registry present
- private boolean isDistributed() {
+ protected boolean isDistributed() {
DomainRegistryFactoryExtensionPoint factories =
registry.getExtensionPoint(DomainRegistryFactoryExtensionPoint.class);
List<DomainRegistryFactory> list = factories.getDomainRegistryFactories();
@@ -129,9 +133,13 @@ public class DefaultSCABindingMapper imp
}
public RuntimeEndpoint map(RuntimeEndpoint endpoint) {
- if (processor == null) {
+
+ QName bindingType = chooseBinding(endpoint);
+ if (processors.getProcessor(bindingType) == null) {
+ logger.warning("Mapped binding for binding.sca is not supported: " + bindingType);
return null;
}
+
// create a copy of the endpoint but with the web service binding in
RuntimeEndpoint ep = null;
try {
@@ -140,8 +148,9 @@ public class DefaultSCABindingMapper imp
// we know we can clone endpoint references
}
- Binding binding = map(endpoint.getBinding());
+ Binding binding = map(endpoint.getBinding(), bindingType);
ep.setBinding(binding);
+ BindingBuilder builder = getBindingBuilder(bindingType);
if (builder != null) {
builder.build(ep.getComponent(), ep.getService(), binding, new BuilderContext(registry), false);
}
@@ -149,9 +158,12 @@ public class DefaultSCABindingMapper imp
}
public RuntimeEndpointReference map(RuntimeEndpointReference endpointReference) {
- if (processor == null) {
+ QName bindingType = chooseBinding(endpointReference);
+ if (processors.getProcessor(bindingType) == null) {
+ logger.warning("Mapped binding for binding.sca is not supported: " + bindingType);
return null;
}
+
// create a copy of the endpoint but with the web service binding in
RuntimeEndpointReference epr = null;
try {
@@ -160,11 +172,12 @@ public class DefaultSCABindingMapper imp
// we know we can clone endpoint references
}
- Binding binding = map(endpointReference.getBinding());
+ Binding binding = map(endpointReference.getBinding(), bindingType);
epr.setBinding(binding);
// epr.setTargetEndpoint(map((RuntimeEndpoint)epr.getTargetEndpoint()));
+ BindingBuilder builder = getBindingBuilder(bindingType);
if (builder != null) {
builder.build(epr.getComponent(), epr.getReference(), binding, new BuilderContext(registry), false);
}
@@ -172,9 +185,9 @@ public class DefaultSCABindingMapper imp
return epr;
}
- protected Binding map(Binding scaBinding) {
+ protected Binding map(Binding scaBinding, QName newBindingType) {
try {
- Binding binding = createDelegatingBinding();
+ Binding binding = createDelegatingBinding(newBindingType);
binding.setName(scaBinding.getName());
binding.setURI(scaBinding.getURI());
binding.setOperationSelector(scaBinding.getOperationSelector());
@@ -192,29 +205,38 @@ public class DefaultSCABindingMapper imp
}
}
-
- private Binding createDelegatingBinding() throws XMLStreamException, ContributionReadException {
- if (bindingTemplate != null) {
- try {
- return (Binding)bindingTemplate.clone();
- } catch (CloneNotSupportedException e) {
- // Ignore
- }
+
+ protected Binding createDelegatingBinding(QName bindingType) throws XMLStreamException, ContributionReadException {
+ StAXArtifactProcessor processor = processors.getProcessor(bindingType);
+ if (processor == null) {
+ logger.warning("Mapped binding for binding.sca is not supported: " + bindingType);
}
- // This is a hack to create an instance of the binding using the XML QName
+
StringBuffer xml = new StringBuffer();
- xml.append("<").append(mappedBinding.getLocalPart()).append(" xmlns:b=\"").append(mappedBinding
- .getNamespaceURI()).append("\"/>");
+ xml.append("<").append(bindingType.getLocalPart()).append(" xmlns:b=\"").append(bindingType.getNamespaceURI()).append("\"/>");
StAXHelper staxHelper = StAXHelper.getInstance(registry);
XMLStreamReader reader = staxHelper.createXMLStreamReader(new StringReader(xml.toString()));
reader.nextTag();
Binding binding = (Binding)processor.read(reader, new ProcessorContext(registry));
+
return binding;
}
- public boolean isRemotable() {
- return remotable;
+ public boolean isRemotable(RuntimeEndpoint endpoint) {
+ return isDistributed() && processors.getProcessor(chooseBinding(endpoint)) != null;
+ }
+
+ public boolean isRemotable(RuntimeEndpointReference endpointReference) {
+ return isDistributed() && processors.getProcessor(chooseBinding(endpointReference)) != null;
+ }
+
+ protected QName chooseBinding(RuntimeEndpoint endpoint) {
+ return defaultMappedBinding;
+ }
+
+ protected QName chooseBinding(RuntimeEndpointReference endpointReference) {
+ return defaultMappedBinding;
}
}
Modified: tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java?rev=1042665&r1=1042664&r2=1042665&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java Mon Dec 6 14:53:37 2010
@@ -96,7 +96,7 @@ public class RuntimeSCAReferenceBindingP
+ reference.getName());
}
- if (scaBindingMapper.isRemotable()) {
+ if (scaBindingMapper.isRemotable(endpointReference)) {
distributedProvider =
new DelegatingSCAReferenceBindingProvider(endpointReference, scaBindingMapper);
}
Modified: tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java?rev=1042665&r1=1042664&r2=1042665&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java Mon Dec 6 14:53:37 2010
@@ -55,7 +55,7 @@ public class RuntimeSCAServiceBindingPro
// then we need to create a remote endpoint
if (service.getInterfaceContract().getInterface().isRemotable()) {
- if (scaBindingMapper.isRemotable()) {
+ if (scaBindingMapper.isRemotable(endpoint)) {
distributedProvider = new DelegatingSCAServiceBindingProvider(endpoint, scaBindingMapper);
}
}
Modified: tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/SCABindingMapper.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/SCABindingMapper.java?rev=1042665&r1=1042664&r2=1042665&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/SCABindingMapper.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/SCABindingMapper.java Mon Dec 6 14:53:37 2010
@@ -45,6 +45,7 @@ public interface SCABindingMapper {
* Check if the remote SCA binding is supported
* @return
*/
- boolean isRemotable();
+ boolean isRemotable(RuntimeEndpoint endpoint);
+ boolean isRemotable(RuntimeEndpointReference endpointReference);
}