summaryrefslogtreecommitdiffstats
path: root/documentapi
diff options
context:
space:
mode:
Diffstat (limited to 'documentapi')
-rw-r--r--documentapi/pom.xml5
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java9
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java6
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepository.java16
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapiclient/.gitignore0
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepositoryTest.java33
6 files changed, 46 insertions, 23 deletions
diff --git a/documentapi/pom.xml b/documentapi/pom.xml
index 17fd0cc5505..41552fb33e1 100644
--- a/documentapi/pom.xml
+++ b/documentapi/pom.xml
@@ -43,6 +43,11 @@
<version>${project.version}</version>
</dependency>
<dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>com.yahoo.vespa</groupId>
<artifactId>config</artifactId>
<version>${project.version}</version>
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java
index 793e0ed73c0..9f20ca78d6e 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java
@@ -198,15 +198,6 @@ public class MessageBusAsyncSession implements MessageBusSession, AsyncSession {
return errors.toString();
}
- static Set<Integer>
- getErrorCodes(Reply reply) {
- Set<Integer> errorCodes = new HashSet<>();
- for (int i = 0; i < reply.getNumErrors(); ++i) {
- errorCodes.add(reply.getError(i).getCode());
- }
- return errorCodes;
- }
-
private static Result.ResultType messageBusErrorToResultType(int messageBusError) {
switch (messageBusError) {
case ErrorCode.SEND_QUEUE_FULL: return Result.ResultType.TRANSIENT_ERROR;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java
index 106791491f9..47eeb12b250 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java
@@ -167,8 +167,7 @@ public class MessageBusSyncSession implements MessageBusSession, SyncSession, Re
msg.setPriority(pri);
Reply reply = syncSend(msg);
if (reply.hasErrors()) {
- throw new DocumentAccessException(MessageBusAsyncSession.getErrorMessage(reply),
- MessageBusAsyncSession.getErrorCodes(reply));
+ throw new DocumentAccessException(MessageBusAsyncSession.getErrorMessage(reply), reply.getErrorCodes());
}
if (reply.getType() != DocumentProtocol.REPLY_UPDATEDOCUMENT) {
throw new DocumentAccessException("Received unknown response: " + reply);
@@ -218,8 +217,7 @@ public class MessageBusSyncSession implements MessageBusSession, SyncSession, Re
private void syncSendPutDocumentMessage(PutDocumentMessage putDocumentMessage) {
Reply reply = syncSend(putDocumentMessage);
if (reply.hasErrors()) {
- throw new DocumentAccessException(MessageBusAsyncSession.getErrorMessage(reply),
- MessageBusAsyncSession.getErrorCodes(reply));
+ throw new DocumentAccessException(MessageBusAsyncSession.getErrorMessage(reply), reply.getErrorCodes());
}
}
}
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepository.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepository.java
index 26b0eec8cf4..1a3a23eb8e4 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepository.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepository.java
@@ -55,22 +55,18 @@ class RoutingPolicyRepository {
log.log(LogLevel.ERROR, "No routing policy factory found for name '" + name + "'.");
return null;
}
- DocumentProtocolRoutingPolicy ret;
- try {
- ret = factory.createPolicy(param);
- } catch (Exception e) {
- ret = new ErrorPolicy(e.getMessage());
+ final DocumentProtocolRoutingPolicy ret = factory.createPolicy(param);
+
+ if (ret == null) {
+ log.log(LogLevel.ERROR, "Routing policy factory " + factory.getClass().getName() + " failed to create a " +
+ "routing policy for parameter '" + name + "'.");
+ return null;
}
if (ret.getMetrics() != null) {
metrics.routingPolicyMetrics.addMetric(ret.getMetrics());
}
- if (ret == null) {
- log.log(LogLevel.ERROR, "Routing policy factory " + factory.getClass().getName() + " failed to create a " +
- "routing policy for parameter '" + name + "'.");
- return null;
- }
return ret;
}
}
diff --git a/documentapi/src/main/java/com/yahoo/documentapiclient/.gitignore b/documentapi/src/main/java/com/yahoo/documentapiclient/.gitignore
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/documentapi/src/main/java/com/yahoo/documentapiclient/.gitignore
+++ /dev/null
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepositoryTest.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepositoryTest.java
new file mode 100644
index 00000000000..609e83683b1
--- /dev/null
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepositoryTest.java
@@ -0,0 +1,33 @@
+// Copyright 2017 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.documentapi.messagebus.protocol;
+
+import com.yahoo.documentapi.metrics.DocumentProtocolMetricSet;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class RoutingPolicyRepositoryTest {
+
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ @Test
+ public void policy_creation_does_not_swallow_exception() {
+ final DocumentProtocolMetricSet metrics = new DocumentProtocolMetricSet();
+ final RoutingPolicyRepository repo = new RoutingPolicyRepository(metrics);
+ final RoutingPolicyFactory factory = mock(RoutingPolicyFactory.class);
+
+ when(factory.createPolicy(anyString())).thenThrow(new IllegalArgumentException("oh no!"));
+ repo.putFactory("foo", factory);
+
+ expectedException.expectMessage("oh no!");
+ expectedException.expect(IllegalArgumentException.class);
+
+ repo.createPolicy("foo", "bar");
+ }
+
+}