This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new 3b7954c Tests.
3b7954c is described below
commit 3b7954cb79685a5e1fac742c0d20f4a50180a1bf
Author: JamesBognar <[email protected]>
AuthorDate: Fri Jul 6 13:26:50 2018 -0400
Tests.
---
.../juneau/httppart/OpenApiPartSerializerTest.java | 172 ++++++++++-----------
.../juneau/httppart/OpenApiPartSerializer.java | 15 +-
.../main/java/org/apache/juneau/utils/AList.java | 1 +
.../org/apache/juneau/rest/testutils/DTOs.java | 40 ++---
4 files changed, 111 insertions(+), 117 deletions(-)
diff --git
a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/httppart/OpenApiPartSerializerTest.java
b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/httppart/OpenApiPartSerializerTest.java
index cbf791c..29a1a6c 100644
---
a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/httppart/OpenApiPartSerializerTest.java
+++
b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/httppart/OpenApiPartSerializerTest.java
@@ -17,6 +17,8 @@ import static org.apache.juneau.internal.StringUtils.*;
import java.util.*;
+import org.apache.juneau.internal.*;
+import org.apache.juneau.utils.*;
import org.junit.*;
public class OpenApiPartSerializerTest {
@@ -215,100 +217,86 @@ public class OpenApiPartSerializerTest {
byte[] foob = "foo".getBytes();
String expected = base64Encode(foob);
assertEquals(expected, s.serialize(ps, foob));
- assertEquals(expected, s.serialize(ps, new
C1(foob)).toString());
+ assertEquals(expected, s.serialize(ps, new C1(foob)));
}
-// @Test
-// public void c04_stringType_binaryFormat() throws Exception {
-// HttpPartSchema ps = schema("string", "binary").build();
-// String in = toHex("foo".getBytes());
-// assertEquals("foo", s.serialize(ps, in, String.class));
-// assertEquals("foo", IOUtils.read(s.serialize(ps, in,
InputStream.class)));
-// assertEquals("foo", IOUtils.read(s.serialize(ps, in,
Reader.class)));
-// assertEquals("C1-foo", s.serialize(ps, in,
C1.class).toString());
-// }
-//
-// @Test
-// public void c05_stringType_binarySpacedFormat() throws Exception {
-// HttpPartSchema ps = schema("string", "binary-spaced").build();
-// String in = toSpacedHex("foo".getBytes());
-// assertEquals("foo", s.serialize(ps, in, String.class));
-// assertEquals("foo", IOUtils.read(s.serialize(ps, in,
InputStream.class)));
-// assertEquals("foo", IOUtils.read(s.serialize(ps, in,
Reader.class)));
-// assertEquals("C1-foo", s.serialize(ps, in,
C1.class).toString());
-// }
-//
-// @Test
-// public void c06_stringType_dateFormat() throws Exception {
-// HttpPartSchema ps = schema("string", "date").build();
-// String in = "2012-12-21";
-// assertTrue(s.serialize(ps, in, String.class).contains("2012"));
-// assertTrue(s.serialize(ps, in,
Date.class).toString().contains("2012"));
-// assertEquals(2012, s.serialize(ps, in,
Calendar.class).get(Calendar.YEAR));
-// assertEquals(2012, s.serialize(ps, in,
GregorianCalendar.class).get(Calendar.YEAR));
-// }
-//
-// @Test
-// public void c07_stringType_dateTimeFormat() throws Exception {
-// HttpPartSchema ps = schema("string", "date-time").build();
-// String in = "2012-12-21T12:34:56.789";
-// assertTrue(s.serialize(ps, in, String.class).contains("2012"));
-// assertTrue(s.serialize(ps, in,
Date.class).toString().contains("2012"));
-// assertEquals(2012, s.serialize(ps, in,
Calendar.class).get(Calendar.YEAR));
-// assertEquals(2012, s.serialize(ps, in,
GregorianCalendar.class).get(Calendar.YEAR));
-// }
-//
-// @Test
-// public void c08_stringType_uonFormat() throws Exception {
-// HttpPartSchema ps = schema("string", "uon").build();
-// assertEquals("foo", s.serialize(ps, "foo", String.class));
-// assertEquals("foo", s.serialize(ps, "'foo'", String.class));
-// assertEquals("C2-foo", s.serialize(ps, "'foo'",
C2.class).toString());
-// // UonPartParserTest should handle all other cases.
-// }
-//
-// @Test
-// public void c09_stringType_noneFormat() throws Exception {
-// // If no format is specified, then we should transform directly
from a string.
-// HttpPartSchema ps = schema("string").build();
-// assertEquals("foo", s.serialize(ps, "foo", String.class));
-// assertEquals("'foo'", s.serialize(ps, "'foo'", String.class));
-// assertEquals("C2-foo", s.serialize(ps, "foo",
C2.class).toString());
-// }
-//
-// @Test
-// public void c10_stringType_noneFormat_2d() throws Exception {
-// HttpPartSchema ps =
schema("array").items(schema("string")).build();
-// assertObjectEquals("['foo','bar']", s.serialize(ps, "foo,bar",
String[].class));
-// assertObjectEquals("['foo','bar']", s.serialize(ps, "foo,bar",
List.class, String.class));
-// assertObjectEquals("['foo','bar']", s.serialize(ps, "foo,bar",
Object[].class));
-// assertObjectEquals("['foo','bar']", s.serialize(ps, "foo,bar",
List.class, Object.class));
-// Object o = s.serialize(ps, "foo,bar", Object.class);
-// assertObjectEquals("['foo','bar']", o);
-// assertClass(ObjectList.class, o);
-// assertObjectEquals("['C2-foo','C2-bar']", s.serialize(ps,
"foo,bar", C2[].class));
-// assertObjectEquals("['C2-foo','C2-bar']", s.serialize(ps,
"foo,bar", List.class, C2.class));
-// assertEquals("C3-['foo','bar']", s.serialize(ps, "foo,bar",
C3.class).toString());
-// }
-//
-// @Test
-// public void c11_stringType_noneFormat_3d() throws Exception {
-// HttpPartSchema ps =
schema("array").collectionFormat("pipes").items(schema("array").items(schema("string"))).build();
-// assertObjectEquals("[['foo','bar'],['baz']]", s.serialize(ps,
"foo,bar|baz", String[][].class));
-// assertObjectEquals("[['foo','bar'],['baz']]", s.serialize(ps,
"foo,bar|baz", List.class, String[].class));
-// assertObjectEquals("[['foo','bar'],['baz']]", s.serialize(ps,
"foo,bar|baz", List.class, List.class, String.class));
-// assertObjectEquals("[['foo','bar'],['baz']]", s.serialize(ps,
"foo,bar|baz", Object[][].class));
-// assertObjectEquals("[['foo','bar'],['baz']]", s.serialize(ps,
"foo,bar|baz", List.class, Object[].class));
-// assertObjectEquals("[['foo','bar'],['baz']]", s.serialize(ps,
"foo,bar|baz", List.class, List.class, Object.class));
-// Object o = s.serialize(ps, "foo,bar|baz", Object.class);
-// assertObjectEquals("[['foo','bar'],['baz']]", o);
-// assertClass(ObjectList.class, o);
-// assertObjectEquals("[['C2-foo','C2-bar'],['C2-baz']]",
s.serialize(ps, "foo,bar|baz", C2[][].class));
-// assertObjectEquals("[['C2-foo','C2-bar'],['C2-baz']]",
s.serialize(ps, "foo,bar|baz", List.class, C2[].class));
-// assertObjectEquals("[['C2-foo','C2-bar'],['C2-baz']]",
s.serialize(ps, "foo,bar|baz", List.class, List.class, C2.class));
-//
assertObjectEquals("['C3-[\\'foo\\',\\'bar\\']','C3-[\\'baz\\']']",
s.serialize(ps, "foo,bar|baz", C3[].class));
-//
assertObjectEquals("['C3-[\\'foo\\',\\'bar\\']','C3-[\\'baz\\']']",
s.serialize(ps, "foo,bar|baz", List.class, C3.class));
-// }
+ @Test
+ public void c04_stringType_binaryFormat() throws Exception {
+ HttpPartSchema ps = schema("string", "binary").build();
+ byte[] foob = "foo".getBytes();
+ String expected = toHex(foob);
+ assertEquals(expected, s.serialize(ps, foob));
+ assertEquals(expected, s.serialize(ps, new C1(foob)));
+ }
+
+ @Test
+ public void c05_stringType_binarySpacedFormat() throws Exception {
+ HttpPartSchema ps = schema("string", "binary-spaced").build();
+ byte[] foob = "foo".getBytes();
+ String expected = toSpacedHex(foob);
+ assertEquals(expected, s.serialize(ps, foob));
+ assertEquals(expected, s.serialize(ps, new C1(foob)));
+ }
+
+ @Test
+ public void c06_stringType_dateFormat() throws Exception {
+ HttpPartSchema ps = schema("string", "date").build();
+ Calendar in = StringUtils.parseIsoCalendar("2012-12-21");
+ assertTrue(s.serialize(ps, in).contains("2012"));
+ }
+
+ @Test
+ public void c07_stringType_dateTimeFormat() throws Exception {
+ HttpPartSchema ps = schema("string", "date-time").build();
+ Calendar in =
StringUtils.parseIsoCalendar("2012-12-21T12:34:56.789");
+ assertTrue(s.serialize(ps, in).contains("2012"));
+ }
+
+ @Test
+ public void c08_stringType_uonFormat() throws Exception {
+ HttpPartSchema ps = schema("string", "uon").build();
+ assertEquals("foo", s.serialize(ps, "foo"));
+ assertEquals("'foo'", s.serialize(ps, "'foo'"));
+ assertEquals("C2-foo", s.serialize(ps, new C2("foo")));
+ // UonPartSerializerTest should handle all other cases.
+ }
+
+ @Test
+ public void c09_stringType_noneFormat() throws Exception {
+ // If no format is specified, then we should transform directly
from a string.
+ HttpPartSchema ps = schema("string").build();
+ assertEquals("foo", s.serialize(ps, "foo"));
+ assertEquals("'foo'", s.serialize(ps, "'foo'"));
+ assertEquals("C2-foo", s.serialize(ps, new C2("foo")));
+ }
+
+ @Test
+ public void c10_stringType_noneFormat_2d() throws Exception {
+ HttpPartSchema ps =
schema("array").items(schema("string")).build();
+ assertEquals("foo,bar", s.serialize(ps, new
String[]{"foo","bar"}));
+ assertEquals("foo,bar", s.serialize(ps, new
AList<String>().appendAll("foo","bar")));
+ assertEquals("foo,bar", s.serialize(ps, new
Object[]{"foo","bar"}));
+ assertEquals("foo,bar", s.serialize(ps, new
AList<String>().appendAll("foo","bar")));
+ assertEquals("C2-foo,C2-bar", s.serialize(ps, new C2[] {new
C2("foo"), new C2("bar")}));
+ assertEquals("C2-foo,C2-bar", s.serialize(ps, new
AList<C2>().appendAll(new C2("foo"), new C2("bar"))));
+// assertEquals("['foo','bar']", s.serialize(ps, new
C3("foo","bar")));
+ }
+
+ @Test
+ public void c11_stringType_noneFormat_3d() throws Exception {
+ HttpPartSchema ps =
schema("array").collectionFormat("pipes").items(schema("array").items(schema("string"))).build();
+ assertEquals("foo,bar|baz", s.serialize(ps, new
String[][]{{"foo","bar"},{"baz"}}));
+ assertEquals("foo,bar|baz", s.serialize(ps, AList.create(new
String[]{"foo","bar"}, new String[]{"baz"})));
+ assertEquals("foo,bar|baz", s.serialize(ps,
AList.create(AList.create("foo","bar"),AList.create("baz"))));
+ assertEquals("foo,bar|baz", s.serialize(ps, new
Object[][]{{"foo","bar"},{"baz"}}));
+ assertEquals("foo,bar|baz", s.serialize(ps, AList.create(new
Object[]{"foo","bar"}, new String[]{"baz"})));
+ assertEquals("foo,bar|baz", s.serialize(ps,
AList.create(AList.create((Object)"foo",(Object)"bar"),AList.create((Object)"baz"))));
+ assertEquals("C2-foo,C2-bar|C2-baz", s.serialize(ps, new
C2[][]{{new C2("foo"),new C2("bar")},{new C2("baz")}}));
+ assertEquals("C2-foo,C2-bar|C2-baz", s.serialize(ps,
AList.create(new C2[]{new C2("foo"),new C2("bar")}, new C2[]{new C2("baz")})));
+ assertEquals("C2-foo,C2-bar|C2-baz", s.serialize(ps,
AList.create(AList.create(new C2("foo"),new C2("bar")),AList.create(new
C2("baz")))));
+// assertEquals("['foo','bar']|['baz']", s.serialize(ps, new
C3[]{new C3("foo","bar"),new C3("baz")}));
+// assertEquals("['foo','bar']|['baz']", s.serialize(ps,
AList.create(AList.create(new C3("foo","bar"), new C3("baz")))));
+ }
//
//-----------------------------------------------------------------------------------------------------------------
// // type = array
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/OpenApiPartSerializer.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/OpenApiPartSerializer.java
index 74f134e..1b5b54d 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/OpenApiPartSerializer.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/OpenApiPartSerializer.java
@@ -170,28 +170,33 @@ public class OpenApiPartSerializer extends
UonPartSerializer {
List<String> l = new ArrayList<>();
HttpPartSchema items = schema.getItems();
+ ClassMeta<?> vt = getClassMetaForObject(value);
+
+ if (type.hasTransformTo(schema.getParsedType()) ||
schema.getParsedType().hasTransformFrom(type))
+ value = toType(value, schema.getParsedType());
+
if (type.isArray()) {
for (int i = 0; i < Array.getLength(value); i++)
l.add(serialize(partType, items,
Array.get(value, i)));
} else if (type.isCollection()) {
for (Object o : (Collection<?>)value)
l.add(serialize(partType, items, o));
- } else {
+ } else if (vt.hasTransformTo(String[].class)) {
l.add(serialize(partType, items, value));
}
HttpPartSchema.CollectionFormat cf =
schema.getCollectionFormat();
- if (cf == MULTI || cf == CSV)
- out = join(l, ',');
- else if (cf == PIPES)
+ if (cf == PIPES)
out = join(l, '|');
else if (cf == SSV)
out = join(l, ' ');
else if (cf == TSV)
out = join(l, '\t');
- else
+ else if (cf == HttpPartSchema.CollectionFormat.UON)
out = super.serialize(partType, null, l);
+ else
+ out = join(l, ',');
} else if (t == BOOLEAN || t == INTEGER || t == NUMBER) {
out = super.serialize(partType, null, value);
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/AList.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/AList.java
index f10d32b..cdd96fa 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/AList.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/AList.java
@@ -35,6 +35,7 @@ public final class AList<T> extends LinkedList<T> {
* @param t The initial values.
* @return A new list.
*/
+ @SafeVarargs
public static <T> AList<T> create(T...t) {
return new AList<T>().appendAll(t);
}
diff --git
a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/testutils/DTOs.java
b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/testutils/DTOs.java
index aed1634..b4aa496 100644
---
a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/testutils/DTOs.java
+++
b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/testutils/DTOs.java
@@ -86,25 +86,25 @@ public class DTOs {
public static B create() {
B t = new B();
t.f01 = new String[]{"a","b"};
- t.f02 = new AList<String>().append("c").append("d");
+ t.f02 = AList.create("c","d");
t.f03 = new int[]{1,2};
- t.f04 = new AList<Integer>().append(3).append(4);
+ t.f04 = AList.create(3,4);
t.f05 = new String[][]{{"e","f"},{"g","h"}};
- t.f06 = new AList<String[]>().append(new
String[]{"i","j"}).append(new String[]{"k","l"});
+ t.f06 = AList.create(new String[]{"i","j"},new
String[]{"k","l"});
t.f07 = new A[]{A.create(),A.create()};
- t.f08 = new
AList<A>().append(A.create()).append(A.create());
+ t.f08 = AList.create(A.create(),A.create());
t.f09 = new A[][]{{A.create()},{A.create()}};
- t.f10 = new
AList<List<A>>().append(Arrays.asList(A.create())).append(Arrays.asList(A.create()));
+ t.f10 =
AList.create(Arrays.asList(A.create()),Arrays.asList(A.create()));
t.setF11(new String[]{"a","b"});
- t.setF12(new AList<String>().append("c").append("d"));
+ t.setF12(AList.create("c","d"));
t.setF13(new int[]{1,2});
- t.setF14(new AList<Integer>().append(3).append(4));
+ t.setF14(AList.create(3,4));
t.setF15(new String[][]{{"e","f"},{"g","h"}});
- t.setF16(new AList<String[]>().append(new
String[]{"i","j"}).append(new String[]{"k","l"}));
+ t.setF16(AList.create(new String[]{"i","j"},new
String[]{"k","l"}));
t.setF17(new A[]{A.create(),A.create()});
- t.setF18(new
AList<A>().append(A.create()).append(A.create()));
+ t.setF18(AList.create(A.create(),A.create()));
t.setF19(new A[][]{{A.create()},{A.create()}});
- t.setF20(new
AList<List<A>>().append(Arrays.asList(A.create())).append(Arrays.asList(A.create())));
+
t.setF20(AList.create(Arrays.asList(A.create()),Arrays.asList(A.create())));
return t;
}
@@ -116,25 +116,25 @@ public class DTOs {
public static C create() {
C t = new C();
t.f01 = new String[]{"a","b"};
- t.f02 = new AList<String>().append("c").append("d");
+ t.f02 = AList.create("c","d");
t.f03 = new int[]{1,2};
- t.f04 = new AList<Integer>().append(3).append(4);
+ t.f04 = AList.create(3, 4);
t.f05 = new String[][]{{"e","f"},{"g","h"}};
- t.f06 = new AList<String[]>().append(new
String[]{"i","j"}).append(new String[]{"k","l"});
+ t.f06 = AList.create(new String[]{"i","j"}, new
String[]{"k","l"});
t.f07 = new A[]{A.create(),A.create()};
- t.f08 = new
AList<A>().append(A.create()).append(A.create());
+ t.f08 = AList.create(A.create(), A.create());
t.f09 = new A[][]{{A.create()},{A.create()}};
- t.f10 = new
AList<List<A>>().append(Arrays.asList(A.create())).append(Arrays.asList(A.create()));
+ t.f10 = AList.create(Arrays.asList(A.create()),
Arrays.asList(A.create()));
t.setF11(new String[]{"a","b"});
- t.setF12(new AList<String>().append("c").append("d"));
+ t.setF12(AList.create("c","d"));
t.setF13(new int[]{1,2});
- t.setF14(new AList<Integer>().append(3).append(4));
+ t.setF14(AList.create(3,4));
t.setF15(new String[][]{{"e","f"},{"g","h"}});
- t.setF16(new AList<String[]>().append(new
String[]{"i","j"}).append(new String[]{"k","l"}));
+ t.setF16(AList.create(new String[]{"i","j"},new
String[]{"k","l"}));
t.setF17(new A[]{A.create(),A.create()});
- t.setF18(new
AList<A>().append(A.create()).append(A.create()));
+ t.setF18(AList.create(A.create(), A.create()));
t.setF19(new A[][]{{A.create()},{A.create()}});
- t.setF20(new
AList<List<A>>().append(Arrays.asList(A.create())).append(Arrays.asList(A.create())));
+ t.setF20(AList.create(Arrays.asList(A.create()),
Arrays.asList(A.create())));
return t;
}