[ 
https://issues.apache.org/jira/browse/TUSCANY-2982?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12701219#action_12701219
 ] 

Julien Bigot commented on TUSCANY-2982:
---------------------------------------

The following two patches seems to resolve the issue, however I do not know how 
dirty the hack it is. 
 
 --- 
modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseWireBuilderImpl.java.old
 2008-12-02 14:02:19.000000000 +0100 
 +++ 
modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseWireBuilderImpl.java
 2009-04-21 19:34:23.000000000 +0200 
 @@ -920,15 +920,9 @@ 
       
              // Resolve the target service 
              ComponentService target = wire.getTarget(); 
 - if (target != null && target.isUnresolved()) { 
 - resolvedService = componentServices.get(target.getName()); 
 - if (resolvedService != null) { 
 - wire.setTarget(target); 
 - } else { 
 - warning("WireTargetNotFound", composite, source.getName()); 
 - } 
 - } else { 
 - resolvedService = wire.getTarget(); 
 + resolvedService = componentServices.get(target.getName()); 
 + if (resolvedService == null) { 
 + warning("WireTargetNotFound", composite, source.getName()); 
              } 
       
              // Add the target service to the list of targets of the 
 
 --- 
modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/CompositeReferenceImpl.java.old
 2008-12-02 14:02:18.000000000 +0100 
 +++ 
modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/CompositeReferenceImpl.java
 2009-04-21 19:09:44.000000000 +0200 
 @@ -41,7 +41,12 @@ 
       
      @Override 
      public Object clone() throws CloneNotSupportedException { 
 - return super.clone(); 
 + CompositeReferenceImpl result = (CompositeReferenceImpl) super.clone(); 
 + result.promotedReferences = new ArrayList<ComponentReference>(); 
 + for (ComponentReference promotedReference: promotedReferences) { 
 + 
result.promotedReferences.add((ComponentReference)promotedReference.clone()); 
 + } 
 + return result; 
      } 
   
      public List<ComponentReference> getPromotedReferences() {

> Problem when more than one component has the same implementation.composite 
> and that this composite has exposed references
> -------------------------------------------------------------------------------------------------------------------------
>
>                 Key: TUSCANY-2982
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-2982
>             Project: Tuscany
>          Issue Type: Bug
>          Components: Java SCA Assembly Model
>    Affects Versions: Java-SCA-1.4
>         Environment: Linux / JavaSE-1.6
>            Reporter: Julien Bigot
>
> When in a hierarchy of instantiated components, two components (even not at 
> the same level of the hierarchy) have the same implementation.composite and 
> that the referenced composite has a reference promoting one (or more) 
> reference of its internal components, connecting these composite references 
> leads to a NullPointerException.
> For example:
> A.componentType
>  |-> reference refA
>  |-> service servA
> B.composite
>  |-> component a: A
>  |-> reference refB = a/refA
> C.composite
>  |-> component b: B
>  |-> reference refC = b/refB
> D.composite
>  |-> component a: A
>  |-> component b: B
>  |-> component c: C
>  |-> wire a/servA <-> b/refB
>  |-> wire a/servA <-> c/refC
> instantiation of D leads to the following hierarchy
> D/
>  |->a
>  |->b/
>      |->a
>  |->c/
>     |->b/
>         |->a
> There are two instances of B (D/b & D/c/b) and these two instances have a 
> reference (refB) promoting a reference of an internal component (a/refA), 
> this results in the following NullPointerException :
>  java.lang.NullPointerException
>       at 
> org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl.checkCompatibility(InterfaceContractMapperImpl.java:155)
>       at 
> org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl.isCompatible(InterfaceContractMapperImpl.java:271)
>       at 
> org.apache.tuscany.sca.assembly.builder.impl.BaseWireBuilderImpl.connectWires(BaseWireBuilderImpl.java:940)
>       at 
> org.apache.tuscany.sca.assembly.builder.impl.BaseWireBuilderImpl.wireComponentReferences(BaseWireBuilderImpl.java:112)
> from my initial investigations, this seems somehow related to the fact that 
> when cloned, CompositeReferenceImpl's do not clone their promotedReferences 
> attribute, but rather copy it. I didn't manage to get further however.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to