You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2007/03/01 07:29:05 UTC

svn commit: r513176 - in /incubator/tuscany/java/sca/kernel/core/src: main/java/org/apache/tuscany/core/loader/ main/java/org/apache/tuscany/core/resolver/ test/java/org/apache/tuscany/core/resolver/

Author: jmarino
Date: Wed Feb 28 22:29:04 2007
New Revision: 513176

URL: http://svn.apache.org/viewvc?view=rev&rev=513176
Log:
adjust autowire to throw an exception for unresolved required references

Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/resolver/DefaultAutowireResolver.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/resolver/DefaultAutowireResolverTestCase.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java?view=diff&rev=513176&r1=513175&r2=513176
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java Wed Feb 28 22:29:04 2007
@@ -166,6 +166,7 @@
                                     String compName = componentDefinition.getUri().toString();
                                     URI refName = URI.create(compName + ref.getUri().toString());
                                     referenceTarget.setReferenceName(refName);
+                                    referenceTarget.setAutowire(autowire);
                                     componentDefinition.add(referenceTarget);
                                 }
                             }
@@ -316,6 +317,10 @@
             ReferenceTarget target = definition.getReferenceTargets().get(name);
             if (target == null) {
                 throw new MissingReferenceException(name);
+            }
+            if (target.isAutowire()){
+                // autowire targets are not set yet
+                continue;
             }
             int count = target.getTargets().size();
             Multiplicity multiplicity = referenceDef.getMultiplicity();

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/resolver/DefaultAutowireResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/resolver/DefaultAutowireResolver.java?view=diff&rev=513176&r1=513175&r2=513176
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/resolver/DefaultAutowireResolver.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/resolver/DefaultAutowireResolver.java Wed Feb 28 22:29:04 2007
@@ -56,11 +56,13 @@
                     // recurse decendents for composites
                     resolve((ComponentDefinition<Implementation<CompositeComponentType<?, ?, ?>>>) definition, child);
                 }
-                for (ReferenceTarget target : child.getReferenceTargets().values()) {
-                    if (target.getTargets().isEmpty()) {  // TODO JFM should be isAutowire
-                        String fragment = target.getReferenceName().getFragment();
-                        ReferenceDefinition reference = childType.getReferences().get(fragment);
-                        assert reference != null;
+                Map<String, ReferenceTarget> targets = child.getReferenceTargets();
+                for (ReferenceDefinition reference : childType.getReferences().values()) {
+                    ReferenceTarget target = targets.get(reference.getUri().getFragment());
+                    if (target == null) {
+                        continue;
+                    }
+                    if (target.isAutowire()) {
                         ServiceContract requiredContract = reference.getServiceContract();
                         resolve(compositeType, requiredContract, target, reference.isRequired());
                     }
@@ -68,17 +70,19 @@
             }
         } else {
             // a leaf level component
-            for (ReferenceTarget target : definition.getReferenceTargets().values()) {
-                if (target.getTargets().isEmpty()) {    // TODO JFM should be isAutowire
-                    String fragment = target.getReferenceName().getFragment();
-                    ReferenceDefinition reference = type.getReferences().get(fragment);
-                    assert reference != null;
+            ComponentType<?, ?, ?> componentType = definition.getImplementation().getComponentType();
+            Map<String, ReferenceTarget> targets = definition.getReferenceTargets();
+            for (ReferenceDefinition reference : componentType.getReferences().values()) {
+                ReferenceTarget target = targets.get(reference.getUri().getFragment());
+                if (target == null) {
+                    continue;
+                }
+                if (target.isAutowire()) {
                     ServiceContract requiredContract = reference.getServiceContract();
                     CompositeComponentType<?, ?, ?> ctype = parentDefinition.getImplementation().getComponentType();
                     resolve(ctype, requiredContract, target, reference.isRequired());
                 }
             }
-
         }
     }
 
@@ -115,7 +119,7 @@
             ComponentType<?, ?, ?> candidateType = candidateImpl.getComponentType();
             for (ServiceDefinition service : candidateType.getServices().values()) {
                 Class<?> serviceInterface = service.getServiceContract().getInterfaceClass();
-                if (serviceInterface == null){
+                if (serviceInterface == null) {
                     continue;
                 }
                 if (requiredInterface.equals(serviceInterface)) {
@@ -130,18 +134,17 @@
             }
         }
         if (targetUri == null) {
-            if (candidateUri == null) {
-                candidateUri = resolvePrimordial(requiredContract);
-                if (candidateUri == null && !required) {
-                    return;
-                } else if (candidateUri == null) {
-                    String refName = target.getReferenceName().toString();
-                    throw new AutowireTargetNotFoundException("No matching target found for " + refName, refName);
-                }
-            }
-            target.addTarget(candidateUri);
-        } else {
+            targetUri = resolvePrimordial(requiredContract);
+        }
+        if (candidateUri != null) {
+            targetUri = candidateUri;
+        }
+        if (targetUri != null) {
             target.addTarget(targetUri);
+        }
+        if (targetUri == null && required) {
+            String uri = target.getReferenceName().toString();
+            throw new AutowireTargetNotFoundException("No suitable target found for", uri);
         }
     }
 

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/resolver/DefaultAutowireResolverTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/resolver/DefaultAutowireResolverTestCase.java?view=diff&rev=513176&r1=513175&r2=513176
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/resolver/DefaultAutowireResolverTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/resolver/DefaultAutowireResolverTestCase.java Wed Feb 28 22:29:04 2007
@@ -138,6 +138,7 @@
         ComponentDefinition<MockAtomicImpl> definition = new ComponentDefinition<MockAtomicImpl>(uri, impl);
         ReferenceTarget target = new ReferenceTarget();
         target.setReferenceName(REFERENCE_URI);
+        target.setAutowire(true);
         definition.add(target);
         return definition;
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org