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 2018/01/18 19:01:05 UTC

[09/10] juneau git commit: JUNEAU-78

http://git-wip-us.apache.org/repos/asf/juneau/blob/8df34f56/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/ParameterInfoTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/ParameterInfoTest.java b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/ParameterInfoTest.java
new file mode 100644
index 0000000..6aa8ce1
--- /dev/null
+++ b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/ParameterInfoTest.java
@@ -0,0 +1,729 @@
+// ***************************************************************************************************************************
+// * 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.swagger;
+
+import static org.apache.juneau.TestUtils.*;
+import static org.apache.juneau.dto.swagger.SwaggerBuilder.*;
+import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+
+import java.util.*;
+
+import org.apache.juneau.json.*;
+import org.apache.juneau.utils.*;
+
+import org.junit.*;
+
+/**
+ * Testcase for {@link ParameterInfo}.
+ */
+public class ParameterInfoTest {
+
+	/**
+	 * Test method for {@link ParameterInfo#name(java.lang.Object)}.
+	 */
+	@Test
+	public void testName() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.name("foo");
+		assertEquals("foo", t.getName());
+		
+		t.name(new StringBuilder("foo"));
+		assertEquals("foo", t.getName());
+		assertType(String.class, t.getName());
+		
+		t.name(null);
+		assertNull(t.getName());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#in(java.lang.Object)}.
+	 */
+	@Test
+	public void testIn() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.in("foo");
+		assertEquals("foo", t.getIn());
+		
+		t.in(new StringBuilder("foo"));
+		assertEquals("foo", t.getIn());
+		assertType(String.class, t.getIn());
+		
+		t.in(null);
+		assertNull(t.getIn());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#description(java.lang.Object)}.
+	 */
+	@Test
+	public void testDescription() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.description("foo");
+		assertEquals("foo", t.getDescription());
+		
+		t.description(new StringBuilder("foo"));
+		assertEquals("foo", t.getDescription());
+		assertType(String.class, t.getDescription());
+		
+		t.description(null);
+		assertNull(t.getDescription());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#required(java.lang.Object)}.
+	 */
+	@Test
+	public void testRequired() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.required(true);
+		assertEquals(true, t.getRequired());
+		assertType(Boolean.class, t.getRequired());
+		
+		t.required("true");
+		assertEquals(true, t.getRequired());
+		assertType(Boolean.class, t.getRequired());
+
+		t.required(new StringBuilder("true"));
+		assertEquals(true, t.getRequired());
+		assertType(Boolean.class, t.getRequired());
+		
+		t.required(null);
+		assertNull(t.getRequired());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#schema(java.lang.Object)}.
+	 */
+	@Test
+	public void testSchema() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.schema(schemaInfo().title("foo"));
+		assertObjectEquals("{title:'foo'}", t.getSchema());
+		
+		t.schema("{title:'foo'}");
+		assertObjectEquals("{title:'foo'}", t.getSchema());
+		assertType(SchemaInfo.class, t.getSchema());
+
+		t.schema(null);
+		assertNull(t.getSchema());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#type(java.lang.Object)}.
+	 */
+	@Test
+	public void testType() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.type("foo");
+		assertEquals("foo", t.getType());
+		
+		t.type(new StringBuilder("foo"));
+		assertEquals("foo", t.getType());
+		assertType(String.class, t.getType());
+		
+		t.type(null);
+		assertNull(t.getType());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#format(java.lang.Object)}.
+	 */
+	@Test
+	public void testFormat() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.format("foo");
+		assertEquals("foo", t.getFormat());
+		
+		t.format(new StringBuilder("foo"));
+		assertEquals("foo", t.getFormat());
+		assertType(String.class, t.getFormat());
+		
+		t.format(null);
+		assertNull(t.getFormat());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#allowEmptyValue(java.lang.Object)}.
+	 */
+	@Test
+	public void testAllowEmptyValue() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.allowEmptyValue(true);
+		assertEquals(true, t.getAllowEmptyValue());
+		assertType(Boolean.class, t.getAllowEmptyValue());
+		
+		t.allowEmptyValue("true");
+		assertEquals(true, t.getAllowEmptyValue());
+		assertType(Boolean.class, t.getAllowEmptyValue());
+
+		t.allowEmptyValue(new StringBuilder("true"));
+		assertEquals(true, t.getAllowEmptyValue());
+		assertType(Boolean.class, t.getAllowEmptyValue());
+		
+		t.allowEmptyValue(null);
+		assertNull(t.getAllowEmptyValue());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#items(java.lang.Object)}.
+	 */
+	@Test
+	public void testItems() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.items(items("foo"));
+		assertObjectEquals("{type:'foo'}", t.getItems());
+		
+		t.items("{type:'foo'}");
+		assertObjectEquals("{type:'foo'}", t.getItems());
+		assertType(Items.class, t.getItems());
+
+		t.items(null);
+		assertNull(t.getItems());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#collectionFormat(java.lang.Object)}.
+	 */
+	@Test
+	public void testCollectionFormat() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.collectionFormat("foo");
+		assertEquals("foo", t.getCollectionFormat());
+		
+		t.collectionFormat(new StringBuilder("foo"));
+		assertEquals("foo", t.getCollectionFormat());
+		assertType(String.class, t.getCollectionFormat());
+		
+		t.collectionFormat(null);
+		assertNull(t.getCollectionFormat());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#_default(java.lang.Object)}.
+	 */
+	@Test
+	public void test_default() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t._default("foo");
+		assertEquals("foo", t.getDefault());
+		
+		t._default(new StringBuilder("foo"));
+		assertEquals("foo", t.getDefault().toString());
+		assertType(StringBuilder.class, t.getDefault());
+		
+		t._default(null);
+		assertNull(t.getDefault());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#maximum(java.lang.Object)}.
+	 */
+	@Test
+	public void testMaximum() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.maximum(123);
+		assertEquals(123, t.getMaximum());
+		assertType(Integer.class, t.getMaximum());
+		
+		t.maximum(123f);
+		assertEquals(123f, t.getMaximum());
+		assertType(Float.class, t.getMaximum());
+
+		t.maximum("123");
+		assertEquals(123, t.getMaximum());
+		assertType(Integer.class, t.getMaximum());
+
+		t.maximum(new StringBuilder("123"));
+		assertEquals(123, t.getMaximum());
+		assertType(Integer.class, t.getMaximum());
+		
+		t.maximum(null);
+		assertNull(t.getMaximum());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#exclusiveMaximum(java.lang.Object)}.
+	 */
+	@Test
+	public void testExclusiveMaximum() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.exclusiveMaximum(true);
+		assertEquals(true, t.getExclusiveMaximum());
+		assertType(Boolean.class, t.getExclusiveMaximum());
+		
+		t.exclusiveMaximum("true");
+		assertEquals(true, t.getExclusiveMaximum());
+		assertType(Boolean.class, t.getExclusiveMaximum());
+
+		t.exclusiveMaximum(new StringBuilder("true"));
+		assertEquals(true, t.getExclusiveMaximum());
+		assertType(Boolean.class, t.getExclusiveMaximum());
+		
+		t.exclusiveMaximum(null);
+		assertNull(t.getExclusiveMaximum());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#minimum(java.lang.Object)}.
+	 */
+	@Test
+	public void testMinimum() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.minimum(123);
+		assertEquals(123, t.getMinimum());
+		assertType(Integer.class, t.getMinimum());
+		
+		t.minimum(123f);
+		assertEquals(123f, t.getMinimum());
+		assertType(Float.class, t.getMinimum());
+
+		t.minimum("123");
+		assertEquals(123, t.getMinimum());
+		assertType(Integer.class, t.getMinimum());
+
+		t.minimum(new StringBuilder("123"));
+		assertEquals(123, t.getMinimum());
+		assertType(Integer.class, t.getMinimum());
+		
+		t.minimum(null);
+		assertNull(t.getMinimum());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#exclusiveMinimum(java.lang.Object)}.
+	 */
+	@Test
+	public void testExclusiveMinimum() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.exclusiveMinimum(true);
+		assertEquals(true, t.getExclusiveMinimum());
+		assertType(Boolean.class, t.getExclusiveMinimum());
+		
+		t.exclusiveMinimum("true");
+		assertEquals(true, t.getExclusiveMinimum());
+		assertType(Boolean.class, t.getExclusiveMinimum());
+
+		t.exclusiveMinimum(new StringBuilder("true"));
+		assertEquals(true, t.getExclusiveMinimum());
+		assertType(Boolean.class, t.getExclusiveMinimum());
+		
+		t.exclusiveMinimum(null);
+		assertNull(t.getExclusiveMinimum());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#maxLength(java.lang.Object)}.
+	 */
+	@Test
+	public void testMaxLength() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.maxLength(123);
+		assertEquals(123, t.getMaxLength().intValue());
+		assertType(Integer.class, t.getMaxLength());
+		
+		t.maxLength(123f);
+		assertEquals(123, t.getMaxLength().intValue());
+		assertType(Integer.class, t.getMaxLength());
+
+		t.maxLength("123");
+		assertEquals(123, t.getMaxLength().intValue());
+		assertType(Integer.class, t.getMaxLength());
+
+		t.maxLength(new StringBuilder("123"));
+		assertEquals(123, t.getMaxLength().intValue());
+		assertType(Integer.class, t.getMaxLength());
+		
+		t.maxLength(null);
+		assertNull(t.getMaxLength());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#minLength(java.lang.Object)}.
+	 */
+	@Test
+	public void testMinLength() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.minLength(123);
+		assertEquals(123, t.getMinLength().intValue());
+		assertType(Integer.class, t.getMinLength());
+		
+		t.minLength(123f);
+		assertEquals(123, t.getMinLength().intValue());
+		assertType(Integer.class, t.getMinLength());
+
+		t.minLength("123");
+		assertEquals(123, t.getMinLength().intValue());
+		assertType(Integer.class, t.getMinLength());
+
+		t.minLength(new StringBuilder("123"));
+		assertEquals(123, t.getMinLength().intValue());
+		assertType(Integer.class, t.getMinLength());
+		
+		t.minLength(null);
+		assertNull(t.getMinLength());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#pattern(java.lang.Object)}.
+	 */
+	@Test
+	public void testPattern() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.pattern("foo");
+		assertEquals("foo", t.getPattern());
+		
+		t.pattern(new StringBuilder("foo"));
+		assertEquals("foo", t.getPattern());
+		assertType(String.class, t.getPattern());
+		
+		t.pattern(null);
+		assertNull(t.getPattern());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#maxItems(java.lang.Object)}.
+	 */
+	@Test
+	public void testMaxItems() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.maxItems(123);
+		assertEquals(123, t.getMaxItems().intValue());
+		assertType(Integer.class, t.getMaxItems());
+		
+		t.maxItems(123f);
+		assertEquals(123, t.getMaxItems().intValue());
+		assertType(Integer.class, t.getMaxItems());
+
+		t.maxItems("123");
+		assertEquals(123, t.getMaxItems().intValue());
+		assertType(Integer.class, t.getMaxItems());
+
+		t.maxItems(new StringBuilder("123"));
+		assertEquals(123, t.getMaxItems().intValue());
+		assertType(Integer.class, t.getMaxItems());
+		
+		t.maxItems(null);
+		assertNull(t.getMaxItems());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#minItems(java.lang.Object)}.
+	 */
+	@Test
+	public void testMinItems() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.minItems(123);
+		assertEquals(123, t.getMinItems().intValue());
+		assertType(Integer.class, t.getMinItems());
+		
+		t.minItems(123f);
+		assertEquals(123, t.getMinItems().intValue());
+		assertType(Integer.class, t.getMinItems());
+
+		t.minItems("123");
+		assertEquals(123, t.getMinItems().intValue());
+		assertType(Integer.class, t.getMinItems());
+
+		t.minItems(new StringBuilder("123"));
+		assertEquals(123, t.getMinItems().intValue());
+		assertType(Integer.class, t.getMinItems());
+		
+		t.minItems(null);
+		assertNull(t.getMinItems());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#uniqueItems(java.lang.Object)}.
+	 */
+	@Test
+	public void testUniqueItems() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.uniqueItems(true);
+		assertEquals(true, t.getUniqueItems());
+		assertType(Boolean.class, t.getUniqueItems());
+		
+		t.uniqueItems("true");
+		assertEquals(true, t.getUniqueItems());
+		assertType(Boolean.class, t.getUniqueItems());
+
+		t.uniqueItems(new StringBuilder("true"));
+		assertEquals(true, t.getUniqueItems());
+		assertType(Boolean.class, t.getUniqueItems());
+		
+		t.uniqueItems(null);
+		assertNull(t.getUniqueItems());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#setEnum(java.util.Collection)}.
+	 */
+	@Test
+	public void testSetEnum() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.setEnum(new ASet<Object>().appendAll("foo","bar"));
+		assertObjectEquals("['foo','bar']", t.getEnum());
+		assertType(List.class, t.getEnum());
+		
+		t.setEnum(new ASet<Object>());
+		assertObjectEquals("[]", t.getEnum());
+		assertType(List.class, t.getEnum());
+
+		t.setEnum(null);
+		assertNull(t.getEnum());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#addEnum(java.util.Collection)}.
+	 */
+	@Test
+	public void testAddEnum() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.addEnum(new ASet<Object>().appendAll("foo","bar"));
+		assertObjectEquals("['foo','bar']", t.getEnum());
+		assertType(List.class, t.getEnum());
+		
+		t.addEnum(new ASet<Object>().appendAll("baz"));
+		assertObjectEquals("['foo','bar','baz']", t.getEnum());
+		assertType(List.class, t.getEnum());
+
+		t.addEnum(null);
+		assertObjectEquals("['foo','bar','baz']", t.getEnum());
+		assertType(List.class, t.getEnum());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#_enum(java.lang.Object[])}.
+	 */
+	@Test
+	public void test_enum() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t._enum(new ASet<Object>().appendAll("foo","bar"));
+		assertObjectEquals("['foo','bar']", t.getEnum());
+		assertType(List.class, t.getEnum());
+		
+		t._enum(new ASet<Object>().appendAll("baz"));
+		assertObjectEquals("['foo','bar','baz']", t.getEnum());
+		assertType(List.class, t.getEnum());
+
+		t._enum((Object[])null);
+		assertObjectEquals("['foo','bar','baz']", t.getEnum());
+		assertType(List.class, t.getEnum());
+		
+		t.setEnum(null);
+		t._enum("foo")._enum(new StringBuilder("bar"))._enum("['baz','qux']")._enum((Object)new String[]{"quux"});
+		assertObjectEquals("['foo','bar','baz','qux','quux']", t.getEnum());
+		assertType(List.class, t.getEnum());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#multipleOf(java.lang.Object)}.
+	 */
+	@Test
+	public void testMultipleOf() {
+		ParameterInfo t = new ParameterInfo();
+		
+		t.multipleOf(123);
+		assertEquals(123, t.getMultipleOf());
+		assertType(Integer.class, t.getMultipleOf());
+		
+		t.multipleOf(123f);
+		assertEquals(123f, t.getMultipleOf());
+		assertType(Float.class, t.getMultipleOf());
+
+		t.multipleOf("123");
+		assertEquals(123, t.getMultipleOf());
+		assertType(Integer.class, t.getMultipleOf());
+
+		t.multipleOf(new StringBuilder("123"));
+		assertEquals(123, t.getMultipleOf());
+		assertType(Integer.class, t.getMultipleOf());
+		
+		t.multipleOf(null);
+		assertNull(t.getMultipleOf());
+	}
+
+	/**
+	 * Test method for {@link ParameterInfo#set(java.lang.String, java.lang.Object)}.
+	 */
+	@Test
+	public void testSet() throws Exception {
+		ParameterInfo t = new ParameterInfo();
+		
+		t
+			.set("default", "a")
+			.set("enum", new ASet<Object>().appendAll("b"))
+			.set("allowEmptyValue", true)
+			.set("collectionFormat", "c")
+			.set("description", "d")
+			.set("exclusiveMaximum", true)
+			.set("exclusiveMinimum", true)
+			.set("format", "e")
+			.set("in", "f")
+			.set("items", items("g"))
+			.set("maximum", 123f)
+			.set("maxItems", 123)
+			.set("maxLength", 123)
+			.set("minimum", 123f)
+			.set("minItems", 123)
+			.set("minLength", 123)
+			.set("multipleOf", 123f)
+			.set("name", "h")
+			.set("pattern", "i")
+			.set("required", true)
+			.set("schema", schemaInfo().title("j"))
+			.set("type", "k")
+			.set("uniqueItems", true)
+			.set("$ref", "ref");
+	
+		assertObjectEquals("{'in':'f',name:'h',type:'k',description:'d',required:true,schema:{title:'j'},format:'e',allowEmptyValue:true,items:{type:'g'},collectionFormat:'c','default':'a',maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'i',maxItems:123,minItems:123,uniqueItems:true,'enum':['b'],multipleOf:123.0,'$ref':'ref'}", t);
+		
+		t
+			.set("default", "a")
+			.set("enum", "['b']")
+			.set("allowEmptyValue", "true")
+			.set("collectionFormat", "c")
+			.set("description", "d")
+			.set("exclusiveMaximum", "true")
+			.set("exclusiveMinimum", "true")
+			.set("format", "e")
+			.set("in", "f")
+			.set("items", "{type:'g'}")
+			.set("maximum", "123.0")
+			.set("maxItems", "123")
+			.set("maxLength", "123")
+			.set("minimum", "123.0")
+			.set("minItems", "123")
+			.set("minLength", "123")
+			.set("multipleOf", "123.0")
+			.set("name", "h")
+			.set("pattern", "i")
+			.set("required", "true")
+			.set("schema", "{title:'j'}")
+			.set("type", "k")
+			.set("uniqueItems", "true")
+			.set("$ref", "ref");
+	
+		assertObjectEquals("{'in':'f',name:'h',type:'k',description:'d',required:true,schema:{title:'j'},format:'e',allowEmptyValue:true,items:{type:'g'},collectionFormat:'c','default':'a',maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'i',maxItems:123,minItems:123,uniqueItems:true,'enum':['b'],multipleOf:123.0,'$ref':'ref'}", t);
+		
+		t
+			.set("default", new StringBuilder("a"))
+			.set("enum", new StringBuilder("['b']"))
+			.set("allowEmptyValue", new StringBuilder("true"))
+			.set("collectionFormat", new StringBuilder("c"))
+			.set("description", new StringBuilder("d"))
+			.set("exclusiveMaximum", new StringBuilder("true"))
+			.set("exclusiveMinimum", new StringBuilder("true"))
+			.set("format", new StringBuilder("e"))
+			.set("in", new StringBuilder("f"))
+			.set("items", new StringBuilder("{type:'g'}"))
+			.set("maximum", new StringBuilder("123.0"))
+			.set("maxItems", new StringBuilder("123"))
+			.set("maxLength", new StringBuilder("123"))
+			.set("minimum", new StringBuilder("123.0"))
+			.set("minItems", new StringBuilder("123"))
+			.set("minLength", new StringBuilder("123"))
+			.set("multipleOf", new StringBuilder("123.0"))
+			.set("name", new StringBuilder("h"))
+			.set("pattern", new StringBuilder("i"))
+			.set("required", new StringBuilder("true"))
+			.set("schema", new StringBuilder("{title:'j'}"))
+			.set("type", new StringBuilder("k"))
+			.set("uniqueItems", new StringBuilder("true"))
+			.set("$ref", new StringBuilder("ref"));
+	
+		assertObjectEquals("{'in':'f',name:'h',type:'k',description:'d',required:true,schema:{title:'j'},format:'e',allowEmptyValue:true,items:{type:'g'},collectionFormat:'c','default':'a',maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'i',maxItems:123,minItems:123,uniqueItems:true,'enum':['b'],multipleOf:123.0,'$ref':'ref'}", t);
+
+		assertEquals("a", t.get("default", String.class));
+		assertEquals("['b']", t.get("enum", String.class));
+		assertEquals("true", t.get("allowEmptyValue", String.class));
+		assertEquals("c", t.get("collectionFormat", String.class));
+		assertEquals("d", t.get("description", String.class));
+		assertEquals("true", t.get("exclusiveMaximum", String.class));
+		assertEquals("true", t.get("exclusiveMinimum", String.class));
+		assertEquals("e", t.get("format", String.class));
+		assertEquals("f", t.get("in", String.class));
+		assertEquals("{type:'g'}", t.get("items", String.class));
+		assertEquals("123.0", t.get("maximum", String.class));
+		assertEquals("123", t.get("maxItems", String.class));
+		assertEquals("123", t.get("maxLength", String.class));
+		assertEquals("123.0", t.get("minimum", String.class));
+		assertEquals("123", t.get("minItems", String.class));
+		assertEquals("123", t.get("minLength", String.class));
+		assertEquals("123.0", t.get("multipleOf", String.class));
+		assertEquals("h", t.get("name", String.class));
+		assertEquals("i", t.get("pattern", String.class));
+		assertEquals("true", t.get("required", String.class));
+		assertEquals("{title:'j'}", t.get("schema", String.class));
+		assertEquals("k", t.get("type", String.class));
+		assertEquals("true", t.get("uniqueItems", String.class));
+		assertEquals("ref", t.get("$ref", String.class));
+	
+		assertType(StringBuilder.class, t.get("default", Object.class));
+		assertType(List.class, t.get("enum", Object.class));
+		assertType(Boolean.class, t.get("allowEmptyValue", Object.class));
+		assertType(String.class, t.get("collectionFormat", Object.class));
+		assertType(String.class, t.get("description", Object.class));
+		assertType(Boolean.class, t.get("exclusiveMaximum", Object.class));
+		assertType(Boolean.class, t.get("exclusiveMinimum", Object.class));
+		assertType(String.class, t.get("format", Object.class));
+		assertType(String.class, t.get("in", Object.class));
+		assertType(Items.class, t.get("items", Object.class));
+		assertType(Float.class, t.get("maximum", Object.class));
+		assertType(Integer.class, t.get("maxItems", Object.class));
+		assertType(Integer.class, t.get("maxLength", Object.class));
+		assertType(Float.class, t.get("minimum", Object.class));
+		assertType(Integer.class, t.get("minItems", Object.class));
+		assertType(Integer.class, t.get("minLength", Object.class));
+		assertType(Float.class, t.get("multipleOf", Object.class));
+		assertType(String.class, t.get("name", Object.class));
+		assertType(String.class, t.get("pattern", Object.class));
+		assertType(Boolean.class, t.get("required", Object.class));
+		assertType(SchemaInfo.class, t.get("schema", Object.class));
+		assertType(String.class, t.get("type", Object.class));
+		assertType(Boolean.class, t.get("uniqueItems", Object.class));
+		assertType(StringBuilder.class, t.get("$ref", Object.class));
+	
+		t.set("null", null).set(null, "null");
+		assertNull(t.get("null", Object.class));
+		assertNull(t.get(null, Object.class));
+		assertNull(t.get("foo", Object.class));
+		
+		String s = "{'in':'f',name:'h',type:'k',description:'d',required:true,schema:{title:'j'},format:'e',allowEmptyValue:true,items:{type:'g'},collectionFormat:'c','default':'a',maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'i',maxItems:123,minItems:123,uniqueItems:true,'enum':['b'],multipleOf:123.0,'$ref':'ref'}";
+		assertObjectEquals(s, JsonParser.DEFAULT.parse(s, ParameterInfo.class));
+	}
+}

