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 1164c2a Tests. 1164c2a is described below commit 1164c2ab0dfafe320446149db6c8bd36d0d10657 Author: JamesBognar <jamesbog...@apache.org> AuthorDate: Sat Jul 7 14:22:18 2018 -0400 Tests. --- .../juneau/httppart/OpenApiPartSerializerTest.java | 355 ++++++++++----------- .../apache/juneau/httppart/OpenApiPartParser.java | 4 +- .../juneau/httppart/OpenApiPartSerializer.java | 33 +- 3 files changed, 207 insertions(+), 185 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 bf3b72e..0179ea2 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 @@ -545,9 +545,8 @@ public class OpenApiPartSerializerTest { assertEquals("true,true|false,null", s.serialize(ps, new Boolean[][]{{true,true},{false,null}})); assertEquals("true,true|false,null", s.serialize(ps, AList.create(new Boolean[]{true,true},new Boolean[]{false,null}))); assertEquals("true,true|false,null", s.serialize(ps, AList.create(AList.create(true,true),AList.create(false,null)))); - assertEquals("true,true|false,null", s.serialize(ps, new String[][]{{"true","true"},{"false",null}})); - assertEquals("true,true|false,null", s.serialize(ps, AList.create(AList.create("true","true"),AList.create("false",null)))); - assertEquals("true,true|false,null", s.serialize(ps, AList.create(new String[]{"true","true"},new String[]{"false",null}))); + assertEquals("true,true|false,null,null", s.serialize(ps, AList.create(AList.create("true","true"),AList.create("false","null",null)))); + assertEquals("true,true|false,null,null", s.serialize(ps, AList.create(new String[]{"true","true"},new String[]{"false","null",null}))); assertEquals("true,true|false,null", s.serialize(ps, new Object[][]{{true,true},{false,null}})); assertEquals("true,true|false,null", s.serialize(ps, AList.create(AList.create((Object)true,(Object)true),AList.create((Object)false,null)))); assertEquals("true,true|false,null", s.serialize(ps, AList.create(new Object[]{true,true},new Object[]{false,null}))); @@ -629,8 +628,8 @@ public class OpenApiPartSerializerTest { assertEquals("1,2", s.serialize(ps, new long[]{1l,2l})); assertEquals("1,2,null", s.serialize(ps, new Long[]{1l,2l,null})); assertEquals("1,2,null", s.serialize(ps, AList.create(1l,2l,null))); - assertEquals("1,2,null", s.serialize(ps, new String[]{"1","2",null})); - assertEquals("1,2,null", s.serialize(ps, AList.create("1","2",null))); + assertEquals("1,2,null,null", s.serialize(ps, new String[]{"1","2","null",null})); + assertEquals("1,2,null,null", s.serialize(ps, AList.create("1","2","null",null))); assertEquals("1,2,null", s.serialize(ps, new Object[]{1,2,null})); assertEquals("1,2,null", s.serialize(ps, AList.<Object>create(1,2,null))); assertEquals("1,2,null,null", s.serialize(ps, new F1[]{new F1(1),new F1(2),new F1(null),null})); @@ -656,9 +655,9 @@ public class OpenApiPartSerializerTest { assertEquals("1,2|3,null|null", s.serialize(ps, new Long[][]{{1l,2l},{3l,null},null})); assertEquals("1,2|3,null|null", s.serialize(ps, AList.create(new Long[]{1l,2l},new Long[]{3l,null},null))); assertEquals("1,2|3,null|null", s.serialize(ps, AList.create(AList.create(new Long(1),new Long(2)),AList.create(new Long(3),null),null))); - assertEquals("1,2|3,null|null", s.serialize(ps, new String[][]{{"1","2"},{"3",null},null})); - assertEquals("1,2|3,null|null", s.serialize(ps, AList.create(new String[]{"1","2"},new String[]{"3",null},null))); - assertEquals("1,2|3,null|null", s.serialize(ps, AList.create(AList.create("1","2"),AList.create("3",null),null))); + assertEquals("1,2|3,null,null|null", s.serialize(ps, new String[][]{{"1","2"},{"3","null",null},null})); + assertEquals("1,2|3,null,null|null", s.serialize(ps, AList.create(new String[]{"1","2"},new String[]{"3","null",null},null))); + assertEquals("1,2|3,null,null|null", s.serialize(ps, AList.create(AList.create("1","2"),AList.create("3","null",null),null))); assertEquals("1,2|3,null|null", s.serialize(ps, new Object[][]{{1,2},{3,null},null})); assertEquals("1,2|3,null|null", s.serialize(ps, AList.create(new Object[]{1,2},new Object[]{3,null},null))); assertEquals("1,2|3,null|null", s.serialize(ps, AList.create(AList.<Object>create(1,2),AList.<Object>create(3,null),null))); @@ -696,8 +695,8 @@ public class OpenApiPartSerializerTest { assertEquals("1,2", s.serialize(ps, new long[]{1l,2l})); assertEquals("1,2,null", s.serialize(ps, new Long[]{1l,2l,null})); assertEquals("1,2,null", s.serialize(ps, AList.create(1l,2l,null))); - assertEquals("1,2,null", s.serialize(ps, new String[]{"1","2",null})); - assertEquals("1,2,null", s.serialize(ps, AList.create("1","2",null))); + assertEquals("1,2,null,null", s.serialize(ps, new String[]{"1","2","null",null})); + assertEquals("1,2,null,null", s.serialize(ps, AList.create("1","2","null",null))); assertEquals("1,2,null", s.serialize(ps, new Object[]{1,2,null})); assertEquals("1,2,null", s.serialize(ps, AList.create((Object)1,(Object)2,null))); assertEquals("1,2,null,null", s.serialize(ps, new F3[]{new F3(1l),new F3(2l),new F3(null),null})); @@ -723,9 +722,9 @@ public class OpenApiPartSerializerTest { assertEquals("1,2|3,null|null", s.serialize(ps, new Long[][]{{1l,2l},{3l,null},null})); assertEquals("1,2|3,null|null", s.serialize(ps, AList.create(new Long[]{1l,2l},new Long[]{3l,null},null))); assertEquals("1,2|3,null|null", s.serialize(ps, AList.create(AList.create(1l,2l),AList.create(3l,null),null))); - assertEquals("1,2|3,null|null", s.serialize(ps, new String[][]{{"1","2"},{"3",null},null})); - assertEquals("1,2|3,null|null", s.serialize(ps, AList.create(new String[]{"1","2"},new String[]{"3",null},null))); - assertEquals("1,2|3,null|null", s.serialize(ps, AList.create(AList.create("1","2"),AList.create("3",null),null))); + assertEquals("1,2|3,null,null|null", s.serialize(ps, new String[][]{{"1","2"},{"3","null",null},null})); + assertEquals("1,2|3,null,null|null", s.serialize(ps, AList.create(new String[]{"1","2"},new String[]{"3","null",null},null))); + assertEquals("1,2|3,null,null|null", s.serialize(ps, AList.create(AList.create("1","2"),AList.create("3","null",null),null))); assertEquals("1,2|3,null|null", s.serialize(ps, new Object[][]{{1,2},{3,null},null})); assertEquals("1,2|3,null|null", s.serialize(ps, AList.create(new Object[]{1,2},new Object[]{3,null},null))); assertEquals("1,2|3,null|null", s.serialize(ps, AList.create(AList.create((Object)1,(Object)2),AList.create((Object)3,null),null))); @@ -735,173 +734,169 @@ public class OpenApiPartSerializerTest { assertEquals("1,2|3,null|null", s.serialize(ps, new F4[]{new F4(1l,2l),new F4(3l,null),null})); assertEquals("1,2|3,null|null", s.serialize(ps, AList.create(new F4(1l,2l),new F4(3l,null),null))); } -// -// -// //----------------------------------------------------------------------------------------------------------------- -// // type = number -// //----------------------------------------------------------------------------------------------------------------- -// -// public static class G1 { -// private String f; -// public G1(Float in) { -// this.f = "G1-" + in.toString(); -// } -// @Override -// public String toString() { -// return f; -// } -// } -// -// public static class G2 { -// private String f; -// public G2(Float[] in) { -// this.f = "G2-" + JsonSerializer.DEFAULT_LAX.toString(in); -// } -// @Override -// public String toString() { -// return f; -// } -// } -// -// public static class G3 { -// private String f; -// public G3(Double in) { -// this.f = "G3-" + in.toString(); -// } -// @Override -// public String toString() { -// return f; -// } -// } -// -// public static class G4 { -// private String f; -// public G4(Double[] in) { -// this.f = "G4-" + JsonSerializer.DEFAULT_LAX.toString(in); -// } -// @Override -// public String toString() { -// return f; -// } -// } -// -// @Test -// public void g01_numberType_float() throws Exception { -// HttpPartSchema ps = schema("number", "float").build(); -// assertEquals("1.0", s.serialize(ps, "1", float.class)); -// assertEquals("1.0", s.serialize(ps, "1", Float.class)); -// assertEquals("1.0", s.serialize(ps, "1", double.class)); -// assertEquals("1.0", s.serialize(ps, "1", Double.class)); -// assertEquals("'1'", s.serialize(ps, "1", String.class)); -// Object o = s.serialize(ps, "1", Object.class); -// assertEquals("1.0",o); -// assertClass(Float.class, o); -// assertEquals("'G1-1.0'", s.serialize(ps, "1", G1.class)); -// } -// -// @Test -// public void g02_numberType_float_2d() throws Exception { -// HttpPartSchema ps = schema("array").items(schema("number", "float")).build(); -// assertEquals("[1.0,2.0]", s.serialize(ps, "1,2", float[].class)); -// assertEquals("[1.0,2.0]", s.serialize(ps, "1,2", Float[].class)); -// assertEquals("[1.0,2.0]", s.serialize(ps, "1,2", List.class, Float.class)); -// assertEquals("[1.0,2.0]", s.serialize(ps, "1,2", double[].class)); -// assertEquals("[1.0,2.0]", s.serialize(ps, "1,2", Double[].class)); -// assertEquals("[1.0,2.0]", s.serialize(ps, "1,2", List.class, Double.class)); -// assertEquals("['1','2']", s.serialize(ps, "1,2", String[].class)); -// assertEquals("['1','2']", s.serialize(ps, "1,2", List.class, String.class)); -// assertEquals("[1.0,2.0]", s.serialize(ps, "1,2", Object[].class)); -// assertEquals("[1.0,2.0]", s.serialize(ps, "1,2", List.class, Object.class)); -// assertEquals("['G1-1.0','G1-2.0']", s.serialize(ps, "1,2", G1[].class)); -// assertEquals("['G1-1.0','G1-2.0']", s.serialize(ps, "1,2", List.class, G1.class)); -// assertEquals("'G2-[1.0,2.0]'", s.serialize(ps, "1,2", G2.class)); -// } -// -// @Test -// public void g03_numberType_float_3d() throws Exception { -// HttpPartSchema ps = schema("array").collectionFormat("pipes").items(schema("array").items(schema("number", "float"))).build(); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", float[][].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", List.class, float[].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", Float[][].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", List.class, Float[].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", List.class, List.class, Float.class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", double[][].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", List.class, double[].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", Double[][].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", List.class, Double[].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", List.class, List.class, Double.class)); -// assertEquals("[['1','2'],['3']]", s.serialize(ps, "1,2|3", String[][].class)); -// assertEquals("[['1','2'],['3']]", s.serialize(ps, "1,2|3", List.class, String[].class)); -// assertEquals("[['1','2'],['3']]", s.serialize(ps, "1,2|3", List.class, List.class, String.class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", Object[][].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", List.class, Object[].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", List.class, List.class, Object.class)); -// assertEquals("[['G1-1.0','G1-2.0'],['G1-3.0']]", s.serialize(ps, "1,2|3", G1[][].class)); -// assertEquals("[['G1-1.0','G1-2.0'],['G1-3.0']]", s.serialize(ps, "1,2|3", List.class, G1[].class)); -// assertEquals("[['G1-1.0','G1-2.0'],['G1-3.0']]", s.serialize(ps, "1,2|3", List.class, List.class, G1.class)); -// assertEquals("['G2-[1.0,2.0]','G2-[3.0]']", s.serialize(ps, "1,2|3", G2[].class)); -// assertEquals("['G2-[1.0,2.0]','G2-[3.0]']", s.serialize(ps, "1,2|3", List.class, G2.class)); -// } -// -// @Test -// public void g04_numberType_double() throws Exception { -// HttpPartSchema ps = schema("number", "double").build(); -// assertEquals("1.0", s.serialize(ps, "1", float.class)); -// assertEquals("1.0", s.serialize(ps, "1", Float.class)); -// assertEquals("1.0", s.serialize(ps, "1", double.class)); -// assertEquals("1.0", s.serialize(ps, "1", Double.class)); -// assertEquals("'1'", s.serialize(ps, "1", String.class)); -// Object o = s.serialize(ps, "1", Object.class); -// assertEquals("1.0", o); -// assertClass(Double.class, o); -// assertEquals("'G3-1.0'", s.serialize(ps, "1", G3.class)); -// } -// -// @Test -// public void g05_numberType_double_2d() throws Exception { -// HttpPartSchema ps = schema("array").items(schema("number", "double")).build(); -// assertEquals("[1.0,2.0]", s.serialize(ps, "1,2", float[].class)); -// assertEquals("[1.0,2.0]", s.serialize(ps, "1,2", Float[].class)); -// assertEquals("[1.0,2.0]", s.serialize(ps, "1,2", List.class, Float.class)); -// assertEquals("[1.0,2.0]", s.serialize(ps, "1,2", double[].class)); -// assertEquals("[1.0,2.0]", s.serialize(ps, "1,2", Double[].class)); -// assertEquals("[1.0,2.0]", s.serialize(ps, "1,2", List.class, Double.class)); -// assertEquals("['1','2']", s.serialize(ps, "1,2", String[].class)); -// assertEquals("['1','2']", s.serialize(ps, "1,2", List.class, String.class)); -// assertEquals("[1.0,2.0]", s.serialize(ps, "1,2", Object[].class)); -// assertEquals("[1.0,2.0]", s.serialize(ps, "1,2", List.class, Object.class)); -// assertEquals("['G3-1.0','G3-2.0']", s.serialize(ps, "1,2", G3[].class)); -// assertEquals("['G3-1.0','G3-2.0']", s.serialize(ps, "1,2", List.class, G3.class)); -// assertEquals("'G4-[1.0,2.0]'", s.serialize(ps, "1,2", G4.class)); -// } -// -// @Test -// public void g06_numberType_double_3d() throws Exception { -// HttpPartSchema ps = schema("array").collectionFormat("pipes").items(schema("array").items(schema("number", "double"))).build(); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", float[][].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", List.class, float[].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", Float[][].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", List.class, Float[].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", List.class, List.class, Float.class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", double[][].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", List.class, double[].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", Double[][].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", List.class, Double[].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", List.class, List.class, Double.class)); -// assertEquals("[['1','2'],['3']]", s.serialize(ps, "1,2|3", String[][].class)); -// assertEquals("[['1','2'],['3']]", s.serialize(ps, "1,2|3", List.class, String[].class)); -// assertEquals("[['1','2'],['3']]", s.serialize(ps, "1,2|3", List.class, List.class, String.class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", Object[][].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", List.class, Object[].class)); -// assertEquals("[[1.0,2.0],[3.0]]", s.serialize(ps, "1,2|3", List.class, List.class, Object.class)); -// assertEquals("[['G3-1.0','G3-2.0'],['G3-3.0']]", s.serialize(ps, "1,2|3", G3[][].class)); -// assertEquals("[['G3-1.0','G3-2.0'],['G3-3.0']]", s.serialize(ps, "1,2|3", List.class, G3[].class)); -// assertEquals("[['G3-1.0','G3-2.0'],['G3-3.0']]", s.serialize(ps, "1,2|3", List.class, List.class, G3.class)); -// assertEquals("['G4-[1.0,2.0]','G4-[3.0]']", s.serialize(ps, "1,2|3", G4[].class)); -// assertEquals("['G4-[1.0,2.0]','G4-[3.0]']", s.serialize(ps, "1,2|3", List.class, G4.class)); -// } -// -// + + + //----------------------------------------------------------------------------------------------------------------- + // type = number + //----------------------------------------------------------------------------------------------------------------- + + public static class G1 { + private Float f; + public G1(Float in) { + this.f = in; + } + public Float toFloat() { + return f; + } + } + + public static class G2 { + private Float[] f; + public G2(Float...in) { + this.f = in; + } + public Float[] toFloatArray() { + return f; + } + } + + public static class G3 { + private Double f; + public G3(Double in) { + this.f = in; + } + public Double toDouble() { + return f; + } + } + + public static class G4 { + private Double[] f; + public G4(Double...in) { + this.f = in; + } + public Double[] toDoubleArray() { + return f; + } + } + + @Test + public void g01_numberType_float() throws Exception { + HttpPartSchema ps = schema("number", "float").build(); + assertEquals("1.0", s.serialize(ps, 1f)); + assertEquals("1.0", s.serialize(ps, new Float(1f))); + assertEquals("1.0", s.serialize(ps, 1d)); + assertEquals("1.0", s.serialize(ps, new Double(1d))); + assertEquals("1.0", s.serialize(ps, "1")); + assertEquals("1.0", s.serialize(ps, new G1(1f))); + assertEquals("null", s.serialize(ps, null)); + assertEquals("null", s.serialize(ps, "null")); + assertEquals("null", s.serialize(ps, new G1(null))); + } + + @Test + public void g02_numberType_float_2d() throws Exception { + HttpPartSchema ps = schema("array").items(schema("number", "float")).build(); + assertEquals("1.0,2.0", s.serialize(ps, new float[]{1,2})); + assertEquals("1.0,2.0,null", s.serialize(ps, new Float[]{1f,2f,null})); + assertEquals("1.0,2.0,null", s.serialize(ps, AList.create(1f,2f,null))); + assertEquals("1.0,2.0", s.serialize(ps, new double[]{1,2})); + assertEquals("1.0,2.0,null", s.serialize(ps, new Double[]{1d,2d,null})); + assertEquals("1.0,2.0,null", s.serialize(ps, AList.create(1d,2d,null))); + assertEquals("1.0,2.0,null,null", s.serialize(ps, new String[]{"1","2","null",null})); + assertEquals("1.0,2.0,null,null", s.serialize(ps, AList.create("1","2","null",null))); + assertEquals("1.0,2.0,null", s.serialize(ps, new Object[]{1,2,null})); + assertEquals("1.0,2.0,null", s.serialize(ps, AList.create((Object)1,(Object)2,null))); + assertEquals("1.0,2.0,null,null", s.serialize(ps, new G1[]{new G1(1f),new G1(2f),new G1(null),null})); + assertEquals("1.0,2.0,null,null", s.serialize(ps, AList.create(new G1(1f),new G1(2f),new G1(null),null))); + assertEquals("1.0,2.0,null", s.serialize(ps, new G2(1f,2f,null))); + } + + @Test + public void g03_numberType_float_3d() throws Exception { + HttpPartSchema ps = schema("array").collectionFormat("pipes").items(schema("array").items(schema("number", "float"))).build(); + assertEquals("1.0,2.0|3.0|null", s.serialize(ps, new float[][]{{1,2},{3},null})); + assertEquals("1.0,2.0|3.0|null", s.serialize(ps, AList.create(new float[]{1,2},new float[]{3},null))); + assertEquals("1.0,2.0|3.0,null|null", s.serialize(ps, new Float[][]{{1f,2f},{3f,null},null})); + assertEquals("1.0,2.0|3.0,null|null", s.serialize(ps, AList.create(new Float[]{1f,2f},new Float[]{3f,null}, null))); + assertEquals("1.0,2.0|3.0,null|null", s.serialize(ps, AList.create(AList.create(1f,2f),AList.create(3f,null),null))); + assertEquals("1.0,2.0|3.0|null", s.serialize(ps, new double[][]{{1d,2d},{3d},null})); + assertEquals("1.0,2.0|3.0|null", s.serialize(ps, AList.create(new double[]{1d,2d},new double[]{3d},null))); + assertEquals("1.0,2.0|3.0,null|null", s.serialize(ps, new Double[][]{{1d,2d},{3d,null},null})); + assertEquals("1.0,2.0|3.0,null|null", s.serialize(ps, AList.create(new Double[]{1d,2d},new Double[]{3d,null},null))); + assertEquals("1.0,2.0|3.0,null|null", s.serialize(ps, AList.create(AList.create(1d,2d),AList.create(3d,null),null))); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, new String[][]{{"1","2"},{"3","null",null},null})); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, AList.create(new String[]{"1","2"},new String[]{"3","null",null},null))); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, AList.create(AList.create(1d,2d),AList.create(3f,"null",null),null))); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, new Object[][]{{1d,2d},{3f,"null",null},null})); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, AList.create(new Object[]{1d,2d},new Object[]{3f,"null",null},null))); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, AList.create(AList.create(1d,2d),AList.create(3f,"null",null),null))); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, new G1[][]{{new G1(1f),new G1(2f)},{new G1(3f),new G1(null),null},null})); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, AList.create(new G1[]{new G1(1f),new G1(2f)},new G1[]{new G1(3f),new G1(null),null},null))); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, AList.create(AList.create(new G1(1f),new G1(2f)),AList.create(new G1(3f),new G1(null),null),null))); + assertEquals("1.0,2.0,null|null", s.serialize(ps, new G2[]{new G2(1f,2f,null),null})); + assertEquals("1.0,2.0,null|null", s.serialize(ps, AList.create(new G2(1f,2f,null),null))); + } + + @Test + public void g04_numberType_double() throws Exception { + HttpPartSchema ps = schema("number", "double").build(); + assertEquals("1.0", s.serialize(ps, 1f)); + assertEquals("1.0", s.serialize(ps, new Float(1f))); + assertEquals("1.0", s.serialize(ps, 1d)); + assertEquals("1.0", s.serialize(ps, new Double(1d))); + assertEquals("1.0", s.serialize(ps, "1")); + assertEquals("1.0", s.serialize(ps, new G3(1d))); + assertEquals("null", s.serialize(ps, null)); + assertEquals("null", s.serialize(ps, "null")); + assertEquals("null", s.serialize(ps, new G3(null))); + } + + @Test + public void g05_numberType_double_2d() throws Exception { + HttpPartSchema ps = schema("array").items(schema("number", "double")).build(); + assertEquals("1.0,2.0", s.serialize(ps, new float[]{1,2})); + assertEquals("1.0,2.0,null", s.serialize(ps, new Float[]{1f,2f,null})); + assertEquals("1.0,2.0,null", s.serialize(ps, AList.create(1f,2f,null))); + assertEquals("1.0,2.0", s.serialize(ps, new double[]{1,2})); + assertEquals("1.0,2.0,null", s.serialize(ps, new Double[]{1d,2d,null})); + assertEquals("1.0,2.0,null", s.serialize(ps, AList.create(1d,2d,null))); + assertEquals("1.0,2.0,null,null", s.serialize(ps, new String[]{"1","2","null",null})); + assertEquals("1.0,2.0,null,null", s.serialize(ps, AList.create("1","2","null",null))); + assertEquals("1.0,2.0,null,null", s.serialize(ps, new Object[]{1d,2f,"null",null})); + assertEquals("1.0,2.0,null,null", s.serialize(ps, AList.create(1d,2f,"null",null))); + assertEquals("1.0,2.0,null,null", s.serialize(ps, new G3[]{new G3(1d),new G3(2d),new G3(null),null})); + assertEquals("1.0,2.0,null,null", s.serialize(ps, AList.create(new G3(1d),new G3(2d),new G3(null),null))); + assertEquals("1.0,2.0,null", s.serialize(ps, new G4(1d,2d,null))); + } + + @Test + public void g06_numberType_double_3d() throws Exception { + HttpPartSchema ps = schema("array").collectionFormat("pipes").items(schema("array").items(schema("number", "double"))).build(); + assertEquals("1.0,2.0|3.0|null", s.serialize(ps, new float[][]{{1f,2f},{3f},null})); + assertEquals("1.0,2.0|3.0|null", s.serialize(ps, AList.create(new float[]{1f,2f},new float[]{3f},null))); + assertEquals("1.0,2.0|3.0,null|null", s.serialize(ps, new Float[][]{{1f,2f},{3f,null},null})); + assertEquals("1.0,2.0|3.0,null|null", s.serialize(ps, AList.create(new Float[]{1f,2f},new Float[]{3f,null},null))); + assertEquals("1.0,2.0|3.0,null|null", s.serialize(ps, AList.create(AList.create(1f,2f),AList.create(3f,null),null))); + assertEquals("1.0,2.0|3.0|null", s.serialize(ps, new double[][]{{1d,2d},{3d},null})); + assertEquals("1.0,2.0|3.0|null", s.serialize(ps, AList.create(new double[]{1d,2d},new double[]{3d},null))); + assertEquals("1.0,2.0|3.0,null|null", s.serialize(ps, new Double[][]{{1d,2d},{3d,null},null})); + assertEquals("1.0,2.0|3.0,null|null", s.serialize(ps, AList.create(new Double[]{1d,2d},new Double[]{3d,null},null))); + assertEquals("1.0,2.0|3.0,null|null", s.serialize(ps, AList.create(AList.create(1d,2d),AList.create(3d,null),null))); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, new String[][]{{"1","2"},{"3","null",null},null})); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, AList.create(new String[]{"1","2"},new String[]{"3","null",null},null))); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, AList.create(AList.create("1","2"),AList.create("3","null",null),null))); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, new Object[][]{{1d,2d},{"3","null",null},null})); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, AList.create(new Object[]{1d,2d},new Object[]{"3","null",null},null))); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, AList.create(AList.create(1d,2f),AList.create(3d,"null",null),null))); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, new G3[][]{{new G3(1d),new G3(2d)},{new G3(3d),new G3(null),null},null})); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, AList.create(new G3[]{new G3(1d),new G3(2d)},new G3[]{new G3(3d),new G3(null),null},null))); + assertEquals("1.0,2.0|3.0,null,null|null", s.serialize(ps, AList.create(AList.create(new G3(1d),new G3(2d)),AList.create(new G3(3d),new G3(null),null),null))); + assertEquals("1.0,2.0|3.0,null|null", s.serialize(ps, new G4[]{new G4(1d,2d),new G4(3d,null),null})); + assertEquals("1.0,2.0|3.0,null|null", s.serialize(ps, AList.create(new G4(1d,2d),new G4(3d,null),null))); + } + + // //----------------------------------------------------------------------------------------------------------------- // // type = object // //----------------------------------------------------------------------------------------------------------------- diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/OpenApiPartParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/OpenApiPartParser.java index e6507ce..1ca2ee3 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/OpenApiPartParser.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/OpenApiPartParser.java @@ -179,6 +179,7 @@ public class OpenApiPartParser extends UonPartParser { //------------------------------------------------------------------------------------------------------------------- final HttpPartSchema schema; + final BeanSession bs; /** * Constructor. @@ -189,6 +190,7 @@ public class OpenApiPartParser extends UonPartParser { super( ps.builder().build() ); + this.bs = createBeanSession(); this.schema = getProperty(OAPI_schema, HttpPartSchema.class, DEFAULT_SCHEMA); } @@ -406,7 +408,7 @@ public class OpenApiPartParser extends UonPartParser { private <T> T toType(Object in, ClassMeta<T> type) throws ParseException { try { - return createBeanSession().convertToType(in, type); + return bs.convertToType(in, type); } catch (InvalidDataConversionException e) { throw new ParseException(e.getMessage()); } 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 8913af3..bc14088 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 @@ -72,6 +72,11 @@ public class OpenApiPartSerializer extends UonPartSerializer { private static final BeanContext BC = BeanContext.DEFAULT; private static final ClassMeta<byte[]> CM_ByteArray = BC.getClassMeta(byte[].class); private static final ClassMeta<Calendar> CM_Calendar = BC.getClassMeta(Calendar.class); + private static final ClassMeta<Long> CM_Long = BC.getClassMeta(Long.class); + private static final ClassMeta<Integer> CM_Integer = BC.getClassMeta(Integer.class); + private static final ClassMeta<Double> CM_Double = BC.getClassMeta(Double.class); + private static final ClassMeta<Float> CM_Float = BC.getClassMeta(Float.class); + private static final ClassMeta<Boolean> CM_Boolean = BC.getClassMeta(Boolean.class); private static final HttpPartSchema DEFAULT_SCHEMA = HttpPartSchema.DEFAULT; @@ -80,6 +85,7 @@ public class OpenApiPartSerializer extends UonPartSerializer { //------------------------------------------------------------------------------------------------------------------- final HttpPartSchema schema; + final BeanSession bs; /** * Constructor. @@ -93,6 +99,7 @@ public class OpenApiPartSerializer extends UonPartSerializer { .set(UON_encoding, false) .build() ); + this.bs = createBeanSession(); this.schema = getProperty(OAPI_schema, HttpPartSchema.class, HttpPartSchema.DEFAULT); } @@ -204,12 +211,30 @@ public class OpenApiPartSerializer extends UonPartSerializer { out = joine(l, ','); } - } else if (t == BOOLEAN || t == INTEGER || t == NUMBER) { + } else if (t == BOOLEAN) { - if (cf == HttpPartSchema.CollectionFormat.UON) + if (f == HttpPartSchema.Format.UON) + out = super.serialize(partType, null, value); + else + out = asString(toType(value, CM_Boolean)); + + } else if (t == INTEGER) { + + if (f == HttpPartSchema.Format.UON) + out = super.serialize(partType, null, value); + else if (f == INT64) + out = asString(toType(value, CM_Long)); + else + out = asString(toType(value, CM_Integer)); + + } else if (t == NUMBER) { + + if (f == HttpPartSchema.Format.UON) out = super.serialize(partType, null, value); + else if (f == DOUBLE) + out = asString(toType(value, CM_Double)); else - out = value.toString(); + out = asString(toType(value, CM_Float)); } else if (t == OBJECT) { @@ -248,7 +273,7 @@ public class OpenApiPartSerializer extends UonPartSerializer { private <T> T toType(Object in, ClassMeta<T> type) throws SerializeException { try { - return createBeanSession().convertToType(in, type); + return bs.convertToType(in, type); } catch (InvalidDataConversionException e) { throw new SerializeException(e.getMessage()); }