Author: rfeng
Date: Fri Apr 22 23:55:27 2011
New Revision: 1096093
URL: http://svn.apache.org/viewvc?rev=1096093&view=rev
Log:
Further check the presence of runtime provider for mapped remotable binding.sca
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/DelegatingSCAServiceBindingProvider.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=1096093&r1=1096092&r2=1096093&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
Fri Apr 22 23:55:27 2011
@@ -60,12 +60,14 @@ public class DefaultSCABindingMapper imp
protected ProviderFactoryExtensionPoint providerFactories;
protected StAXArtifactProcessorExtensionPoint processors;
protected QName defaultMappedBinding;
+ protected boolean supportsDistributedSCA;
public DefaultSCABindingMapper(ExtensionPointRegistry registry,
Map<String, String> attributes) {
this.registry = registry;
providerFactories =
registry.getExtensionPoint(ProviderFactoryExtensionPoint.class);
processors =
registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
defaultMappedBinding = getDefaultMappedBinding(attributes);
+ supportsDistributedSCA = isDistributed();
}
protected QName getDefaultMappedBinding(Map<String, String> attributes) {
@@ -84,9 +86,9 @@ public class DefaultSCABindingMapper imp
} else {
// By default, mapping to binding.ws or if thats not available
then binding.rmi
defaultMappedBinding = new QName(Base.SCA11_TUSCANY_NS,
"binding.hazelcast");
- if
(registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class).getProcessor(defaultMappedBinding)
== null) {
+ if (!isBindingSupported(defaultMappedBinding)) {
defaultMappedBinding = new QName(Base.SCA11_NS,
"binding.ws");
- if
(registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class).getProcessor(defaultMappedBinding)
== null) {
+ if (!isBindingSupported(defaultMappedBinding)) {
defaultMappedBinding = new
QName(Base.SCA11_TUSCANY_NS, "binding.rmi");
}
}
@@ -95,27 +97,42 @@ public class DefaultSCABindingMapper imp
return defaultMappedBinding;
}
- private BindingBuilder getBindingBuilder(QName binding) {
- StAXArtifactProcessor processor = processors.getProcessor(binding);
+ private BindingBuilder<?> getBindingBuilder(QName binding) {
+ if (isBindingSupported(binding)) {
+ BuilderExtensionPoint builders =
registry.getExtensionPoint(BuilderExtensionPoint.class);
+ BindingBuilder<?> builder = builders.getBindingBuilder(binding);
+ return builder;
+ } else {
+ return null;
+ }
+ }
+
+ private boolean isBindingSupported(QName binding) {
+ if (binding == null) {
+ return false;
+ }
+ // Check if there is a processor
+ StAXArtifactProcessor<?> processor = processors.getProcessor(binding);
if (processor == null) {
- logger.warning("Mapped binding for binding.sca is not supported: "
+ binding);
+ // logger.warning("Mapped binding for binding.sca is not
supported: " + binding);
+ return false;
}
try {
if (processor != null) {
+ // Futher check if the provider is present
Binding bindingTemplate = createDelegatingBinding(binding);
- ProviderFactory providerFactory =
providerFactories.getProviderFactory(bindingTemplate.getClass());
+ ProviderFactory<?> providerFactory =
providerFactories.getProviderFactory(bindingTemplate.getClass());
if (providerFactory == null) {
- logger.warning("Mapped binding for binding.sca is not
supported: " + binding);
+ // logger.warning("Mapped binding for binding.sca is not
supported: " + binding);
processor = null;
+ return false;
}
}
} catch (Throwable e) {
throw new ServiceRuntimeException(e);
}
- BuilderExtensionPoint builders =
registry.getExtensionPoint(BuilderExtensionPoint.class);
- BindingBuilder builder = builders.getBindingBuilder(binding);
- return builder;
+ return true;
}
// FIXME: [rfeng] This is a HACK to check if we should make binding.sca
remotable
@@ -134,13 +151,13 @@ public class DefaultSCABindingMapper imp
}
public RuntimeEndpoint map(RuntimeEndpoint endpoint) {
-
+
QName bindingType = chooseBinding(endpoint);
- if (processors.getProcessor(bindingType) == null) {
+ if (!isBindingSupported(bindingType)) {
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 {
@@ -160,11 +177,11 @@ public class DefaultSCABindingMapper imp
public RuntimeEndpointReference map(RuntimeEndpointReference
endpointReference) {
QName bindingType = chooseBinding(endpointReference);
- if (processors.getProcessor(bindingType) == null) {
+ if (!isBindingSupported(bindingType)) {
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 {
@@ -206,7 +223,7 @@ public class DefaultSCABindingMapper imp
}
}
-
+
protected Binding createDelegatingBinding(QName bindingType) throws
XMLStreamException, ContributionReadException {
StAXArtifactProcessor processor = processors.getProcessor(bindingType);
if (processor == null) {
@@ -214,28 +231,39 @@ public class DefaultSCABindingMapper imp
}
StringBuffer xml = new StringBuffer();
- xml.append("<").append(bindingType.getLocalPart()).append("
xmlns:b=\"").append(bindingType.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(RuntimeEndpoint endpoint) {
- return isDistributed() &&
processors.getProcessor(chooseBinding(endpoint)) != null;
+ return supportsDistributedSCA &&
isBindingSupported(chooseBinding(endpoint));
}
public boolean isRemotable(RuntimeEndpointReference endpointReference) {
- return isDistributed() &&
processors.getProcessor(chooseBinding(endpointReference)) != null;
+ return supportsDistributedSCA &&
isBindingSupported(chooseBinding(endpointReference));
}
+ /**
+ * Choose the physical binding for service-side remotable binding.sca
+ * @param endpoint
+ * @return
+ */
protected QName chooseBinding(RuntimeEndpoint endpoint) {
return defaultMappedBinding;
}
+ /**
+ * Choose the physical binding for reference-side remotable binding.sca
+ * @param endpointReference
+ * @return
+ */
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/DelegatingSCAServiceBindingProvider.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/DelegatingSCAServiceBindingProvider.java?rev=1096093&r1=1096092&r2=1096093&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/DelegatingSCAServiceBindingProvider.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/DelegatingSCAServiceBindingProvider.java
Fri Apr 22 23:55:27 2011
@@ -19,8 +19,6 @@
package org.apache.tuscany.sca.binding.sca.provider;
-import java.util.logging.Logger;
-
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.invocation.InvokerAsyncResponse;
import org.apache.tuscany.sca.provider.EndpointAsyncProvider;
@@ -37,7 +35,7 @@ import org.apache.tuscany.sca.runtime.Ru
*/
public class DelegatingSCAServiceBindingProvider implements
EndpointAsyncProvider {
- private static final Logger logger =
Logger.getLogger(DelegatingSCAServiceBindingProvider.class.getName());
+ // private static final Logger logger =
Logger.getLogger(DelegatingSCAServiceBindingProvider.class.getName());
private ServiceBindingProvider provider;
private RuntimeEndpoint endpoint;
@@ -111,4 +109,8 @@ public class DelegatingSCAServiceBinding
}
}
+ public ServiceBindingProvider getProviderDelegate() {
+ return provider;
+ }
+
}