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 2016/08/09 17:15:32 UTC

[11/44] incubator-juneau git commit: Rename CT_* testcases.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/df0f8689/org.apache.juneau/src/test/java/org/apache/juneau/transforms/DateFilterTest.java
----------------------------------------------------------------------
diff --git a/org.apache.juneau/src/test/java/org/apache/juneau/transforms/DateFilterTest.java b/org.apache.juneau/src/test/java/org/apache/juneau/transforms/DateFilterTest.java
new file mode 100755
index 0000000..41d4329
--- /dev/null
+++ b/org.apache.juneau/src/test/java/org/apache/juneau/transforms/DateFilterTest.java
@@ -0,0 +1,170 @@
+/***************************************************************************************************************************
+ * 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.transforms;
+
+import static org.junit.Assert.*;
+
+import java.text.*;
+import java.util.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.json.*;
+import org.apache.juneau.parser.*;
+import org.apache.juneau.serializer.*;
+import org.junit.*;
+
+@SuppressWarnings("deprecation")
+public class DateFilterTest {
+
+	private static TimeZone tz;
+
+	@BeforeClass
+	public static void beforeClass() {
+		tz = TimeZone.getDefault();
+		TimeZone.setDefault(TimeZone.getTimeZone("GMT-5"));
+	}
+
+	@AfterClass
+	public static void afterClass() {
+		TimeZone.setDefault(tz);
+	}
+
+	private Date testDate = new Date(1, 2, 3, 4, 5, 6);
+	private String tz1 = new SimpleDateFormat("zzz").format(testDate);
+
+	//====================================================================================================
+	// testString - DEFAULT_STRING
+	//====================================================================================================
+	@Test
+	public void testString() throws Exception {
+		Class<?> f = DateTransform.ToString.class;
+		WriterSerializer s = new JsonSerializer.Simple().addTransforms(f);
+		ReaderParser p = new JsonParser().addTransforms(f);
+		doTest(s, p, "'Sun Mar 03 04:05:06 "+tz1+" 1901'");
+	}
+
+	//====================================================================================================
+	// testISO8601DTZ - DEFAULT_ISO8601DTZ
+	//====================================================================================================
+	@Test
+	public void testISO8601DTZ() throws Exception {
+		Class<?> f = DateTransform.ISO8601DTZ.class;
+		WriterSerializer s = new JsonSerializer.Simple().addTransforms(f);
+		ReaderParser p = new JsonParser().addTransforms(f);
+		doTest(s, p, "'1901-03-03T09:05:06Z'");
+	}
+
+	//====================================================================================================
+	// testRFC2822DT - DEFAULT_RFC2822DT
+	//====================================================================================================
+	@Test
+	public void testRFC2822DT() throws Exception {
+		Class<?> f = DateTransform.RFC2822DT.class;
+		WriterSerializer s = new JsonSerializer.Simple().addTransforms(f);
+		ReaderParser p = new JsonParser().addTransforms(f);
+		doTest(s, p, "'Sun, 03 Mar 1901 04:05:06 "+tz1+"'");
+	}
+
+	//====================================================================================================
+	// testLong - DEFAULT_LONG
+	//====================================================================================================
+	@Test
+	public void testLong() throws Exception {
+		Class<?> f = DateLongTransform.class;
+		WriterSerializer s = new JsonSerializer.Simple().addTransforms(f);
+		ReaderParser p = new JsonParser().addTransforms(f);
+		doTest(s, p, "-2172149694000");
+	}
+
+	//====================================================================================================
+	// testMap - DEFAULT_MAP
+	//====================================================================================================
+	@Test
+	public void testMap() throws Exception {
+		Class<?> f = DateMapTransform.class;
+		WriterSerializer s = new JsonSerializer.Simple().addTransforms(f);
+		ReaderParser p = new JsonParser().addTransforms(f);
+		doTest(s, p, "{time:-2172149694000}");
+	}
+
+	public void doTest(WriterSerializer s, ReaderParser p, String expected) throws Exception {
+		Date d;
+		String actual;
+
+		d = testDate;
+		actual = s.serialize(d);
+		assertEquals(expected, actual);
+		d = p.parse(actual, Date.class);
+		assertEquals(1, d.getYear());
+		assertEquals(2, d.getMonth());
+		assertEquals(3, d.getDate());
+		assertEquals(4, d.getHours());
+		assertEquals(5, d.getMinutes());
+		assertEquals(6, d.getSeconds());
+
+		d = new java.sql.Date(testDate.getTime());
+		actual = s.serialize(d);
+		assertEquals(expected, actual);
+		d = p.parse(actual, java.sql.Date.class);
+		assertEquals(1, d.getYear());
+		assertEquals(2, d.getMonth());
+		assertEquals(3, d.getDate());
+
+		d = new java.sql.Time(testDate.getTime());
+		actual = s.serialize(d);
+		assertEquals(expected, actual);
+		d = p.parse(actual, java.sql.Time.class);
+		assertEquals(4, d.getHours());
+		assertEquals(5, d.getMinutes());
+		assertEquals(6, d.getSeconds());
+
+		d = new java.sql.Timestamp(testDate.getTime());
+		actual = s.serialize(d);
+		assertEquals(expected, actual);
+		d = p.parse(actual, java.sql.Timestamp.class);
+		assertEquals(1, d.getYear());
+		assertEquals(2, d.getMonth());
+		assertEquals(3, d.getDate());
+		assertEquals(4, d.getHours());
+		assertEquals(5, d.getMinutes());
+		assertEquals(6, d.getSeconds());
+	}
+
+	//====================================================================================================
+	//====================================================================================================
+	@Test
+	public void testBeanWithDate() throws Exception {
+		A testBeanA = new A().init();
+
+		final String jsonData = new JsonSerializer().addTransforms(
+			DateTransform.ISO8601DT.class).serialize(testBeanA);
+		final ObjectMap data = new JsonParser().addTransforms(
+			DateTransform.ISO8601DT.class).parse(jsonData, ObjectMap.class);
+
+		final DateTransform.ISO8601DT dateTransform = new DateTransform.ISO8601DT();
+		// this works
+		final String sValue = data.getString("birthday"); //$NON-NLS-1$
+		dateTransform.normalize(sValue, data.getBeanContext().getClassMeta(Date.class));
+		// this does not work
+		data.get(dateTransform, "birthday"); //$NON-NLS-1$
+	}
+
+	public static class A {
+		public Date birthday;
+
+		public A init() {
+			birthday = new Date();
+			return this;
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/df0f8689/org.apache.juneau/src/test/java/org/apache/juneau/transforms/EnumerationTransformTest.java
----------------------------------------------------------------------
diff --git a/org.apache.juneau/src/test/java/org/apache/juneau/transforms/EnumerationTransformTest.java b/org.apache.juneau/src/test/java/org/apache/juneau/transforms/EnumerationTransformTest.java
new file mode 100755
index 0000000..064249a
--- /dev/null
+++ b/org.apache.juneau/src/test/java/org/apache/juneau/transforms/EnumerationTransformTest.java
@@ -0,0 +1,35 @@
+/***************************************************************************************************************************
+ * 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.transforms;
+
+import static org.junit.Assert.*;
+
+import java.util.*;
+
+import org.apache.juneau.json.*;
+import org.apache.juneau.serializer.*;
+import org.junit.*;
+
+public class EnumerationTransformTest {
+
+	//====================================================================================================
+	// test
+	//====================================================================================================
+	@Test
+	public void test() throws Exception {
+		WriterSerializer s = new JsonSerializer.Simple().addTransforms(EnumerationTransform.class);
+		Vector<String> v = new Vector<String>(Arrays.asList(new String[]{"foo","bar","baz"}));
+		Enumeration<String> e = v.elements();
+		assertEquals("['foo','bar','baz']", s.serialize(e));
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/df0f8689/org.apache.juneau/src/test/java/org/apache/juneau/transforms/IteratorTransformTest.java
----------------------------------------------------------------------
diff --git a/org.apache.juneau/src/test/java/org/apache/juneau/transforms/IteratorTransformTest.java b/org.apache.juneau/src/test/java/org/apache/juneau/transforms/IteratorTransformTest.java
new file mode 100755
index 0000000..be1b76a
--- /dev/null
+++ b/org.apache.juneau/src/test/java/org/apache/juneau/transforms/IteratorTransformTest.java
@@ -0,0 +1,37 @@
+/***************************************************************************************************************************
+ * 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.transforms;
+
+import static org.junit.Assert.*;
+
+import java.util.*;
+
+import org.apache.juneau.json.*;
+import org.apache.juneau.serializer.*;
+import org.junit.*;
+
+public class IteratorTransformTest {
+
+	//====================================================================================================
+	// test
+	//====================================================================================================
+	@Test
+	public void test() throws Exception {
+		WriterSerializer s = new JsonSerializer.Simple().addTransforms(IteratorTransform.class);
+
+		// Iterators
+		List<String> l = new ArrayList<String>(Arrays.asList(new String[]{"foo","bar","baz"}));
+		Iterator<String> i = l.iterator();
+		assertEquals("['foo','bar','baz']", s.serialize(i));
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/df0f8689/org.apache.juneau/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
----------------------------------------------------------------------
diff --git a/org.apache.juneau/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java b/org.apache.juneau/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
new file mode 100755
index 0000000..6157895
--- /dev/null
+++ b/org.apache.juneau/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
@@ -0,0 +1,47 @@
+/***************************************************************************************************************************
+ * 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.transforms;
+
+import static org.junit.Assert.*;
+
+import java.io.*;
+import java.util.*;
+
+import org.apache.juneau.json.*;
+import org.apache.juneau.serializer.*;
+import org.junit.*;
+
+public class ReaderFilterTest {
+
+	//====================================================================================================
+	// test
+	//====================================================================================================
+	@Test
+	public void test() throws Exception {
+		WriterSerializer s = new JsonSerializer.Simple().addTransforms(ReaderTransform.Json.class);
+
+		Reader r;
+		Map<String,Object> m;
+
+		r = new StringReader("{foo:'bar',baz:'quz'}");
+		m = new HashMap<String,Object>();
+		m.put("X", r);
+		assertEquals("{X:{foo:'bar',baz:'quz'}}", s.serialize(m));
+
+		s.addTransforms(ReaderTransform.Xml.class);
+		r = new StringReader("<object><foo type='string'>bar</foo><baz type='string'>quz</baz></object>");
+		m = new HashMap<String,Object>();
+		m.put("X", r);
+		assertEquals("{X:{foo:'bar',baz:'quz'}}", s.serialize(m));
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/df0f8689/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_CommonParser_Uon.java
----------------------------------------------------------------------
diff --git a/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_CommonParser_Uon.java b/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_CommonParser_Uon.java
deleted file mode 100755
index 6ef0429..0000000
--- a/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_CommonParser_Uon.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/***************************************************************************************************************************
- * 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.urlencoding;
-
-import static org.apache.juneau.BeanContext.*;
-import static org.apache.juneau.serializer.SerializerContext.*;
-import static org.junit.Assert.*;
-
-import java.util.*;
-
-import org.apache.juneau.*;
-import org.apache.juneau.parser.*;
-import org.junit.*;
-
-@SuppressWarnings({"rawtypes","hiding","serial"})
-public class CT_CommonParser_Uon {
-
-	ReaderParser p = UonParser.DEFAULT.clone().setClassLoader(getClass().getClassLoader());
-	ReaderParser pe = UonParser.DEFAULT_DECODING.clone().setClassLoader(getClass().getClassLoader());
-
-	//====================================================================================================
-	// testFromSerializer
-	//====================================================================================================
-	@Test
-	public void testFromSerializer() throws Exception {
-		Map m = null;
-		String in;
-
-		in = "$o(a=$n(1))";
-		m = (Map)p.parse(in, Object.class);
-		assertEquals(1, m.get("a"));
-
-		in = "$o(a=$n(1),b=foo+bar)";
-		m = (Map)p.parse(in, Object.class);
-		assertEquals(1, m.get("a"));
-		assertEquals("foo+bar", m.get("b"));
-		m = (Map)pe.parse(in, Object.class);
-		assertEquals(1, m.get("a"));
-		assertEquals("foo bar", m.get("b"));
-
-		in = "$o(a=$n(1),b=foo+bar,c=$b(false))";
-		m = (Map)pe.parse(in, Object.class);
-		assertEquals(1, m.get("a"));
-		assertEquals("foo bar", m.get("b"));
-		assertEquals(false, m.get("c"));
-
-		in = "$o(a=$n(1),b=foo%20bar,c=$b(false))";
-		m = (Map)pe.parse(in, Object.class);
-		assertEquals(1, m.get("a"));
-		assertEquals("foo bar", m.get("b"));
-		assertEquals(false, m.get("c"));
-
-		ObjectList jl = (ObjectList)p.parse("$a($o(attribute=value),$o(attribute='value'))", Object.class);
-		assertEquals("value", jl.getObjectMap(0).getString("attribute"));
-		assertEquals("'value'", jl.getObjectMap(1).getString("attribute"));
-
-		A1 b = new A1();
-		A2 tl = new A2();
-		tl.add(new A3("name0","value0"));
-		tl.add(new A3("name1","value1"));
-		b.list = tl;
-
-		in = new UonSerializer().setProperty(SERIALIZER_addClassAttrs, true).serialize(b);
-		b = (A1)p.parse(in, Object.class);
-		assertEquals("value1", b.list.get(1).value);
-
-		in = UonSerializer.DEFAULT.serialize(b);
-		b = p.parse(in, A1.class);
-		assertEquals("value1", b.list.get(1).value);
-	}
-
-	public static class A1 {
-		public A2 list;
-	}
-
-	public static class A2 extends LinkedList<A3> {
-	}
-
-	public static class A3 {
-		public String name, value;
-		public A3(){}
-		public A3(String name, String value) {
-			this.name = name;
-			this.value = value;
-		}
-	}
-
-	//====================================================================================================
-	// Correct handling of unknown properties.
-	//====================================================================================================
-	@Test
-	public void testCorrectHandlingOfUnknownProperties() throws Exception {
-		ReaderParser p = new UonParser().setProperty(BEAN_ignoreUnknownBeanProperties, true);
-		B t;
-
-		String in =  "(a=1,unknown=3,b=2)";
-		t = p.parse(in, B.class);
-		assertEquals(t.a, 1);
-		assertEquals(t.b, 2);
-
-		try {
-			p = new UonParser();
-			p.parse(in, B.class);
-			fail("Exception expected");
-		} catch (ParseException e) {}
-	}
-
-	public static class B {
-		public int a, b;
-	}
-
-	//====================================================================================================
-	// Writing to Collection properties with no setters.
-	//====================================================================================================
-	@Test
-	public void testCollectionPropertiesWithNoSetters() throws Exception {
-
-		ReaderParser p = UonParser.DEFAULT;
-
-		String json = "(ints=(1,2,3),beans=((a=1,b=2)))";
-		C t = p.parse(json, C.class);
-		assertEquals(t.getInts().size(), 3);
-		assertEquals(t.getBeans().get(0).b, 2);
-	}
-
-	public static class C {
-		private Collection<Integer> ints = new LinkedList<Integer>();
-		private List<B> beans = new LinkedList<B>();
-		public Collection<Integer> getInts() {
-			return ints;
-		}
-		public List<B> getBeans() {
-			return beans;
-		}
-	}
-
-	//====================================================================================================
-	// Parser listeners.
-	//====================================================================================================
-	@Test
-	public void testParserListeners() throws Exception {
-		final List<String> events = new LinkedList<String>();
-		UonParser p = new UonParser().setProperty(BEAN_ignoreUnknownBeanProperties, true);
-		p.addListener(
-			new ParserListener() {
-				@Override /* ParserListener */
-				public <T> void onUnknownProperty(String propertyName, Class<T> beanClass, T bean, int line, int col) {
-					events.add(propertyName + "," + line + "," + col);
-				}
-			}
-		);
-
-		String in = "(a=1,unknownProperty=foo,b=2)";
-		p.parse(in, B.class);
-		assertEquals(1, events.size());
-		assertEquals("unknownProperty,1,5", events.get(0));
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/df0f8689/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_CommonParser_UrlEncoding.java
----------------------------------------------------------------------
diff --git a/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_CommonParser_UrlEncoding.java b/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_CommonParser_UrlEncoding.java
deleted file mode 100755
index 4256402..0000000
--- a/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_CommonParser_UrlEncoding.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/***************************************************************************************************************************
- * 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.urlencoding;
-
-import static org.apache.juneau.BeanContext.*;
-import static org.apache.juneau.TestUtils.*;
-import static org.apache.juneau.serializer.SerializerContext.*;
-import static org.junit.Assert.*;
-
-import java.util.*;
-
-import org.apache.juneau.*;
-import org.apache.juneau.parser.*;
-import org.apache.juneau.serializer.*;
-import org.junit.*;
-
-@SuppressWarnings({"rawtypes","hiding","serial"})
-public class CT_CommonParser_UrlEncoding {
-
-	ReaderParser p = UrlEncodingParser.DEFAULT.clone().setClassLoader(getClass().getClassLoader());
-
-	//====================================================================================================
-	// testFromSerializer
-	//====================================================================================================
-	@Test
-	public void testFromSerializer() throws Exception {
-		Map m = null;
-		String in;
-
-		in = "a=$n(1)";
-		m = (Map)p.parse(in, Object.class);
-		assertEquals(1, m.get("a"));
-
-		in = "a=$n(1)&b=foo+bar";
-		m = (Map)p.parse(in, Object.class);
-		assertEquals(1, m.get("a"));
-		assertEquals("foo bar", m.get("b"));
-
-		in = "a=$n(1)&b=foo+bar&c=$b(false)";
-		m = (Map)p.parse(in, Object.class);
-		assertEquals(1, m.get("a"));
-		assertEquals("foo bar", m.get("b"));
-		assertEquals(false, m.get("c"));
-
-		in = "a=$n(1)&b=foo%20bar&c=$b(false)";
-		m = (Map)p.parse(in, Object.class);
-		assertEquals(1, m.get("a"));
-		assertEquals("foo bar", m.get("b"));
-		assertEquals(false, m.get("c"));
-
-		ObjectMap jm = (ObjectMap)p.parse("x=$a($o(attribute=value),$o(attribute='value'))", Object.class);
-		assertEquals("value", jm.getObjectList("x").getObjectMap(0).getString("attribute"));
-		assertEquals("'value'", jm.getObjectList("x").getObjectMap(1).getString("attribute"));
-
-		ObjectList jl = (ObjectList)p.parse("_value=$a($o(attribute=value),$o(attribute='value'))", Object.class);
-		assertEquals("value", jl.getObjectMap(0).getString("attribute"));
-		assertEquals("'value'", jl.getObjectMap(1).getString("attribute"));
-
-		A1 b = new A1();
-		A2 tl = new A2();
-		tl.add(new A3("name0","value0"));
-		tl.add(new A3("name1","value1"));
-		b.list = tl;
-
-		in = new UrlEncodingSerializer().setProperty(SERIALIZER_addClassAttrs, true).serialize(b);
-		b = (A1)p.parse(in, Object.class);
-		assertEquals("value1", b.list.get(1).value);
-
-		in = UrlEncodingSerializer.DEFAULT.serialize(b);
-		b = p.parse(in, A1.class);
-		assertEquals("value1", b.list.get(1).value);
-	}
-
-	public static class A1 {
-		public A2 list;
-	}
-
-	public static class A2 extends LinkedList<A3> {
-	}
-
-	public static class A3 {
-		public String name, value;
-		public A3(){}
-		public A3(String name, String value) {
-			this.name = name;
-			this.value = value;
-		}
-	}
-
-	//====================================================================================================
-	// Correct handling of unknown properties.
-	//====================================================================================================
-	@Test
-	public void testCorrectHandlingOfUnknownProperties() throws Exception {
-		ReaderParser p = new UrlEncodingParser().setProperty(BEAN_ignoreUnknownBeanProperties, true);
-		B t;
-
-		String in =  "a=1&unknown=3&b=2";
-		t = p.parse(in, B.class);
-		assertEquals(t.a, 1);
-		assertEquals(t.b, 2);
-
-		try {
-			p = new UrlEncodingParser();
-			p.parse(in, B.class);
-			fail("Exception expected");
-		} catch (ParseException e) {}
-	}
-
-	public static class B {
-		public int a, b;
-	}
-
-	//====================================================================================================
-	// Writing to Collection properties with no setters.
-	//====================================================================================================
-	@Test
-	public void testCollectionPropertiesWithNoSetters() throws Exception {
-
-		ReaderParser p = UrlEncodingParser.DEFAULT;
-
-		String json = "ints=(1,2,3)&beans=((a=1,b=2))";
-		C t = p.parse(json, C.class);
-		assertEquals(t.getInts().size(), 3);
-		assertEquals(t.getBeans().get(0).b, 2);
-	}
-
-	public static class C {
-		private Collection<Integer> ints = new LinkedList<Integer>();
-		private List<B> beans = new LinkedList<B>();
-		public Collection<Integer> getInts() {
-			return ints;
-		}
-		public List<B> getBeans() {
-			return beans;
-		}
-	}
-
-	//====================================================================================================
-	// Parser listeners.
-	//====================================================================================================
-	@Test
-	public void testParserListeners() throws Exception {
-		final List<String> events = new LinkedList<String>();
-		UonParser p = new UrlEncodingParser().setProperty(BEAN_ignoreUnknownBeanProperties, true);
-		p.addListener(
-			new ParserListener() {
-				@Override /* ParserListener */
-				public <T> void onUnknownProperty(String propertyName, Class<T> beanClass, T bean, int line, int col) {
-					events.add(propertyName + "," + line + "," + col);
-				}
-			}
-		);
-
-		String in = "a=1&unknownProperty=foo&b=2";
-		p.parse(in, B.class);
-		assertEquals(1, events.size());
-		assertEquals("unknownProperty,1,4", events.get(0));
-	}
-
-	@SuppressWarnings("unchecked")
-	@Test
-	public void testCollections() throws Exception {
-		WriterSerializer s = new UrlEncodingSerializer().setProperty(UonSerializerContext.UON_simpleMode, true);
-		ReaderParser p = new UrlEncodingParser();
-
-		List l = new ObjectList("foo","bar");
-		assertEquals("0=foo&1=bar", s.serialize(l));
-
-		String in =  "0=foo&1=bar";
-		ClassMeta<LinkedList<String>> cm = p.getBeanContext().getCollectionClassMeta(LinkedList.class, String.class);
-		l = p.parse(in, cm);
-		assertObjectEquals("['foo','bar']",l);
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/df0f8689/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_Common_Uon.java
----------------------------------------------------------------------
diff --git a/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_Common_Uon.java b/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_Common_Uon.java
deleted file mode 100755
index a1c0c0d..0000000
--- a/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_Common_Uon.java
+++ /dev/null
@@ -1,450 +0,0 @@
-/***************************************************************************************************************************
- * 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.urlencoding;
-
-import static org.apache.juneau.TestUtils.*;
-import static org.apache.juneau.serializer.SerializerContext.*;
-import static org.junit.Assert.*;
-
-import java.net.*;
-import java.net.URI;
-import java.util.*;
-
-import org.apache.juneau.*;
-import org.apache.juneau.annotation.*;
-import org.apache.juneau.json.*;
-import org.apache.juneau.serializer.*;
-import org.apache.juneau.testbeans.*;
-import org.junit.*;
-
-@SuppressWarnings({"hiding","serial"})
-public class CT_Common_Uon {
-	UonParser p = UonParser.DEFAULT;
-	UonParser pe = UonParser.DEFAULT_DECODING;
-
-	//====================================================================================================
-	// Trim nulls from beans
-	//====================================================================================================
-	@Test
-	public void testTrimNullsFromBeans() throws Exception {
-		UonSerializer s = new UonSerializer.Encoding();
-		A t1 = A.create(), t2;
-
-		s.setProperty(SERIALIZER_trimNullProperties, false);
-		String r = s.serialize(t1);
-		assertEquals("$o(s1=%00,s2=s2)", r);
-		t2 = pe.parse(r, A.class);
-		assertEqualObjects(t1, t2);
-
-		s.setProperty(SERIALIZER_trimNullProperties, true);
-		r = s.serialize(t1);
-		assertEquals("$o(s2=s2)", r);
-		t2 = p.parse(r, A.class);
-		assertEqualObjects(t1, t2);
-	}
-
-	public static class A {
-		public String s1, s2;
-
-		public static A create() {
-			A t = new A();
-			t.s2 = "s2";
-			return t;
-		}
-	}
-
-	//====================================================================================================
-	// Trim empty maps
-	//====================================================================================================
-	@Test
-	public void testTrimEmptyMaps() throws Exception {
-		UonSerializer s = UonSerializer.DEFAULT_SIMPLE_ENCODING.clone();
-		B t1 = B.create(), t2;
-		String r;
-
-		s.setProperty(SERIALIZER_trimEmptyMaps, false);
-		r = s.serialize(t1);
-		assertEquals("(f1=(),f2=(f2a=%00,f2b=(s2=s2)))", r);
-		t2 = pe.parse(r, B.class);
-		assertEqualObjects(t1, t2);
-
-		s.setProperty(SERIALIZER_trimEmptyMaps, true);
-		r = s.serialize(t1);
-		assertEquals("(f2=(f2a=%00,f2b=(s2=s2)))", r);
-		t2 = pe.parse(r, B.class);
-		assertNull(t2.f1);
-	}
-
-	public static class B {
-		public TreeMap<String,A> f1, f2;
-
-		public static B create() {
-			B t = new B();
-			t.f1 = new TreeMap<String,A>();
-			t.f2 = new TreeMap<String,A>(){{put("f2a",null);put("f2b",A.create());}};
-			return t;
-		}
-	}
-
-	//====================================================================================================
-	// Trim empty lists
-	//====================================================================================================
-	@Test
-	public void testTrimEmptyLists() throws Exception {
-		UonSerializer s = new UonSerializer.Encoding();
-		C t1 = C.create(), t2;
-		String r;
-
-		s.setProperty(SERIALIZER_trimEmptyLists, false);
-		r = s.serialize(t1);
-		assertEquals("$o(f1=$a(),f2=$a(%00,$o(s2=s2)))", r);
-		t2 = pe.parse(r, C.class);
-		assertEqualObjects(t1, t2);
-
-		s.setProperty(SERIALIZER_trimEmptyLists, true);
-		r = s.serialize(t1);
-		assertEquals("$o(f2=$a(%00,$o(s2=s2)))", r);
-		t2 = pe.parse(r, C.class);
-		assertNull(t2.f1);
-	}
-
-	public static class C {
-		public List<A> f1, f2;
-
-		public static C create() {
-			C t = new C();
-			t.f1 = new LinkedList<A>();
-			t.f2 = new LinkedList<A>(){{add(null);add(A.create());}};
-			return t;
-		}
-	}
-
-	//====================================================================================================
-	// Trim empty arrays
-	//====================================================================================================
-	@Test
-	public void testTrimEmptyArrays() throws Exception {
-		UonSerializer s = new UonSerializer.Encoding();
-		D t1 = D.create(), t2;
-		String r;
-
-		s.setProperty(SERIALIZER_trimEmptyLists, false);
-		r = s.serialize(t1);
-		assertEquals("$o(f1=$a(),f2=$a(%00,$o(s2=s2)))", r);
-		t2 = pe.parse(r, D.class);
-		assertEqualObjects(t1, t2);
-
-		s.setProperty(SERIALIZER_trimEmptyLists, true);
-		r = s.serialize(t1);
-		assertEquals("$o(f2=$a(%00,$o(s2=s2)))", r);
-		t2 = pe.parse(r, D.class);
-		assertNull(t2.f1);
-	}
-
-	public static class D {
-		public A[] f1, f2;
-
-		public static D create() {
-			D t = new D();
-			t.f1 = new A[]{};
-			t.f2 = new A[]{null, A.create()};
-			return t;
-		}
-	}
-
-	//====================================================================================================
-	// @BeanProperty.properties annotation.
-	//====================================================================================================
-	@Test
-	public void testBeanPropertyProperies() throws Exception {
-		UonSerializer s = UonSerializer.DEFAULT;
-		UonSerializer ss = UonSerializer.DEFAULT_SIMPLE;
-		String ue = ss.serialize(new E1());
-		assertEquals("(x1=(f1=1),x2=(f1=1),x3=((f1=1)),x4=((f1=1)),x5=((f1=1)),x6=((f1=1)))", ue);
-		ue = s.serialize(new E1());
-		assertEquals("$o(x1=$o(f1=$n(1)),x2=$o(f1=$n(1)),x3=$a($o(f1=$n(1))),x4=$a($o(f1=$n(1))),x5=$a($o(f1=$n(1))),x6=$a($o(f1=$n(1))))", ue);
-	}
-
-	public static class E1 {
-		@BeanProperty(properties={"f1"}) public E2 x1 = new E2();
-		@BeanProperty(properties={"f1"}) public Map<String,Integer> x2 = new LinkedHashMap<String,Integer>() {{
-			put("f1",1); put("f2",2);
-		}};
-		@BeanProperty(properties={"f1"}) public E2[] x3 = {new E2()};
-		@BeanProperty(properties={"f1"}) public List<E2> x4 = new LinkedList<E2>() {{
-			add(new E2());
-		}};
-		@BeanProperty(properties={"f1"}) public ObjectMap[] x5 = {new ObjectMap().append("f1",1).append("f2",2)};
-		@BeanProperty(properties={"f1"}) public List<ObjectMap> x6 = new LinkedList<ObjectMap>() {{
-			add(new ObjectMap().append("f1",1).append("f2",2));
-		}};
-	}
-
-	public static class E2 {
-		public int f1 = 1;
-		public int f2 = 2;
-	}
-
-	//====================================================================================================
-	// @BeanProperty.properties annotation on list of beans.
-	//====================================================================================================
-	@Test
-	public void testBeanPropertyPropertiesOnListOfBeans() throws Exception {
-		UonSerializer s = UonSerializer.DEFAULT;
-		List<F> l = new LinkedList<F>();
-		F t = new F();
-		t.x1.add(new F());
-		l.add(t);
-		String xml = s.serialize(l);
-		assertEquals("$a($o(x1=$a($o(x2=$n(2))),x2=$n(2)))", xml);
-	}
-
-	public static class F {
-		@BeanProperty(properties={"x2"}) public List<F> x1 = new LinkedList<F>();
-		public int x2 = 2;
-	}
-
-	//====================================================================================================
-	// Test URIAttr - Test that URLs and URIs are serialized and parsed correctly.
-	//====================================================================================================
-	@Test
-	public void testURIAttr() throws Exception {
-		UonSerializer s = UonSerializer.DEFAULT;
-		UonParser p = UonParser.DEFAULT;
-
-		G t = new G();
-		t.uri = new URI("http://uri");
-		t.f1 = new URI("http://f1");
-		t.f2 = new URL("http://f2");
-
-		String r = s.serialize(t);
-		t = p.parse(r, G.class);
-		assertEquals("http://uri", t.uri.toString());
-		assertEquals("http://f1", t.f1.toString());
-		assertEquals("http://f2", t.f2.toString());
-	}
-
-	public static class G {
-		@BeanProperty(beanUri=true) public URI uri;
-		public URI f1;
-		public URL f2;
-	}
-
-	//====================================================================================================
-	// Test URIs with URI_CONTEXT and URI_AUTHORITY
-	//====================================================================================================
-	@Test
-	public void testUris() throws Exception {
-		WriterSerializer s = new UonSerializer();
-		TestURI t = new TestURI();
-		String r;
-		String expected;
-
-		s.setProperty(SERIALIZER_relativeUriBase, null);
-		r = s.serialize(t);
-		expected = ""
-			+"$o("
-			+"f0=f0/x0,"
-			+"f1=f1/x1,"
-			+"f2=/f2/x2,"
-			+"f3=http://www.ibm.com/f3/x3,"
-			+"f4=f4/x4,"
-			+"f5=/f5/x5,"
-			+"f6=http://www.ibm.com/f6/x6,"
-			+"f7=http://www.ibm.com/f7/x7,"
-			+"f8=f8/x8,"
-			+"f9=f9/x9,"
-			+"fa=http://www.ibm.com/fa/xa#MY_LABEL,"
-			+"fb=http://www.ibm.com/fb/xb?label~=MY_LABEL&foo~=bar,"
-			+"fc=http://www.ibm.com/fc/xc?foo~=bar&label~=MY_LABEL,"
-			+"fd=http://www.ibm.com/fd/xd?label2~=MY_LABEL&foo~=bar,"
-			+"fe=http://www.ibm.com/fe/xe?foo~=bar&label2~=MY_LABEL"
-			+")";
-		assertEquals(expected, r);
-
-		s.setProperty(SERIALIZER_relativeUriBase, "");  // Same as null.
-		r = s.serialize(t);
-		assertEquals(expected, r);
-
-		s.setProperty(SERIALIZER_relativeUriBase, "/cr");
-		r = s.serialize(t);
-		expected = ""
-			+"$o("
-			+"f0=/cr/f0/x0,"
-			+"f1=/cr/f1/x1,"
-			+"f2=/f2/x2,"
-			+"f3=http://www.ibm.com/f3/x3,"
-			+"f4=/cr/f4/x4,"
-			+"f5=/f5/x5,"
-			+"f6=http://www.ibm.com/f6/x6,"
-			+"f7=http://www.ibm.com/f7/x7,"
-			+"f8=/cr/f8/x8,"
-			+"f9=/cr/f9/x9,"
-			+"fa=http://www.ibm.com/fa/xa#MY_LABEL,"
-			+"fb=http://www.ibm.com/fb/xb?label~=MY_LABEL&foo~=bar,"
-			+"fc=http://www.ibm.com/fc/xc?foo~=bar&label~=MY_LABEL,"
-			+"fd=http://www.ibm.com/fd/xd?label2~=MY_LABEL&foo~=bar,"
-			+"fe=http://www.ibm.com/fe/xe?foo~=bar&label2~=MY_LABEL"
-			+")";
-		assertEquals(expected, r);
-
-		s.setProperty(SERIALIZER_relativeUriBase, "/cr/");  // Same as above
-		r = s.serialize(t);
-		assertEquals(expected, r);
-
-		s.setProperty(SERIALIZER_relativeUriBase, "/");
-		r = s.serialize(t);
-		expected = ""
-			+"$o("
-			+"f0=/f0/x0,"
-			+"f1=/f1/x1,"
-			+"f2=/f2/x2,"
-			+"f3=http://www.ibm.com/f3/x3,"
-			+"f4=/f4/x4,"
-			+"f5=/f5/x5,"
-			+"f6=http://www.ibm.com/f6/x6,"
-			+"f7=http://www.ibm.com/f7/x7,"
-			+"f8=/f8/x8,"
-			+"f9=/f9/x9,"
-			+"fa=http://www.ibm.com/fa/xa#MY_LABEL,"
-			+"fb=http://www.ibm.com/fb/xb?label~=MY_LABEL&foo~=bar,"
-			+"fc=http://www.ibm.com/fc/xc?foo~=bar&label~=MY_LABEL,"
-			+"fd=http://www.ibm.com/fd/xd?label2~=MY_LABEL&foo~=bar,"
-			+"fe=http://www.ibm.com/fe/xe?foo~=bar&label2~=MY_LABEL"
-			+")";
-		assertEquals(expected, r);
-
-		s.setProperty(SERIALIZER_relativeUriBase, null);
-
-		s.setProperty(SERIALIZER_absolutePathUriBase, "http://foo");
-		r = s.serialize(t);
-		expected = ""
-			+"$o("
-			+"f0=f0/x0,"
-			+"f1=f1/x1,"
-			+"f2=http://foo/f2/x2,"
-			+"f3=http://www.ibm.com/f3/x3,"
-			+"f4=f4/x4,"
-			+"f5=http://foo/f5/x5,"
-			+"f6=http://www.ibm.com/f6/x6,"
-			+"f7=http://www.ibm.com/f7/x7,"
-			+"f8=f8/x8,"
-			+"f9=f9/x9,"
-			+"fa=http://www.ibm.com/fa/xa#MY_LABEL,"
-			+"fb=http://www.ibm.com/fb/xb?label~=MY_LABEL&foo~=bar,"
-			+"fc=http://www.ibm.com/fc/xc?foo~=bar&label~=MY_LABEL,"
-			+"fd=http://www.ibm.com/fd/xd?label2~=MY_LABEL&foo~=bar,"
-			+"fe=http://www.ibm.com/fe/xe?foo~=bar&label2~=MY_LABEL"
-			+")";
-		assertEquals(expected, r);
-
-		s.setProperty(SERIALIZER_absolutePathUriBase, "http://foo/");
-		r = s.serialize(t);
-		assertEquals(expected, r);
-
-		s.setProperty(SERIALIZER_absolutePathUriBase, "");  // Same as null.
-		r = s.serialize(t);
-		expected = ""
-			+"$o("
-			+"f0=f0/x0,"
-			+"f1=f1/x1,"
-			+"f2=/f2/x2,"
-			+"f3=http://www.ibm.com/f3/x3,"
-			+"f4=f4/x4,"
-			+"f5=/f5/x5,"
-			+"f6=http://www.ibm.com/f6/x6,"
-			+"f7=http://www.ibm.com/f7/x7,"
-			+"f8=f8/x8,"
-			+"f9=f9/x9,"
-			+"fa=http://www.ibm.com/fa/xa#MY_LABEL,"
-			+"fb=http://www.ibm.com/fb/xb?label~=MY_LABEL&foo~=bar,"
-			+"fc=http://www.ibm.com/fc/xc?foo~=bar&label~=MY_LABEL,"
-			+"fd=http://www.ibm.com/fd/xd?label2~=MY_LABEL&foo~=bar,"
-			+"fe=http://www.ibm.com/fe/xe?foo~=bar&label2~=MY_LABEL"
-			+")";
-		assertEquals(expected, r);
-	}
-
-	//====================================================================================================
-	// Validate that you cannot update properties on locked serializer.
-	//====================================================================================================
-	@Test
-	public void testLockedSerializer() throws Exception {
-		UonSerializer s = new UonSerializer().lock();
-		try {
-			s.setProperty(JsonSerializerContext.JSON_simpleMode, true);
-			fail("Locked exception not thrown");
-		} catch (LockedException e) {}
-		try {
-			s.setProperty(SerializerContext.SERIALIZER_addClassAttrs, true);
-			fail("Locked exception not thrown");
-		} catch (LockedException e) {}
-		try {
-			s.setProperty(BeanContext.BEAN_beanMapPutReturnsOldValue, true);
-			fail("Locked exception not thrown");
-		} catch (LockedException e) {}
-	}
-
-	//====================================================================================================
-	// Recursion
-	//====================================================================================================
-	@Test
-	public void testRecursion() throws Exception {
-		WriterSerializer s = new UonSerializer();
-
-		R1 r1 = new R1();
-		R2 r2 = new R2();
-		R3 r3 = new R3();
-		r1.r2 = r2;
-		r2.r3 = r3;
-		r3.r1 = r1;
-
-		// No recursion detection
-		try {
-			s.serialize(r1);
-			fail("Exception expected!");
-		} catch (Exception e) {
-			String msg = e.getLocalizedMessage();
-			assertTrue(msg.contains("It's recommended you use the SerializerContext.SERIALIZER_detectRecursions setting to help locate the loop."));
-		}
-
-		// Recursion detection, no ignore
-		s.setProperty(SERIALIZER_detectRecursions, true);
-		try {
-			s.serialize(r1);
-			fail("Exception expected!");
-		} catch (Exception e) {
-			String msg = e.getLocalizedMessage();
-			assertTrue(msg.contains("[0]root:org.apache.juneau.urlencoding.CT_Common_Uon$R1"));
-			assertTrue(msg.contains("->[1]r2:org.apache.juneau.urlencoding.CT_Common_Uon$R2"));
-			assertTrue(msg.contains("->[2]r3:org.apache.juneau.urlencoding.CT_Common_Uon$R3"));
-			assertTrue(msg.contains("->[3]r1:org.apache.juneau.urlencoding.CT_Common_Uon$R1"));
-		}
-
-		s.setProperty(SERIALIZER_ignoreRecursions, true);
-		assertEquals("$o(name=foo,r2=$o(name=bar,r3=$o(name=baz)))", s.serialize(r1));
-	}
-
-	public static class R1 {
-		public String name = "foo";
-		public R2 r2;
-	}
-	public static class R2 {
-		public String name = "bar";
-		public R3 r3;
-	}
-	public static class R3 {
-		public String name = "baz";
-		public R1 r1;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/df0f8689/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_Common_UrlEncoding.java
----------------------------------------------------------------------
diff --git a/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_Common_UrlEncoding.java b/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_Common_UrlEncoding.java
deleted file mode 100755
index fe499fc..0000000
--- a/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_Common_UrlEncoding.java
+++ /dev/null
@@ -1,442 +0,0 @@
-/***************************************************************************************************************************
- * 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.urlencoding;
-
-import static org.apache.juneau.TestUtils.*;
-import static org.apache.juneau.serializer.SerializerContext.*;
-import static org.junit.Assert.*;
-
-import java.net.*;
-import java.net.URI;
-import java.util.*;
-
-import org.apache.juneau.*;
-import org.apache.juneau.annotation.*;
-import org.apache.juneau.json.*;
-import org.apache.juneau.serializer.*;
-import org.apache.juneau.testbeans.*;
-import org.junit.*;
-
-@SuppressWarnings({"hiding","serial"})
-public class CT_Common_UrlEncoding {
-	UrlEncodingParser p = UrlEncodingParser.DEFAULT;
-
-	//====================================================================================================
-	// Trim nulls from beans
-	//====================================================================================================
-	@Test
-	public void testTrimNullsFromBeans() throws Exception {
-		UrlEncodingSerializer s = new UrlEncodingSerializer();
-		A t1 = A.create(), t2;
-
-		s.setProperty(SERIALIZER_trimNullProperties, false);
-		String r = s.serialize(t1);
-		assertEquals("s1=%00&s2=s2", r);
-		t2 = p.parse(r, A.class);
-		assertEqualObjects(t1, t2);
-
-		s.setProperty(SERIALIZER_trimNullProperties, true);
-		r = s.serialize(t1);
-		assertEquals("s2=s2", r);
-		t2 = p.parse(r, A.class);
-		assertEqualObjects(t1, t2);
-	}
-
-	public static class A {
-		public String s1, s2;
-
-		public static A create() {
-			A t = new A();
-			t.s2 = "s2";
-			return t;
-		}
-	}
-
-	//====================================================================================================
-	// Trim empty maps
-	//====================================================================================================
-	@Test
-	public void testTrimEmptyMaps() throws Exception {
-		UrlEncodingSerializer s = UrlEncodingSerializer.DEFAULT_SIMPLE.clone();
-		B t1 = B.create(), t2;
-		String r;
-
-		s.setProperty(SERIALIZER_trimEmptyMaps, false);
-		r = s.serialize(t1);
-		assertEquals("f1=()&f2=(f2a=%00,f2b=(s2=s2))", r);
-		t2 = p.parse(r, B.class);
-		assertEqualObjects(t1, t2);
-
-		s.setProperty(SERIALIZER_trimEmptyMaps, true);
-		r = s.serialize(t1);
-		assertEquals("f2=(f2a=%00,f2b=(s2=s2))", r);
-		t2 = p.parse(r, B.class);
-		assertNull(t2.f1);
-	}
-
-	public static class B {
-		public TreeMap<String,A> f1, f2;
-
-		public static B create() {
-			B t = new B();
-			t.f1 = new TreeMap<String,A>();
-			t.f2 = new TreeMap<String,A>(){{put("f2a",null);put("f2b",A.create());}};
-			return t;
-		}
-	}
-
-	//====================================================================================================
-	// Trim empty lists
-	//====================================================================================================
-	@Test
-	public void testTrimEmptyLists() throws Exception {
-		UrlEncodingSerializer s = new UrlEncodingSerializer();
-		C t1 = C.create(), t2;
-		String r;
-
-		s.setProperty(SERIALIZER_trimEmptyLists, false);
-		r = s.serialize(t1);
-		assertEquals("f1=$a()&f2=$a(%00,$o(s2=s2))", r);
-		t2 = p.parse(r, C.class);
-		assertEqualObjects(t1, t2);
-
-		s.setProperty(SERIALIZER_trimEmptyLists, true);
-		r = s.serialize(t1);
-		assertEquals("f2=$a(%00,$o(s2=s2))", r);
-		t2 = p.parse(r, C.class);
-		assertNull(t2.f1);
-	}
-
-	public static class C {
-		public List<A> f1, f2;
-
-		public static C create() {
-			C t = new C();
-			t.f1 = new LinkedList<A>();
-			t.f2 = new LinkedList<A>(){{add(null);add(A.create());}};
-			return t;
-		}
-	}
-
-	//====================================================================================================
-	// Trim empty arrays
-	//====================================================================================================
-	@Test
-	public void testTrimEmptyArrays() throws Exception {
-		UrlEncodingSerializer s = new UrlEncodingSerializer();
-		D t1 = D.create(), t2;
-		String r;
-
-		s.setProperty(SERIALIZER_trimEmptyLists, false);
-		r = s.serialize(t1);
-		assertEquals("f1=$a()&f2=$a(%00,$o(s2=s2))", r);
-		t2 = p.parse(r, D.class);
-		assertEqualObjects(t1, t2);
-
-		s.setProperty(SERIALIZER_trimEmptyLists, true);
-		r = s.serialize(t1);
-		assertEquals("f2=$a(%00,$o(s2=s2))", r);
-		t2 = p.parse(r, D.class);
-		assertNull(t2.f1);
-	}
-
-	public static class D {
-		public A[] f1, f2;
-
-		public static D create() {
-			D t = new D();
-			t.f1 = new A[]{};
-			t.f2 = new A[]{null, A.create()};
-			return t;
-		}
-	}
-
-	//====================================================================================================
-	// @BeanProperty.properties annotation.
-	//====================================================================================================
-	@Test
-	public void testBeanPropertyProperies() throws Exception {
-		UrlEncodingSerializer s = UrlEncodingSerializer.DEFAULT;
-		UrlEncodingSerializer ss = UrlEncodingSerializer.DEFAULT_SIMPLE;
-		String ue = ss.serialize(new E1());
-		assertEquals("x1=(f1=1)&x2=(f1=1)&x3=((f1=1))&x4=((f1=1))&x5=((f1=1))&x6=((f1=1))", ue);
-		ue = s.serialize(new E1());
-		assertEquals("x1=$o(f1=$n(1))&x2=$o(f1=$n(1))&x3=$a($o(f1=$n(1)))&x4=$a($o(f1=$n(1)))&x5=$a($o(f1=$n(1)))&x6=$a($o(f1=$n(1)))", ue);
-	}
-
-	public static class E1 {
-		@BeanProperty(properties={"f1"}) public E2 x1 = new E2();
-		@BeanProperty(properties={"f1"}) public Map<String,Integer> x2 = new LinkedHashMap<String,Integer>() {{
-			put("f1",1); put("f2",2);
-		}};
-		@BeanProperty(properties={"f1"}) public E2[] x3 = {new E2()};
-		@BeanProperty(properties={"f1"}) public List<E2> x4 = new LinkedList<E2>() {{
-			add(new E2());
-		}};
-		@BeanProperty(properties={"f1"}) public ObjectMap[] x5 = {new ObjectMap().append("f1",1).append("f2",2)};
-		@BeanProperty(properties={"f1"}) public List<ObjectMap> x6 = new LinkedList<ObjectMap>() {{
-			add(new ObjectMap().append("f1",1).append("f2",2));
-		}};
-	}
-
-	public static class E2 {
-		public int f1 = 1;
-		public int f2 = 2;
-	}
-
-	//====================================================================================================
-	// @BeanProperty.properties annotation on list of beans.
-	//====================================================================================================
-	@Test
-	public void testBeanPropertyPropertiesOnListOfBeans() throws Exception {
-		UrlEncodingSerializer s = UrlEncodingSerializer.DEFAULT;
-		List<F> l = new LinkedList<F>();
-		F t = new F();
-		t.x1.add(new F());
-		l.add(t);
-		ObjectMap m = new ObjectMap().append("t", l);
-		String xml = s.serialize(m);
-		assertEquals("t=$a($o(x1=$a($o(x2=$n(2))),x2=$n(2)))", xml);
-		xml = s.serialize(l);
-		assertEquals("$n(0)=$o(x1=$a($o(x2=$n(2))),x2=$n(2))", xml);
-	}
-
-	public static class F {
-		@BeanProperty(properties={"x2"}) public List<F> x1 = new LinkedList<F>();
-		public int x2 = 2;
-	}
-
-	//====================================================================================================
-	// Test URIAttr - Test that URLs and URIs are serialized and parsed correctly.
-	//====================================================================================================
-	@Test
-	public void testURIAttr() throws Exception {
-		UrlEncodingSerializer s = UrlEncodingSerializer.DEFAULT;
-		UrlEncodingParser p = UrlEncodingParser.DEFAULT;
-
-		G t = new G();
-		t.uri = new URI("http://uri");
-		t.f1 = new URI("http://f1");
-		t.f2 = new URL("http://f2");
-
-		String r = s.serialize(t);
-		t = p.parse(r, G.class);
-		assertEquals("http://uri", t.uri.toString());
-		assertEquals("http://f1", t.f1.toString());
-		assertEquals("http://f2", t.f2.toString());
-	}
-
-	public static class G {
-		@BeanProperty(beanUri=true) public URI uri;
-		public URI f1;
-		public URL f2;
-	}
-
-	//====================================================================================================
-	// Test URIs with URI_CONTEXT and URI_AUTHORITY
-	//====================================================================================================
-	@Test
-	public void testUris() throws Exception {
-		WriterSerializer s = new UrlEncodingSerializer();
-		TestURI t = new TestURI();
-		String r;
-		String expected = "";
-
-		s.setProperty(SERIALIZER_relativeUriBase, null);
-		r = s.serialize(t);
-		expected = ""
-			+"f0=f0/x0"
-			+"&f1=f1/x1"
-			+"&f2=/f2/x2"
-			+"&f3=http://www.ibm.com/f3/x3"
-			+"&f4=f4/x4"
-			+"&f5=/f5/x5"
-			+"&f6=http://www.ibm.com/f6/x6"
-			+"&f7=http://www.ibm.com/f7/x7"
-			+"&f8=f8/x8"
-			+"&f9=f9/x9"
-			+"&fa=http://www.ibm.com/fa/xa%23MY_LABEL"
-			+"&fb=http://www.ibm.com/fb/xb?label=MY_LABEL%26foo=bar"
-			+"&fc=http://www.ibm.com/fc/xc?foo=bar%26label=MY_LABEL"
-			+"&fd=http://www.ibm.com/fd/xd?label2=MY_LABEL%26foo=bar"
-			+"&fe=http://www.ibm.com/fe/xe?foo=bar%26label2=MY_LABEL";
-		assertEquals(expected, r);
-
-		s.setProperty(SERIALIZER_relativeUriBase, "");  // Same as null.
-		r = s.serialize(t);
-		assertEquals(expected, r);
-
-		s.setProperty(SERIALIZER_relativeUriBase, "/cr");
-		r = s.serialize(t);
-		expected = ""
-			+"f0=/cr/f0/x0"
-			+"&f1=/cr/f1/x1"
-			+"&f2=/f2/x2"
-			+"&f3=http://www.ibm.com/f3/x3"
-			+"&f4=/cr/f4/x4"
-			+"&f5=/f5/x5"
-			+"&f6=http://www.ibm.com/f6/x6"
-			+"&f7=http://www.ibm.com/f7/x7"
-			+"&f8=/cr/f8/x8"
-			+"&f9=/cr/f9/x9"
-			+"&fa=http://www.ibm.com/fa/xa%23MY_LABEL"
-			+"&fb=http://www.ibm.com/fb/xb?label=MY_LABEL%26foo=bar"
-			+"&fc=http://www.ibm.com/fc/xc?foo=bar%26label=MY_LABEL"
-			+"&fd=http://www.ibm.com/fd/xd?label2=MY_LABEL%26foo=bar"
-			+"&fe=http://www.ibm.com/fe/xe?foo=bar%26label2=MY_LABEL";
-		assertEquals(expected, r);
-
-		s.setProperty(SERIALIZER_relativeUriBase, "/cr/");  // Same as above
-		r = s.serialize(t);
-		assertEquals(expected, r);
-
-		s.setProperty(SERIALIZER_relativeUriBase, "/");
-		r = s.serialize(t);
-		expected = ""
-			+"f0=/f0/x0"
-			+"&f1=/f1/x1"
-			+"&f2=/f2/x2"
-			+"&f3=http://www.ibm.com/f3/x3"
-			+"&f4=/f4/x4"
-			+"&f5=/f5/x5"
-			+"&f6=http://www.ibm.com/f6/x6"
-			+"&f7=http://www.ibm.com/f7/x7"
-			+"&f8=/f8/x8"
-			+"&f9=/f9/x9"
-			+"&fa=http://www.ibm.com/fa/xa%23MY_LABEL"
-			+"&fb=http://www.ibm.com/fb/xb?label=MY_LABEL%26foo=bar"
-			+"&fc=http://www.ibm.com/fc/xc?foo=bar%26label=MY_LABEL"
-			+"&fd=http://www.ibm.com/fd/xd?label2=MY_LABEL%26foo=bar"
-			+"&fe=http://www.ibm.com/fe/xe?foo=bar%26label2=MY_LABEL";
-		assertEquals(expected, r);
-
-		s.setProperty(SERIALIZER_relativeUriBase, null);
-
-		s.setProperty(SERIALIZER_absolutePathUriBase, "http://foo");
-		r = s.serialize(t);
-		expected = ""
-			+"f0=f0/x0"
-			+"&f1=f1/x1"
-			+"&f2=http://foo/f2/x2"
-			+"&f3=http://www.ibm.com/f3/x3"
-			+"&f4=f4/x4"
-			+"&f5=http://foo/f5/x5"
-			+"&f6=http://www.ibm.com/f6/x6"
-			+"&f7=http://www.ibm.com/f7/x7"
-			+"&f8=f8/x8"
-			+"&f9=f9/x9"
-			+"&fa=http://www.ibm.com/fa/xa%23MY_LABEL"
-			+"&fb=http://www.ibm.com/fb/xb?label=MY_LABEL%26foo=bar"
-			+"&fc=http://www.ibm.com/fc/xc?foo=bar%26label=MY_LABEL"
-			+"&fd=http://www.ibm.com/fd/xd?label2=MY_LABEL%26foo=bar"
-			+"&fe=http://www.ibm.com/fe/xe?foo=bar%26label2=MY_LABEL";
-		assertEquals(expected, r);
-
-		s.setProperty(SERIALIZER_absolutePathUriBase, "http://foo/");
-		r = s.serialize(t);
-		assertEquals(expected, r);
-
-		s.setProperty(SERIALIZER_absolutePathUriBase, "");  // Same as null.
-		r = s.serialize(t);
-		expected = ""
-			+"f0=f0/x0"
-			+"&f1=f1/x1"
-			+"&f2=/f2/x2"
-			+"&f3=http://www.ibm.com/f3/x3"
-			+"&f4=f4/x4"
-			+"&f5=/f5/x5"
-			+"&f6=http://www.ibm.com/f6/x6"
-			+"&f7=http://www.ibm.com/f7/x7"
-			+"&f8=f8/x8"
-			+"&f9=f9/x9"
-			+"&fa=http://www.ibm.com/fa/xa%23MY_LABEL"
-			+"&fb=http://www.ibm.com/fb/xb?label=MY_LABEL%26foo=bar"
-			+"&fc=http://www.ibm.com/fc/xc?foo=bar%26label=MY_LABEL"
-			+"&fd=http://www.ibm.com/fd/xd?label2=MY_LABEL%26foo=bar"
-			+"&fe=http://www.ibm.com/fe/xe?foo=bar%26label2=MY_LABEL";
-		assertEquals(expected, r);
-	}
-
-	//====================================================================================================
-	// Validate that you cannot update properties on locked serializer.
-	//====================================================================================================
-	@Test
-	public void testLockedSerializer() throws Exception {
-		UrlEncodingSerializer s = new UrlEncodingSerializer().lock();
-		try {
-			s.setProperty(JsonSerializerContext.JSON_simpleMode, true);
-			fail("Locked exception not thrown");
-		} catch (LockedException e) {}
-		try {
-			s.setProperty(SerializerContext.SERIALIZER_addClassAttrs, true);
-			fail("Locked exception not thrown");
-		} catch (LockedException e) {}
-		try {
-			s.setProperty(BeanContext.BEAN_beanMapPutReturnsOldValue, true);
-			fail("Locked exception not thrown");
-		} catch (LockedException e) {}
-	}
-
-	//====================================================================================================
-	// Recursion
-	//====================================================================================================
-	@Test
-	public void testRecursion() throws Exception {
-		WriterSerializer s = new UrlEncodingSerializer();
-
-		R1 r1 = new R1();
-		R2 r2 = new R2();
-		R3 r3 = new R3();
-		r1.r2 = r2;
-		r2.r3 = r3;
-		r3.r1 = r1;
-
-		// No recursion detection
-		try {
-			s.serialize(r1);
-			fail("Exception expected!");
-		} catch (Exception e) {
-			String msg = e.getLocalizedMessage();
-			assertTrue(msg.contains("It's recommended you use the SerializerContext.SERIALIZER_detectRecursions setting to help locate the loop."));
-		}
-
-		// Recursion detection, no ignore
-		s.setProperty(SERIALIZER_detectRecursions, true);
-		try {
-			s.serialize(r1);
-			fail("Exception expected!");
-		} catch (Exception e) {
-			String msg = e.getLocalizedMessage();
-			assertTrue(msg.contains("[0]root:org.apache.juneau.urlencoding.CT_Common_UrlEncoding$R1"));
-			assertTrue(msg.contains("->[1]r2:org.apache.juneau.urlencoding.CT_Common_UrlEncoding$R2"));
-			assertTrue(msg.contains("->[2]r3:org.apache.juneau.urlencoding.CT_Common_UrlEncoding$R3"));
-			assertTrue(msg.contains("->[3]r1:org.apache.juneau.urlencoding.CT_Common_UrlEncoding$R1"));
-		}
-
-		s.setProperty(SERIALIZER_ignoreRecursions, true);
-		assertEquals("name=foo&r2=$o(name=bar,r3=$o(name=baz))", s.serialize(r1));
-	}
-
-	public static class R1 {
-		public String name = "foo";
-		public R2 r2;
-	}
-	public static class R2 {
-		public String name = "bar";
-		public R3 r3;
-	}
-	public static class R3 {
-		public String name = "baz";
-		public R1 r1;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/df0f8689/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_UonParser.java
----------------------------------------------------------------------
diff --git a/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_UonParser.java b/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_UonParser.java
deleted file mode 100755
index 49d37de..0000000
--- a/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_UonParser.java
+++ /dev/null
@@ -1,542 +0,0 @@
-/***************************************************************************************************************************
- * 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.urlencoding;
-
-import static org.junit.Assert.*;
-
-import java.util.*;
-
-import org.apache.juneau.parser.*;
-import org.junit.*;
-
-@SuppressWarnings({"rawtypes","unchecked","hiding"})
-public class CT_UonParser {
-
-	static UonParser p = UonParser.DEFAULT;
-	static UonParser pe = UonParser.DEFAULT_DECODING;
-
-	//====================================================================================================
-	// Basic test
-	//====================================================================================================
-	@Test
-	public void testBasic() throws Exception {
-
-		String t;
-		Map m;
-
-		// Simple string
-		// Top level
-		t = "a";
-		assertEquals("a", p.parse(t, String.class));
-		assertEquals("a", p.parse(t, Object.class));
-		assertEquals("a", pe.parse(t, String.class));
-		t = "(a)";
-		assertEquals("a", p.parse(t, String.class));
-		assertEquals("a", p.parse(t, Object.class));
-		t = "$s(a)";
-		assertEquals("a", p.parse(t, String.class));
-
-		// 2nd level
-		t = "$o(a=a)";
-		assertEquals("a", p.parse(t, Map.class).get("a"));
-		assertEquals("a", pe.parse(t, Map.class).get("a"));
-
-		t = "(a=a)";
-		assertEquals("a", p.parse(t, Map.class).get("a"));
-		assertEquals("a", pe.parse(t, Map.class).get("a"));
-
-		// Simple map
-		// Top level
-		t = "$o(a=b,c=$n(123),d=$b(false),e=$b(true),f=%00)";
-		m = p.parse(t, Map.class);
-		assertEquals("b", m.get("a"));
-		assertTrue(m.get("c") instanceof Number);
-		assertEquals(123, m.get("c"));
-		assertTrue(m.get("d") instanceof Boolean);
-		assertEquals(Boolean.FALSE, m.get("d"));
-		assertTrue(m.get("e") instanceof Boolean);
-		assertEquals(Boolean.TRUE, m.get("e"));
-		m = pe.parse(t, Map.class);
-		assertNull(m.get("f"));
-
-		t = "(a=true)";
-		m = p.parseMap(t, HashMap.class, String.class, Boolean.class);
-		assertTrue(m.get("a") instanceof Boolean);
-		assertEquals("true", m.get("a").toString());
-
-		// null
-		// Top level
-		t = "%00";
-		assertEquals("%00", p.parse(t, Object.class));
-		assertNull(pe.parse(t, Object.class));
-
-		// 2nd level
-		t = "$o(%00=%00)";
-		m = p.parse(t, Map.class);
-		assertEquals("%00", m.get("%00"));
-		m = pe.parse(t, Map.class);
-		assertTrue(m.containsKey(null));
-		assertNull(m.get(null));
-
-		t = "(%00=%00)";
-		m = p.parse(t, Map.class);
-		assertEquals("%00", m.get("%00"));
-		m = pe.parse(t, Map.class);
-		assertTrue(m.containsKey(null));
-		assertNull(m.get(null));
-
-		t = "(\u0000=\u0000)";
-		m = p.parse(t, Map.class);
-		assertTrue(m.containsKey(null));
-		assertNull(m.get(null));
-		m = pe.parse(t, Map.class);
-		assertTrue(m.containsKey(null));
-		assertNull(m.get(null));
-
-		// 3rd level
-		t = "$o(%00=$o(%00=%00))";
-		m = p.parse(t, Map.class);
-		assertEquals("%00", ((Map)m.get("%00")).get("%00"));
-		m = pe.parse(t, Map.class);
-		assertTrue(((Map)m.get(null)).containsKey(null));
-		assertNull(((Map)m.get(null)).get(null));
-
-		// Empty array
-		// Top level
-		t = "$a()";
-		List l = (List)p.parse(t, Object.class);
-		assertTrue(l.isEmpty());
-		t = "()";
-		l = p.parse(t, List.class);
-		assertTrue(l.isEmpty());
-
-		// 2nd level in map
-		t = "$o(x=$a())";
-		m = p.parseMap(t, HashMap.class, String.class, List.class);
-		assertTrue(m.containsKey("x"));
-		assertTrue(((List)m.get("x")).isEmpty());
-		m = (Map)p.parse(t, Object.class);
-		assertTrue(m.containsKey("x"));
-		assertTrue(((List)m.get("x")).isEmpty());
-		t = "(x=())";
-		m = p.parseMap(t, HashMap.class, String.class, List.class);
-		assertTrue(m.containsKey("x"));
-		assertTrue(((List)m.get("x")).isEmpty());
-
-		// Empty 2 dimensional array
-		t = "$a($a())";
-		l = (List)p.parse(t, Object.class);
-		assertTrue(l.size() == 1);
-		l = (List)l.get(0);
-		assertTrue(l.isEmpty());
-		t = "(())";
-		l = p.parseCollection(t, LinkedList.class, List.class);
-		assertTrue(l.size() == 1);
-		l = (List)l.get(0);
-		assertTrue(l.isEmpty());
-
-		// Array containing empty string
-		// Top level
-		t = "$a(())";
-		l = (List)p.parse(t, Object.class);
-		assertTrue(l.size() == 1);
-		assertEquals("", l.get(0));
-		t = "(())";
-		l = p.parseCollection(t, List.class, String.class);
-		assertTrue(l.size() == 1);
-		assertEquals("", l.get(0));
-
-		// 2nd level
-		t = "$o(()=$a(()))";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("", ((List)m.get("")).get(0));
-		t = "(=(()))";
-		m = p.parseMap(t, HashMap.class, String.class, List.class);
-		assertEquals("", ((List)m.get("")).get(0));
-
-		// Array containing 3 empty strings
-		t = "$a(,,)";
-		l = (List)p.parse(t, Object.class);
-		assertTrue(l.size() == 3);
-		assertEquals("", l.get(0));
-		assertEquals("", l.get(1));
-		assertEquals("", l.get(2));
-		t = "(,,)";
-		l = p.parseCollection(t, List.class, Object.class);
-		assertTrue(l.size() == 3);
-		assertEquals("", l.get(0));
-		assertEquals("", l.get(1));
-		assertEquals("", l.get(2));
-
-		// String containing \u0000
-		// Top level
-		t = "$s(\u0000)";
-		assertEquals("\u0000", p.parse(t, Object.class));
-		t = "(\u0000)";
-		assertEquals("\u0000", p.parse(t, String.class));
-		assertEquals("\u0000", p.parse(t, Object.class));
-
-		// 2nd level
-		t = "$o((\u0000)=(\u0000))";
-		m = (Map)p.parse(t, Object.class);
-		assertTrue(m.size() == 1);
-		assertEquals("\u0000", m.get("\u0000"));
-		t = "((\u0000)=(\u0000))";
-		m = p.parseMap(t, HashMap.class, String.class, String.class);
-		assertTrue(m.size() == 1);
-		assertEquals("\u0000", m.get("\u0000"));
-		m = p.parseMap(t, HashMap.class, String.class, Object.class);
-		assertTrue(m.size() == 1);
-		assertEquals("\u0000", m.get("\u0000"));
-
-		// Boolean
-		// Top level
-		t = "$b(false)";
-		Boolean b = (Boolean)p.parse(t, Object.class);
-		assertEquals(Boolean.FALSE, b);
-		b = p.parse(t, Boolean.class);
-		assertEquals(Boolean.FALSE, b);
-		t = "false";
-		b = p.parse(t, Boolean.class);
-		assertEquals(Boolean.FALSE, b);
-
-		// 2nd level
-		t = "$o(x=$b(false))";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals(Boolean.FALSE, m.get("x"));
-		t = "(x=$b(false))";
-		m = p.parseMap(t, HashMap.class, String.class, Object.class);
-		assertEquals(Boolean.FALSE, m.get("x"));
-		t = "(x=false)";
-		m = p.parseMap(t, HashMap.class, String.class, Boolean.class);
-		assertEquals(Boolean.FALSE, m.get("x"));
-
-		// Number
-		// Top level
-		t = "$n(123)";
-		Integer i = (Integer)p.parse(t, Object.class);
-		assertEquals(123, i.intValue());
-		i = p.parse(t, Integer.class);
-		assertEquals(123, i.intValue());
-		Double d = p.parse(t, Double.class);
-		assertEquals(123, d.intValue());
-		Float f = p.parse(t, Float.class);
-		assertEquals(123, f.intValue());
-		t = "123";
-		i = p.parse(t, Integer.class);
-		assertEquals(123, i.intValue());
-
-		// 2nd level
-		t = "$o(x=$n(123))";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals(123, ((Integer)m.get("x")).intValue());
-		t = "(x=123)";
-		m = p.parseMap(t, HashMap.class, String.class, Number.class);
-		assertEquals(123, ((Integer)m.get("x")).intValue());
-		m = p.parseMap(t, HashMap.class, String.class, Double.class);
-		assertEquals(123, ((Double)m.get("x")).intValue());
-
-		// Unencoded chars
-		// Top level
-		t = "x;/?:@-_.!*'";
-		assertEquals("x;/?:@-_.!*'", p.parse(t, Object.class));
-		assertEquals("x;/?:@-_.!*'", pe.parse(t, Object.class));
-
-		// 2nd level
-		t = "$o(x;/?:@-_.!*'=x;/?:@-_.!*')";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("x;/?:@-_.!*'", m.get("x;/?:@-_.!*'"));
-		m = p.parseMap(t, HashMap.class, String.class, Object.class);
-		assertEquals("x;/?:@-_.!*'", m.get("x;/?:@-_.!*'"));
-		m = p.parseMap(t, HashMap.class, String.class, String.class);
-		assertEquals("x;/?:@-_.!*'", m.get("x;/?:@-_.!*'"));
-
-		// Encoded chars
-		// Top level
-		t = "x{}|\\^[]`<>#%\"&+";
-		assertEquals("x{}|\\^[]`<>#%\"&+", p.parse(t, Object.class));
-		assertEquals("x{}|\\^[]`<>#%\"&+", p.parse(t, String.class));
-		try {
-			assertEquals("x{}|\\^[]`<>#%\"&+", pe.parse(t, Object.class));
-			fail("Expected parse exception from invalid hex sequence.");
-		} catch (ParseException e) {
-			// Good.
-		}
-		t = "x%7B%7D%7C%5C%5E%5B%5D%60%3C%3E%23%25%22%26%2B";
-		assertEquals("x{}|\\^[]`<>#%\"&+", pe.parse(t, Object.class));
-		assertEquals("x{}|\\^[]`<>#%\"&+", pe.parse(t, String.class));
-
-		// 2nd level
-		t = "$o(x{}|\\^[]`<>#%\"&+=x{}|\\^[]`<>#%\"&+)";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("x{}|\\^[]`<>#%\"&+", m.get("x{}|\\^[]`<>#%\"&+"));
-		try {
-			m = (Map)pe.parse(t, Object.class);
-			fail("Expected parse exception from invalid hex sequence.");
-		} catch (ParseException e) {
-			// Good.
-		}
-		t = "$o(x%7B%7D%7C%5C%5E%5B%5D%60%3C%3E%23%25%22%26%2B=x%7B%7D%7C%5C%5E%5B%5D%60%3C%3E%23%25%22%26%2B)";
-		m = (Map)pe.parse(t, Object.class);
-		assertEquals("x{}|\\^[]`<>#%\"&+", m.get("x{}|\\^[]`<>#%\"&+"));
-
-		// Special chars
-		// Top level
-		t = "x~$~,~(~)";
-		assertEquals("x$,()", p.parse(t, Object.class));
-		t = "(x~$~,~(~))";
-		assertEquals("x$,()", p.parse(t, Object.class));
-		t = "$s(x~$~,~(~))";
-		assertEquals("x$,()", p.parse(t, Object.class));
-
-		// 2nd level
-		// Note behavior on serializeParams() is different since 2nd-level is top level.
-		t = "$o(x~$~,~(~)=x~$~,~(~))";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("x$,()", m.get("x$,()"));
-		t = "$o((x~$~,~(~))=(x~$~,~(~)))";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("x$,()", m.get("x$,()"));
-		t = "$o($s(x~$~,~(~))=$s(x~$~,~(~)))";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("x$,()", m.get("x$,()"));
-
-		// Equals sign
-		// Gets encoded at top level, and encoded+escaped at 2nd level.
-		// Top level
-		t = "x=";
-		assertEquals("x=", p.parse(t, Object.class));
-		t = "x%3D";
-		assertEquals("x=", pe.parse(t, Object.class));
-
-		// 2nd level
-		t = "$o(x~==x~=)";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("x=", m.get("x="));
-		t = "$o((x~=)=(x~=))";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("x=", m.get("x="));
-		t = "$o($s(x~=)=$s(x~=))";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("x=", m.get("x="));
-		t = "(x~==x~=)";
-		m = p.parseMap(t, HashMap.class, String.class, Object.class);
-		assertEquals("x=", m.get("x="));
-		t = "((x~=)=(x~=))";
-		m = p.parseMap(t, HashMap.class, String.class, Object.class);
-		assertEquals("x=", m.get("x="));
-		t = "($s(x~=)=$s(x~=))";
-		m = p.parseMap(t, HashMap.class, String.class, Object.class);
-		assertEquals("x=", m.get("x="));
-		t = "$o(x~%3D=x~%3D)";
-		m = (Map)pe.parse(t, Object.class);
-		assertEquals("x=", m.get("x="));
-		t = "$o((x~%3D)=(x~%3D))";
-		m = (Map)pe.parse(t, Object.class);
-		assertEquals("x=", m.get("x="));
-		t = "$o($s(x~%3D)=$s(x~%3D))";
-		m = (Map)pe.parse(t, Object.class);
-		assertEquals("x=", m.get("x="));
-		t = "(x~%3D=x~%3D)";
-		m = pe.parseMap(t, HashMap.class, String.class, Object.class);
-		assertEquals("x=", m.get("x="));
-		t = "((x~%3D)=(x~%3D))";
-		m = pe.parseMap(t, HashMap.class, String.class, Object.class);
-		assertEquals("x=", m.get("x="));
-		t = "($s(x~%3D)=$s(x~%3D))";
-		m = pe.parseMap(t, HashMap.class, String.class, Object.class);
-		assertEquals("x=", m.get("x="));
-
-		// String starting with parenthesis
-		// Top level
-		t = "~(~)";
-		assertEquals("()", p.parse(t, Object.class));
-		assertEquals("()", p.parse(t, String.class));
-
-		t = "(~(~))";
-		assertEquals("()", p.parse(t, Object.class));
-		assertEquals("()", p.parse(t, String.class));
-		t = "$s(~(~))";
-		assertEquals("()", p.parse(t, Object.class));
-		assertEquals("()", p.parse(t, String.class));
-
-		// 2nd level
-		t = "$o((~(~))=(~(~)))";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("()", m.get("()"));
-		t = "((~(~))=(~(~)))";
-		m = p.parseMap(t, HashMap.class, String.class, Object.class);
-		assertEquals("()", m.get("()"));
-		t = "($s(~(~))=$s(~(~)))";
-		m = p.parseMap(t, HashMap.class, String.class, Object.class);
-		assertEquals("()", m.get("()"));
-
-		// String starting with $
-		// Top level
-		t = "($a)";
-		assertEquals("$a", p.parse(t, Object.class));
-		t = "($a)";
-		assertEquals("$a", p.parse(t, Object.class));
-
-		// 2nd level
-		t = "$o(($a)=($a))";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("$a", m.get("$a"));
-		t = "(($a)=($a))";
-		m = p.parseMap(t, HashMap.class, String.class, Object.class);
-		assertEquals("$a", m.get("$a"));
-
-		// Blank string
-		// Top level
-		t = "";
-		assertEquals("", p.parse(t, Object.class));
-		assertEquals("", pe.parse(t, Object.class));
-
-		// 2nd level
-		t = "$o(=)";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("", m.get(""));
-		t = "(=)";
-		m = p.parseMap(t, HashMap.class, String.class, Object.class);
-		assertEquals("", m.get(""));
-
-		// 3rd level
-		t = "$o(=$o(=))";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("", ((Map)m.get("")).get(""));
-		t = "(=(=))";
-		m = p.parseMap(t, HashMap.class, String.class, HashMap.class);
-		assertEquals("", ((Map)m.get("")).get(""));
-
-		// Newline character
-		// Top level
-		t = "(%0A)";
-		assertEquals("\n", pe.parse(t, Object.class));
-		assertEquals("%0A", p.parse(t, Object.class));
-
-		// 2nd level
-		t = "$o((%0A)=(%0A))";
-		m = (Map)pe.parse(t, Object.class);
-		assertEquals("\n", m.get("\n"));
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("%0A", m.get("%0A"));
-
-		// 3rd level
-		t = "$o((%0A)=$o((%0A)=(%0A)))";
-		m = (Map)pe.parse(t, Object.class);
-		assertEquals("\n", ((Map)m.get("\n")).get("\n"));
-	}
-
-	//====================================================================================================
-	// Unicode character test
-	//====================================================================================================
-	@Test
-	public void testUnicodeChars() throws Exception {
-		String t;
-		Map m;
-
-		// 2-byte UTF-8 character
-		// Top level
-		t = "�";
-		assertEquals("�", p.parse(t, Object.class));
-		assertEquals("�", p.parse(t, String.class));
-		t = "%C2%A2";
-		assertEquals("�", pe.parse(t, Object.class));
-		assertEquals("�", pe.parse(t, String.class));
-
-		// 2nd level
-		t = "$o(�=�)";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("�", m.get("�"));
-		t = "$o(%C2%A2=%C2%A2)";
-		m = (Map)pe.parse(t, Object.class);
-		assertEquals("�", m.get("�"));
-
-		// 3rd level
-		t = "$o(�=$o(�=�))";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("�", ((Map)m.get("�")).get("�"));
-		t = "$o(%C2%A2=$o(%C2%A2=%C2%A2))";
-		m = (Map)pe.parse(t, Object.class);
-		assertEquals("�", ((Map)m.get("�")).get("�"));
-
-		// 3-byte UTF-8 character
-		// Top level
-		t = "\u20ac";
-		assertEquals("\u20ac", p.parse(t, Object.class));
-		assertEquals("\u20ac", p.parse(t, String.class));
-		t = "%E2%82%AC";
-		assertEquals("\u20ac", pe.parse(t, Object.class));
-		assertEquals("\u20ac", pe.parse(t, String.class));
-
-		// 2nd level
-		t = "$o(\u20ac=\u20ac)";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("\u20ac", m.get("\u20ac"));
-		t = "$o(%E2%82%AC=%E2%82%AC)";
-		m = (Map)pe.parse(t, Object.class);
-		assertEquals("\u20ac", m.get("\u20ac"));
-
-		// 3rd level
-		t = "$o(\u20ac=$o(\u20ac=\u20ac))";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("\u20ac", ((Map)m.get("\u20ac")).get("\u20ac"));
-		t = "$o(%E2%82%AC=$o(%E2%82%AC=%E2%82%AC))";
-		m = (Map)pe.parse(t, Object.class);
-		assertEquals("\u20ac", ((Map)m.get("\u20ac")).get("\u20ac"));
-
-		// 4-byte UTF-8 character
-		// Top level
-		t = "\U00024b62";
-		assertEquals("\U00024b62", p.parse(t, Object.class));
-		assertEquals("\U00024b62", p.parse(t, String.class));
-		t = "%F0%A4%AD%A2";
-		assertEquals("\U00024b62", pe.parse(t, Object.class));
-		assertEquals("\U00024b62", pe.parse(t, String.class));
-
-		// 2nd level
-		t = "$o(\U00024b62=\U00024b62)";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("\U00024b62", m.get("\U00024b62"));
-		t = "$o(%F0%A4%AD%A2=%F0%A4%AD%A2)";
-		m = (Map)pe.parse(t, Object.class);
-		assertEquals("\U00024b62", m.get("\U00024b62"));
-
-		// 3rd level
-		t = "$o(\U00024b62=$o(\U00024b62=\U00024b62))";
-		m = (Map)p.parse(t, Object.class);
-		assertEquals("\U00024b62", ((Map)m.get("\U00024b62")).get("\U00024b62"));
-		t = "$o(%F0%A4%AD%A2=$o(%F0%A4%AD%A2=%F0%A4%AD%A2))";
-		m = (Map)pe.parse(t, Object.class);
-		assertEquals("\U00024b62", ((Map)m.get("\U00024b62")).get("\U00024b62"));
-	}
-
-	//====================================================================================================
-	// Test simple bean
-	//====================================================================================================
-	@Test
-	public void testSimpleBean() throws Exception {
-		UonParser p = UonParser.DEFAULT;
-		A t;
-
-		String s = "(f1=foo,f2=123)";
-		t = p.parse(s, A.class);
-		assertEquals("foo", t.f1);
-		assertEquals(123, t.f2);
-	}
-
-	public static class A {
-		public String f1;
-		public int f2;
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/df0f8689/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_UonParserReader.java
----------------------------------------------------------------------
diff --git a/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_UonParserReader.java b/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_UonParserReader.java
deleted file mode 100755
index 8ae5cc7..0000000
--- a/org.apache.juneau/src/test/java/org/apache/juneau/urlencoding/CT_UonParserReader.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/***************************************************************************************************************************
- * 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.urlencoding;
-
-import static org.junit.Assert.*;
-
-import java.io.*;
-
-import org.apache.juneau.*;
-import org.junit.*;
-
-public class CT_UonParserReader {
-
-	//====================================================================================================
-	// Basic tests
-	//====================================================================================================
-	@Test
-	public void testBasic() throws Exception {
-
-		UonReader r;
-		String s, in;
-		r = r("f", true);
-		assertEquals('f', r.read());
-		assertEquals(-1, r.read());
-
-		r = r("%66", true);
-		assertEquals('f', r.read());
-		assertEquals(-1, r.read());
-
-		r = r("%7D", true);
-		assertEquals('}', r.read());
-		assertEquals(-1, r.read());
-
-		r = r("%7D%7D", true);
-		assertEquals('}', r.read());
-		assertEquals('}', r.read());
-		assertEquals(-1, r.read());
-
-		r = r("%00%00", true);
-		r.mark();
-		assertEquals(0, r.read());
-		assertEquals(0, r.read());
-		assertEquals("\u0000\u0000", r.getMarked());
-		assertEquals(-1, r.read());
-
-		in = escape("\u0080");
-		r = r(in, true);
-		assertEquals('\u0080', r.read());
-		assertEquals(-1, r.read());
-
-		in = escape("\u0800");
-		r = r(in, true);
-		assertEquals('\u0800', r.read());
-		assertEquals(-1, r.read());
-
-		in = escape("\uffff");
-		r = r(in, true);
-		assertEquals('\uffff', r.read());
-		assertEquals(-1, r.read());
-
-		// 2-byte codepoint
-		s = "�";
-		r = r(escape(s), true);
-		assertEquals(s.codePointAt(0), r.read());
-		assertEquals(-1, r.read());
-
-		// 3-byte codepoint
-		s = "\u20ac";
-		r = r(escape(s), true);
-		assertEquals(s.codePointAt(0), r.readCodePoint());
-		assertEquals(-1, r.read());
-
-		// 4-byte codepoint
-		s = "\U00024b62";
-		r = r(escape(s), true);
-		assertEquals(s.codePointAt(0), r.readCodePoint());
-		assertEquals(-1, r.read());
-
-		s = "\U00024b62\U00024b62";
-		r = r(escape(s), true);
-		assertEquals(s.codePointAt(0), r.readCodePoint());
-		assertEquals(s.codePointAt(2), r.readCodePoint());
-		assertEquals(-1, r.read());
-
-		// Multiple codepoints
-		s = "�\u20ac\U00024b62�\u20ac\U00024b62";
-		in = escape(s);
-		r = r(in, true);
-		assertEquals(s.codePointAt(0), r.readCodePoint());
-		assertEquals(s.codePointAt(1), r.readCodePoint());
-		assertEquals(s.codePointAt(2), r.readCodePoint());
-		assertEquals(s.codePointAt(4), r.readCodePoint());
-		assertEquals(s.codePointAt(5), r.readCodePoint());
-		assertEquals(s.codePointAt(6), r.readCodePoint());
-		assertEquals(-1, r.read());
-
-		// Multiple codepoints read in small chunks.
-		s = "�\u20ac\U00024b62�\u20ac\U00024b62";
-		String s2;
-		int i;
-		in = escape(s);
-		r = r(in, true);
-		char[] buff = new char[2];
-		i = r.read(buff, 0, buff.length);
-		s2 = new String(buff, 0, i);
-		assertEquals("�", s2);
-		i = r.read(buff, 0, buff.length);
-		s2 = new String(buff, 0, i);
-		assertEquals("\u20ac", s2);
-		i = r.read(buff, 0, buff.length);
-		s2 = new String(buff, 0, i);
-		assertEquals("\U00024b62", s2);
-		i = r.read(buff, 0, buff.length);
-		s2 = new String(buff, 0, i);
-		assertEquals("�", s2);
-		i = r.read(buff, 0, buff.length);
-		s2 = new String(buff, 0, i);
-		assertEquals("\u20ac", s2);
-		i = r.read(buff, 0, buff.length);
-		s2 = new String(buff, 0, i);
-		assertEquals("\U00024b62", s2);
-		i = r.read(buff, 0, buff.length);
-		assertEquals(-1, i);
-
-		// Multiple codepoints read in slightly larger chunks.
-		s = "�\u20ac\U00024b62�\u20ac\U00024b62";
-		in = escape(s);
-		r = r(in, true);
-		buff = new char[3];
-		i = r.read(buff, 0, buff.length);
-		s2 = new String(buff, 0, i);
-		assertEquals("�\u20ac", s2);
-		i = r.read(buff, 0, buff.length);
-		s2 = new String(buff, 0, i);
-		assertEquals("\U00024b62", s2);
-		i = r.read(buff, 0, buff.length);
-		s2 = new String(buff, 0, i);
-		assertEquals("�\u20ac", s2);
-		i = r.read(buff, 0, buff.length);
-		s2 = new String(buff, 0, i);
-		assertEquals("\U00024b62", s2);
-		i = r.read(buff, 0, buff.length);
-		assertEquals(-1, i);
-
-		s = "�\u20ac\U00024b62�\u20ac\U00024b62";
-		in = escape(s);
-		r = r(in, true);
-		buff = new char[4];
-		i = r.read(buff, 0, buff.length);
-		s2 = new String(buff, 0, i);
-		assertEquals("�\u20ac\U00024b62", s2);
-		i = r.read(buff, 0, buff.length);
-		s2 = new String(buff, 0, i);
-		assertEquals("�\u20ac\U00024b62", s2);
-		i = r.read(buff, 0, buff.length);
-		assertEquals(-1, i);
-
-		// Reader that only returns 1 character at a time;
-		s = "x�\u20ac\U00024b62x�\u20ac\U00024b62";
-		in = "x" + escape("�\u20ac\U00024b62") + "x" + escape("�\u20ac\U00024b62");
-		r = new UonReader(new SlowStringReader(in), true);
-		assertEquals(s.codePointAt(0), r.readCodePoint());
-		assertEquals(s.codePointAt(1), r.readCodePoint());
-		assertEquals(s.codePointAt(2), r.readCodePoint());
-		assertEquals(s.codePointAt(3), r.readCodePoint());
-		assertEquals(s.codePointAt(5), r.readCodePoint());
-		assertEquals(s.codePointAt(6), r.readCodePoint());
-		assertEquals(s.codePointAt(7), r.readCodePoint());
-		assertEquals(s.codePointAt(8), r.readCodePoint());
-		assertEquals(-1, r.readCodePoint());
-	}
-
-	private String escape(String s) throws UnsupportedEncodingException {
-		StringBuilder sb = new StringBuilder();
-		byte[] b = s.getBytes("UTF-8");
-		for (int i = 0; i < b.length; i++)
-			sb.append('%').append(TestUtils.toHex(b[i]));
-		return sb.toString();
-	}
-
-	private UonReader r(String in, boolean decodeChars) {
-		return new UonReader(in, decodeChars);
-	}
-
-	private static class SlowStringReader extends Reader {
-
-		String s;
-		int i = 0;
-
-		SlowStringReader(String s) {
-			this.s = s;
-		}
-
-		@Override /* Reader */
-		public int read(char[] cbuf, int off, int len) throws IOException {
-			if (i >= s.length())
-				return -1;
-			cbuf[off] = s.charAt(i++);
-			return 1;
-		}
-
-		@Override /* Reader */
-		public void close() throws IOException {
-		}
-
-	}
-}
\ No newline at end of file