Author: rfeng
Date: Mon Nov 23 18:10:49 2009
New Revision: 883440
URL: http://svn.apache.org/viewvc?rev=883440&view=rev
Log:
Get the interface from the endpoint when it is null
Modified:
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java
Modified:
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java?rev=883440&r1=883439&r2=883440&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java
Mon Nov 23 18:10:49 2009
@@ -32,7 +32,6 @@
import org.apache.tuscany.sca.assembly.Endpoint;
import org.apache.tuscany.sca.assembly.EndpointReference;
import org.apache.tuscany.sca.assembly.Multiplicity;
-import org.apache.tuscany.sca.assembly.Reference;
import org.apache.tuscany.sca.assembly.SCABinding;
import org.apache.tuscany.sca.assembly.Service;
import org.apache.tuscany.sca.context.CompositeContext;
@@ -301,12 +300,11 @@
public <B> ServiceReference<B> getServiceReference(Class<B>
businessInterface,
RuntimeEndpointReference endpointReference) {
try {
- RuntimeComponentReference ref =
(RuntimeComponentReference)endpointReference.getReference();
- InterfaceContract interfaceContract = ref.getInterfaceContract();
- Reference componentTypeReference = ref.getReference();
- if (componentTypeReference != null &&
componentTypeReference.getInterfaceContract() != null) {
- interfaceContract =
componentTypeReference.getInterfaceContract();
+ InterfaceContract interfaceContract =
endpointReference.getComponentTypeReferenceInterfaceContract();
+ if (businessInterface == null) {
+ businessInterface =
(Class<B>)((JavaInterface)interfaceContract.getInterface()).getJavaClass();
}
+ RuntimeComponentReference ref =
(RuntimeComponentReference)endpointReference.getReference();
InterfaceContract refInterfaceContract =
getInterfaceContract(interfaceContract, businessInterface);
if (refInterfaceContract != interfaceContract) {
ref = (RuntimeComponentReference)ref.clone();
@@ -405,6 +403,9 @@
*/
private InterfaceContract getInterfaceContract(InterfaceContract
interfaceContract, Class<?> businessInterface)
throws CloneNotSupportedException, InvalidInterfaceException {
+ if (businessInterface == null) {
+ return interfaceContract;
+ }
boolean compatible = false;
if (interfaceContract != null && interfaceContract.getInterface() !=
null) {
Interface interfaze = interfaceContract.getInterface();