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>.