http://git-wip-us.apache.org/repos/asf/juneau/blob/8df34f56/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/ResponseInfoTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/ResponseInfoTest.java b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/ResponseInfoTest.java
new file mode 100644
index 0000000..06eb4f8
--- /dev/null
+++ b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/ResponseInfoTest.java
@@ -0,0 +1,265 @@
+// ***************************************************************************************************************************
+// * 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.swagger;
+
+import static org.apache.juneau.TestUtils.*;
+import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+
+import java.util.*;
+
+import org.apache.juneau.json.*;
+import org.apache.juneau.utils.*;
+
+import static org.apache.juneau.dto.swagger.SwaggerBuilder.*;
+
+import org.junit.*;
+
+/**
+ * Testcase for {@link ResponseInfo}.
+ */
+public class ResponseInfoTest {
+
+	/**
+	 * Test method for {@link ResponseInfo#description(java.lang.Object)}.
+	 */
+	@Test
+	public void testDescription() {
+		ResponseInfo t = new ResponseInfo();
+		
+		t.description("foo");
+		assertEquals("foo", t.getDescription());
+		
+		t.description(new StringBuilder("foo"));
+		assertEquals("foo", t.getDescription());
+		assertType(String.class, t.getDescription());
+		
+		t.description(null);
+		assertNull(t.getDescription());
+	}
+
+	/**
+	 * Test method for {@link ResponseInfo#schema(java.lang.Object)}.
+	 */
+	@Test
+	public void testSchema() {
+		ResponseInfo t = new ResponseInfo();
+		
+		t.schema(schemaInfo().title("foo"));
+		assertObjectEquals("{title:'foo'}", t.getSchema());
+		
+		t.schema("{title:'foo'}");
+		assertObjectEquals("{title:'foo'}", t.getSchema());
+		assertType(SchemaInfo.class, t.getSchema());
+
+		t.schema(null);
+		assertNull(t.getSchema());
+	}
+
+	/**
+	 * Test method for {@link ResponseInfo#setHeaders(java.util.Map)}.
+	 */
+	@Test
+	public void testSetHeaders() {
+		ResponseInfo t = new ResponseInfo();
+		
+		t.setHeaders(new AMap<String,HeaderInfo>().append("foo",headerInfo("bar")));
+		assertObjectEquals("{foo:{type:'bar'}}", t.getHeaders());
+		assertType(Map.class, t.getHeaders());
+		assertType(HeaderInfo.class, t.getHeaders().get("foo"));
+		
+		t.setHeaders(new AMap<String,HeaderInfo>());
+		assertObjectEquals("{}", t.getHeaders());
+		assertType(Map.class, t.getHeaders());
+
+		t.setHeaders(null);
+		assertNull(t.getExamples());
+	}
+
+	/**
+	 * Test method for {@link ResponseInfo#addHeaders(java.util.Map)}.
+	 */
+	@Test
+	public void testAddHeaders() {
+		ResponseInfo t = new ResponseInfo();
+		
+		t.addHeaders(new AMap<String,HeaderInfo>().append("foo",headerInfo("bar")));
+		assertObjectEquals("{foo:{type:'bar'}}", t.getHeaders());
+		assertType(Map.class, t.getHeaders());
+		assertType(HeaderInfo.class, t.getHeaders().get("foo"));
+		
+		t.addHeaders(new AMap<String,HeaderInfo>());
+		assertObjectEquals("{foo:{type:'bar'}}", t.getHeaders());
+		assertType(Map.class, t.getHeaders());
+		assertType(HeaderInfo.class, t.getHeaders().get("foo"));
+
+		t.addHeaders(null);
+		assertObjectEquals("{foo:{type:'bar'}}", t.getHeaders());
+		assertType(Map.class, t.getHeaders());
+		assertType(HeaderInfo.class, t.getHeaders().get("foo"));
+	}
+
+	/**
+	 * Test method for {@link ResponseInfo#header(java.lang.String, org.apache.juneau.dto.swagger.HeaderInfo)}.
+	 */
+	@Test
+	public void testHeader() {
+		ResponseInfo t = new ResponseInfo();
+		
+		t.header("a", headerInfo("a1"));
+		t.header("b", null);
+		t.header(null, headerInfo("c1"));
+
+		assertObjectEquals("{a:{type:'a1'},b:null,null:{type:'c1'}}", t.getHeaders());
+	}
+
+	/**
+	 * Test method for {@link ResponseInfo#headers(java.lang.Object[])}.
+	 */
+	@Test
+	public void testHeaders() {
+		ResponseInfo t = new ResponseInfo();
+		
+		t.headers(new AMap<String,HeaderInfo>().append("a", headerInfo("a1")));
+		t.headers(new AMap<String,String>().append("b", "{type:'b1'}"));
+		t.headers("{c:{type:'c1'}}");
+		t.headers("{}");
+		t.headers((Object[])null);
+		
+		assertObjectEquals("{a:{type:'a1'},b:{type:'b1'},c:{type:'c1'}}", t.getHeaders());
+	}
+
+	/**
+	 * Test method for {@link ResponseInfo#setExamples(java.util.Map)}.
+	 */
+	@Test
+	public void testSetExamples() {
+		ResponseInfo t = new ResponseInfo();
+		
+		t.setExamples(new AMap<String,Object>().append("foo","bar").append("baz",new AList<String>().append("qux")));
+		assertObjectEquals("{foo:'bar',baz:['qux']}", t.getExamples());
+		assertType(Map.class, t.getExamples());
+		
+		t.setExamples(new AMap<String,Object>());
+		assertObjectEquals("{}", t.getExamples());
+		assertType(Map.class, t.getExamples());
+
+		t.setExamples(null);
+		assertNull(t.getExamples());
+	}
+
+	/**
+	 * Test method for {@link ResponseInfo#addExamples(java.util.Map)}.
+	 */
+	@Test
+	public void testAddExamples() {
+		ResponseInfo t = new ResponseInfo();
+		
+		t.addExamples(new AMap<String,Object>().append("foo","bar").append("baz",new AList<String>().append("qux")));
+		assertObjectEquals("{foo:'bar',baz:['qux']}", t.getExamples());
+		assertType(Map.class, t.getExamples());
+		
+		t.addExamples(new AMap<String,Object>());
+		assertObjectEquals("{foo:'bar',baz:['qux']}", t.getExamples());
+		assertType(Map.class, t.getExamples());
+
+		t.addExamples(null);
+		assertObjectEquals("{foo:'bar',baz:['qux']}", t.getExamples());
+		assertType(Map.class, t.getExamples());
+	}
+
+	/**
+	 * Test method for {@link ResponseInfo#example(java.lang.String, java.lang.Object)}.
+	 */
+	@Test
+	public void testExample() {
+		ResponseInfo t = new ResponseInfo();
+
+		t.example("text/a", "a");
+		t.example("text/b", null);
+		t.example(null, "c");
+		
+		assertObjectEquals("{'text/a':'a','text/b':null,null:'c'}", t.getExamples());
+	}
+
+	/**
+	 * Test method for {@link ResponseInfo#examples(java.lang.Object[])}.
+	 */
+	@Test
+	public void testExamples() {
+		ResponseInfo t = new ResponseInfo();
+		
+		t.examples(new AMap<String,Object>().append("1",new AList<String>().append("a")));
+		t.examples("{2:{c1:'c2'}}");
+		t.examples("{}");
+		t.examples((Object)null);
+		
+		assertObjectEquals("{'1':['a'],'2':{c1:'c2'}}", t.getExamples());
+	}
+
+	/**
+	 * Test method for {@link ResponseInfo#set(java.lang.String, java.lang.Object)}.
+	 */
+	@Test
+	public void testSet() throws Exception {
+		ResponseInfo t = new ResponseInfo();
+		
+		t
+			.set("description", "a")
+			.set("examples", new AMap<String,Object>().append("foo","bar").append("baz",new AList<String>().append("qux")))
+			.set("headers", new AMap<String,HeaderInfo>().append("a", headerInfo("a1")))
+			.set("schema", schemaInfo().type("d"))
+			.set("$ref", "ref");
+		
+		assertObjectEquals("{description:'a',schema:{type:'d'},headers:{a:{type:'a1'}},examples:{foo:'bar',baz:['qux']},'$ref':'ref'}", t);
+		
+		t
+			.set("description", "a")
+			.set("examples", "{foo:'bar',baz:['qux']}")
+			.set("headers", "{a:{type:'a1'}}")
+			.set("schema", "{type:'d'}")
+			.set("$ref", "ref");
+		
+		assertObjectEquals("{description:'a',schema:{type:'d'},headers:{a:{type:'a1'}},examples:{foo:'bar',baz:['qux']},'$ref':'ref'}", t);
+
+		t
+			.set("description", new StringBuilder("a"))
+			.set("examples", new StringBuilder("{foo:'bar',baz:['qux']}"))
+			.set("headers", new StringBuilder("{a:{type:'a1'}}"))
+			.set("schema", new StringBuilder("{type:'d'}"))
+			.set("$ref", new StringBuilder("ref"));
+		
+		assertObjectEquals("{description:'a',schema:{type:'d'},headers:{a:{type:'a1'}},examples:{foo:'bar',baz:['qux']},'$ref':'ref'}", t);
+		
+		assertEquals("a", t.get("description", String.class));
+		assertEquals("{foo:'bar',baz:['qux']}", t.get("examples", String.class));
+		assertEquals("{a:{type:'a1'}}", t.get("headers", String.class));
+		assertEquals("{type:'d'}", t.get("schema", String.class));
+		assertEquals("ref", t.get("$ref", String.class));
+	
+		assertType(String.class, t.get("description", Object.class));
+		assertType(Map.class, t.get("examples", Object.class));
+		assertType(Map.class, t.get("headers", Object.class));
+		assertType(HeaderInfo.class, t.get("headers", Map.class).values().iterator().next());
+		assertType(SchemaInfo.class, t.get("schema", Object.class));
+		assertType(StringBuilder.class, t.get("$ref", Object.class));
+	
+		t.set("null", null).set(null, "null");
+		assertNull(t.get("null", Object.class));
+		assertNull(t.get(null, Object.class));
+		assertNull(t.get("foo", Object.class));
+		
+		String s = "{description:'a',schema:{type:'d'},headers:{a:{type:'a1'}},examples:{foo:'bar',baz:['qux']},'$ref':'ref'}";
+		assertObjectEquals(s, JsonParser.DEFAULT.parse(s, ResponseInfo.class));
+	}
+}

