You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ma...@apache.org on 2018/07/27 08:19:14 UTC

[3/6] james-project git commit: JAMES-2479 upgrade jackson library

JAMES-2479 upgrade jackson library


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b657d252
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b657d252
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b657d252

Branch: refs/heads/master
Commit: b657d2526a4a6c61972b1ff23eaf5ea040c00541
Parents: 00330ba
Author: Matthieu Baechler <ma...@apache.org>
Authored: Wed Jul 18 17:23:57 2018 +0200
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Fri Jul 27 10:16:53 2018 +0200

----------------------------------------------------------------------
 ...icSearchListeningMessageSearchIndexTest.java |  6 +-
 .../mailbox/tika/TikaTextExtractorTest.java     | 41 +++--------
 .../mailets/ICALToJsonAttributeTest.java        |  7 +-
 .../transport/mailets/ContactExtractorTest.java |  4 +-
 pom.xml                                         | 77 ++++++++++++++++++--
 .../integration/GetMailboxesMethodTest.java     |  5 +-
 .../integration/SetMessagesMethodTest.java      |  4 +-
 .../cucumber/GetMessagesMethodStepdefs.java     |  5 --
 .../test/resources/cucumber/GetMessages.feature |  1 -
 .../jmap/json/MultipleClassesDeserializer.java  |  2 +-
 .../UpdateMessagePatchValidatorTest.java        |  4 +-
 .../james/webadmin/routes/ErrorRoutesTest.java  |  3 +-
 .../routes/DLPConfigurationRoutesTest.java      |  5 +-
 13 files changed, 105 insertions(+), 59 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/b657d252/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
