summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2010-03-08 12:00:38 +0000
committerslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2010-03-08 12:00:38 +0000
commitfa12862cdde921c4893204a0dc28cf7d80e2cebf (patch)
tree5310fd403d54e2d277047e8980838c674dc05a9c
parentdf6bd28390b0cd99119934763a4a664b6aa5347d (diff)
Switch binder interface over to throwing exceptions rather than returning booleans. Allows the full details of a missmatch to be retrieved in the runtime case as well as the build time case. Update the matching test case to take advantage of the extra information.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@920287 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--sca-java-2.x/trunk/itest/policy/matching/src/test/java/org/apache/tuscany/sca/policy/matching/MatchingTestCase.java18
-rw-r--r--sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointReferenceBinder.java4
-rw-r--r--sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointReferenceImpl.java5
-rw-r--r--sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java22
4 files changed, 27 insertions, 22 deletions
diff --git a/sca-java-2.x/trunk/itest/policy/matching/src/test/java/org/apache/tuscany/sca/policy/matching/MatchingTestCase.java b/sca-java-2.x/trunk/itest/policy/matching/src/test/java/org/apache/tuscany/sca/policy/matching/MatchingTestCase.java
index d4ae722318..beadbec397 100644
--- a/sca-java-2.x/trunk/itest/policy/matching/src/test/java/org/apache/tuscany/sca/policy/matching/MatchingTestCase.java
+++ b/sca-java-2.x/trunk/itest/policy/matching/src/test/java/org/apache/tuscany/sca/policy/matching/MatchingTestCase.java
@@ -20,6 +20,8 @@
package org.apache.tuscany.sca.policy.matching;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import org.apache.tuscany.sca.node.Contribution;
import org.apache.tuscany.sca.node.Node;
@@ -56,8 +58,9 @@ public class MatchingTestCase {
HelloWorld helloWorld = node.getService(HelloWorld.class, "HelloWorldClientMutuallyExclusiveIntents");
try {
helloWorld.getGreetings("petra");
+ fail("Exception expected");
} catch (Exception ex) {
- assertEquals("Unable to bind", ex.getMessage().substring(0, 14));
+ assertTrue(ex.getMessage().indexOf("No match because the following intents are mutually exclusive {http://tuscany.apache.org/xmlns/sca/1.1}testIntent3 {http://tuscany.apache.org/xmlns/sca/1.1}testIntent1") > -1);
}
}
@@ -72,8 +75,9 @@ public class MatchingTestCase {
HelloWorld helloWorld = node.getService(HelloWorld.class, "HelloUnresolvedIntentsOnReference");
try {
helloWorld.getGreetings("petra");
+ fail("Exception expected");
} catch (Exception ex) {
- assertEquals("Unable to bind", ex.getMessage().substring(0, 14));
+ assertTrue(ex.getMessage().indexOf("No match because there are unresolved intents [{http://tuscany.apache.org/xmlns/sca/1.1}testIntent2]") > -1);
}
}
@@ -90,9 +94,10 @@ public class MatchingTestCase {
public void testSomePoliciesOnOneSideButNoneOnTheOther() throws Exception {
try {
HelloWorld helloWorld = node.getService(HelloWorld.class, "HelloWorldClientSomePoliciesOnOneSideButNoneOnTheOther");
- assertEquals("Hello petra", helloWorld.getGreetings("petra"));
+ helloWorld.getGreetings("petra");
+ fail("Exception expected");
} catch (Exception ex) {
- assertEquals("Unable to bind", ex.getMessage().substring(0, 14));
+ assertTrue(ex.getMessage().indexOf("No match because there are policy sets at the endpoint but not at the endpoint reference") > -1);
}
}
@@ -106,9 +111,10 @@ public class MatchingTestCase {
public void testDifferentPolicyLanguage() throws Exception {
try {
HelloWorld helloWorld = node.getService(HelloWorld.class, "HelloWorldClientDifferentPolicyLanguage");
- assertEquals("Hello petra", helloWorld.getGreetings("petra"));
+ helloWorld.getGreetings("petra");
+ fail("Exception expected");
} catch (Exception ex) {
- assertEquals("Unable to bind", ex.getMessage().substring(0, 14));
+ assertTrue(ex.getMessage().indexOf("No match because the policy sets on either side have policies in differnt languages {http://schemas.xmlsoap.org/ws/2004/09/policy}ExactlyOne and {http://tuscany.apache.org/xmlns/sca/1.1}jdkLogger") > -1);
}
}
diff --git a/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointReferenceBinder.java b/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointReferenceBinder.java
index 676a4fd489..b2ce3f5b7b 100644
--- a/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointReferenceBinder.java
+++ b/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointReferenceBinder.java
@@ -32,7 +32,7 @@ public interface EndpointReferenceBinder {
* @param endpointReference
* @return
*/
- boolean bindBuildTime(EndpointRegistry endpointRegistry, EndpointReference endpointReference);
+ void bindBuildTime(EndpointRegistry endpointRegistry, EndpointReference endpointReference);
/**
@@ -40,7 +40,7 @@ public interface EndpointReferenceBinder {
* @param endpointReference
* @return
*/
- boolean bindRunTime(EndpointRegistry endpointRegistry, EndpointReference endpointReference);
+ void bindRunTime(EndpointRegistry endpointRegistry, EndpointReference endpointReference);
/**
*
diff --git a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointReferenceImpl.java b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointReferenceImpl.java
index 2e68602713..9ef0d8e728 100644
--- a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointReferenceImpl.java
+++ b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointReferenceImpl.java
@@ -302,10 +302,7 @@ public class RuntimeEndpointReferenceImpl extends EndpointReferenceImpl implemen
private void resolveEndpointReference() {
resolve();
- boolean ok = eprBinder.bindRunTime(endpointRegistry, this);
- if (!ok) {
- throw new ServiceRuntimeException("Unable to bind " + this);
- }
+ eprBinder.bindRunTime(endpointRegistry, this);
// start the binding provider
final ReferenceBindingProvider bindingProvider = getBindingProvider();
diff --git a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java
index fe313e6472..e72a9f2e35 100644
--- a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java
+++ b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java
@@ -49,6 +49,7 @@ import org.apache.tuscany.sca.policy.PolicySet;
import org.apache.tuscany.sca.policy.Qualifier;
import org.apache.tuscany.sca.runtime.EndpointReferenceBinder;
import org.apache.tuscany.sca.runtime.EndpointRegistry;
+import org.oasisopen.sca.ServiceRuntimeException;
/**
* A builder that takes endpoint references and resolves them. It either finds local
@@ -92,9 +93,9 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder {
* @param endpointRegistry
* @param endpointReference
*/
- public boolean bindBuildTime(EndpointRegistry endpointRegistry,
+ public void bindBuildTime(EndpointRegistry endpointRegistry,
EndpointReference endpointReference) {
- return bind(endpointRegistry, endpointReference, false);
+ bind(endpointRegistry, endpointReference, false);
}
/**
@@ -104,9 +105,9 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder {
* @param endpointRegistry
* @param endpointReference
*/
- public boolean bindRunTime(EndpointRegistry endpointRegistry,
+ public void bindRunTime(EndpointRegistry endpointRegistry,
EndpointReference endpointReference) {
- return bind(endpointRegistry, endpointReference, true);
+ bind(endpointRegistry, endpointReference, true);
}
/**
@@ -116,7 +117,7 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder {
* @param endpointReference
* @param runtime set true if called from the runtime
*/
- public boolean bind(EndpointRegistry endpointRegistry,
+ public void bind(EndpointRegistry endpointRegistry,
EndpointReference endpointReference,
boolean runtime){
@@ -183,7 +184,8 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder {
"endpoint-validation-messages",
"NoComponentReferenceTarget",
endpointReference.getReference().getName());
- return false;
+ throw new ServiceRuntimeException("Unable to bind " +
+ monitor.getLastProblem().toString());
}
}
@@ -242,7 +244,8 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder {
"endpoint-validation-messages",
"NoEndpointsFound",
endpointReference.toString());
- return false;
+ throw new ServiceRuntimeException("Unable to bind " +
+ monitor.getLastProblem().toString());
}
}
@@ -277,10 +280,9 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder {
endpointReference.toString());
}
- return false;
+ throw new ServiceRuntimeException("Unable to bind " +
+ monitor.getLastProblem().toString());
}
-
- return true;
}
/**