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;
                }
 

Reply via email to