http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/container/util/src/test/java/org/apache/james/util/mime/MessageContentExtractorTest.java ---------------------------------------------------------------------- diff --git a/server/container/util/src/test/java/org/apache/james/util/mime/MessageContentExtractorTest.java b/server/container/util/src/test/java/org/apache/james/util/mime/MessageContentExtractorTest.java new file mode 100644 index 0000000..deae849 --- /dev/null +++ b/server/container/util/src/test/java/org/apache/james/util/mime/MessageContentExtractorTest.java @@ -0,0 +1,514 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ +package org.apache.james.util.mime; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.util.Optional; + +import javax.mail.internet.MimeMessage; + +import org.apache.james.mime4j.dom.Message; +import org.apache.james.mime4j.dom.Multipart; +import org.apache.james.mime4j.field.Fields; +import org.apache.james.mime4j.message.BasicBodyFactory; +import org.apache.james.mime4j.message.BodyPart; +import org.apache.james.mime4j.message.BodyPartBuilder; +import org.apache.james.mime4j.message.HeaderImpl; +import org.apache.james.mime4j.message.MultipartBuilder; +import org.apache.james.mime4j.stream.Field; +import org.apache.james.mime4j.util.ByteSequence; +import org.apache.james.util.mime.MessageContentExtractor.MessageContent; +import org.junit.Before; +import org.junit.Test; + +public class MessageContentExtractorTest { + private static final String BINARY_CONTENT = "binary"; + private static final String TEXT_CONTENT = "text content"; + private static final String HTML_CONTENT = "<b>html</b> content"; + private static final String TEXT_CONTENT2 = "other text content"; + private static final String HTML_CONTENT2 = "other <b>html</b> content"; + private static final String ATTACHMENT_CONTENT = "attachment content"; + private static final String ANY_VALUE = "anyValue"; + private static final Field CONTENT_ID_FIELD = new Field() { + @Override + public String getName() { + return MessageContentExtractor.CONTENT_ID; + } + + @Override + public String getBody() { + return ANY_VALUE; + } + + @Override + public ByteSequence getRaw() { + return ByteSequence.EMPTY; + } + }; + + private MessageContentExtractor testee; + + private BodyPartBuilder htmlPart; + private BodyPartBuilder textPart; + private BodyPartBuilder textAttachment; + private BodyPartBuilder inlineText; + private BodyPartBuilder inlineImage; + + @Before + public void setup() throws IOException { + testee = new MessageContentExtractor(); + textPart = BodyPartBuilder.create().setBody(TEXT_CONTENT, "plain", StandardCharsets.UTF_8); + htmlPart = BodyPartBuilder.create().setBody(HTML_CONTENT, "html", StandardCharsets.UTF_8); + textAttachment = BodyPartBuilder.create() + .setBody(ATTACHMENT_CONTENT, "plain", StandardCharsets.UTF_8) + .setContentDisposition("attachment"); + inlineText = BodyPartBuilder.create() + .setBody(ATTACHMENT_CONTENT, "plain", StandardCharsets.UTF_8) + .setContentDisposition("inline"); + inlineImage = BodyPartBuilder.create() + .setBody(new byte[0], "image/png") + .setContentDisposition("inline"); + } + + @Test + public void extractShouldReturnEmptyWhenBinaryContentOnly() throws IOException { + Message message = Message.Builder.of() + .setBody(BasicBodyFactory.INSTANCE.binaryBody(BINARY_CONTENT, StandardCharsets.UTF_8)) + .build(); + MessageContent actual = testee.extract(message); + assertThat(actual.getTextBody()).isEmpty(); + assertThat(actual.getHtmlBody()).isEmpty(); + } + + @Test + public void extractShouldReturnTextOnlyWhenTextOnlyBody() throws IOException { + Message message = Message.Builder.of() + .setBody(TEXT_CONTENT, StandardCharsets.UTF_8) + .build(); + MessageContent actual = testee.extract(message); + assertThat(actual.getTextBody()).contains(TEXT_CONTENT); + assertThat(actual.getHtmlBody()).isEmpty(); + } + + @Test + public void extractShouldReturnHtmlOnlyWhenHtmlOnlyBody() throws IOException { + Message message = Message.Builder.of() + .setBody(HTML_CONTENT, "html", StandardCharsets.UTF_8) + .build(); + MessageContent actual = testee.extract(message); + assertThat(actual.getTextBody()).isEmpty(); + assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); + } + + @Test + public void extractShouldReturnHtmlAndTextWhenMultipartAlternative() throws IOException { + Multipart multipart = MultipartBuilder.create("alternative") + .addBodyPart(textPart) + .addBodyPart(htmlPart) + .build(); + Message message = Message.Builder.of() + .setBody(multipart) + .build(); + MessageContent actual = testee.extract(message); + assertThat(actual.getTextBody()).contains(TEXT_CONTENT); + assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); + } + + @Test + public void extractShouldReturnHtmlWhenMultipartAlternativeWithoutPlainPart() throws IOException { + Multipart multipart = MultipartBuilder.create("alternative") + .addBodyPart(htmlPart) + .build(); + Message message = Message.Builder.of() + .setBody(multipart) + .build(); + MessageContent actual = testee.extract(message); + assertThat(actual.getTextBody()).isEmpty(); + assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); + } + + @Test + public void extractShouldReturnTextWhenMultipartAlternativeWithoutHtmlPart() throws IOException { + Multipart multipart = MultipartBuilder.create("alternative") + .addBodyPart(textPart) + .build(); + Message message = Message.Builder.of() + .setBody(multipart) + .build(); + MessageContent actual = testee.extract(message); + assertThat(actual.getTextBody()).contains(TEXT_CONTENT); + assertThat(actual.getHtmlBody()).isEmpty(); + } + + @Test + public void extractShouldReturnFirstNonAttachmentPartWhenMultipartMixed() throws IOException { + Multipart multipart = MultipartBuilder.create("mixed") + .addBodyPart(textAttachment) + .addBodyPart(htmlPart) + .addBodyPart(textPart) + .build(); + Message message = Message.Builder.of() + .setBody(multipart) + .build(); + MessageContent actual = testee.extract(message); + assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); + assertThat(actual.getTextBody()).isEmpty(); + } + + @Test + public void extractShouldReturnInlinedTextBodyWithoutCIDWhenNoOtherValidParts() throws IOException { + String textBody = "body 1"; + Multipart multipart = MultipartBuilder.create("report") + .addBodyPart(BodyPartBuilder.create() + .setBody(textBody, "plain", StandardCharsets.UTF_8) + .setContentDisposition("inline")) + .addBodyPart(BodyPartBuilder.create() + .setBody("body 2", "rfc822-headers", StandardCharsets.UTF_8) + .setContentDisposition("inline")) + .build(); + Message message = Message.Builder.of() + .setBody(multipart) + .build(); + + MessageContent actual = testee.extract(message); + + assertThat(actual.getTextBody()).contains(textBody); + } + + @Test + public void extractShouldReturnEmptyWhenMultipartMixedAndFirstPartIsATextAttachment() throws IOException { + Multipart multipart = MultipartBuilder.create("mixed") + .addBodyPart(textAttachment) + .build(); + Message message = Message.Builder.of() + .setBody(multipart) + .build(); + MessageContent actual = testee.extract(message); + assertThat(actual.getTextBody()).isEmpty(); + assertThat(actual.getHtmlBody()).isEmpty(); + } + + @Test + public void extractShouldReturnFirstPartOnlyWhenMultipartMixedAndFirstPartIsHtml() throws IOException { + Multipart multipart = MultipartBuilder.create("mixed") + .addBodyPart(htmlPart) + .addBodyPart(textPart) + .build(); + Message message = Message.Builder.of() + .setBody(multipart) + .build(); + MessageContent actual = testee.extract(message); + assertThat(actual.getTextBody()).isEmpty(); + assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); + } + + @Test + public void extractShouldReturnHtmlAndTextWhenMultipartMixedAndFirstPartIsMultipartAlternative() throws IOException { + BodyPart multipartAlternative = BodyPartBuilder.create() + .setBody(MultipartBuilder.create("alternative") + .addBodyPart(htmlPart) + .addBodyPart(textPart) + .build()) + .build(); + Multipart multipartMixed = MultipartBuilder.create("mixed") + .addBodyPart(multipartAlternative) + .build(); + Message message = Message.Builder.of() + .setBody(multipartMixed) + .build(); + MessageContent actual = testee.extract(message); + assertThat(actual.getTextBody()).contains(TEXT_CONTENT); + assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); + } + + @Test + public void extractShouldReturnHtmlWhenMultipartRelated() throws IOException { + Multipart multipart = MultipartBuilder.create("related") + .addBodyPart(htmlPart) + .build(); + Message message = Message.Builder.of() + .setBody(multipart) + .build(); + MessageContent actual = testee.extract(message); + assertThat(actual.getTextBody()).isEmpty(); + assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); + } + + @Test + public void extractShouldReturnHtmlAndTextWhenMultipartAlternativeAndFirstPartIsMultipartRelated() throws IOException { + BodyPart multipartRelated = BodyPartBuilder.create() + .setBody(MultipartBuilder.create("related") + .addBodyPart(htmlPart) + .build()) + .build(); + Multipart multipartAlternative = MultipartBuilder.create("alternative") + .addBodyPart(multipartRelated) + .build(); + Message message = Message.Builder.of() + .setBody(multipartAlternative) + .build(); + MessageContent actual = testee.extract(message); + assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); + } + + @Test + public void extractShouldRetrieveHtmlBodyWithOneInlinedHTMLAttachmentWithoutCid() throws IOException { + //Given + BodyPart inlinedHTMLPart = BodyPartBuilder.create() + .setBody(HTML_CONTENT, "html", StandardCharsets.UTF_8) + .build(); + HeaderImpl inlinedHeader = new HeaderImpl(); + inlinedHeader.addField(Fields.contentDisposition(MimeMessage.INLINE)); + inlinedHeader.addField(Fields.contentType("text/html; charset=utf-8")); + inlinedHTMLPart.setHeader(inlinedHeader); + Multipart multipartAlternative = MultipartBuilder.create("alternative") + .addBodyPart(inlinedHTMLPart) + .build(); + Message message = Message.Builder.of() + .setBody(multipartAlternative) + .build(); + + //When + MessageContent actual = testee.extract(message); + + //Then + assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); + } + + @Test + public void extractShouldNotRetrieveHtmlBodyWithOneInlinedHTMLAttachmentWithCid() throws IOException { + //Given + BodyPart inlinedHTMLPart = BodyPartBuilder.create() + .setBody(HTML_CONTENT, "html", StandardCharsets.UTF_8) + .build(); + HeaderImpl inlinedHeader = new HeaderImpl(); + inlinedHeader.addField(Fields.contentDisposition(MimeMessage.INLINE)); + inlinedHeader.addField(Fields.contentType("text/html; charset=utf-8")); + inlinedHeader.addField(CONTENT_ID_FIELD); + inlinedHTMLPart.setHeader(inlinedHeader); + Multipart multipartAlternative = MultipartBuilder.create("alternative") + .addBodyPart(inlinedHTMLPart) + .build(); + Message message = Message.Builder.of() + .setBody(multipartAlternative) + .build(); + + //When + MessageContent actual = testee.extract(message); + + //Then + assertThat(actual.getHtmlBody()).isEmpty(); + } + + + @Test + public void extractShouldRetrieveTextBodyWithOneInlinedTextAttachmentWithoutCid() throws IOException { + //Given + BodyPart inlinedTextPart = BodyPartBuilder.create() + .setBody(TEXT_CONTENT, "text", StandardCharsets.UTF_8) + .build(); + HeaderImpl inlinedHeader = new HeaderImpl(); + inlinedHeader.addField(Fields.contentDisposition(MimeMessage.INLINE)); + inlinedHeader.addField(Fields.contentType("text/plain; charset=utf-8")); + inlinedTextPart.setHeader(inlinedHeader); + Multipart multipartAlternative = MultipartBuilder.create("alternative") + .addBodyPart(inlinedTextPart) + .build(); + Message message = Message.Builder.of() + .setBody(multipartAlternative) + .build(); + + //When + MessageContent actual = testee.extract(message); + + //Then + assertThat(actual.getTextBody()).contains(TEXT_CONTENT); + } + + @Test + public void extractShouldNotRetrieveTextBodyWithOneInlinedTextAttachmentWithCid() throws IOException { + //Given + BodyPart inlinedTextPart = BodyPartBuilder.create() + .setBody(TEXT_CONTENT, "text", StandardCharsets.UTF_8) + .build(); + HeaderImpl inlinedHeader = new HeaderImpl(); + inlinedHeader.addField(Fields.contentDisposition(MimeMessage.INLINE)); + inlinedHeader.addField(Fields.contentType("text/plain; charset=utf-8")); + inlinedHeader.addField(CONTENT_ID_FIELD); + inlinedTextPart.setHeader(inlinedHeader); + Multipart multipartAlternative = MultipartBuilder.create("alternative") + .addBodyPart(inlinedTextPart) + .build(); + Message message = Message.Builder.of() + .setBody(multipartAlternative) + .build(); + + //When + MessageContent actual = testee.extract(message); + + //Then + assertThat(actual.getTextBody()).isEmpty(); + } + + @Test + public void extractShouldRetrieveTextAndHtmlBodyWhenOneInlinedTextAttachmentAndMainContentInMultipart() throws IOException { + BodyPart multipartAlternative = BodyPartBuilder.create() + .setBody(MultipartBuilder.create("alternative") + .addBodyPart(textPart) + .addBodyPart(htmlPart) + .build()) + .build(); + + Multipart multipartMixed = MultipartBuilder.create("mixed") + .addBodyPart(multipartAlternative) + .addBodyPart(inlineText) + .build(); + + Message message = Message.Builder.of() + .setBody(multipartMixed) + .build(); + + MessageContent actual = testee.extract(message); + assertThat(actual.getTextBody()).contains(TEXT_CONTENT); + assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); + } + + @Test + public void extractShouldRetrieveTextBodyAndHtmlBodyWhenTextBodyInMainMultipartAndHtmlBodyInInnerMultipart() throws IOException { + BodyPart multipartRelated = BodyPartBuilder.create() + .setBody(MultipartBuilder.create("related") + .addBodyPart(htmlPart) + .addBodyPart(inlineImage) + .build()) + .build(); + + Multipart multipartAlternative = MultipartBuilder.create("alternative") + .addBodyPart(textPart) + .addBodyPart(multipartRelated) + .build(); + + Message message = Message.Builder.of() + .setBody(multipartAlternative) + .build(); + + MessageContent actual = testee.extract(message); + assertThat(actual.getTextBody()).contains(TEXT_CONTENT); + assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); + } + + @Test + public void mergeMessageContentShouldReturnEmptyWhenAllEmpty() { + MessageContent messageContent1 = MessageContent.empty(); + MessageContent messageContent2 = MessageContent.empty(); + MessageContent expected = MessageContent.empty(); + + MessageContent actual = messageContent1.merge(messageContent2); + + assertThat(actual).isEqualTo(expected); + } + + @Test + public void mergeMessageContentShouldReturnFirstWhenSecondEmpty() { + MessageContent messageContent1 = new MessageContent(Optional.of(TEXT_CONTENT), Optional.of(HTML_CONTENT)); + MessageContent messageContent2 = MessageContent.empty(); + MessageContent expected = messageContent1; + + MessageContent actual = messageContent1.merge(messageContent2); + + assertThat(actual).isEqualTo(expected); + } + + @Test + public void mergeMessageContentShouldReturnSecondWhenFirstEmpty() { + MessageContent messageContent1 = MessageContent.empty(); + MessageContent messageContent2 = new MessageContent(Optional.of(TEXT_CONTENT), Optional.of(HTML_CONTENT)); + MessageContent expected = messageContent2; + + MessageContent actual = messageContent1.merge(messageContent2); + + assertThat(actual).isEqualTo(expected); + } + + @Test + public void mergeMessageContentShouldReturnMixWhenFirstTextOnlyAndSecondHtmlOnly() { + MessageContent messageContent1 = MessageContent.ofTextOnly(Optional.of(TEXT_CONTENT)); + MessageContent messageContent2 = MessageContent.ofHtmlOnly(Optional.of(HTML_CONTENT)); + MessageContent expected = new MessageContent(Optional.of(TEXT_CONTENT), Optional.of(HTML_CONTENT)); + + MessageContent actual = messageContent1.merge(messageContent2); + + assertThat(actual).isEqualTo(expected); + } + + @Test + public void mergeMessageContentShouldReturnMixWhenFirstHtmlOnlyAndSecondTextOnly() { + MessageContent messageContent1 = MessageContent.ofHtmlOnly(Optional.of(HTML_CONTENT)); + MessageContent messageContent2 = MessageContent.ofTextOnly(Optional.of(TEXT_CONTENT)); + MessageContent expected = new MessageContent(Optional.of(TEXT_CONTENT), Optional.of(HTML_CONTENT)); + + MessageContent actual = messageContent1.merge(messageContent2); + + assertThat(actual).isEqualTo(expected); + } + + @Test + public void mergeMessageContentShouldReturnFirstWhenTwiceAreComplete() { + MessageContent messageContent1 = new MessageContent(Optional.of(TEXT_CONTENT), Optional.of(HTML_CONTENT)); + MessageContent messageContent2 = new MessageContent(Optional.of(TEXT_CONTENT2), Optional.of(HTML_CONTENT2)); + MessageContent expected = messageContent1; + + MessageContent actual = messageContent1.merge(messageContent2); + + assertThat(actual).isEqualTo(expected); + } + + @Test + public void extractShouldRespectCharsetWhenOtherThanUTF8() throws IOException { + String text = "éééé\r\nèèèè\r\nà à à à "; + Message message = Message.Builder.of() + .setBody(text, Charset.forName("windows-1252")) + .build(); + MessageContent actual = testee.extract(message); + assertThat(actual.getTextBody()).contains(text); + } + + @Test + public void extractShouldRespectCharsetWhenUTF8() throws IOException { + String text = "éééé\r\nèèèè\r\nà à à à "; + Message message = Message.Builder.of() + .setBody(text, StandardCharsets.UTF_8) + .build(); + MessageContent actual = testee.extract(message); + assertThat(actual.getTextBody()).contains(text); + } + + @Test + public void extractShouldUseUSASCIIWhenNoCharset() throws IOException { + String text = "éééé\r\nèèèè\r\nà à à à "; + Message message = Message.Builder.of() + .setBody(text, null) + .build(); + MessageContent actual = testee.extract(message); + assertThat(actual.getTextBody()).contains("????\r\n????\r\n????"); + } +}
http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/container/util/src/test/java/org/apache/james/util/streams/ImmutableCollectorsTest.java ---------------------------------------------------------------------- diff --git a/server/container/util/src/test/java/org/apache/james/util/streams/ImmutableCollectorsTest.java b/server/container/util/src/test/java/org/apache/james/util/streams/ImmutableCollectorsTest.java new file mode 100644 index 0000000..8c9c98b --- /dev/null +++ b/server/container/util/src/test/java/org/apache/james/util/streams/ImmutableCollectorsTest.java @@ -0,0 +1,123 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.util.streams; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.data.MapEntry.entry; + +import java.util.Arrays; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; + +import org.junit.Test; + +import com.github.steveash.guavate.Guavate; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; + +public class ImmutableCollectorsTest { + + @Test + public void immutableListCollectorShouldReturnEmptyImmutableListWhenEmptyStream() { + String[] data = {}; + List<String> actual = Arrays.stream(data) + .collect(Guavate.toImmutableList()); + assertThat(actual).isInstanceOf(ImmutableList.class); + assertThat(actual).isEmpty(); + } + + @Test + public void immutableListCollectorShouldReturnImmutableListWhenOneElementStream() { + String[] data = {"a"}; + List<String> actual = Arrays.stream(data) + .collect(Guavate.toImmutableList()); + assertThat(actual).isInstanceOf(ImmutableList.class); + assertThat(actual).containsExactly("a"); + } + + @Test + public void immutableListCollectorShouldReturnImmutableListWhen3ElementsStream() { + String[] data = {"a", "b", "c"}; + List<String> actual = Arrays.stream(data) + .collect(Guavate.toImmutableList()); + assertThat(actual).isInstanceOf(ImmutableList.class); + assertThat(actual).containsExactly("a", "b", "c"); + } + + @Test + public void immutableSetCollectorShouldReturnEmptyImmutableSetWhenEmptyStream() { + String[] data = {}; + Set<String> actual = Arrays.stream(data) + .collect(Guavate.toImmutableSet()); + assertThat(actual).isInstanceOf(ImmutableSet.class); + assertThat(actual).isEmpty(); + } + + @Test + public void immutableSetCollectorShouldReturnImmutableSetWhenOneElementStream() { + String[] data = {"a"}; + Set<String> actual = Arrays.stream(data) + .collect(Guavate.toImmutableSet()); + assertThat(actual).isInstanceOf(ImmutableSet.class); + assertThat(actual).containsExactly("a"); + } + + @Test + public void immutableSetCollectorShouldReturnImmutableSetWhen3ElementsStream() { + String[] data = {"a", "b", "c"}; + Set<String> actual = Arrays.stream(data) + .collect(Guavate.toImmutableSet()); + assertThat(actual).isInstanceOf(ImmutableSet.class); + assertThat(actual).containsExactly("a", "b", "c"); + } + + + @Test + public void immutableMapCollectorShouldReturnEmptyImmutableMapWhenEmptyStream() { + String[] data = {}; + Map<String, Integer> actual = Arrays.stream(data) + .collect(Guavate.toImmutableMap(x -> x.toUpperCase(Locale.US), String::length)); + assertThat(actual).isInstanceOf(ImmutableMap.class); + assertThat(actual).isEmpty(); + } + + @Test + public void immutableMapCollectorShouldReturnAppliedImmutableMapWhenOneElementStream() { + String[] data = {"a"}; + Map<String, Integer> actual = Arrays.stream(data) + .collect(Guavate.toImmutableMap(x -> x.toUpperCase(Locale.US), String::length)); + assertThat(actual).isInstanceOf(ImmutableMap.class); + assertThat(actual).containsExactly(entry("A", 1)); + } + + @Test + public void immutableMapCollectorShouldReturnAppliedImmutableMapWhen3ElementsStream() { + String[] data = {"a", "bb", "ccc"}; + Map<String, Integer> actual = Arrays.stream(data) + .collect(Guavate.toImmutableMap(x -> x.toUpperCase(Locale.US), String::length)); + assertThat(actual).isInstanceOf(ImmutableMap.class); + assertThat(actual).containsExactly(entry("A", 1), entry("BB", 2), entry("CCC", 3)); + } + +} + http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/container/util/src/test/java/org/apache/james/util/streams/IteratorsTest.java ---------------------------------------------------------------------- diff --git a/server/container/util/src/test/java/org/apache/james/util/streams/IteratorsTest.java b/server/container/util/src/test/java/org/apache/james/util/streams/IteratorsTest.java new file mode 100644 index 0000000..4c63f1a --- /dev/null +++ b/server/container/util/src/test/java/org/apache/james/util/streams/IteratorsTest.java @@ -0,0 +1,58 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.util.streams; + +import static java.util.stream.Collectors.toList; +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.stream.Stream; + +import org.junit.Test; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.UnmodifiableIterator; + +public class IteratorsTest { + + @Test + public void toStreamShouldReturnEmptyStreamWhenEmptyIterator() { + //Given + UnmodifiableIterator<String> emptyIterator = ImmutableList.<String>of().iterator(); + + //When + Stream<String> actual = Iterators.toStream(emptyIterator); + + //Then + assertThat(actual.count()).isEqualTo(0); + } + + @Test + public void toStreamShouldReturnSameContent() { + //Given + UnmodifiableIterator<String> iterator = ImmutableList.of("a", "b", "c").iterator(); + + //When + Stream<String> actual = Iterators.toStream(iterator); + + //Then + assertThat(actual.collect(toList())).containsExactly("a", "b", "c"); + } + +} http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/container/util/src/test/java/org/apache/james/util/streams/JamesCollectorsTest.java ---------------------------------------------------------------------- diff --git a/server/container/util/src/test/java/org/apache/james/util/streams/JamesCollectorsTest.java b/server/container/util/src/test/java/org/apache/james/util/streams/JamesCollectorsTest.java new file mode 100644 index 0000000..52f1c3a --- /dev/null +++ b/server/container/util/src/test/java/org/apache/james/util/streams/JamesCollectorsTest.java @@ -0,0 +1,121 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.util.streams; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.List; +import java.util.stream.Stream; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import com.github.steveash.guavate.Guavate; +import com.google.common.collect.ImmutableList; + +public class JamesCollectorsTest { + + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + @Test + public void chunkerShouldAcceptEmptyStrem() { + Stream<Integer> emptyStream = Stream.of(); + + assertThat(emptyStream.collect(JamesCollectors.chunker(10)) + .collect(Guavate.toImmutableList())) + .isEmpty(); + } + + @Test + public void chunkerShouldThrowOnZeroChunkSize() { + expectedException.expect(IllegalArgumentException.class); + + JamesCollectors.chunker(0); + } + + @Test + public void chunkerShouldThrowOnNegativeChunkSize() { + expectedException.expect(IllegalArgumentException.class); + + JamesCollectors.chunker(-1); + } + + @Test + public void chunkerShouldChunkMonoValueStreams() { + Stream<Integer> monoValueStream = Stream.of(1); + + List<List<Integer>> values = monoValueStream.collect(JamesCollectors.chunker(10)) + .map(ImmutableList::copyOf) + .collect(Guavate.toImmutableList()); + assertThat(values) + .isEqualTo(ImmutableList.of(ImmutableList.of(1))); + } + + @Test + public void chunkerShouldChunkStreamsSmallerThanChunkSize() { + Stream<Integer> stream = Stream.of(1, 2); + + List<List<Integer>> values = stream.collect(JamesCollectors.chunker(3)) + .map(ImmutableList::copyOf) + .collect(Guavate.toImmutableList()); + assertThat(values) + .isEqualTo(ImmutableList.of(ImmutableList.of(1, 2))); + } + + @Test + public void chunkerShouldChunkStreamsAsBigAsChunkSize() { + Stream<Integer> stream = Stream.of(1, 2, 3); + + List<List<Integer>> values = stream.collect(JamesCollectors.chunker(3)) + .map(ImmutableList::copyOf) + .collect(Guavate.toImmutableList()); + assertThat(values) + .isEqualTo(ImmutableList.of(ImmutableList.of(1, 2, 3))); + } + + @Test + public void chunkerShouldChunkStreamsBiggerThanChunkSize() { + Stream<Integer> stream = Stream.of(1, 2, 3, 4); + + List<List<Integer>> values = stream.collect(JamesCollectors.chunker(3)) + .map(ImmutableList::copyOf) + .collect(Guavate.toImmutableList()); + assertThat(values) + .isEqualTo(ImmutableList.of( + ImmutableList.of(1, 2, 3), + ImmutableList.of(4))); + } + + @Test + public void chunkerShouldChunkInSeveralBuckets() { + Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6, 7); + + List<List<Integer>> values = stream.collect(JamesCollectors.chunker(3)) + .map(ImmutableList::copyOf) + .collect(Guavate.toImmutableList()); + assertThat(values) + .isEqualTo(ImmutableList.of( + ImmutableList.of(1, 2, 3), + ImmutableList.of(4, 5, 6), + ImmutableList.of(7))); + } +} http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/container/util/src/test/java/org/apache/james/util/streams/LimitTest.java ---------------------------------------------------------------------- diff --git a/server/container/util/src/test/java/org/apache/james/util/streams/LimitTest.java b/server/container/util/src/test/java/org/apache/james/util/streams/LimitTest.java new file mode 100644 index 0000000..fcd92d8 --- /dev/null +++ b/server/container/util/src/test/java/org/apache/james/util/streams/LimitTest.java @@ -0,0 +1,115 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.util.streams; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.List; +import java.util.Optional; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import com.github.steveash.guavate.Guavate; +import com.google.common.collect.ImmutableList; + +import nl.jqno.equalsverifier.EqualsVerifier; + +public class LimitTest { + + private final List<Integer> aList = ImmutableList.of(1, 2, 3, 4, 5, 6); + + @Rule + public final ExpectedException expectedException = ExpectedException.none(); + + @Test + public void unlimitedShouldCreateLimitWithNoLimit() { + Limit testee = Limit.unlimited(); + assertThat(testee.getLimit()).isEqualTo(Optional.empty()); + } + + @Test + public void beanShouldRespectBeanContract() { + EqualsVerifier.forClass(Limit.class) + .verify(); + } + + @Test + public void unlimitedShouldCreateLimitThatDoesNotAffectStream() { + + Limit testee = Limit.unlimited(); + assertThat( + testee + .applyOnStream(aList.stream()) + .collect(Guavate.toImmutableList()) + ).isEqualTo(aList); + } + + @Test + public void limitShouldCreateLimitWithNoLimit() { + int expected = 3; + + Limit testee = Limit.limit(expected); + assertThat(testee.getLimit()) + .isEqualTo(Optional.of(expected)); + } + + @Test + public void limitShouldCreateLimitThatCorrectlyTruncateStream() { + Limit testee = Limit.limit(3); + + assertThat(testee + .applyOnStream(aList.stream()) + .collect(Guavate.toImmutableList()) + ).isEqualTo(ImmutableList.of(1, 2, 3)); + } + + @Test + public void limitShouldThrowAnErrorWhenCalledWithZero() { + expectedException.expect(IllegalArgumentException.class); + Limit.limit(0); + } + + + @Test + public void limitShouldThrowAnErrorWhenCalledWithNegativeValue() { + expectedException.expect(IllegalArgumentException.class); + Limit.limit(-1); + } + + @Test + public void ofShouldTakePositiveValueAsLimit() { + assertThat(Limit.from(3)) + .isEqualTo(Limit.limit(3)); + } + + @Test + public void ofShouldTakeNegativeValueAsUnlimited() { + assertThat(Limit.from(-1)) + .isEqualTo(Limit.unlimited()); + } + + @Test + public void ofShouldTakeZeroValueAsUnlimited() { + assertThat(Limit.from(0)) + .isEqualTo(Limit.unlimited()); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/container/util/src/test/java/org/apache/james/util/streams/OffsetTest.java ---------------------------------------------------------------------- diff --git a/server/container/util/src/test/java/org/apache/james/util/streams/OffsetTest.java b/server/container/util/src/test/java/org/apache/james/util/streams/OffsetTest.java new file mode 100644 index 0000000..45d8e6d --- /dev/null +++ b/server/container/util/src/test/java/org/apache/james/util/streams/OffsetTest.java @@ -0,0 +1,58 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.util.streams; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Optional; + +import org.junit.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +public class OffsetTest { + + public static final int VALUE = 18; + + @Test + public void shouldMatchBeanContract() { + EqualsVerifier.forClass(Offset.class) + .verify(); + } + + @Test + public void fromZeroShouldBeEquivalentToNone() { + assertThat(Offset.from(0)) + .isEqualTo(Offset.none()); + } + + @Test + public void getOffsetShouldReturnContainedValue() { + assertThat(Offset.from(VALUE).getOffset()) + .isEqualTo(VALUE); + } + + @Test + public void fromOptionalShouldBeEquivalentToFromValueWhenPresent() { + assertThat(Offset.from(Optional.of(VALUE))) + .isEqualTo(Offset.from(VALUE)); + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/data/data-jmap/pom.xml ---------------------------------------------------------------------- diff --git a/server/data/data-jmap/pom.xml b/server/data/data-jmap/pom.xml index a859470..7c7f049 100644 --- a/server/data/data-jmap/pom.xml +++ b/server/data/data-jmap/pom.xml @@ -39,7 +39,7 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> + <artifactId>james-server-util</artifactId> </dependency> <dependency> <groupId>ch.qos.logback</groupId> http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/data/data-ldap-integration-testing/pom.xml ---------------------------------------------------------------------- diff --git a/server/data/data-ldap-integration-testing/pom.xml b/server/data/data-ldap-integration-testing/pom.xml index 4b5919c..1e4ba59 100644 --- a/server/data/data-ldap-integration-testing/pom.xml +++ b/server/data/data-ldap-integration-testing/pom.xml @@ -40,7 +40,7 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> + <artifactId>james-server-util</artifactId> <scope>test</scope> </dependency> <dependency> http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/mailet/integration-testing/pom.xml ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/pom.xml b/server/mailet/integration-testing/pom.xml index 3a53ffc..5ddb093 100644 --- a/server/mailet/integration-testing/pom.xml +++ b/server/mailet/integration-testing/pom.xml @@ -94,7 +94,7 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> + <artifactId>james-server-util</artifactId> <type>test-jar</type> <scope>test</scope> </dependency> http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/mailet/mailetcontainer-camel/pom.xml ---------------------------------------------------------------------- diff --git a/server/mailet/mailetcontainer-camel/pom.xml b/server/mailet/mailetcontainer-camel/pom.xml index cfe4148..044afc2 100644 --- a/server/mailet/mailetcontainer-camel/pom.xml +++ b/server/mailet/mailetcontainer-camel/pom.xml @@ -99,7 +99,7 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> + <artifactId>james-server-util</artifactId> </dependency> <dependency> <groupId>${james.groupId}</groupId> http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/pom.xml ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/pom.xml b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/pom.xml index 0380b9c..576c1eb 100644 --- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/pom.xml +++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/pom.xml @@ -125,12 +125,6 @@ <scope>test</scope> </dependency> <dependency> - <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> - <type>test-jar</type> - <scope>test</scope> - </dependency> - <dependency> <!-- Force Memory JMAP integration tests to be played before Cassandra ones --> <groupId>${james.groupId}</groupId> <artifactId>memory-jmap-integration-testing</artifactId> http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/protocols/jmap-integration-testing/jmap-integration-testing-common/pom.xml ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/pom.xml b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/pom.xml index b109376..26c1261 100644 --- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/pom.xml +++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/pom.xml @@ -99,12 +99,6 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> - <type>test-jar</type> - <scope>test</scope> - </dependency> - <dependency> - <groupId>${james.groupId}</groupId> <artifactId>james-server-webadmin-core</artifactId> <type>test-jar</type> </dependency> http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/pom.xml ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/pom.xml b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/pom.xml index 180cab6..9b7c8ad 100644 --- a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/pom.xml +++ b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/pom.xml @@ -96,12 +96,6 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> - <type>test-jar</type> - <scope>test</scope> - </dependency> - <dependency> - <groupId>${james.groupId}</groupId> <artifactId>javax-mail-extension</artifactId> <type>test-jar</type> <scope>test</scope> http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/protocols/jmap/pom.xml ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/pom.xml b/server/protocols/jmap/pom.xml index f8eebce..83514ff 100644 --- a/server/protocols/jmap/pom.xml +++ b/server/protocols/jmap/pom.xml @@ -135,11 +135,7 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> - </dependency> - <dependency> - <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> + <artifactId>james-server-util</artifactId> <type>test-jar</type> <scope>test</scope> </dependency> http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/protocols/protocols-imap4/pom.xml ---------------------------------------------------------------------- diff --git a/server/protocols/protocols-imap4/pom.xml b/server/protocols/protocols-imap4/pom.xml index ec64dd9..da3d952 100644 --- a/server/protocols/protocols-imap4/pom.xml +++ b/server/protocols/protocols-imap4/pom.xml @@ -43,7 +43,7 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> + <artifactId>james-server-util</artifactId> </dependency> <dependency> <groupId>${james.groupId}</groupId> http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/protocols/protocols-managesieve/pom.xml ---------------------------------------------------------------------- diff --git a/server/protocols/protocols-managesieve/pom.xml b/server/protocols/protocols-managesieve/pom.xml index 1b510ed..98e0227 100644 --- a/server/protocols/protocols-managesieve/pom.xml +++ b/server/protocols/protocols-managesieve/pom.xml @@ -43,7 +43,7 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> + <artifactId>james-server-util</artifactId> </dependency> <dependency> <groupId>${james.protocols.groupId}</groupId> http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/protocols/webadmin/webadmin-core/pom.xml ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-core/pom.xml b/server/protocols/webadmin/webadmin-core/pom.xml index 2633e55..8df8461 100644 --- a/server/protocols/webadmin/webadmin-core/pom.xml +++ b/server/protocols/webadmin/webadmin-core/pom.xml @@ -43,7 +43,7 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> + <artifactId>james-server-util</artifactId> </dependency> <dependency> <groupId>${james.groupId}</groupId> http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/protocols/webadmin/webadmin-data/pom.xml ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-data/pom.xml b/server/protocols/webadmin/webadmin-data/pom.xml index f767608..7cca591 100644 --- a/server/protocols/webadmin/webadmin-data/pom.xml +++ b/server/protocols/webadmin/webadmin-data/pom.xml @@ -56,7 +56,7 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> + <artifactId>james-server-util</artifactId> </dependency> <dependency> <groupId>${james.groupId}</groupId> http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/protocols/webadmin/webadmin-mailbox/pom.xml ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-mailbox/pom.xml b/server/protocols/webadmin/webadmin-mailbox/pom.xml index 5c91f4a..8499f92 100644 --- a/server/protocols/webadmin/webadmin-mailbox/pom.xml +++ b/server/protocols/webadmin/webadmin-mailbox/pom.xml @@ -102,7 +102,7 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> + <artifactId>james-server-util</artifactId> </dependency> <dependency> <groupId>${james.groupId}</groupId> http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/protocols/webadmin/webadmin-mailrepository/pom.xml ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-mailrepository/pom.xml b/server/protocols/webadmin/webadmin-mailrepository/pom.xml index abc9d2f..4d120ec 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/pom.xml +++ b/server/protocols/webadmin/webadmin-mailrepository/pom.xml @@ -62,7 +62,7 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> + <artifactId>james-server-util</artifactId> </dependency> <dependency> <groupId>${james.groupId}</groupId> http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/queue/queue-rabbitmq/pom.xml ---------------------------------------------------------------------- diff --git a/server/queue/queue-rabbitmq/pom.xml b/server/queue/queue-rabbitmq/pom.xml index 7244a13..8d61023 100644 --- a/server/queue/queue-rabbitmq/pom.xml +++ b/server/queue/queue-rabbitmq/pom.xml @@ -35,7 +35,7 @@ <dependencies> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> + <artifactId>james-server-util</artifactId> <scope>test</scope> </dependency> <dependency> http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/task/pom.xml ---------------------------------------------------------------------- diff --git a/server/task/pom.xml b/server/task/pom.xml index 10a0704..80534c6 100644 --- a/server/task/pom.xml +++ b/server/task/pom.xml @@ -33,7 +33,7 @@ <dependencies> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> + <artifactId>james-server-util</artifactId> </dependency> <dependency> <groupId>junit</groupId> http://git-wip-us.apache.org/repos/asf/james-project/blob/630dcab1/server/testing/pom.xml ---------------------------------------------------------------------- diff --git a/server/testing/pom.xml b/server/testing/pom.xml index c689d7b..f50652f 100644 --- a/server/testing/pom.xml +++ b/server/testing/pom.xml @@ -41,7 +41,7 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>james-server-util-java8</artifactId> + <artifactId>james-server-util</artifactId> <type>test-jar</type> </dependency> <dependency> --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org