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