http://git-wip-us.apache.org/repos/asf/juneau/blob/8df34f56/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/SchemaInfoTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/SchemaInfoTest.java b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/SchemaInfoTest.java
new file mode 100644
index 0000000..4aac32a
--- /dev/null
+++ b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/SchemaInfoTest.java
@@ -0,0 +1,1011 @@
+// ***************************************************************************************************************************
+// * 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.swagger;
+
+import static org.apache.juneau.TestUtils.*;
+import static org.apache.juneau.dto.swagger.SwaggerBuilder.*;
+import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+
+import java.util.*;
+
+import org.apache.juneau.json.*;
+import org.apache.juneau.utils.*;
+
+import org.junit.*;
+
+/**
+ * Testcase for {@link SchemaInfo}.
+ */
+public class SchemaInfoTest {
+
+	/**
+	 * Test method for {@link SchemaInfo#format(java.lang.Object)}.
+	 */
+	@Test
+	public void testFormat() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.format("foo");
+		assertEquals("foo", t.getFormat());
+		
+		t.format(new StringBuilder("foo"));
+		assertEquals("foo", t.getFormat());
+		assertType(String.class, t.getFormat());
+		
+		t.format(null);
+		assertNull(t.getFormat());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#title(java.lang.Object)}.
+	 */
+	@Test
+	public void testTitle() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.title("foo");
+		assertEquals("foo", t.getTitle());
+		
+		t.title(new StringBuilder("foo"));
+		assertEquals("foo", t.getTitle());
+		assertType(String.class, t.getTitle());
+		
+		t.title(null);
+		assertNull(t.getTitle());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#description(java.lang.Object)}.
+	 */
+	@Test
+	public void testDescription() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.description("foo");
+		assertEquals("foo", t.getDescription());
+		
+		t.description(new StringBuilder("foo"));
+		assertEquals("foo", t.getDescription());
+		assertType(String.class, t.getDescription());
+		
+		t.description(null);
+		assertNull(t.getDescription());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#_default(java.lang.Object)}.
+	 */
+	@Test
+	public void test_default() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t._default("foo");
+		assertEquals("foo", t.getDefault());
+		
+		t._default(new StringBuilder("foo"));
+		assertEquals("foo", t.getDefault().toString());
+		assertType(StringBuilder.class, t.getDefault());
+		
+		t._default(null);
+		assertNull(t.getDefault());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#multipleOf(java.lang.Object)}.
+	 */
+	@Test
+	public void testMultipleOf() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.multipleOf(123);
+		assertEquals(123, t.getMultipleOf());
+		assertType(Integer.class, t.getMultipleOf());
+		
+		t.multipleOf(123f);
+		assertEquals(123f, t.getMultipleOf());
+		assertType(Float.class, t.getMultipleOf());
+
+		t.multipleOf("123");
+		assertEquals(123, t.getMultipleOf());
+		assertType(Integer.class, t.getMultipleOf());
+
+		t.multipleOf(new StringBuilder("123"));
+		assertEquals(123, t.getMultipleOf());
+		assertType(Integer.class, t.getMultipleOf());
+		
+		t.multipleOf(null);
+		assertNull(t.getMultipleOf());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#maximum(java.lang.Object)}.
+	 */
+	@Test
+	public void testMaximum() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.maximum(123);
+		assertEquals(123, t.getMaximum());
+		assertType(Integer.class, t.getMaximum());
+		
+		t.maximum(123f);
+		assertEquals(123f, t.getMaximum());
+		assertType(Float.class, t.getMaximum());
+
+		t.maximum("123");
+		assertEquals(123, t.getMaximum());
+		assertType(Integer.class, t.getMaximum());
+
+		t.maximum(new StringBuilder("123"));
+		assertEquals(123, t.getMaximum());
+		assertType(Integer.class, t.getMaximum());
+		
+		t.maximum(null);
+		assertNull(t.getMaximum());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#exclusiveMaximum(java.lang.Object)}.
+	 */
+	@Test
+	public void testExclusiveMaximum() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.exclusiveMaximum(true);
+		assertEquals(true, t.getExclusiveMaximum());
+		assertType(Boolean.class, t.getExclusiveMaximum());
+		
+		t.exclusiveMaximum("true");
+		assertEquals(true, t.getExclusiveMaximum());
+		assertType(Boolean.class, t.getExclusiveMaximum());
+
+		t.exclusiveMaximum(new StringBuilder("true"));
+		assertEquals(true, t.getExclusiveMaximum());
+		assertType(Boolean.class, t.getExclusiveMaximum());
+		
+		t.exclusiveMaximum(null);
+		assertNull(t.getExclusiveMaximum());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#minimum(java.lang.Object)}.
+	 */
+	@Test
+	public void testMinimum() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.minimum(123);
+		assertEquals(123, t.getMinimum());
+		assertType(Integer.class, t.getMinimum());
+		
+		t.minimum(123f);
+		assertEquals(123f, t.getMinimum());
+		assertType(Float.class, t.getMinimum());
+
+		t.minimum("123");
+		assertEquals(123, t.getMinimum());
+		assertType(Integer.class, t.getMinimum());
+
+		t.minimum(new StringBuilder("123"));
+		assertEquals(123, t.getMinimum());
+		assertType(Integer.class, t.getMinimum());
+		
+		t.minimum(null);
+		assertNull(t.getMinimum());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#exclusiveMinimum(java.lang.Object)}.
+	 */
+	@Test
+	public void testExclusiveMinimum() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.exclusiveMinimum(true);
+		assertEquals(true, t.getExclusiveMinimum());
+		assertType(Boolean.class, t.getExclusiveMinimum());
+		
+		t.exclusiveMinimum("true");
+		assertEquals(true, t.getExclusiveMinimum());
+		assertType(Boolean.class, t.getExclusiveMinimum());
+
+		t.exclusiveMinimum(new StringBuilder("true"));
+		assertEquals(true, t.getExclusiveMinimum());
+		assertType(Boolean.class, t.getExclusiveMinimum());
+		
+		t.exclusiveMinimum(null);
+		assertNull(t.getExclusiveMinimum());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#maxLength(java.lang.Object)}.
+	 */
+	@Test
+	public void testMaxLength() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.maxLength(123);
+		assertEquals(123, t.getMaxLength().intValue());
+		assertType(Integer.class, t.getMaxLength());
+		
+		t.maxLength(123f);
+		assertEquals(123, t.getMaxLength().intValue());
+		assertType(Integer.class, t.getMaxLength());
+
+		t.maxLength("123");
+		assertEquals(123, t.getMaxLength().intValue());
+		assertType(Integer.class, t.getMaxLength());
+
+		t.maxLength(new StringBuilder("123"));
+		assertEquals(123, t.getMaxLength().intValue());
+		assertType(Integer.class, t.getMaxLength());
+		
+		t.maxLength(null);
+		assertNull(t.getMaxLength());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#minLength(java.lang.Object)}.
+	 */
+	@Test
+	public void testMinLength() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.minLength(123);
+		assertEquals(123, t.getMinLength().intValue());
+		assertType(Integer.class, t.getMinLength());
+		
+		t.minLength(123f);
+		assertEquals(123, t.getMinLength().intValue());
+		assertType(Integer.class, t.getMinLength());
+
+		t.minLength("123");
+		assertEquals(123, t.getMinLength().intValue());
+		assertType(Integer.class, t.getMinLength());
+
+		t.minLength(new StringBuilder("123"));
+		assertEquals(123, t.getMinLength().intValue());
+		assertType(Integer.class, t.getMinLength());
+		
+		t.minLength(null);
+		assertNull(t.getMinLength());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#pattern(java.lang.Object)}.
+	 */
+	@Test
+	public void testPattern() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.pattern("foo");
+		assertEquals("foo", t.getPattern());
+		
+		t.pattern(new StringBuilder("foo"));
+		assertEquals("foo", t.getPattern());
+		assertType(String.class, t.getPattern());
+		
+		t.pattern(null);
+		assertNull(t.getPattern());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#maxItems(java.lang.Object)}.
+	 */
+	@Test
+	public void testMaxItems() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.maxItems(123);
+		assertEquals(123, t.getMaxItems().intValue());
+		assertType(Integer.class, t.getMaxItems());
+		
+		t.maxItems(123f);
+		assertEquals(123, t.getMaxItems().intValue());
+		assertType(Integer.class, t.getMaxItems());
+
+		t.maxItems("123");
+		assertEquals(123, t.getMaxItems().intValue());
+		assertType(Integer.class, t.getMaxItems());
+
+		t.maxItems(new StringBuilder("123"));
+		assertEquals(123, t.getMaxItems().intValue());
+		assertType(Integer.class, t.getMaxItems());
+		
+		t.maxItems(null);
+		assertNull(t.getMaxItems());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#minItems(java.lang.Object)}.
+	 */
+	@Test
+	public void testMinItems() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.minItems(123);
+		assertEquals(123, t.getMinItems().intValue());
+		assertType(Integer.class, t.getMinItems());
+		
+		t.minItems(123f);
+		assertEquals(123, t.getMinItems().intValue());
+		assertType(Integer.class, t.getMinItems());
+
+		t.minItems("123");
+		assertEquals(123, t.getMinItems().intValue());
+		assertType(Integer.class, t.getMinItems());
+
+		t.minItems(new StringBuilder("123"));
+		assertEquals(123, t.getMinItems().intValue());
+		assertType(Integer.class, t.getMinItems());
+		
+		t.minItems(null);
+		assertNull(t.getMinItems());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#uniqueItems(java.lang.Object)}.
+	 */
+	@Test
+	public void testUniqueItems() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.uniqueItems(true);
+		assertEquals(true, t.getUniqueItems());
+		assertType(Boolean.class, t.getUniqueItems());
+		
+		t.uniqueItems("true");
+		assertEquals(true, t.getUniqueItems());
+		assertType(Boolean.class, t.getUniqueItems());
+
+		t.uniqueItems(new StringBuilder("true"));
+		assertEquals(true, t.getUniqueItems());
+		assertType(Boolean.class, t.getUniqueItems());
+		
+		t.uniqueItems(null);
+		assertNull(t.getUniqueItems());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#maxProperties(java.lang.Object)}.
+	 */
+	@Test
+	public void testMaxProperties() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.maxProperties(123);
+		assertEquals(123, t.getMaxProperties().intValue());
+		assertType(Integer.class, t.getMaxProperties());
+		
+		t.maxProperties(123f);
+		assertEquals(123, t.getMaxProperties().intValue());
+		assertType(Integer.class, t.getMaxProperties());
+
+		t.maxProperties("123");
+		assertEquals(123, t.getMaxProperties().intValue());
+		assertType(Integer.class, t.getMaxProperties());
+
+		t.maxProperties(new StringBuilder("123"));
+		assertEquals(123, t.getMaxProperties().intValue());
+		assertType(Integer.class, t.getMaxProperties());
+		
+		t.maxProperties(null);
+		assertNull(t.getMaxProperties());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#minProperties(java.lang.Object)}.
+	 */
+	@Test
+	public void testMinProperties() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.minProperties(123);
+		assertEquals(123, t.getMinProperties().intValue());
+		assertType(Integer.class, t.getMinProperties());
+		
+		t.minProperties(123f);
+		assertEquals(123, t.getMinProperties().intValue());
+		assertType(Integer.class, t.getMinProperties());
+
+		t.minProperties("123");
+		assertEquals(123, t.getMinProperties().intValue());
+		assertType(Integer.class, t.getMinProperties());
+
+		t.minProperties(new StringBuilder("123"));
+		assertEquals(123, t.getMinProperties().intValue());
+		assertType(Integer.class, t.getMinProperties());
+		
+		t.minProperties(null);
+		assertNull(t.getMinProperties());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#required(java.lang.Object)}.
+	 */
+	@Test
+	public void testRequired() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.required(true);
+		assertEquals(true, t.getRequired());
+		assertType(Boolean.class, t.getRequired());
+		
+		t.required("true");
+		assertEquals(true, t.getRequired());
+		assertType(Boolean.class, t.getRequired());
+
+		t.required(new StringBuilder("true"));
+		assertEquals(true, t.getRequired());
+		assertType(Boolean.class, t.getRequired());
+		
+		t.required(null);
+		assertNull(t.getRequired());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#setEnum(java.util.Collection)}.
+	 */
+	@Test
+	public void testSetEnum() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.setEnum(new ASet<Object>().appendAll("foo","bar"));
+		assertObjectEquals("['foo','bar']", t.getEnum());
+		assertType(List.class, t.getEnum());
+		
+		t.setEnum(new ASet<Object>());
+		assertObjectEquals("[]", t.getEnum());
+		assertType(List.class, t.getEnum());
+
+		t.setEnum(null);
+		assertNull(t.getEnum());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#addEnum(java.util.Collection)}.
+	 */
+	@Test
+	public void testAddEnum() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.addEnum(new ASet<Object>().appendAll("foo","bar"));
+		assertObjectEquals("['foo','bar']", t.getEnum());
+		assertType(List.class, t.getEnum());
+		
+		t.addEnum(new ASet<Object>().appendAll("baz"));
+		assertObjectEquals("['foo','bar','baz']", t.getEnum());
+		assertType(List.class, t.getEnum());
+
+		t.addEnum(null);
+		assertObjectEquals("['foo','bar','baz']", t.getEnum());
+		assertType(List.class, t.getEnum());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#_enum(java.lang.Object[])}.
+	 */
+	@Test
+	public void test_enum() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t._enum(new ASet<Object>().appendAll("foo","bar"));
+		assertObjectEquals("['foo','bar']", t.getEnum());
+		assertType(List.class, t.getEnum());
+		
+		t._enum(new ASet<Object>().appendAll("baz"));
+		assertObjectEquals("['foo','bar','baz']", t.getEnum());
+		assertType(List.class, t.getEnum());
+
+		t._enum((Object[])null);
+		assertObjectEquals("['foo','bar','baz']", t.getEnum());
+		assertType(List.class, t.getEnum());
+		
+		t.setEnum(null);
+		t._enum("foo")._enum(new StringBuilder("bar"))._enum("['baz','qux']")._enum((Object)new String[]{"quux"});
+		assertObjectEquals("['foo','bar','baz','qux','quux']", t.getEnum());
+		assertType(List.class, t.getEnum());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#type(java.lang.Object)}.
+	 */
+	@Test
+	public void testType() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.type("foo");
+		assertEquals("foo", t.getType());
+		
+		t.type(new StringBuilder("foo"));
+		assertEquals("foo", t.getType());
+		assertType(String.class, t.getType());
+		
+		t.type(null);
+		assertNull(t.getType());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#items(java.lang.Object)}.
+	 */
+	@Test
+	public void testItems() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.items(items("foo"));
+		assertObjectEquals("{type:'foo'}", t.getItems());
+		
+		t.items("{type:'foo'}");
+		assertObjectEquals("{type:'foo'}", t.getItems());
+		assertType(Items.class, t.getItems());
+
+		t.items(null);
+		assertNull(t.getItems());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#setAllOf(java.util.Collection)}.
+	 */
+	@Test
+	public void testSetAllOf() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.setAllOf(new ASet<Object>().appendAll("foo","bar"));
+		assertObjectEquals("['foo','bar']", t.getAllOf());
+		assertType(List.class, t.getAllOf());
+		
+		t.setAllOf(new ASet<Object>());
+		assertObjectEquals("[]", t.getAllOf());
+		assertType(List.class, t.getAllOf());
+
+		t.setAllOf(null);
+		assertNull(t.getAllOf());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#addAllOf(java.util.Collection)}.
+	 */
+	@Test
+	public void testAddAllOf() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.addAllOf(new ASet<Object>().appendAll("foo","bar"));
+		assertObjectEquals("['foo','bar']", t.getAllOf());
+		assertType(List.class, t.getAllOf());
+		
+		t.addAllOf(new ASet<Object>());
+		assertObjectEquals("['foo','bar']", t.getAllOf());
+		assertType(List.class, t.getAllOf());
+
+		t.addAllOf(null);
+		assertObjectEquals("['foo','bar']", t.getAllOf());
+		assertType(List.class, t.getAllOf());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#allOf(java.lang.Object[])}.
+	 */
+	@Test
+	public void testAllOf() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.allOf(new ASet<String>().appendAll("a"));
+		t.allOf(new ASet<Object>().appendAll(new StringBuilder("b")));
+		t.allOf((Object)new String[] {"c"});
+		t.allOf((Object)new Object[] {new StringBuilder("d")});
+		t.allOf("e");
+		t.allOf("['f']");
+		t.allOf("[]");
+		t.allOf((Object)null);
+		assertObjectEquals("['a','b','c','d','e','f']", t.getAllOf());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#setProperties(java.util.Map)}.
+	 */
+	@Test
+	public void testSetProperties() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.setProperties(new AMap<String,Map<String,Object>>().append("foo",new AMap<String,Object>().append("bar",new AList<Number>().append(123))));
+		assertObjectEquals("{foo:{bar:[123]}}", t.getProperties());
+		assertType(Map.class, t.getProperties());
+		
+		t.setProperties(new AMap<String,Map<String,Object>>());
+		assertObjectEquals("{}", t.getProperties());
+		assertType(Map.class, t.getProperties());
+
+		t.setProperties(null);
+		assertNull(t.getProperties());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#addProperties(java.util.Map)}.
+	 */
+	@Test
+	public void testAddProperties() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.addProperties(new AMap<String,Map<String,Object>>().append("foo",new AMap<String,Object>().append("bar",new AList<Number>().append(123))));
+		assertObjectEquals("{foo:{bar:[123]}}", t.getProperties());
+		assertType(Map.class, t.getProperties());
+		
+		t.addProperties(new AMap<String,Map<String,Object>>());
+		assertObjectEquals("{foo:{bar:[123]}}", t.getProperties());
+		assertType(Map.class, t.getProperties());
+
+		t.addProperties(null);
+		assertObjectEquals("{foo:{bar:[123]}}", t.getProperties());
+		assertType(Map.class, t.getProperties());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#properties(java.lang.Object[])}.
+	 */
+	@Test
+	public void testProperties() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.properties(new AMap<String,Map<String,Object>>().append("a", new AMap<String,Object>().append("a1", 1)));
+		t.properties(new AMap<String,String>().append("b", "{b1:2}"));
+		t.properties("{c:{c1:'c2'}}");
+		t.properties("{}");
+		t.properties((Object[])null);
+		
+		assertObjectEquals("{a:{a1:1},b:{b1:2},c:{c1:'c2'}}", t.getProperties());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#setAdditionalProperties(java.util.Map)}.
+	 */
+	@Test
+	public void testSetAdditionalProperties() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.setAdditionalProperties(new AMap<String,Object>().append("foo",new AList<String>().append("bar")));
+		assertObjectEquals("{foo:['bar']}", t.getAdditionalProperties());
+		assertType(Map.class, t.getAdditionalProperties());
+		
+		t.setAdditionalProperties(new AMap<String,Object>());
+		assertObjectEquals("{}", t.getAdditionalProperties());
+		assertType(Map.class, t.getAdditionalProperties());
+
+		t.setAdditionalProperties(null);
+		assertNull(t.getAdditionalProperties());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#addAdditionalProperties(java.util.Map)}.
+	 */
+	@Test
+	public void testAddAdditionalProperties() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.addAdditionalProperties(new AMap<String,Object>().append("foo",new AList<String>().append("bar")));
+		assertObjectEquals("{foo:['bar']}", t.getAdditionalProperties());
+		assertType(Map.class, t.getAdditionalProperties());
+		
+		t.addAdditionalProperties(new AMap<String,Object>());
+		assertObjectEquals("{foo:['bar']}", t.getAdditionalProperties());
+		assertType(Map.class, t.getAdditionalProperties());
+
+		t.addAdditionalProperties(null);
+		assertObjectEquals("{foo:['bar']}", t.getAdditionalProperties());
+		assertType(Map.class, t.getAdditionalProperties());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#additionalProperty(java.lang.String, java.lang.Object)}.
+	 */
+	@Test
+	public void testAdditionalProperty() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.additionalProperty("a", "a1");
+		t.additionalProperty(null, "b1");
+		t.additionalProperty("c", null);
+		
+		assertObjectEquals("{a:'a1',null:'b1',c:null}", t.getAdditionalProperties());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#additionalProperties(java.lang.Object[])}.
+	 */
+	@Test
+	public void testAdditionalProperties() {
+		SchemaInfo t = new SchemaInfo();
+
+		t.additionalProperties(new AMap<String,Object>().append("a",new AList<String>().append("a1")));
+		t.additionalProperties(new AMap<String,Object>().append("b","b1"));
+		t.additionalProperties("{c:['c1']}");
+		t.additionalProperties("{}");
+		t.additionalProperties((Object)null);
+		
+		assertObjectEquals("{a:['a1'],b:'b1',c:['c1']}", t.getAdditionalProperties());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#discriminator(java.lang.Object)}.
+	 */
+	@Test
+	public void testDiscriminator() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.discriminator("foo");
+		assertEquals("foo", t.getDiscriminator());
+		
+		t.discriminator(new StringBuilder("foo"));
+		assertEquals("foo", t.getDiscriminator());
+		assertType(String.class, t.getDiscriminator());
+		
+		t.discriminator(null);
+		assertNull(t.getDiscriminator());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#readOnly(java.lang.Object)}.
+	 */
+	@Test
+	public void testReadOnly() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.readOnly(true);
+		assertEquals(true, t.getReadOnly());
+		assertType(Boolean.class, t.getReadOnly());
+		
+		t.readOnly("true");
+		assertEquals(true, t.getReadOnly());
+		assertType(Boolean.class, t.getReadOnly());
+
+		t.readOnly(new StringBuilder("true"));
+		assertEquals(true, t.getReadOnly());
+		assertType(Boolean.class, t.getReadOnly());
+		
+		t.readOnly(null);
+		assertNull(t.getReadOnly());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#xml(java.lang.Object)}.
+	 */
+	@Test
+	public void testXml() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.xml(xml().name("foo"));
+		assertObjectEquals("{name:'foo'}", t.getXml());
+		
+		t.xml("{name:'foo'}");
+		assertObjectEquals("{name:'foo'}", t.getXml());
+		assertType(Xml.class, t.getXml());
+
+		t.xml(null);
+		assertNull(t.getXml());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#externalDocs(java.lang.Object)}.
+	 */
+	@Test
+	public void testExternalDocs() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.externalDocs(externalDocumentation("foo"));
+		assertObjectEquals("{url:'foo'}", t.getExternalDocs());
+		
+		t.externalDocs("{url:'foo'}");
+		assertObjectEquals("{url:'foo'}", t.getExternalDocs());
+		assertType(ExternalDocumentation.class, t.getExternalDocs());
+
+		t.externalDocs(null);
+		assertNull(t.getExternalDocs());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#example(java.lang.Object)}.
+	 */
+	@Test
+	public void testExample() {
+		SchemaInfo t = new SchemaInfo();
+		
+		t.example("foo");
+		assertEquals("foo", t.getExample());
+		
+		t.example(123);
+		assertEquals(123, t.getExample());
+
+		t.example(null);
+		assertNull(t.getExample());
+	}
+
+	/**
+	 * Test method for {@link SchemaInfo#set(java.lang.String, java.lang.Object)}.
+	 */
+	@Test
+	public void testSet() throws Exception {
+		SchemaInfo t = new SchemaInfo();
+		
+		t
+			.set("default", "a")
+			.set("enum", new ASet<Object>().appendAll("b"))
+			.set("additionalProperties", new AMap<String,Object>().append("c",new AList<String>().append("c1")))
+			.set("allOf", new ASet<String>().appendAll("d"))
+			.set("description", "e")
+			.set("discriminator", "f")
+			.set("example", "g")
+			.set("exclusiveMaximum", true)
+			.set("exclusiveMinimum", true)
+			.set("externalDocs", externalDocumentation("h"))
+			.set("format", "i")
+			.set("items", items("j"))
+			.set("maximum", 123f)
+			.set("maxItems", 123)
+			.set("maxLength", 123)
+			.set("maxProperties", 123)
+			.set("minimum", 123f)
+			.set("minItems", 123)
+			.set("minLength", 123)
+			.set("minProperties", 123)
+			.set("multipleOf", 123f)
+			.set("pattern", "k")
+			.set("properties", new AMap<String,Map<String,Object>>().append("l", new AMap<String,Object>().append("l1", 1)))
+			.set("readOnly", true)
+			.set("required", true)
+			.set("title", "m")
+			.set("type", "n")
+			.set("uniqueItems", true)
+			.set("xml", xml().name("o"))
+			.set("$ref", "ref");
+	
+		assertObjectEquals("{format:'i',title:'m',description:'e','default':'a',multipleOf:123.0,maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'k',maxItems:123,minItems:123,uniqueItems:true,maxProperties:123,minProperties:123,required:true,'enum':['b'],type:'n',items:{type:'j'},allOf:['d'],properties:{l:{l1:1}},additionalProperties:{c:['c1']},discriminator:'f',readOnly:true,xml:{name:'o'},externalDocs:{url:'h'},example:'g','$ref':'ref'}", t);
+		
+		t
+			.set("default", "a")
+			.set("enum", "['b']")
+			.set("additionalProperties", "{c:['c1']}")
+			.set("allOf", "['d']")
+			.set("description", "e")
+			.set("discriminator", "f")
+			.set("example", "g")
+			.set("exclusiveMaximum", "true")
+			.set("exclusiveMinimum", "true")
+			.set("externalDocs", "{url:'h'}")
+			.set("format", "i")
+			.set("items", "{type:'j'}")
+			.set("maximum", "123.0")
+			.set("maxItems", "123")
+			.set("maxLength", "123")
+			.set("maxProperties", "123")
+			.set("minimum", "123.0")
+			.set("minItems", "123")
+			.set("minLength", "123")
+			.set("minProperties", "123")
+			.set("multipleOf", "123.0")
+			.set("pattern", "k")
+			.set("properties", "{l:{l1:1}}")
+			.set("readOnly", "true")
+			.set("required", "true")
+			.set("title", "m")
+			.set("type", "n")
+			.set("uniqueItems", "true")
+			.set("xml", "{name:'o'}")
+			.set("$ref", "ref");
+	
+		assertObjectEquals("{format:'i',title:'m',description:'e','default':'a',multipleOf:123.0,maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'k',maxItems:123,minItems:123,uniqueItems:true,maxProperties:123,minProperties:123,required:true,'enum':['b'],type:'n',items:{type:'j'},allOf:['d'],properties:{l:{l1:1}},additionalProperties:{c:['c1']},discriminator:'f',readOnly:true,xml:{name:'o'},externalDocs:{url:'h'},example:'g','$ref':'ref'}", t);
+		
+		t
+			.set("default", new StringBuilder("a"))
+			.set("enum", new StringBuilder("['b']"))
+			.set("additionalProperties", new StringBuilder("{c:['c1']}"))
+			.set("allOf", new StringBuilder("['d']"))
+			.set("description", new StringBuilder("e"))
+			.set("discriminator", new StringBuilder("f"))
+			.set("example", new StringBuilder("g"))
+			.set("exclusiveMaximum", new StringBuilder("true"))
+			.set("exclusiveMinimum", new StringBuilder("true"))
+			.set("externalDocs", new StringBuilder("{url:'h'}"))
+			.set("format", new StringBuilder("i"))
+			.set("items", new StringBuilder("{type:'j'}"))
+			.set("maximum", new StringBuilder("123.0"))
+			.set("maxItems", new StringBuilder("123"))
+			.set("maxLength", new StringBuilder("123"))
+			.set("maxProperties", new StringBuilder("123"))
+			.set("minimum", new StringBuilder("123.0"))
+			.set("minItems", new StringBuilder("123"))
+			.set("minLength", new StringBuilder("123"))
+			.set("minProperties", new StringBuilder("123"))
+			.set("multipleOf", new StringBuilder("123.0"))
+			.set("pattern", new StringBuilder("k"))
+			.set("properties", new StringBuilder("{l:{l1:1}}"))
+			.set("readOnly", new StringBuilder("true"))
+			.set("required", new StringBuilder("true"))
+			.set("title", new StringBuilder("m"))
+			.set("type", new StringBuilder("n"))
+			.set("uniqueItems", new StringBuilder("true"))
+			.set("xml", new StringBuilder("{name:'o'}"))
+			.set("$ref", new StringBuilder("ref"));
+	
+		assertObjectEquals("{format:'i',title:'m',description:'e','default':'a',multipleOf:123.0,maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'k',maxItems:123,minItems:123,uniqueItems:true,maxProperties:123,minProperties:123,required:true,'enum':['b'],type:'n',items:{type:'j'},allOf:['d'],properties:{l:{l1:1}},additionalProperties:{c:['c1']},discriminator:'f',readOnly:true,xml:{name:'o'},externalDocs:{url:'h'},example:'g','$ref':'ref'}", t);
+
+		assertEquals("a", t.get("default", String.class));
+		assertEquals("['b']", t.get("enum", String.class));
+		assertEquals("{c:['c1']}", t.get("additionalProperties", String.class));
+		assertEquals("['d']", t.get("allOf", String.class));
+		assertEquals("e", t.get("description", String.class));
+		assertEquals("f", t.get("discriminator", String.class));
+		assertEquals("g", t.get("example", String.class));
+		assertEquals("true", t.get("exclusiveMaximum", String.class));
+		assertEquals("true", t.get("exclusiveMinimum", String.class));
+		assertEquals("{url:'h'}", t.get("externalDocs", String.class));
+		assertEquals("i", t.get("format", String.class));
+		assertEquals("{type:'j'}", t.get("items", String.class));
+		assertEquals("123.0", t.get("maximum", String.class));
+		assertEquals("123", t.get("maxItems", String.class));
+		assertEquals("123", t.get("maxLength", String.class));
+		assertEquals("123", t.get("maxProperties", String.class));
+		assertEquals("123.0", t.get("minimum", String.class));
+		assertEquals("123", t.get("minItems", String.class));
+		assertEquals("123", t.get("minLength", String.class));
+		assertEquals("123", t.get("minProperties", String.class));
+		assertEquals("123.0", t.get("multipleOf", String.class));
+		assertEquals("k", t.get("pattern", String.class));
+		assertEquals("{l:{l1:1}}", t.get("properties", String.class));
+		assertEquals("true", t.get("readOnly", String.class));
+		assertEquals("true", t.get("required", String.class));
+		assertEquals("m", t.get("title", String.class));
+		assertEquals("n", t.get("type", String.class));
+		assertEquals("true", t.get("uniqueItems", String.class));
+		assertEquals("{name:'o'}", t.get("xml", String.class));
+		assertEquals("ref", t.get("$ref", String.class));
+	
+		assertType(StringBuilder.class, t.get("default", Object.class));
+		assertType(List.class, t.get("enum", Object.class));
+		assertType(Map.class, t.get("additionalProperties", Object.class));
+		assertType(List.class, t.get("allOf", Object.class));
+		assertType(String.class, t.get("description", Object.class));
+		assertType(String.class, t.get("discriminator", Object.class));
+		assertType(StringBuilder.class, t.get("example", Object.class));
+		assertType(Boolean.class, t.get("exclusiveMaximum", Object.class));
+		assertType(Boolean.class, t.get("exclusiveMinimum", Object.class));
+		assertType(ExternalDocumentation.class, t.get("externalDocs", Object.class));
+		assertType(String.class, t.get("format", Object.class));
+		assertType(Items.class, t.get("items", Object.class));
+		assertType(Float.class, t.get("maximum", Object.class));
+		assertType(Integer.class, t.get("maxItems", Object.class));
+		assertType(Integer.class, t.get("maxLength", Object.class));
+		assertType(Integer.class, t.get("maxProperties", Object.class));
+		assertType(Float.class, t.get("minimum", Object.class));
+		assertType(Integer.class, t.get("minItems", Object.class));
+		assertType(Integer.class, t.get("minLength", Object.class));
+		assertType(Integer.class, t.get("minProperties", Object.class));
+		assertType(Float.class, t.get("multipleOf", Object.class));
+		assertType(String.class, t.get("pattern", Object.class));
+		assertType(Map.class, t.get("properties", Object.class));
+		assertType(Boolean.class, t.get("readOnly", Object.class));
+		assertType(Boolean.class, t.get("required", Object.class));
+		assertType(String.class, t.get("title", Object.class));
+		assertType(String.class, t.get("type", Object.class));
+		assertType(Boolean.class, t.get("uniqueItems", Object.class));
+		assertType(Xml.class, t.get("xml", Object.class));
+		assertType(StringBuilder.class, t.get("$ref", Object.class));
+	
+		t.set("null", null).set(null, "null");
+		assertNull(t.get("null", Object.class));
+		assertNull(t.get(null, Object.class));
+		assertNull(t.get("foo", Object.class));
+		
+		String s = "{format:'i',title:'m',description:'e','default':'a',multipleOf:123.0,maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'k',maxItems:123,minItems:123,uniqueItems:true,maxProperties:123,minProperties:123,required:true,'enum':['b'],type:'n',items:{type:'j'},allOf:['d'],properties:{l:{l1:1}},additionalProperties:{c:['c1']},discriminator:'f',readOnly:true,xml:{name:'o'},externalDocs:{url:'h'},example:'g','$ref':'ref'}";
+		assertObjectEquals(s, JsonParser.DEFAULT.parse(s, SchemaInfo.class));
+	}
+}

http://git-wip-us.apache.org/repos/asf/juneau/blob/8df34f56/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/SecuritySchemeTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/SecuritySchemeTest.java b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/SecuritySchemeTest.java
new file mode 100644
index 0000000..d878c31
--- /dev/null
+++ b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/SecuritySchemeTest.java
@@ -0,0 +1,284 @@
+// ***************************************************************************************************************************
+// * 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.swagger;
+
+import static org.apache.juneau.TestUtils.*;
+import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+
+import java.util.*;
+
+import org.apache.juneau.json.*;
+import org.apache.juneau.utils.*;
+import org.junit.*;
+
+/**
+ * Testcase for {@link SecurityScheme}.
+ */
+public class SecuritySchemeTest {
+
+	/**
+	 * Test method for {@link SecurityScheme#type(java.lang.Object)}.
+	 */
+	@Test
+	public void testType() {
+		SecurityScheme t = new SecurityScheme();
+		
+		t.type("foo");
+		assertEquals("foo", t.getType());
+		
+		t.type(new StringBuilder("foo"));
+		assertEquals("foo", t.getType());
+		assertType(String.class, t.getType());
+		
+		t.type(null);
+		assertNull(t.getType());
+	}
+
+	/**
+	 * Test method for {@link SecurityScheme#description(java.lang.Object)}.
+	 */
+	@Test
+	public void testDescription() {
+		SecurityScheme t = new SecurityScheme();
+		
+		t.description("foo");
+		assertEquals("foo", t.getDescription());
+		
+		t.description(new StringBuilder("foo"));
+		assertEquals("foo", t.getDescription());
+		assertType(String.class, t.getDescription());
+		
+		t.description(null);
+		assertNull(t.getDescription());
+	}
+
+	/**
+	 * Test method for {@link SecurityScheme#name(java.lang.Object)}.
+	 */
+	@Test
+	public void testName() {
+		SecurityScheme t = new SecurityScheme();
+		
+		t.name("foo");
+		assertEquals("foo", t.getName());
+		
+		t.name(new StringBuilder("foo"));
+		assertEquals("foo", t.getName());
+		assertType(String.class, t.getName());
+		
+		t.name(null);
+		assertNull(t.getName());
+	}
+
+	/**
+	 * Test method for {@link SecurityScheme#in(java.lang.Object)}.
+	 */
+	@Test
+	public void testIn() {
+		SecurityScheme t = new SecurityScheme();
+		
+		t.in("foo");
+		assertEquals("foo", t.getIn());
+		
+		t.in(new StringBuilder("foo"));
+		assertEquals("foo", t.getIn());
+		assertType(String.class, t.getIn());
+		
+		t.in(null);
+		assertNull(t.getIn());
+	}
+
+	/**
+	 * Test method for {@link SecurityScheme#flow(java.lang.Object)}.
+	 */
+	@Test
+	public void testFlow() {
+		SecurityScheme t = new SecurityScheme();
+		
+		t.flow("foo");
+		assertEquals("foo", t.getFlow());
+		
+		t.flow(new StringBuilder("foo"));
+		assertEquals("foo", t.getFlow());
+		assertType(String.class, t.getFlow());
+		
+		t.flow(null);
+		assertNull(t.getFlow());
+	}
+
+	/**
+	 * Test method for {@link SecurityScheme#authorizationUrl(java.lang.Object)}.
+	 */
+	@Test
+	public void testAuthorizationUrl() {
+		SecurityScheme t = new SecurityScheme();
+		
+		t.authorizationUrl("foo");
+		assertEquals("foo", t.getAuthorizationUrl());
+		
+		t.authorizationUrl(new StringBuilder("foo"));
+		assertEquals("foo", t.getAuthorizationUrl());
+		assertType(String.class, t.getAuthorizationUrl());
+		
+		t.authorizationUrl(null);
+		assertNull(t.getAuthorizationUrl());
+	}
+
+	/**
+	 * Test method for {@link SecurityScheme#tokenUrl(java.lang.Object)}.
+	 */
+	@Test
+	public void testTokenUrl() {
+		SecurityScheme t = new SecurityScheme();
+		
+		t.tokenUrl("foo");
+		assertEquals("foo", t.getTokenUrl());
+		
+		t.tokenUrl(new StringBuilder("foo"));
+		assertEquals("foo", t.getTokenUrl());
+		assertType(String.class, t.getTokenUrl());
+		
+		t.tokenUrl(null);
+		assertNull(t.getTokenUrl());
+	}
+
+	/**
+	 * Test method for {@link SecurityScheme#setScopes(java.util.Map)}.
+	 */
+	@Test
+	public void testSetScopes() {
+		SecurityScheme t = new SecurityScheme();
+		
+		t.setScopes(new AMap<String,String>().append("foo","bar"));
+		assertObjectEquals("{foo:'bar'}", t.getScopes());
+		assertType(Map.class, t.getScopes());
+		
+		t.setScopes(new AMap<String,String>());
+		assertObjectEquals("{}", t.getScopes());
+		assertType(Map.class, t.getScopes());
+
+		t.setScopes(null);
+		assertNull(t.getScopes());
+	}
+
+	/**
+	 * Test method for {@link SecurityScheme#addScopes(java.util.Map)}.
+	 */
+	@Test
+	public void testAddScopes() {
+		SecurityScheme t = new SecurityScheme();
+		
+		t.addScopes(new AMap<String,String>().append("foo","bar"));
+		assertObjectEquals("{foo:'bar'}", t.getScopes());
+		assertType(Map.class, t.getScopes());
+		
+		t.addScopes(new AMap<String,String>());
+		assertObjectEquals("{foo:'bar'}", t.getScopes());
+		assertType(Map.class, t.getScopes());
+
+		t.addScopes(null);
+		assertObjectEquals("{foo:'bar'}", t.getScopes());
+		assertType(Map.class, t.getScopes());
+	}
+
+	/**
+	 * Test method for {@link SecurityScheme#scopes(java.lang.Object[])}.
+	 */
+	@Test
+	public void testScopes() {
+		SecurityScheme t = new SecurityScheme();
+		
+		t.scopes(new AMap<String,String>().append("a", "a1"));
+		t.scopes("{b:'b1'}");
+		t.scopes("{}");
+		t.scopes((Object[])null);
+		
+		assertObjectEquals("{a:'a1',b:'b1'}", t.getScopes());
+	}
+
+	/**
+	 * Test method for {@link SecurityScheme#set(java.lang.String, java.lang.Object)}.
+	 */
+	@Test
+	public void testSet() throws Exception {
+		SecurityScheme t = new SecurityScheme();
+		
+		t
+			.set("authorizationUrl", "a")
+			.set("description", "b")
+			.set("flow", "c")
+			.set("in", "d")
+			.set("name", "e")
+			.set("scopes", new AMap<String,String>().append("foo","bar"))
+			.set("tokenUrl", "f")
+			.set("type", "g")
+			.set("$ref", "ref");
+	
+		assertObjectEquals("{type:'g',description:'b',name:'e','in':'d',flow:'c',authorizationUrl:'a',tokenUrl:'f',scopes:{foo:'bar'},'$ref':'ref'}", t);
+		
+		t
+			.set("authorizationUrl", "a")
+			.set("description", "b")
+			.set("flow", "c")
+			.set("in", "d")
+			.set("name", "e")
+			.set("scopes", "{foo:'bar'}")
+			.set("tokenUrl", "f")
+			.set("type", "g")
+			.set("$ref", "ref");
+		
+		assertObjectEquals("{type:'g',description:'b',name:'e','in':'d',flow:'c',authorizationUrl:'a',tokenUrl:'f',scopes:{foo:'bar'},'$ref':'ref'}", t);
+		
+		t
+			.set("authorizationUrl", new StringBuilder("a"))
+			.set("description", new StringBuilder("b"))
+			.set("flow", new StringBuilder("c"))
+			.set("in", new StringBuilder("d"))
+			.set("name", new StringBuilder("e"))
+			.set("scopes", new StringBuilder("{foo:'bar'}")) 
+			.set("tokenUrl", new StringBuilder("f"))
+			.set("type", new StringBuilder("g"))
+			.set("$ref", new StringBuilder("ref"));
+		
+		assertObjectEquals("{type:'g',description:'b',name:'e','in':'d',flow:'c',authorizationUrl:'a',tokenUrl:'f',scopes:{foo:'bar'},'$ref':'ref'}", t);
+
+		assertEquals("a", t.get("authorizationUrl", String.class));
+		assertEquals("b", t.get("description", String.class));
+		assertEquals("c", t.get("flow", String.class));
+		assertEquals("d", t.get("in", String.class));
+		assertEquals("e", t.get("name", String.class));
+		assertEquals("{foo:'bar'}", t.get("scopes", String.class));
+		assertEquals("f", t.get("tokenUrl", String.class));
+		assertEquals("g", t.get("type", String.class));
+		assertEquals("ref", t.get("$ref", String.class));
+	
+		assertType(String.class, t.get("authorizationUrl", Object.class));
+		assertType(String.class, t.get("description", Object.class));
+		assertType(String.class, t.get("flow", Object.class));
+		assertType(String.class, t.get("in", Object.class));
+		assertType(String.class, t.get("name", Object.class));
+		assertType(Map.class, t.get("scopes", Object.class));
+		assertType(String.class, t.get("tokenUrl", Object.class));
+		assertType(String.class, t.get("type", Object.class));
+		assertType(StringBuilder.class, t.get("$ref", Object.class));
+	
+		t.set("null", null).set(null, "null");
+		assertNull(t.get("null", Object.class));
+		assertNull(t.get(null, Object.class));
+		assertNull(t.get("foo", Object.class));
+		
+		String s = "{type:'g',description:'b',name:'e','in':'d',flow:'c',authorizationUrl:'a',tokenUrl:'f',scopes:{foo:'bar'},'$ref':'ref'}";
+		assertObjectEquals(s, JsonParser.DEFAULT.parse(s, SecurityScheme.class));
+	}
+}

http://git-wip-us.apache.org/repos/asf/juneau/blob/8df34f56/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/SwaggerBuilderTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/SwaggerBuilderTest.java b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/SwaggerBuilderTest.java
new file mode 100644
index 0000000..d34eb3f
--- /dev/null
+++ b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/swagger/SwaggerBuilderTest.java
@@ -0,0 +1,322 @@
+// ***************************************************************************************************************************
+// * 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.swagger;
+
+import static org.junit.Assert.*;
+import static org.apache.juneau.dto.swagger.SwaggerBuilder.*;
+import static org.apache.juneau.TestUtils.*;
+
+import org.junit.*;
+
+/**
+ * Testcase for {@link SwaggerBuilder}.
+ */
+public class SwaggerBuilderTest {
+
+	/**
+	 * Test method for {@link SwaggerBuilder#contact()}.
+	 */
+	@Test
+	public void testContact() {
+		Contact t = contact();
+		assertObjectEquals("{}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#contact(java.lang.String)}.
+	 */
+	@Test
+	public void testContactString() {
+		Contact t = contact("foo");
+		assertObjectEquals("{name:'foo'}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#contact(java.lang.String, java.lang.Object, java.lang.String)}.
+	 */
+	@Test
+	public void testContactStringObjectString() {
+		Contact t = contact("foo", "bar", "baz");
+		assertObjectEquals("{name:'foo',url:'bar',email:'baz'}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#externalDocumentation()}.
+	 */
+	@Test
+	public void testExternalDocumentation() {
+		ExternalDocumentation t = externalDocumentation();
+		assertObjectEquals("{}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#externalDocumentation(java.lang.Object)}.
+	 */
+	@Test
+	public void testExternalDocumentationObject() {
+		ExternalDocumentation t = externalDocumentation("foo");
+		assertObjectEquals("{url:'foo'}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#externalDocumentation(java.lang.Object, java.lang.String)}.
+	 */
+	@Test
+	public void testExternalDocumentationObjectString() {
+		ExternalDocumentation t = externalDocumentation("foo", "bar");
+		assertObjectEquals("{description:'bar',url:'foo'}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#headerInfo()}.
+	 */
+	@Test
+	public void testHeaderInfo() {
+		HeaderInfo t = headerInfo();
+		assertObjectEquals("{}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#headerInfo(java.lang.String)}.
+	 */
+	@Test
+	public void testHeaderInfoString() {
+		HeaderInfo t = headerInfo("foo");
+		assertObjectEquals("{type:'foo'}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#headerInfoStrict(java.lang.String)}.
+	 */
+	@Test
+	public void testHeaderInfoStrict() {
+		HeaderInfo t = headerInfoStrict("string");
+		assertObjectEquals("{type:'string'}", t);
+		
+		try {
+			headerInfoStrict("foo");
+		} catch (Exception e) {
+			assertEquals("Invalid value passed in to setType(String).  Value='foo', valid values=['string','number','integer','boolean','array']", e.getLocalizedMessage());
+		}
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#info()}.
+	 */
+	@Test
+	public void testInfo() {
+		Info t = info();
+		assertObjectEquals("{}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#info(java.lang.String, java.lang.String)}.
+	 */
+	@Test
+	public void testInfoStringString() {
+		Info t = info("foo", "bar");
+		assertObjectEquals("{title:'foo',version:'bar'}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#items()}.
+	 */
+	@Test
+	public void testItems() {
+		Items t = items();
+		assertObjectEquals("{}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#items(java.lang.String)}.
+	 */
+	@Test
+	public void testItemsString() {
+		Items t = items("foo");
+		assertObjectEquals("{type:'foo'}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#itemsStrict(java.lang.String)}.
+	 */
+	@Test
+	public void testItemsStrict() {
+		Items t = itemsStrict("string");
+		assertObjectEquals("{type:'string'}", t);
+		
+		try {
+			itemsStrict("foo");
+		} catch (Exception e) {
+			assertEquals("Invalid value passed in to setType(String).  Value='foo', valid values=['string','number','integer','boolean','array']", e.getLocalizedMessage());
+		}
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#license()}.
+	 */
+	@Test
+	public void testLicense() {
+		License t = license();
+		assertObjectEquals("{}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#license(java.lang.String)}.
+	 */
+	@Test
+	public void testLicenseString() {
+		License t = license("foo");
+		assertObjectEquals("{name:'foo'}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#operation()}.
+	 */
+	@Test
+	public void testOperation() {
+		Operation t = operation();
+		assertObjectEquals("{}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#parameterInfo()}.
+	 */
+	@Test
+	public void testParameterInfo() {
+		ParameterInfo t = parameterInfo();
+		assertObjectEquals("{}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#parameterInfo(java.lang.String, java.lang.String)}.
+	 */
+	@Test
+	public void testParameterInfoStringString() {
+		ParameterInfo t = parameterInfo("foo", "bar");
+		assertObjectEquals("{'in':'foo',name:'bar'}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#parameterInfoStrict(java.lang.String, java.lang.String)}.
+	 */
+	@Test
+	public void testParameterInfoStrict() {
+		ParameterInfo t = parameterInfoStrict("query", "bar");
+		assertObjectEquals("{'in':'query',name:'bar'}", t);
+		
+		try {
+			parameterInfoStrict("foo", "bar");
+		} catch (Exception e) {
+			assertEquals("Invalid value passed in to setIn(String).  Value='foo', valid values=['query','header','path','formData','body']", e.getLocalizedMessage());
+		}
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#responseInfo()}.
+	 */
+	@Test
+	public void testResponseInfo() {
+		ResponseInfo t = responseInfo();
+		assertObjectEquals("{}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#responseInfo(java.lang.String)}.
+	 */
+	@Test
+	public void testResponseInfoString() {
+		ResponseInfo t = responseInfo("foo");
+		assertObjectEquals("{description:'foo'}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#schemaInfo()}.
+	 */
+	@Test
+	public void testSchemaInfo() {
+		SchemaInfo t = schemaInfo();
+		assertObjectEquals("{}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#securityScheme()}.
+	 */
+	@Test
+	public void testSecurityScheme() {
+		SecurityScheme t = securityScheme();
+		assertObjectEquals("{}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#securityScheme(java.lang.String)}.
+	 */
+	@Test
+	public void testSecuritySchemeString() {
+		SecurityScheme t = securityScheme("foo");
+		assertObjectEquals("{type:'foo'}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#securitySchemeStrict(java.lang.String)}.
+	 */
+	@Test
+	public void testSecuritySchemeStrict() {
+		SecurityScheme t = securityScheme("foo");
+		assertObjectEquals("{type:'foo'}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#swagger()}.
+	 */
+	@Test
+	public void testSwagger() {
+		Swagger t = swagger();
+		assertObjectEquals("{swagger:'2.0'}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#swagger(org.apache.juneau.dto.swagger.Info)}.
+	 */
+	@Test
+	public void testSwaggerInfo() {
+		Swagger t = swagger(info());
+		assertObjectEquals("{swagger:'2.0',info:{}}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#tag()}.
+	 */
+	@Test
+	public void testTag() {
+		Tag t = tag();
+		assertObjectEquals("{}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#tag(java.lang.String)}.
+	 */
+	@Test
+	public void testTagString() {
+		Tag t = tag("foo");
+		assertObjectEquals("{name:'foo'}", t);
+	}
+
+	/**
+	 * Test method for {@link SwaggerBuilder#xml()}.
+	 */
+	@Test
+	public void testXml() {
+		Xml t = xml();
+		assertObjectEquals("{}", t);
+	}
+}