This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
commit fdcede6c6d064524758888ae1b843a16404ab160 Author: wujimin <[email protected]> AuthorDate: Wed Dec 13 14:19:39 2017 +0800 JAV-548 move part implementations to foundation-common, and add UT --- foundations/foundation-common/pom.xml | 4 + .../foundation/common}/part/AbstractPart.java | 2 +- .../foundation/common}/part/FilePart.java | 2 +- .../foundation/common}/part/InputStreamPart.java | 2 +- .../foundation/common}/part/ResourcePart.java | 2 +- .../foundation/common/part/TestAbstractPart.java | 116 +++++++++++++++++++++ .../foundation/common/part/TestFilePart.java | 76 ++++++++++++++ .../common/part/TestInputStreamPart.java} | 33 ++++-- .../foundation/common/part/TestResourcePart.java} | 32 ++++-- foundations/foundation-vertx/pom.xml | 4 - .../VertxServerRequestToHttpServletRequest.java | 3 +- .../reference/CommonToHttpServletRequest.java | 6 +- 12 files changed, 249 insertions(+), 33 deletions(-) diff --git a/foundations/foundation-common/pom.xml b/foundations/foundation-common/pom.xml index d5a360a..298d7e2 100644 --- a/foundations/foundation-common/pom.xml +++ b/foundations/foundation-common/pom.xml @@ -71,5 +71,9 @@ <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>javax.servlet-api</artifactId> + </dependency> </dependencies> </project> diff --git a/foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/AbstractPart.java b/foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/part/AbstractPart.java similarity index 97% rename from foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/AbstractPart.java rename to foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/part/AbstractPart.java index f36fa04..9a152f8 100644 --- a/foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/AbstractPart.java +++ b/foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/part/AbstractPart.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package io.servicecomb.foundation.vertx.part; +package io.servicecomb.foundation.common.part; import java.io.IOException; import java.io.InputStream; diff --git a/foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/FilePart.java b/foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/part/FilePart.java similarity index 97% rename from foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/FilePart.java rename to foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/part/FilePart.java index d71e970..aed6c6d 100644 --- a/foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/FilePart.java +++ b/foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/part/FilePart.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package io.servicecomb.foundation.vertx.part; +package io.servicecomb.foundation.common.part; import java.io.File; import java.io.FileInputStream; diff --git a/foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/InputStreamPart.java b/foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/part/InputStreamPart.java similarity index 95% rename from foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/InputStreamPart.java rename to foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/part/InputStreamPart.java index e7a3c17..7efbfbc 100644 --- a/foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/InputStreamPart.java +++ b/foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/part/InputStreamPart.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package io.servicecomb.foundation.vertx.part; +package io.servicecomb.foundation.common.part; import java.io.InputStream; diff --git a/foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/ResourcePart.java b/foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/part/ResourcePart.java similarity index 96% copy from foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/ResourcePart.java copy to foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/part/ResourcePart.java index 5ba1599..22c53e4 100644 --- a/foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/ResourcePart.java +++ b/foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/part/ResourcePart.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package io.servicecomb.foundation.vertx.part; +package io.servicecomb.foundation.common.part; import java.io.IOException; import java.io.InputStream; diff --git a/foundations/foundation-common/src/test/java/io/servicecomb/foundation/common/part/TestAbstractPart.java b/foundations/foundation-common/src/test/java/io/servicecomb/foundation/common/part/TestAbstractPart.java new file mode 100644 index 0000000..dcd5177 --- /dev/null +++ b/foundations/foundation-common/src/test/java/io/servicecomb/foundation/common/part/TestAbstractPart.java @@ -0,0 +1,116 @@ +/* + * 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 io.servicecomb.foundation.common.part; + +import java.io.IOException; + +import javax.ws.rs.core.MediaType; + +import org.hamcrest.Matchers; +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +public class TestAbstractPart { + AbstractPart part = new AbstractPart(); + + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + private void initExpectedException() { + expectedException.expect(Error.class); + expectedException.expectMessage(Matchers.is("not supported method")); + } + + @Test + public void getInputStream() throws IOException { + initExpectedException(); + + part.getInputStream(); + } + + @Test + public void getContentType() throws IOException { + Assert.assertEquals(MediaType.MULTIPART_FORM_DATA, part.getContentType()); + + String contentType = "abc"; + part.contentType(contentType); + Assert.assertEquals(contentType, part.getContentType()); + } + + @Test + public void getName() throws IOException { + Assert.assertNull(part.getName()); + + String name = "abc"; + part.name = name; + Assert.assertEquals(name, part.getName()); + } + + @Test + public void getSubmittedFileName() throws IOException { + Assert.assertNull(part.getSubmittedFileName()); + + String submittedFileName = "abc"; + part.submittedFileName = submittedFileName; + Assert.assertEquals(submittedFileName, part.getSubmittedFileName()); + } + + @Test + public void getSize() { + initExpectedException(); + + part.getSize(); + } + + @Test + public void write() throws IOException { + initExpectedException(); + + part.write("file"); + } + + @Test + public void delete() throws IOException { + initExpectedException(); + + part.delete(); + } + + @Test + public void getHeader() { + initExpectedException(); + + part.getHeader("header"); + } + + @Test + public void getHeaders() { + initExpectedException(); + + part.getHeaders("header"); + } + + @Test + public void getHeaderNames() { + initExpectedException(); + + part.getHeaderNames(); + } +} diff --git a/foundations/foundation-common/src/test/java/io/servicecomb/foundation/common/part/TestFilePart.java b/foundations/foundation-common/src/test/java/io/servicecomb/foundation/common/part/TestFilePart.java new file mode 100644 index 0000000..5a50eb2 --- /dev/null +++ b/foundations/foundation-common/src/test/java/io/servicecomb/foundation/common/part/TestFilePart.java @@ -0,0 +1,76 @@ +/* + * 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 io.servicecomb.foundation.common.part; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; + +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +public class TestFilePart { + static File file = new File("testFilePart.txt"); + + static String content = "testFilePart content"; + + String name = "paramName"; + + FilePart part = new FilePart(name, file.getAbsolutePath()); + + @BeforeClass + public static void setup() throws IOException { + file.delete(); + FileUtils.write(file, content); + } + + @AfterClass + public static void teardown() { + file.delete(); + } + + @Test + public void getName() { + Assert.assertEquals(name, part.getName()); + } + + @Test + public void getInputStream() throws IOException { + try (InputStream is = part.getInputStream()) { + Assert.assertEquals(content, IOUtils.toString(is)); + } + } + + @Test + public void getSize() { + Assert.assertEquals(content.length(), part.getSize()); + } + + @Test + public void write() throws IOException { + File destFile = new File("testFilePartCopy.txt"); + + part.write(destFile.getPath()); + Assert.assertEquals(content, FileUtils.readFileToString(destFile)); + destFile.delete(); + } +} diff --git a/foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/ResourcePart.java b/foundations/foundation-common/src/test/java/io/servicecomb/foundation/common/part/TestInputStreamPart.java similarity index 56% copy from foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/ResourcePart.java copy to foundations/foundation-common/src/test/java/io/servicecomb/foundation/common/part/TestInputStreamPart.java index 5ba1599..569acda 100644 --- a/foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/ResourcePart.java +++ b/foundations/foundation-common/src/test/java/io/servicecomb/foundation/common/part/TestInputStreamPart.java @@ -15,24 +15,35 @@ * limitations under the License. */ -package io.servicecomb.foundation.vertx.part; +package io.servicecomb.foundation.common.part; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; -import org.springframework.core.io.Resource; +import org.apache.commons.io.IOUtils; +import org.junit.Assert; +import org.junit.Test; -public class ResourcePart extends AbstractPart { - private Resource resource; +public class TestInputStreamPart { + String name = "paramName"; - public ResourcePart(String name, Resource resource) { - this.name = name; - this.resource = resource; - this.submittedFileName = resource.getFilename(); + byte[] bytes = new byte[] {1, 2, 3}; + + InputStream is = new ByteArrayInputStream(bytes); + + InputStreamPart part = new InputStreamPart(name, is); + + @Test + public void getName() { + Assert.assertEquals(name, part.getName()); } - @Override - public InputStream getInputStream() throws IOException { - return resource.getInputStream(); + @Test + public void test() throws IOException { + try (InputStream is = part.getInputStream()) { + byte[] content = IOUtils.toByteArray(is); + Assert.assertArrayEquals(bytes, content); + } } } diff --git a/foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/ResourcePart.java b/foundations/foundation-common/src/test/java/io/servicecomb/foundation/common/part/TestResourcePart.java similarity index 57% rename from foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/ResourcePart.java rename to foundations/foundation-common/src/test/java/io/servicecomb/foundation/common/part/TestResourcePart.java index 5ba1599..ba2d003 100644 --- a/foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/part/ResourcePart.java +++ b/foundations/foundation-common/src/test/java/io/servicecomb/foundation/common/part/TestResourcePart.java @@ -15,24 +15,36 @@ * limitations under the License. */ -package io.servicecomb.foundation.vertx.part; +package io.servicecomb.foundation.common.part; import java.io.IOException; import java.io.InputStream; +import org.apache.commons.io.IOUtils; +import org.junit.Assert; +import org.junit.Test; +import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.Resource; -public class ResourcePart extends AbstractPart { - private Resource resource; +public class TestResourcePart { + String name = "paramName"; - public ResourcePart(String name, Resource resource) { - this.name = name; - this.resource = resource; - this.submittedFileName = resource.getFilename(); + byte[] bytes = new byte[] {1, 2, 3}; + + Resource resource = new ByteArrayResource(bytes); + + ResourcePart part = new ResourcePart(name, resource); + + @Test + public void getName() { + Assert.assertEquals(name, part.getName()); } - @Override - public InputStream getInputStream() throws IOException { - return resource.getInputStream(); + @Test + public void getInputStream() throws IOException { + try (InputStream is = part.getInputStream()) { + byte[] content = IOUtils.toByteArray(is); + Assert.assertArrayEquals(bytes, content); + } } } diff --git a/foundations/foundation-vertx/pom.xml b/foundations/foundation-vertx/pom.xml index 0728d9d..cc9b6cc 100644 --- a/foundations/foundation-vertx/pom.xml +++ b/foundations/foundation-vertx/pom.xml @@ -43,10 +43,6 @@ <artifactId>foundation-common</artifactId> </dependency> <dependency> - <groupId>javax.servlet</groupId> - <artifactId>javax.servlet-api</artifactId> - </dependency> - <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <scope>test</scope> diff --git a/foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/http/VertxServerRequestToHttpServletRequest.java b/foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/http/VertxServerRequestToHttpServletRequest.java index 57a79c7..7bba5bd 100644 --- a/foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/http/VertxServerRequestToHttpServletRequest.java +++ b/foundations/foundation-vertx/src/main/java/io/servicecomb/foundation/vertx/http/VertxServerRequestToHttpServletRequest.java @@ -36,7 +36,7 @@ import javax.ws.rs.core.HttpHeaders; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import io.servicecomb.foundation.vertx.part.FilePart; +import io.servicecomb.foundation.common.part.FilePart; import io.servicecomb.foundation.vertx.stream.BufferInputStream; import io.vertx.core.MultiMap; import io.vertx.core.buffer.Buffer; @@ -47,6 +47,7 @@ import io.vertx.ext.web.RoutingContext; // wrap vertx http request to Servlet http request public class VertxServerRequestToHttpServletRequest extends AbstractHttpServletRequest { private static final Logger LOGGER = LoggerFactory.getLogger(VertxServerRequestToHttpServletRequest.class); + private static final EmptyAsyncContext EMPTY_ASYNC_CONTEXT = new EmptyAsyncContext(); private RoutingContext context; diff --git a/providers/provider-springmvc/src/main/java/io/servicecomb/provider/springmvc/reference/CommonToHttpServletRequest.java b/providers/provider-springmvc/src/main/java/io/servicecomb/provider/springmvc/reference/CommonToHttpServletRequest.java index c2f36fa..9593983 100644 --- a/providers/provider-springmvc/src/main/java/io/servicecomb/provider/springmvc/reference/CommonToHttpServletRequest.java +++ b/providers/provider-springmvc/src/main/java/io/servicecomb/provider/springmvc/reference/CommonToHttpServletRequest.java @@ -38,10 +38,10 @@ import javax.ws.rs.core.HttpHeaders; import org.springframework.core.io.Resource; import io.servicecomb.common.rest.RestConst; +import io.servicecomb.foundation.common.part.FilePart; +import io.servicecomb.foundation.common.part.InputStreamPart; +import io.servicecomb.foundation.common.part.ResourcePart; import io.servicecomb.foundation.vertx.http.AbstractHttpServletRequest; -import io.servicecomb.foundation.vertx.part.FilePart; -import io.servicecomb.foundation.vertx.part.InputStreamPart; -import io.servicecomb.foundation.vertx.part.ResourcePart; // restTemplate convert parameters to invocation args. public class CommonToHttpServletRequest extends AbstractHttpServletRequest { -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
