You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2017/09/02 14:11:02 UTC
[40/51] [partial] incubator-juneau git commit: Add project
hierarchies, part 1
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java
new file mode 100644
index 0000000..e3a3267
--- /dev/null
+++ b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java
@@ -0,0 +1,104 @@
+// ***************************************************************************************************************************
+// * 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 org.apache.juneau.dto.html5;
+
+import static org.apache.juneau.TestUtils.*;
+
+import static org.apache.juneau.dto.html5.HtmlBuilder.*;
+
+import java.util.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
+import org.junit.runner.*;
+import org.junit.runners.*;
+
+/**
+ * Tests serialization of HTML5 templates.
+ */
+@RunWith(Parameterized.class)
+@SuppressWarnings({"javadoc"})
+public class Html5TemplateComboTest extends ComboRoundTripTest {
+
+ @Parameterized.Parameters
+ public static Collection<Object[]> getParameters() {
+ return Arrays.asList(new Object[][] {
+ {
+ new ComboInput<FormTemplate>(
+ "FormTemplate-1",
+ FormTemplate.class,
+ new FormTemplate("http://myaction", 123, true),
+ /* Json */ "{a:{action:'http://myaction'},c:[{_type:'input',a:{type:'text',name:'v1',value:123}},{_type:'input',a:{type:'text',name:'v2',value:true}}]}",
+ /* JsonT */ "{a:{action:'http://myaction'},c:[{t:'input',a:{type:'text',name:'v1',value:123}},{t:'input',a:{type:'text',name:'v2',value:true}}]}",
+ /* JsonR */ "{\n\ta: {\n\t\taction: 'http://myaction'\n\t},\n\tc: [\n\t\t{\n\t\t\t_type: 'input',\n\t\t\ta: {\n\t\t\t\ttype: 'text',\n\t\t\t\tname: 'v1',\n\t\t\t\tvalue: 123\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t_type: 'input',\n\t\t\ta: {\n\t\t\t\ttype: 'text',\n\t\t\t\tname: 'v2',\n\t\t\t\tvalue: true\n\t\t\t}\n\t\t}\n\t]\n}",
+ /* Xml */ "<form action='http://myaction'><input type='text' name='v1' value='123'/><input type='text' name='v2' value='true'/></form>",
+ /* XmlT */ "<form action='http://myaction'><input type='text' name='v1' value='123'/><input type='text' name='v2' value='true'/></form>",
+ /* XmlR */ "<form action='http://myaction'><input type='text' name='v1' value='123'/><input type='text' name='v2' value='true'/></form>\n",
+ /* XmlNs */ "<form action='http://myaction'><input type='text' name='v1' value='123'/><input type='text' name='v2' value='true'/></form>",
+ /* Html */ "<form action='http://myaction'><input type='text' name='v1' value='123'/><input type='text' name='v2' value='true'/></form>",
+ /* HtmlT */ "<form action='http://myaction'><input type='text' name='v1' value='123'/><input type='text' name='v2' value='true'/></form>",
+ /* HtmlR */ "<form action='http://myaction'><input type='text' name='v1' value='123'/><input type='text' name='v2' value='true'/></form>\n",
+ /* Uon */ "(a=(action=http://myaction),c=@((_type=input,a=(type=text,name=v1,value=123)),(_type=input,a=(type=text,name=v2,value=true))))",
+ /* UonT */ "(a=(action=http://myaction),c=@((t=input,a=(type=text,name=v1,value=123)),(t=input,a=(type=text,name=v2,value=true))))",
+ /* UonR */ "(\n\ta=(\n\t\taction=http://myaction\n\t),\n\tc=@(\n\t\t(\n\t\t\t_type=input,\n\t\t\ta=(\n\t\t\t\ttype=text,\n\t\t\t\tname=v1,\n\t\t\t\tvalue=123\n\t\t\t)\n\t\t),\n\t\t(\n\t\t\t_type=input,\n\t\t\ta=(\n\t\t\t\ttype=text,\n\t\t\t\tname=v2,\n\t\t\t\tvalue=true\n\t\t\t)\n\t\t)\n\t)\n)",
+ /* UrlEnc */ "a=(action=http://myaction)&c=@((_type=input,a=(type=text,name=v1,value=123)),(_type=input,a=(type=text,name=v2,value=true)))",
+ /* UrlEncT */ "a=(action=http://myaction)&c=@((t=input,a=(type=text,name=v1,value=123)),(t=input,a=(type=text,name=v2,value=true)))",
+ /* UrlEncR */ "a=(\n\taction=http://myaction\n)\n&c=@(\n\t(\n\t\t_type=input,\n\t\ta=(\n\t\t\ttype=text,\n\t\t\tname=v1,\n\t\t\tvalue=123\n\t\t)\n\t),\n\t(\n\t\t_type=input,\n\t\ta=(\n\t\t\ttype=text,\n\t\t\tname=v2,\n\t\t\tvalue=true\n\t\t)\n\t)\n)",
+ /* MsgPack */ "82A16181A6616374696F6EAF687474703A2F2F6D79616374696F6EA1639282A55F74797065A5696E707574A16183A474797065A474657874A46E616D65A27631A576616C75657B82A55F74797065A5696E707574A16183A474797065A474657874A46E616D65A27632A576616C7565C3",
+ /* MsgPackT */ "82A16181A6616374696F6EAF687474703A2F2F6D79616374696F6EA1639282A174A5696E707574A16183A474797065A474657874A46E616D65A27631A576616C75657B82A174A5696E707574A16183A474797065A474657874A46E616D65A27632A576616C7565C3",
+ /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<jp:a rdf:parseType='Resource'>\n<jp:action rdf:resource='http://myaction'/>\n</jp:a>\n<jp:c>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:_type>input</jp:_type>\n<jp:a rdf:parseType='Resource'>\n<jp:type>text</jp:type>\n<jp:name>v1</jp:name>\n<jp:value>123</jp:value>\n</jp:a>\n</rdf:li>\n<rdf:li rdf:parseType='Resource'>\n<jp:_type>input</jp:_type>\n<jp:a rdf:parseType='Resource'>\n<jp:type>text</jp:type>\n<jp:name>v2</jp:name>\n<jp:value>true</jp:value>\n</jp:a>\n</rdf:li>\n</rdf:Seq>\n</jp:c>\n</rdf:Description>\n</rdf:RDF>\n",
+ /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<jp:a rdf:parseType='Resource'>\n<jp:action rdf:resource='http://myaction'/>\n</jp:a>\n<jp:c>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:t>input</jp:t>\n<jp:a rdf:parseType='Resource'>\n<jp:type>text</jp:type>\n<jp:name>v1</jp:name>\n<jp:value>123</jp:value>\n</jp:a>\n</rdf:li>\n<rdf:li rdf:parseType='Resource'>\n<jp:t>input</jp:t>\n<jp:a rdf:parseType='Resource'>\n<jp:type>text</jp:type>\n<jp:name>v2</jp:name>\n<jp:value>true</jp:value>\n</jp:a>\n</rdf:li>\n</rdf:Seq>\n</jp:c>\n</rdf:Description>\n</rdf:RDF>\n",
+ /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <jp:a rdf:parseType='Resource'>\n <jp:action rdf:resource='http://myaction'/>\n </jp:a>\n <jp:c>\n <rdf:Seq>\n <rdf:li rdf:parseType='Resource'>\n <jp:_type>input</jp:_type>\n <jp:a rdf:parseType='Resource'>\n <jp:type>text</jp:type>\n <jp:name>v1</jp:name>\n <jp:value>123</jp:value>\n </jp:a>\n </rdf:li>\n <rdf:li rdf:parseType='Resource'>\n <jp:_type>input</jp:_type>\n <jp:a rdf:parseType='Resource'>\n <jp:type>text</jp:type>\n <jp:name>v2</jp:name>\n <jp:value>true</jp:value>\n </jp:a>\n </rdf:li>\n </rdf:Seq>\n </jp:c>\n </rdf:Description>\n</rdf:RDF>\n"
+ )
+ {
+ @Override
+ public void verify(FormTemplate o) {
+ assertType(FormTemplate.class, o);
+ }
+ }
+ },
+ });
+ }
+
+
+ @Bean(beanDictionary=HtmlBeanDictionary.class)
+ public static class FormTemplate {
+
+ private String action;
+ private int value1;
+ private boolean value2;
+
+ public FormTemplate(Form f) {
+ this.action = f.getAttr("action");
+ this.value1 = f.getChild(Input.class, 0).getAttr(int.class, "value");
+ this.value2 = f.getChild(Input.class, 1).getAttr(boolean.class, "value");
+ }
+
+ public FormTemplate(String action, int value1, boolean value2) {
+ this.action = action;
+ this.value1 = value1;
+ this.value2 = value2;
+ }
+
+ public Form swap(BeanSession session) {
+ return form(action,
+ input("text").name("v1").value(value1),
+ input("text").name("v2").value(value2)
+ );
+ }
+ }
+
+ public Html5TemplateComboTest(ComboInput<?> comboInput) {
+ super(comboInput);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java
new file mode 100755
index 0000000..19d95e9
--- /dev/null
+++ b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java
@@ -0,0 +1,204 @@
+// ***************************************************************************************************************************
+// * 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 org.apache.juneau.dto.jsonschema;
+
+import static org.junit.Assert.*;
+
+import java.net.*;
+
+import org.apache.juneau.json.*;
+import org.junit.*;
+
+@SuppressWarnings("javadoc")
+public class JsonSchemaTest {
+
+ @Test
+ public void testSchema1() throws Exception {
+ JsonSerializer s = new JsonSerializerBuilder().simple().ws().addBeanTypeProperties(false).build();
+ JsonParser p = JsonParser.DEFAULT;
+ String r;
+ Schema t, t2;
+
+ String expected =
+ "{\n"
+ +" id: 'http://id',\n"
+ +" '$schema': 'http://schemaVersionUri',\n"
+ +" title: 'title',\n"
+ +" description: 'description',\n"
+ +" type: 'number',\n"
+ +" definitions: {\n"
+ +" definition: {\n"
+ +" '$ref': 'http://definition'\n"
+ +" }\n"
+ +" },\n"
+ +" properties: {\n"
+ +" property: {\n"
+ +" type: 'number'\n"
+ +" }\n"
+ +" },\n"
+ +" patternProperties: {\n"
+ +" '/pattern/': {\n"
+ +" type: 'number'\n"
+ +" }\n"
+ +" },\n"
+ +" dependencies: {\n"
+ +" dependency: {\n"
+ +" '$ref': 'http://dependency'\n"
+ +" }\n"
+ +" },\n"
+ +" items: [\n"
+ +" {\n"
+ +" type: 'number'\n"
+ +" }\n"
+ +" ],\n"
+ +" multipleOf: 1,\n"
+ +" maximum: 2,\n"
+ +" exclusiveMaximum: true,\n"
+ +" minimum: 3,\n"
+ +" exclusiveMinimum: true,\n"
+ +" maxLength: 4,\n"
+ +" minLength: 5,\n"
+ +" pattern: '/pattern/',\n"
+ +" additionalItems: [\n"
+ +" {\n"
+ +" type: 'number'\n"
+ +" }\n"
+ +" ],\n"
+ +" maxItems: 6,\n"
+ +" minItems: 7,\n"
+ +" uniqueItems: true,\n"
+ +" maxProperties: 8,\n"
+ +" minProperties: 9,\n"
+ +" required: [\n"
+ +" 'required'\n"
+ +" ],\n"
+ +" additionalProperties: {\n"
+ +" '$ref': 'http://additionalProperty'\n"
+ +" },\n"
+ +" 'enum': [\n"
+ +" 'enum'\n"
+ +" ],\n"
+ +" allOf: [\n"
+ +" {\n"
+ +" '$ref': 'http://allOf'\n"
+ +" }\n"
+ +" ],\n"
+ +" anyOf: [\n"
+ +" {\n"
+ +" '$ref': 'http://anyOf'\n"
+ +" }\n"
+ +" ],\n"
+ +" oneOf: [\n"
+ +" {\n"
+ +" '$ref': 'http://oneOf'\n"
+ +" }\n"
+ +" ],\n"
+ +" not: {\n"
+ +" '$ref': 'http://not'\n"
+ +" }\n"
+ +"}";
+
+ t = getTest1();
+ r = s.serialize(t);
+ assertEquals(expected, r);
+ t2 = p.parse(r, Schema.class);
+ r = s.serialize(t2);
+ assertEquals(expected, r);
+ }
+
+ @Test
+ public void testSchema2() throws Exception {
+ JsonSerializer s = new JsonSerializerBuilder().simple().ws().addBeanTypeProperties(false).build();
+ JsonParser p = JsonParser.DEFAULT;
+ String r;
+ Schema t, t2;
+
+ String expected =
+ "{\n"
+ +" id: 'http://id',\n"
+ +" '$schema': 'http://schemaVersionUri',\n"
+ +" type: [\n"
+ +" 'string',\n"
+ +" 'number'\n"
+ +" ],\n"
+ +" definitions: {\n"
+ +" definition: {\n"
+ +" id: 'http://definition'\n"
+ +" }\n"
+ +" },\n"
+ +" items: [\n"
+ +" {\n"
+ +" '$ref': 'http://items'\n"
+ +" }\n"
+ +" ],\n"
+ +" additionalItems: true,\n"
+ +" additionalProperties: true\n"
+ +"}";
+
+ t = getTest2();
+ r = s.serialize(t);
+ assertEquals(expected, r);
+ t2 = p.parse(r, Schema.class);
+ r = s.serialize(t2);
+ assertEquals(expected, r);
+ }
+
+ /** Bean with simple values for each property */
+ public static Schema getTest1() {
+ return new Schema()
+ .setId("http://id")
+ .setSchemaVersionUri("http://schemaVersionUri")
+ .setTitle("title")
+ .setDescription("description")
+ .setType(JsonType.NUMBER)
+ .addDefinition("definition", new SchemaRef("http://definition"))
+ .addProperties(new SchemaProperty("property", JsonType.NUMBER))
+ .addPatternProperties(new SchemaProperty("/pattern/", JsonType.NUMBER))
+ .addDependency("dependency", new SchemaRef("http://dependency"))
+ .addItems(new Schema().setType(JsonType.NUMBER))
+ .setMultipleOf(1)
+ .setMaximum(2)
+ .setExclusiveMaximum(true)
+ .setMinimum(3)
+ .setExclusiveMinimum(true)
+ .setMaxLength(4)
+ .setMinLength(5)
+ .setPattern("/pattern/")
+ .addAdditionalItems(new SchemaProperty("additionalItem", JsonType.NUMBER))
+ .setMaxItems(6)
+ .setMinItems(7)
+ .setUniqueItems(true)
+ .setMaxProperties(8)
+ .setMinProperties(9)
+ .addRequired("required")
+ .setAdditionalProperties(new SchemaRef("http://additionalProperty"))
+ .addEnum("enum")
+ .addAllOf(new SchemaRef("http://allOf"))
+ .addAnyOf(new SchemaRef("http://anyOf"))
+ .addOneOf(new SchemaRef("http://oneOf"))
+ .setNot(new SchemaRef("http://not"))
+ ;
+ }
+
+ /** Bean with other possible property value types not covered in test1 */
+ public static Schema getTest2() {
+ return new Schema()
+ .setId(URI.create("http://id"))
+ .setSchemaVersionUri(URI.create("http://schemaVersionUri"))
+ .setType(new JsonTypeArray(JsonType.STRING, JsonType.NUMBER))
+ .addDefinition("definition", new Schema().setId("http://definition"))
+ .setItems(new SchemaArray(new SchemaRef("http://items")))
+ .setAdditionalItems(Boolean.TRUE)
+ .setAdditionalProperties(Boolean.TRUE);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/encoders/EncoderGroupTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/encoders/EncoderGroupTest.java b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/encoders/EncoderGroupTest.java
new file mode 100755
index 0000000..3a0e026
--- /dev/null
+++ b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/encoders/EncoderGroupTest.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 org.apache.juneau.encoders;
+
+import static org.apache.juneau.TestUtils.*;
+
+import org.junit.*;
+
+@SuppressWarnings({"javadoc"})
+public class EncoderGroupTest {
+
+ //====================================================================================================
+ // Test matching
+ //====================================================================================================
+ @Test
+ public void testEncoderGroupMatching() throws Exception {
+
+ EncoderGroup g = new EncoderGroupBuilder().append(Encoder1.class, Encoder2.class, Encoder3.class).build();
+ assertType(Encoder1.class, g.getEncoder("gzip1"));
+ assertType(Encoder2.class, g.getEncoder("gzip2"));
+ assertType(Encoder2.class, g.getEncoder("gzip2a"));
+ assertType(Encoder3.class, g.getEncoder("gzip3"));
+ assertType(Encoder3.class, g.getEncoder("gzip3a"));
+ assertType(Encoder3.class, g.getEncoder("gzip3,gzip2,gzip1"));
+ assertType(Encoder1.class, g.getEncoder("gzip3;q=0.9,gzip2;q=0.1,gzip1"));
+ assertType(Encoder3.class, g.getEncoder("gzip2;q=0.9,gzip1;q=0.1,gzip3"));
+ assertType(Encoder2.class, g.getEncoder("gzip1;q=0.9,gzip3;q=0.1,gzip2"));
+ }
+
+ public static class Encoder1 extends GzipEncoder {
+ @Override /* Encoder */
+ public String[] getCodings() {
+ return new String[]{"gzip1"};
+ }
+ }
+
+ public static class Encoder2 extends GzipEncoder {
+ @Override /* Encoder */
+ public String[] getCodings() {
+ return new String[]{"gzip2","gzip2a"};
+ }
+ }
+
+ public static class Encoder3 extends GzipEncoder {
+ @Override /* Encoder */
+ public String[] getCodings() {
+ return new String[]{"gzip3","gzip3a"};
+ }
+ }
+
+ //====================================================================================================
+ // Test inheritence
+ //====================================================================================================
+ @Test
+ public void testInheritence() throws Exception {
+ EncoderGroupBuilder gb = null;
+ EncoderGroup g = null;
+
+ gb = new EncoderGroupBuilder().append(E1.class, E2.class);
+ g = gb.build();
+ assertObjectEquals("['E1','E2','E2a']", g.getSupportedEncodings());
+
+ gb = new EncoderGroupBuilder(g).append(E3.class, E4.class);
+ g = gb.build();
+ assertObjectEquals("['E3','E4','E4a','E1','E2','E2a']", g.getSupportedEncodings());
+
+ gb = new EncoderGroupBuilder(g).append(E5.class);
+ g = gb.build();
+ assertObjectEquals("['E5','E3','E4','E4a','E1','E2','E2a']", g.getSupportedEncodings());
+ }
+
+ public static class E1 extends GzipEncoder {
+ @Override /* Encoder */
+ public String[] getCodings() {
+ return new String[]{"E1"};
+ }
+ }
+
+ public static class E2 extends GzipEncoder {
+ @Override /* Encoder */
+ public String[] getCodings() {
+ return new String[]{"E2","E2a"};
+ }
+ }
+
+ public static class E3 extends GzipEncoder {
+ @Override /* Encoder */
+ public String[] getCodings() {
+ return new String[]{"E3"};
+ }
+ }
+
+ public static class E4 extends GzipEncoder {
+ @Override /* Encoder */
+ public String[] getCodings() {
+ return new String[]{"E4","E4a"};
+ }
+ }
+
+ public static class E5 extends GzipEncoder {
+ @Override /* Encoder */
+ public String[] getCodings() {
+ return new String[]{"E5"};
+ }
+ }
+}