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