You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2017/12/22 03:16:01 UTC
[incubator-servicecomb-java-chassis] 05/11: JAV-548 move part
implementations to foundation-common, and add UT
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 <wu...@huawei.com>
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
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.