[ 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.