index 280f476..62eb3ee 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
@@ -53,6 +53,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import com.fasterxml.jackson.core.JsonGenerationException;
+import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
@@ -146,9 +147,10 @@ public class ElasticSearchListeningMessageSearchIndexTest {
         
         when(messageToElasticSearchJson.convertToJson(eq(message), eq(users)))
             .thenThrow(JsonProcessingException.class);
-        
+
+        JsonGenerator jsonGenerator = null;
         when(messageToElasticSearchJson.convertToJsonWithoutAttachment(eq(message), eq(users)))
-            .thenThrow(new JsonGenerationException("expected error"));
+            .thenThrow(new JsonGenerationException("expected error", jsonGenerator));
         
         //When
         testee.add(session, mailbox, message);

http://git-wip-us.apache.org/repos/asf/james-project/blob/b657d252/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/TikaTextExtractorTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/TikaTextExtractorTest.java b/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/TikaTextExtractorTest.java
index a78821f..11959d6 100644
--- a/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/TikaTextExtractorTest.java
+++ b/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/TikaTextExtractorTest.java
@@ -20,8 +20,6 @@
 package org.apache.james.mailbox.tika;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
@@ -40,9 +38,9 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.JsonNodeType;
-import com.google.common.collect.ImmutableList;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.TextNode;
 
 public class TikaTextExtractorTest {
 
@@ -198,38 +196,21 @@ public class TikaTextExtractorTest {
 
     @Test
     public void asListOfStringShouldReturnASingletonWhenOneElement() {
-        JsonNode jsonNode = mock(JsonNode.class);
-        when(jsonNode.getNodeType())
-            .thenReturn(JsonNodeType.STRING);
-        String expectedContent = "text";
-        when(jsonNode.asText())
-            .thenReturn(expectedContent);
-        
         ContentAndMetadataDeserializer deserializer = new TikaTextExtractor.ContentAndMetadataDeserializer();
-        List<String> listOfString = deserializer.asListOfString(jsonNode);
+        List<String> listOfString = deserializer.asListOfString(TextNode.valueOf("text"));
         
-        assertThat(listOfString).containsOnly(expectedContent);
+        assertThat(listOfString).containsOnly("text");
     }
 
     @Test
     public void asListOfStringShouldReturnAListWhenMultipleElements() {
-        JsonNode mainNode = mock(JsonNode.class);
-        when(mainNode.getNodeType())
-            .thenReturn(JsonNodeType.ARRAY);
-        JsonNode firstNode = mock(JsonNode.class);
-        when(firstNode.asText())
-            .thenReturn("first");
-        JsonNode secondNode = mock(JsonNode.class);
-        when(secondNode.asText())
-            .thenReturn("second");
-        JsonNode thirdNode = mock(JsonNode.class);
-        when(thirdNode.asText())
-            .thenReturn("third");
-        when(mainNode.elements())
-            .thenReturn(ImmutableList.of(firstNode, secondNode, thirdNode).iterator());
-        
+        ArrayNode jsonArray = new ArrayNode(JsonNodeFactory.instance)
+            .add("first")
+            .add("second")
+            .add("third");
+
         ContentAndMetadataDeserializer deserializer = new TikaTextExtractor.ContentAndMetadataDeserializer();
-        List<String> listOfString = deserializer.asListOfString(mainNode);
+        List<String> listOfString = deserializer.asListOfString(jsonArray);
         
         assertThat(listOfString).containsOnly("first", "second", "third");
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b657d252/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java
----------------------------------------------------------------------
diff --git a/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java b/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java
index c0232de..b9fc591 100644
--- a/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java
+++ b/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java
@@ -23,7 +23,6 @@ import static net.javacrumbs.jsonunit.fluent.JsonFluentAssert.assertThatJson;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.io.ByteArrayInputStream;
-import java.io.UnsupportedEncodingException;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.Map;
@@ -44,7 +43,7 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
-import com.fasterxml.jackson.core.io.JsonStringEncoder;
+import com.fasterxml.jackson.core.util.BufferRecyclers;
 import com.google.common.collect.ImmutableMap;
 import net.fortuna.ical4j.data.CalendarBuilder;
 import net.fortuna.ical4j.model.Calendar;
@@ -264,8 +263,8 @@ public class ICALToJsonAttributeTest {
                 "}");
     }
 
-    private String toJsonValue(byte[] ics) throws UnsupportedEncodingException {
-        return new String(JsonStringEncoder.getInstance().quoteAsUTF8(new String(ics, StandardCharsets.UTF_8)), StandardCharsets.UTF_8);
+    private String toJsonValue(byte[] ics) {
+        return new String(BufferRecyclers.getJsonStringEncoder().quoteAsUTF8(new String(ics, StandardCharsets.UTF_8)), StandardCharsets.UTF_8);
     }
 
     @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/james-project/blob/b657d252/mailet/standard/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
index dc33e0b..b328e70 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
@@ -39,6 +39,7 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import com.fasterxml.jackson.core.JsonGenerationException;
+import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 public class ContactExtractorTest {
@@ -92,8 +93,9 @@ public class ContactExtractorTest {
                 .build();
 
         ObjectMapper objectMapper = mock(ObjectMapper.class);
+        JsonGenerator jsonGenerator = null;
         when(objectMapper.writeValueAsString(any(ContactExtractor.ExtractedContacts.class)))
-            .thenThrow(new JsonGenerationException(""));
+            .thenThrow(new JsonGenerationException("", jsonGenerator));
 
         mailet.init(mailetConfig);
         mailet.objectMapper = objectMapper;

http://git-wip-us.apache.org/repos/asf/james-project/blob/b657d252/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 8b17152..0ed2927 100644
--- a/pom.xml
+++ b/pom.xml
@@ -629,7 +629,6 @@
         <karaf.version>2.3.0</karaf.version>
         <karaf.tooling.exam.container.version>2.3.0</karaf.tooling.exam.container.version>
         <pax-logging-api.version>1.6.4</pax-logging-api.version>
-        <jackson-data.version>2.6.3</jackson-data.version>
         <jetty.version>9.4.11.v20180605</jetty.version>
         <assertj-guava.version>3.1.0</assertj-guava.version>
         <testcontainers.version>1.8.1</testcontainers.version>
@@ -661,10 +660,9 @@
         <geronimo-activation-spec.version>1.1</geronimo-activation-spec.version>
         <mockito-core.version>1.9.0</mockito-core.version>
         <jasypt.version>1.9.2</jasypt.version>
-        <jackson-databinding.version>2.6.3</jackson-databinding.version>
         <guice.version>4.1.0</guice.version>
         <jackrabbit-core.version>2.5.2</jackrabbit-core.version>
-
+        <jackson1.version>1.9.2</jackson1.version>
         <logback.version>1.1.11</logback.version>
     </properties>
 
@@ -1601,23 +1599,68 @@
             </dependency>
             <dependency>
                 <groupId>com.fasterxml.jackson.core</groupId>
+                <artifactId>jackson-annotations</artifactId>
+                <version>${jackson.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.core</groupId>
+                <artifactId>jackson-core</artifactId>
+                <version>${jackson.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.core</groupId>
                 <artifactId>jackson-databind</artifactId>
-                <version>${jackson-data.version}</version>
+                <version>${jackson.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.dataformat</groupId>
+                <artifactId>jackson-dataformat-cbor</artifactId>
+                <version>${jackson.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.dataformat</groupId>
+                <artifactId>jackson-dataformat-smile</artifactId>
+                <version>${jackson.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.dataformat</groupId>
+                <artifactId>jackson-dataformat-xml</artifactId>
+                <version>${jackson.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.dataformat</groupId>
+                <artifactId>jackson-dataformat-yaml</artifactId>
+                <version>${jackson.version}</version>
             </dependency>
             <dependency>
                 <groupId>com.fasterxml.jackson.datatype</groupId>
                 <artifactId>jackson-datatype-guava</artifactId>
-                <version>${jackson-databinding.version}</version>
+                <version>${jackson.version}</version>
             </dependency>
             <dependency>
                 <groupId>com.fasterxml.jackson.datatype</groupId>
                 <artifactId>jackson-datatype-jdk8</artifactId>
-                <version>${jackson-databinding.version}</version>
+                <version>${jackson.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.datatype</groupId>
+                <artifactId>jackson-datatype-joda</artifactId>
+                <version>${jackson.version}</version>
             </dependency>
             <dependency>
                 <groupId>com.fasterxml.jackson.datatype</groupId>
                 <artifactId>jackson-datatype-jsr310</artifactId>
-                <version>${jackson-databinding.version}</version>
+                <version>${jackson.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.jaxrs</groupId>
+                <artifactId>jackson-jaxrs-json-provider</artifactId>
+                <version>${jackson.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.module</groupId>
+                <artifactId>jackson-module-afterburner</artifactId>
+                <version>${jackson.version}</version>
             </dependency>
             <dependency>
                 <groupId>com.github.dpaukov</groupId>
@@ -2227,6 +2270,26 @@
                 <version>1.60</version>
             </dependency>
             <dependency>
+                <groupId>org.codehaus.jackson</groupId>
+                <artifactId>jackson-core-asl</artifactId>
+                <version>${jackson1.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.codehaus.jackson</groupId>
+                <artifactId>jackson-jaxrs</artifactId>
+                <version>${jackson1.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.codehaus.jackson</groupId>
+                <artifactId>jackson-mapper-asl</artifactId>
+                <version>${jackson1.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.codehaus.jackson</groupId>
+                <artifactId>jackson-xc</artifactId>
+                <version>${jackson1.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>org.eclipse.jetty</groupId>
                 <artifactId>jetty-http</artifactId>
                 <version>${jetty.version}</version>

http://git-wip-us.apache.org/repos/asf/james-project/blob/b657d252/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
index 05e3d45..4315648 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
@@ -34,6 +34,7 @@ import static org.apache.james.jmap.TestingConstants.NAME;
 import static org.apache.james.jmap.TestingConstants.SECOND_MAILBOX;
 import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.empty;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasEntry;
@@ -339,8 +340,8 @@ public abstract class GetMailboxesMethodTest {
             .statusCode(200)
             .body(NAME, equalTo("error"))
             .body(ARGUMENTS + ".type", equalTo("invalidArguments"))
-            .body(ARGUMENTS + ".description", equalTo("Can not deserialize instance of java.util.ArrayList out of VALUE_TRUE token\n"
-                    + " at [Source: {\"ids\":true}; line: 1, column: 2] (through reference chain: org.apache.james.jmap.model.Builder[\"ids\"])"));
+            .body(ARGUMENTS + ".description", containsString("Cannot deserialize instance of `java.util.ArrayList` out of VALUE_TRUE token"))
+            .body(ARGUMENTS + ".description", containsString("{\"ids\":true}"));
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/b657d252/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
index 980c2c8..43be5d0 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
@@ -830,8 +830,8 @@ public abstract class SetMessagesMethodTest {
             .body(NOT_UPDATED, hasKey(messageId))
             .body(NOT_UPDATED + "[\"" + messageId + "\"].type", equalTo("invalidProperties"))
             .body(NOT_UPDATED + "[\"" + messageId + "\"].properties[0]", equalTo("isUnread"))
-            .body(NOT_UPDATED + "[\"" + messageId + "\"].description", equalTo("isUnread: Can not construct instance of java.lang.Boolean from String value '123': only \"true\" or \"false\" recognized\n" +
-                    " at [Source: {\"isUnread\":\"123\"}; line: 1, column: 2] (through reference chain: org.apache.james.jmap.model.Builder[\"isUnread\"])"))
+            .body(NOT_UPDATED + "[\"" + messageId + "\"].description", containsString("isUnread: Cannot deserialize value of type `java.lang.Boolean` from String \"123\": only \"true\" or \"false\" recognized"))
+            .body(NOT_UPDATED + "[\"" + messageId + "\"].description", containsString("{\"isUnread\":\"123\"}"))
             .body(ARGUMENTS + ".updated", hasSize(0));
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b657d252/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
index e2bc4ca..efc15e6 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
@@ -536,11 +536,6 @@ public class GetMessagesMethodStepdefs {
         assertThat(httpClient.jsonPath.<List<String>>read(ARGUMENTS + ".list")).isEmpty();
     }
 
-    @Then("^the description is \"(.*?)\"$")
-    public void assertDescription(String description) {
-        assertThat(httpClient.jsonPath.<String>read(ARGUMENTS + ".description")).isEqualTo(description);
-    }
-
     @Then("^the notFound list should contain \"([^\"]*)\"$")
     public void assertNotFoundListContains(String id) {
         MessageId messageId = messageIdStepdefs.getMessageId(id);

http://git-wip-us.apache.org/repos/asf/james-project/blob/b657d252/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature
index 8237ade..828f068 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature
@@ -47,7 +47,6 @@ Feature: GetMessages method
   Scenario: Retrieving messages with invalid argument should return an InvalidArguments error
     When "alice@domain.tld" ask for messages using invalid argument
     Then an error of type "invalidArguments" is returned
-    And the description is "N/A (through reference chain: org.apache.james.jmap.model.Builder["ids"])"
 
   Scenario: Retrieving messages should return empty list when no message
     When "alice@domain.tld" ask for messages

http://git-wip-us.apache.org/repos/asf/james-project/blob/b657d252/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/MultipleClassesDeserializer.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/MultipleClassesDeserializer.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/MultipleClassesDeserializer.java
index d06f448..f724164 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/MultipleClassesDeserializer.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/MultipleClassesDeserializer.java
@@ -48,7 +48,7 @@ public class MultipleClassesDeserializer extends StdDeserializer<Object> {
                 .filter(req -> ! (root.at(req.getKey()).isMissingNode()))
                 .map(x -> readValue(mapper, root, x.getValue()))
                 .findFirst()
-                .orElseThrow(() -> new JsonMappingException("Can't map request to a known registered class"));
+                .orElseThrow(() -> JsonMappingException.from(ctxt, "Can't map request to a known registered class"));
     }
 
     private Object readValue(ObjectMapper mapper, JsonNode root, Class<?> clazz) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/b657d252/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/UpdateMessagePatchValidatorTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/UpdateMessagePatchValidatorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/UpdateMessagePatchValidatorTest.java
index db8d8d0..c0c703e 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/UpdateMessagePatchValidatorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/UpdateMessagePatchValidatorTest.java
@@ -33,6 +33,7 @@ import org.apache.james.jmap.model.UpdateMessagePatch;
 import org.junit.Before;
 import org.junit.Test;
 
+import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -80,8 +81,9 @@ public class UpdateMessagePatchValidatorTest {
         ObjectNode emptyRootNode = new ObjectMapper().createObjectNode();
 
         ObjectMapper mapper = mock(ObjectMapper.class);
+        JsonGenerator jsonGenerator = null;
         when(mapper.readValue(anyString(), eq(UpdateMessagePatch.class)))
-            .thenThrow(new JsonMappingException("Exception when parsing"));
+            .thenThrow(JsonMappingException.from(jsonGenerator, "Exception when parsing"));
 
         when(objectMapperFactory.forParsing())
             .thenReturn(mapper);

http://git-wip-us.apache.org/repos/asf/james-project/blob/b657d252/server/protocols/webadmin/webadmin-core/src/test/java/org/apache/james/webadmin/routes/ErrorRoutesTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-core/src/test/java/org/apache/james/webadmin/routes/ErrorRoutesTest.java b/server/protocols/webadmin/webadmin-core/src/test/java/org/apache/james/webadmin/routes/ErrorRoutesTest.java
index 943e15c..94993e3 100644
--- a/server/protocols/webadmin/webadmin-core/src/test/java/org/apache/james/webadmin/routes/ErrorRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-core/src/test/java/org/apache/james/webadmin/routes/ErrorRoutesTest.java
@@ -28,6 +28,7 @@ import static org.apache.james.webadmin.utils.ErrorResponder.ErrorType.SERVER_ER
 import static org.eclipse.jetty.http.HttpStatus.BAD_REQUEST_400;
 import static org.eclipse.jetty.http.HttpStatus.INTERNAL_SERVER_ERROR_500;
 import static org.eclipse.jetty.http.HttpStatus.NOT_FOUND_404;
+import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.equalTo;
 
 import org.apache.james.metrics.api.NoopMetricFactory;
@@ -95,6 +96,6 @@ public class ErrorRoutesTest {
             .body("statusCode", equalTo(BAD_REQUEST_400))
             .body("type", equalTo(INVALID_ARGUMENT.getType()))
             .body("message", equalTo("JSON payload of the request is not valid"))
-            .body("details", equalTo("Unrecognized token 'a': was expecting ('true', 'false' or 'null')\n at [Source: a non valid JSON; line: 1, column: 2]"));
+            .body("details", containsString("Unrecognized token 'a': was expecting ('true', 'false' or 'null')"));
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b657d252/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DLPConfigurationRoutesTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DLPConfigurationRoutesTest.java b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DLPConfigurationRoutesTest.java
index b1e51a6..62013c9 100644
--- a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DLPConfigurationRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DLPConfigurationRoutesTest.java
@@ -26,6 +26,7 @@ import static io.restassured.RestAssured.with;
 import static net.javacrumbs.jsonunit.fluent.JsonFluentAssert.assertThatJson;
 import static org.apache.james.webadmin.Constants.JSON_CONTENT_TYPE;
 import static org.apache.james.webadmin.WebAdminServer.NO_CONFIGURATION;
+import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.is;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.mock;
@@ -239,7 +240,7 @@ class DLPConfigurationRoutesTest {
                 .body("statusCode", is(400))
                 .body("type", is("InvalidArgument"))
                 .body("message", is("JSON payload of the request is not valid"))
-                .body("details", is("Instantiation of [simple type, class org.apache.james.webadmin.dto.DLPConfigurationItemDTO] value failed: 'id' is mandatory (through reference chain: org.apache.james.webadmin.dto.DLPConfigurationDTO[\"rules\"])"));
+                .body("details", containsString("'id' is mandatory"));
         }
 
         @Test
@@ -263,7 +264,7 @@ class DLPConfigurationRoutesTest {
                 .body("statusCode", is(400))
                 .body("type", is("InvalidArgument"))
                 .body("message", is("JSON payload of the request is not valid"))
-                .body("details", is("Instantiation of [simple type, class org.apache.james.webadmin.dto.DLPConfigurationItemDTO] value failed: 'expression' is mandatory (through reference chain: org.apache.james.webadmin.dto.DLPConfigurationDTO[\"rules\"])"));
+                .body("details", containsString("'expression' is mandatory"));
         }
 
         @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org