Modification to UON spec. Remove bean subtype support. Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/097b8103 Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/097b8103 Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/097b8103
Branch: refs/heads/master Commit: 097b8103237202ecd3b79a8232773591c957aa9d Parents: 268a3e3 Author: JamesBognar <jamesbog...@apache.org> Authored: Wed Feb 15 15:50:33 2017 -0500 Committer: JamesBognar <jamesbog...@apache.org> Committed: Wed Feb 15 15:50:33 2017 -0500 ---------------------------------------------------------------------- .../java/org/apache/juneau/jena/RdfParser.java | 35 +- .../org/apache/juneau/jena/RdfSerializer.java | 14 +- .../juneau/jena/RdfSerializerSession.java | 2 +- .../java/org/apache/juneau/BeanFilterTest.java | 14 +- .../java/org/apache/juneau/BeanMapTest.java | 6 +- .../test/java/org/apache/juneau/TestUtils.java | 14 +- .../juneau/a/rttests/RoundTripBeanMapsTest.java | 51 +- .../a/rttests/RoundTripLargeObjectsTest.java | 14 +- .../juneau/a/rttests/RoundTripMapsTest.java | 4 +- .../apache/juneau/a/rttests/RoundTripTest.java | 28 +- .../a/rttests/RoundTripTransformBeansTest.java | 7 +- .../apache/juneau/dto/cognos/CognosXmlTest.java | 2 +- .../juneau/dto/html5/BasicHtmlSchemaTest.java | 745 ++++++++++++++++++- .../juneau/dto/jsonschema/JsonSchemaTest.java | 13 +- .../java/org/apache/juneau/html/CommonTest.java | 2 +- .../apache/juneau/jena/CommonParserTest.java | 4 +- .../java/org/apache/juneau/jena/CommonTest.java | 2 +- .../org/apache/juneau/jena/CommonXmlTest.java | 2 +- .../juneau/json/JsonParserEdgeCasesTest.java | 2 +- .../juneau/transforms/CalendarSwapTest.java | 30 +- .../urlencoding/CommonParser_UonTest.java | 12 +- .../CommonParser_UrlEncodingTest.java | 16 +- .../juneau/urlencoding/Common_UonTest.java | 81 +- .../urlencoding/Common_UrlEncodingTest.java | 71 +- .../juneau/urlencoding/UonParserTest.java | 205 +++-- .../juneau/urlencoding/UonSerializerTest.java | 364 ++++----- .../urlencoding/UrlEncodingParserTest.java | 273 +++---- .../urlencoding/UrlEncodingSerializerTest.java | 313 ++++---- .../org/apache/juneau/utils/PojoRestTest.java | 6 +- .../org/apache/juneau/xml/XmlContentTest.java | 4 +- juneau-core/.project | 47 +- .../java/org/apache/juneau/BeanContext.java | 6 +- .../main/java/org/apache/juneau/BeanMap.java | 9 - .../main/java/org/apache/juneau/BeanMeta.java | 133 +--- .../org/apache/juneau/BeanPropertyMeta.java | 11 +- .../java/org/apache/juneau/BeanRegistry.java | 69 +- .../java/org/apache/juneau/BeanSession.java | 24 +- .../main/java/org/apache/juneau/ClassMeta.java | 44 +- .../main/java/org/apache/juneau/CoreApi.java | 10 +- .../java/org/apache/juneau/LockedException.java | 2 +- .../java/org/apache/juneau/annotation/Bean.java | 56 +- .../org/apache/juneau/dto/atom/AtomBuilder.java | 6 +- .../apache/juneau/dto/html5/HtmlElement.java | 3 + .../juneau/dto/html5/HtmlElementContainer.java | 3 +- .../juneau/dto/html5/HtmlElementMixed.java | 3 +- .../juneau/dto/html5/HtmlElementText.java | 3 + .../java/org/apache/juneau/dto/html5/Pre.java | 2 +- .../org/apache/juneau/dto/html5/Script.java | 1 + .../java/org/apache/juneau/dto/html5/Style.java | 1 + .../apache/juneau/dto/jsonschema/Sample.java | 4 +- .../apache/juneau/encoders/EncoderGroup.java | 4 +- .../apache/juneau/html/HtmlDocSerializer.java | 4 +- .../juneau/html/HtmlDocSerializerSession.java | 2 +- .../java/org/apache/juneau/html/HtmlParser.java | 32 +- .../apache/juneau/html/HtmlParserSession.java | 16 - .../org/apache/juneau/html/HtmlSerializer.java | 6 +- .../juneau/html/HtmlSerializerSession.java | 2 +- .../java/org/apache/juneau/html/HtmlWriter.java | 6 +- .../java/org/apache/juneau/ini/ConfigMgr.java | 8 +- .../org/apache/juneau/internal/AsciiSet.java | 15 + .../java/org/apache/juneau/json/JsonParser.java | 20 +- .../org/apache/juneau/json/JsonSerializer.java | 43 +- .../juneau/json/JsonSerializerContext.java | 17 - .../juneau/json/JsonSerializerSession.java | 16 +- .../java/org/apache/juneau/json/JsonWriter.java | 9 +- .../apache/juneau/msgpack/MsgPackParser.java | 139 ++-- .../juneau/msgpack/MsgPackSerializer.java | 15 +- .../org/apache/juneau/parser/ParserGroup.java | 4 +- .../org/apache/juneau/parser/ParserReader.java | 35 +- .../org/apache/juneau/parser/ParserSession.java | 74 ++ .../serializer/OutputStreamSerializer.java | 16 +- .../apache/juneau/serializer/Serializer.java | 15 +- .../juneau/serializer/SerializerContext.java | 16 +- .../juneau/serializer/SerializerGroup.java | 14 +- .../juneau/serializer/SerializerSession.java | 78 +- .../juneau/serializer/SerializerWriter.java | 39 +- .../juneau/serializer/WriterSerializer.java | 2 +- .../transform/AnnotationBeanFilterBuilder.java | 19 +- .../org/apache/juneau/transform/BeanFilter.java | 35 +- .../juneau/transform/BeanFilterBuilder.java | 88 +-- .../org/apache/juneau/transform/package.html | 75 -- .../apache/juneau/urlencoding/UonParser.java | 223 +++--- .../juneau/urlencoding/UonParserContext.java | 20 +- .../juneau/urlencoding/UonParserSession.java | 14 +- .../juneau/urlencoding/UonSerializer.java | 248 ++---- .../urlencoding/UonSerializerContext.java | 80 -- .../urlencoding/UonSerializerSession.java | 26 +- .../apache/juneau/urlencoding/UonWriter.java | 104 +-- .../juneau/urlencoding/UrlEncodingParser.java | 41 +- .../urlencoding/UrlEncodingSerializer.java | 134 +--- .../urlencoding/doc-files/Example_HTML.png | Bin 32778 -> 136001 bytes .../doc-files/Example_UrlEncoding.png | Bin 20958 -> 0 bytes .../juneau/urlencoding/doc-files/rfc_uon.txt | 177 ++--- .../org/apache/juneau/urlencoding/package.html | 344 +++++---- .../java/org/apache/juneau/xml/XmlParser.java | 26 +- .../apache/juneau/xml/XmlSchemaSerializer.java | 2 +- .../org/apache/juneau/xml/XmlSerializer.java | 8 +- .../apache/juneau/xml/XmlSerializerSession.java | 2 +- .../java/org/apache/juneau/xml/XmlWriter.java | 6 +- .../src/main/javadoc/doc-files/Server.Uon.png | Bin 28160 -> 0 bytes .../javadoc/doc-files/Server.UrlEncoding.png | Bin 32516 -> 0 bytes juneau-core/src/main/javadoc/overview.html | 58 +- .../src/main/javadoc/resources/juneau-code.css | 10 +- .../examples/rest/AddressBookResourceTest.java | 16 +- .../juneau/examples/rest/RestTestcase.java | 37 + .../juneau/examples/rest/RootResourcesTest.java | 2 +- .../SampleRemoteableServicesResourceTest.java | 4 +- .../juneau/examples/rest/TestMicroservice.java | 57 ++ .../rest/TestMultiPartFormPostsTest.java | 2 +- .../apache/juneau/examples/rest/TestUtils.java | 2 +- .../apache/juneau/examples/rest/_TestSuite.java | 18 +- .../apache/juneau/rest/test/ParamsResource.java | 10 +- .../juneau/rest/test/AcceptCharsetTest.java | 2 +- .../rest/test/BeanContextPropertiesTest.java | 2 +- .../juneau/rest/test/CallbackStringsTest.java | 2 +- .../juneau/rest/test/CharsetEncodingsTest.java | 2 +- .../juneau/rest/test/ClientVersionTest.java | 2 +- .../org/apache/juneau/rest/test/ConfigTest.java | 2 +- .../org/apache/juneau/rest/test/Constants.java | 2 +- .../apache/juneau/rest/test/ContentTest.java | 102 +-- .../rest/test/DefaultContentTypesTest.java | 2 +- .../juneau/rest/test/ErrorConditionsTest.java | 2 +- .../org/apache/juneau/rest/test/GroupsTest.java | 2 +- .../org/apache/juneau/rest/test/GzipTest.java | 2 +- .../juneau/rest/test/InheritanceTest.java | 2 +- .../apache/juneau/rest/test/LargePojosTest.java | 2 +- .../apache/juneau/rest/test/MessagesTest.java | 2 +- .../juneau/rest/test/NlsPropertyTest.java | 2 +- .../org/apache/juneau/rest/test/NlsTest.java | 2 +- .../juneau/rest/test/NoParserInputTest.java | 2 +- .../apache/juneau/rest/test/OnPostCallTest.java | 2 +- .../apache/juneau/rest/test/OnPreCallTest.java | 2 +- .../juneau/rest/test/OptionsWithoutNlsTest.java | 2 +- .../rest/test/OverlappingMethodsTest.java | 2 +- .../org/apache/juneau/rest/test/ParamsTest.java | 80 +- .../apache/juneau/rest/test/ParsersTest.java | 2 +- .../org/apache/juneau/rest/test/PathTest.java | 2 +- .../org/apache/juneau/rest/test/PathsTest.java | 2 +- .../apache/juneau/rest/test/PropertiesTest.java | 2 +- .../apache/juneau/rest/test/RestClientTest.java | 2 +- .../apache/juneau/rest/test/RestTestcase.java | 36 + .../apache/juneau/rest/test/RestUtilsTest.java | 2 +- .../juneau/rest/test/SerializersTest.java | 2 +- .../juneau/rest/test/StaticFilesTest.java | 2 +- .../juneau/rest/test/TestMicroservice.java | 60 ++ .../org/apache/juneau/rest/test/TestUtils.java | 4 +- .../apache/juneau/rest/test/TransformsTest.java | 2 +- .../org/apache/juneau/rest/test/UrisTest.java | 2 +- .../apache/juneau/rest/test/UrlContentTest.java | 2 +- .../juneau/rest/test/UrlPathPatternTest.java | 2 +- .../org/apache/juneau/rest/test/_TestSuite.java | 22 +- .../org/apache/juneau/rest/RestRequest.java | 18 +- .../apache/juneau/rest/RestServletDefault.java | 12 - .../rest/jena/RestServletJenaDefault.java | 12 - .../juneau/rest/response/DefaultHandler.java | 2 +- 155 files changed, 2815 insertions(+), 2907 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/097b8103/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java ---------------------------------------------------------------------- diff --git a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java index 468afc0..3d5baef 100644 --- a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java +++ b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java @@ -182,19 +182,10 @@ public class RdfParser extends ReaderParser { if (rbm.hasBeanUri() && r2.getURI() != null) rbm.getBeanUriProperty().set(m, r2.getURI()); Property subTypeIdProperty = null; - BeanPropertyMeta stp = bm.getSubTypeProperty(); - if (stp != null) { - subTypeIdProperty = session.getProperty(stp.getName()); - Statement st = r2.getProperty(subTypeIdProperty); - if (st == null) - throw new ParseException(session, "Could not find subtype ID property for bean of type ''{0}''", m.getClassMeta()); - String subTypeId = st.getLiteral().getString(); - stp.set(m, subTypeId); - } for (StmtIterator i = r2.listProperties(); i.hasNext();) { Statement st = i.next(); Property p = st.getPredicate(); - if (p.equals(subTypeIdProperty)) + if (subTypeIdProperty != null && p.equals(subTypeIdProperty)) continue; String key = session.decodeString(p.getLocalName()); BeanPropertyMeta pMeta = m.getPropertyMeta(key); @@ -212,14 +203,8 @@ public class RdfParser extends ReaderParser { setName(cm, value, key); pMeta.set(m, value); } - } else if (! (p.equals(session.getRootProperty()) || p.equals(session.getTypeProperty()) || p.equals(subTypeIdProperty))) { - if (bm.isSubTyped()) { - RDFNode o = st.getObject(); - Object value = parseAnything(session, object(), o, m.getBean(false), pMeta); - m.put(key, value); - } else { - onUnknownProperty(session, key, m, -1, -1); - } + } else if (! (p.equals(session.getRootProperty()) || p.equals(session.getTypeProperty()) || (subTypeIdProperty != null && p.equals(subTypeIdProperty)))) { + onUnknownProperty(session, key, m, -1, -1); } session.setCurrentProperty(null); } @@ -240,15 +225,15 @@ public class RdfParser extends ReaderParser { PojoSwap<T,Object> transform = (PojoSwap<T,Object>)eType.getPojoSwap(); ClassMeta<?> sType = eType.getSerializedClassMeta(); session.setCurrentClass(sType); - BeanRegistry breg = pMeta == null ? session.getBeanRegistry() : pMeta.getBeanRegistry(); if (! sType.canCreateNewInstance(outer)) { if (n.isResource()) { Statement st = n.asResource().getProperty(session.getTypeProperty()); if (st != null) { String c = st.getLiteral().getString(); - if (breg.hasName(c)) - sType = eType = (ClassMeta<T>)breg.getClassMeta(c); + ClassMeta tcm = session.getClassMeta(c, pMeta, eType); + if (tcm != null) + sType = eType = tcm; } } } @@ -337,6 +322,14 @@ public class RdfParser extends ReaderParser { o = sType.newInstanceFromString(outer, session.decodeString(getValue(session, n, outer))); } else if (sType.canCreateNewInstanceFromNumber(outer)) { o = sType.newInstanceFromNumber(session, outer, parseNumber(getValue(session, n, outer).toString(), sType.getNewInstanceFromNumberClass())); + } else if (n.isResource()) { + Resource r = n.asResource(); + Map m = new ObjectMap(session); + parseIntoMap(session, r, m, sType.getKeyType(), sType.getValueType()); + if (m.containsKey(session.getBeanTypePropertyName())) + o = session.cast((ObjectMap)m, pMeta, eType); + else + throw new ParseException(session, "Class ''{0}'' could not be instantiated. Reason: ''{1}''", sType.getInnerClass().getName(), sType.getNotABeanReason()); } else { throw new ParseException("Class ''{0}'' could not be instantiated. Reason: ''{1}''", sType.getInnerClass().getName(), sType.getNotABeanReason()); } http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/097b8103/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java ---------------------------------------------------------------------- diff --git a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java index 9bb6d94..4746592 100644 --- a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java +++ b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java @@ -189,6 +189,8 @@ public class RdfSerializer extends WriterSerializer { sType = eType.getSerializedClassMeta(); } + String typeName = session.getBeanTypeName(eType, aType, bpm); + RDFNode n = null; if (o == null || sType.isChar() && ((Character)o).charValue() == 0) { @@ -221,7 +223,7 @@ public class RdfSerializer extends WriterSerializer { uri = rbm.getBeanUriProperty().get(bm); String uri2 = getUri(session, uri, null); n = m.createResource(uri2); - serializeBeanMap(session, bm, (Resource)n); + serializeBeanMap(session, bm, (Resource)n, typeName); } else { Map m2 = (Map)o; n = m.createResource(); @@ -236,7 +238,7 @@ public class RdfSerializer extends WriterSerializer { uri = rbm.getBeanUriProperty().get(bm); String uri2 = getUri(session, uri, null); n = m.createResource(uri2); - serializeBeanMap(session, bm, (Resource)n); + serializeBeanMap(session, bm, (Resource)n, typeName); } else if (sType.isCollectionOrArray() || (wType != null && wType.isCollection())) { Collection c = session.sort(sType.isCollection() ? (Collection)o : toList(sType.getInnerClass(), o)); @@ -315,8 +317,8 @@ public class RdfSerializer extends WriterSerializer { } } - private void serializeBeanMap(RdfSerializerSession session, BeanMap<?> m, Resource r) throws SerializeException { - List<BeanPropertyValue> l = m.getValues(session.isTrimNulls()); + private void serializeBeanMap(RdfSerializerSession session, BeanMap<?> m, Resource r, String typeName) throws SerializeException { + List<BeanPropertyValue> l = m.getValues(session.isTrimNulls(), typeName != null ? session.createBeanTypeNameProperty(m, typeName) : null); Collections.reverse(l); for (BeanPropertyValue bpv : l) { BeanPropertyMeta pMeta = bpv.getMeta(); @@ -756,8 +758,8 @@ public class RdfSerializer extends WriterSerializer { } @Override /* Serializer */ - public RdfSerializer setUseIndentation(boolean value) throws LockedException { - super.setUseIndentation(value); + public RdfSerializer setUseWhitespace(boolean value) throws LockedException { + super.setUseWhitespace(value); return this; } http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/097b8103/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java ---------------------------------------------------------------------- diff --git a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java index 831ba08..d03b775 100644 --- a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java +++ b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java @@ -60,7 +60,7 @@ public final class RdfSerializerSession extends SerializerSession { protected RdfSerializerSession(RdfSerializerContext ctx, ObjectMap op, Object output, Method javaMethod, Locale locale, TimeZone timeZone, MediaType mediaType) { super(ctx, op, output, javaMethod, locale, timeZone, mediaType); ObjectMap jenaSettings = new ObjectMap(); - jenaSettings.put("rdfXml.tab", isUseIndentation() ? 2 : 0); + jenaSettings.put("rdfXml.tab", isUseWhitespace() ? 2 : 0); jenaSettings.put("rdfXml.attributeQuoteChar", Character.toString(getQuoteChar())); jenaSettings.putAll(ctx.jenaSettings); if (op == null || op.isEmpty()) { http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/097b8103/juneau-core-test/src/test/java/org/apache/juneau/BeanFilterTest.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/BeanFilterTest.java b/juneau-core-test/src/test/java/org/apache/juneau/BeanFilterTest.java index fb27219..8116344 100755 --- a/juneau-core-test/src/test/java/org/apache/juneau/BeanFilterTest.java +++ b/juneau-core-test/src/test/java/org/apache/juneau/BeanFilterTest.java @@ -36,7 +36,7 @@ public class BeanFilterTest { a1.fb = new B2(); ((B2)a1.fb).f2 = "f2"; String r = s.serialize(a1); - assertEquals("{subType:'A1',f0:'f0',fb:{subType:'B2',f0b:'f0b',f2:'f2'},f1:'f1'}", r); + assertEquals("{_type:'A1',f0:'f0',fb:{_type:'B2',f0b:'f0b',f2:'f2'},f1:'f1'}", r); A a = p.parse(r, A.class); assertTrue(a instanceof A1); @@ -45,7 +45,7 @@ public class BeanFilterTest { assertEquals("f2", ((B2)a.fb).f2); // Try out-of-order creation. - r = "{f0:'f0',f1:'f1',subType:'A1',fb:{f0b:'f0b',f2:'f2',subType:'B2'}}"; + r = "{f0:'f0',f1:'f1',_type:'A1',fb:{f0b:'f0b',f2:'f2',_type:'B2'}}"; a = p.parse(r, A.class); assertTrue(a instanceof A1); assertTrue(a.fb instanceof B2); @@ -53,10 +53,7 @@ public class BeanFilterTest { assertEquals("f2", ((B2)a.fb).f2); } - @Bean( - subTypeProperty="subType", - subTypes={A1.class,A2.class} - ) + @Bean(beanDictionary={A1.class, A2.class}) public static abstract class A { public String f0 = "f0"; public B fb; @@ -72,10 +69,7 @@ public class BeanFilterTest { public String f2; } - @Bean( - subTypeProperty="subType", - subTypes={B1.class,B2.class} - ) + @Bean(beanDictionary={B1.class,B2.class}) public static abstract class B { public String f0b = "f0b"; } http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/097b8103/juneau-core-test/src/test/java/org/apache/juneau/BeanMapTest.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/BeanMapTest.java b/juneau-core-test/src/test/java/org/apache/juneau/BeanMapTest.java index 3343a6d..0b328db 100755 --- a/juneau-core-test/src/test/java/org/apache/juneau/BeanMapTest.java +++ b/juneau-core-test/src/test/java/org/apache/juneau/BeanMapTest.java @@ -652,13 +652,13 @@ public class BeanMapTest { BeanMap m = session.toBeanMap(t7); m.put("enum1", "ONE"); m.put("enum2", "TWO"); - assertEquals("{enum1:'ONE',enum2:'TWO'}", serializer.serialize(t7)); + assertEquals("{_type:'H',enum1:'ONE',enum2:'TWO'}", serializer.serialize(t7)); assertEquals(HEnum.ONE, t7.enum1); assertEquals(HEnum.TWO, t7.getEnum2()); // Use BeanContext to create bean instance. m = BeanContext.DEFAULT.createSession().newBeanMap(H.class).load("{enum1:'TWO',enum2:'THREE'}"); - assertEquals("{enum1:'TWO',enum2:'THREE'}", serializer.serialize(m.getBean())); + assertEquals("{_type:'H',enum1:'TWO',enum2:'THREE'}", serializer.serialize(m.getBean())); t7 = (H)m.getBean(); assertEquals(HEnum.TWO, t7.enum1); assertEquals(HEnum.THREE, t7.getEnum2()); @@ -666,7 +666,7 @@ public class BeanMapTest { // Create instance directly from JSON. JsonParser p = new JsonParser().addToBeanDictionary(H.class); t7 = (H)p.parse("{_type:'H',enum1:'THREE',enum2:'ONE'}", Object.class); - assertEquals("{enum1:'THREE',enum2:'ONE'}", serializer.serialize(t7)); + assertEquals("{_type:'H',enum1:'THREE',enum2:'ONE'}", serializer.serialize(t7)); assertEquals(HEnum.THREE, t7.enum1); assertEquals(HEnum.ONE, t7.getEnum2()); } http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/097b8103/juneau-core-test/src/test/java/org/apache/juneau/TestUtils.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/TestUtils.java b/juneau-core-test/src/test/java/org/apache/juneau/TestUtils.java index 1e278b5..7f6bade 100755 --- a/juneau-core-test/src/test/java/org/apache/juneau/TestUtils.java +++ b/juneau-core-test/src/test/java/org/apache/juneau/TestUtils.java @@ -147,7 +147,7 @@ public class TestUtils { private static void printLines(String[] lines) { for (int i = 0; i < lines.length; i++) - System.err.println(String.format("%4s:" + lines[i], i+1)); + System.err.println(String.format("%4s:" + lines[i], i+1)); // NOT DEBUG } /** @@ -221,7 +221,7 @@ public class TestUtils { * Test whitespace and generated schema. */ public static void validateXml(Object o, XmlSerializer s) throws Exception { - s = s.clone().setUseIndentation(true).setEnableNamespaces(true).setAddNamespaceUrisToRoot(true); + s = s.clone().setUseWhitespace(true).setEnableNamespaces(true).setAddNamespaceUrisToRoot(true); String xml = s.serialize(o); String xmlSchema = null; @@ -231,10 +231,10 @@ public class TestUtils { TestUtils.checkXmlWhitespace(xmlSchema); TestUtils.validateXml(xml, xmlSchema); } catch (Exception e) { - System.err.println("---XML---"); - System.err.println(xml); - System.err.println("---XMLSchema---"); - System.err.println(xmlSchema); + System.err.println("---XML---"); // NOT DEBUG + System.err.println(xml); // NOT DEBUG + System.err.println("---XMLSchema---"); // NOT DEBUG + System.err.println(xmlSchema); // NOT DEBUG throw e; } } @@ -271,7 +271,7 @@ public class TestUtils { public static void debugOut(Object o) { try { - System.err.println(StringUtils.decodeHex(JsonSerializer.DEFAULT_LAX.serialize(o))); + System.err.println(StringUtils.decodeHex(JsonSerializer.DEFAULT_LAX.serialize(o))); // NOT DEBUG } catch (SerializeException e) { e.printStackTrace(); } http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/097b8103/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java index 7d30f9a..d99f5ff 100755 --- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java +++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java @@ -19,6 +19,7 @@ import java.util.*; import javax.xml.datatype.*; +import org.apache.juneau.BeanDictionaryMap; import org.apache.juneau.annotation.*; import org.apache.juneau.json.*; import org.apache.juneau.json.annotation.*; @@ -231,24 +232,23 @@ public class RoundTripBeanMapsTest extends RoundTripTest { Object r = s.serialize(b1); B b = p.parse(r, B.class); assertTrue(b instanceof B1); - assertObjectEquals("{subType:'B1',f0:'f0',f1:'f1'}", b, js); + assertObjectEquals("{_type:'B1',f0:'f0',f1:'f1'}", b, js); B2 b2 = B2.create(); r = s.serialize(b2); b = p.parse(r, B.class); assertTrue(b instanceof B2); - assertObjectEquals("{subType:'B2',f0:'f0',f2:1}", b, js); + assertObjectEquals("{_type:'B2',f0:'f0',f2:1}", b, js); B3 b3 = B3.create(); r = s.serialize(b3); b = p.parse(r, B.class); assertTrue(b instanceof B3); - assertObjectEquals("{subType:'B3',f0:'f0',f3:'2001-01-01T12:34:56.789Z'}", b, js); + assertObjectEquals("{_type:'B3',f0:'f0',f3:'2001-01-01T12:34:56.789Z'}", b, js); } @Bean( - subTypeProperty="subType", - subTypes={B1.class,B2.class,B3.class} + beanDictionary={B1.class,B2.class,B3.class} ) public abstract static class B { public String f0 = "f0"; @@ -357,13 +357,18 @@ public class RoundTripBeanMapsTest extends RoundTripTest { public static class CFilter extends BeanFilterBuilder { public CFilter() { super(C.class); - setSubTypeProperty("subType"); - addSubType("C1", C1.class); - addSubType("C2", C2.class); - addSubType("C3", C3.class); + addToBeanDictionary(CFilterDictionaryMap.class); } } + public static class CFilterDictionaryMap extends BeanDictionaryMap { + public CFilterDictionaryMap() { + addClass("C1", C1.class); + addClass("C2", C2.class); + addClass("C3", C3.class); + } + } + //==================================================================================================== // Test @Bean(subTypeProperty=xxx) with real bean property //==================================================================================================== @@ -380,16 +385,12 @@ public class RoundTripBeanMapsTest extends RoundTripTest { Object r = s.serialize(ba1); BA b = p.parse(r, BA.class); assertTrue(b instanceof BA1); - assertEquals("BA1", b.subType); - assertObjectEquals("{subType:'BA1',f0a:'f0a',f0b:'f0b',f1:'f1'}", b); + assertObjectEquals("{_type:'BA1',f0a:'f0a',f0b:'f0b',f1:'f1'}", b); } - @Bean( - subTypeProperty="subType", - subTypes={BA1.class,BA2.class} - ) + @Bean(beanDictionary={BA1.class,BA2.class}) public abstract static class BA { - public String f0a, subType, f0b; + public String f0a, f0b; } @Bean(typeName="BA1") @@ -400,7 +401,6 @@ public class RoundTripBeanMapsTest extends RoundTripTest { b.f0a = "f0a"; b.f0b = "f0b"; b.f1 = "f1"; - b.subType = "xxx";// Should be ignored. return b; } } @@ -427,12 +427,11 @@ public class RoundTripBeanMapsTest extends RoundTripTest { Object r = s.serialize(c1); CA c = p.parse(r, CA.class); assertTrue(c instanceof CA1); - assertEquals("CA1", c.subType); - assertObjectEquals("{f0a:'f0a',subType:'CA1',f0b:'f0b',f1:'f1'}", c); + assertObjectEquals("{f0a:'f0a',f0b:'f0b',f1:'f1'}", c); } public abstract static class CA { - public String f0a, subType, f0b; + public String f0a, f0b; } public static class CA1 extends CA { @@ -442,7 +441,6 @@ public class RoundTripBeanMapsTest extends RoundTripTest { c.f0a = "f0a"; c.f0b = "f0b"; c.f1 = "f1"; - c.subType = "xxx";// Should be ignored. return c; } } @@ -454,12 +452,17 @@ public class RoundTripBeanMapsTest extends RoundTripTest { public static class CAFilter extends BeanFilterBuilder { public CAFilter() { super(CA.class); - setSubTypeProperty("subType"); - addSubType("CA1", CA1.class); - addSubType("CA2", CA2.class); + addToBeanDictionary(CAFilterDictionaryMap.class); } } + public static class CAFilterDictionaryMap extends BeanDictionaryMap { + public CAFilterDictionaryMap() { + addClass("CA1", CA1.class); + addClass("CA2", CA2.class); + } + } + //==================================================================================================== // Test @Bean(properties=xxx) //==================================================================================================== http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/097b8103/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripLargeObjectsTest.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripLargeObjectsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripLargeObjectsTest.java index 33b6886..7bbd8d9 100755 --- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripLargeObjectsTest.java +++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripLargeObjectsTest.java @@ -66,7 +66,7 @@ public class RoundTripLargeObjectsTest extends RoundTripTest { }, { /* 3 */ "Xml DEFAULT w/namespaces,validation", - new XmlSerializer.NsSq().setTrimNullProperties(false).setAddNamespaceUrisToRoot(true).setUseIndentation(true), + new XmlSerializer.NsSq().setTrimNullProperties(false).setAddNamespaceUrisToRoot(true).setUseWhitespace(true), XmlParser.DEFAULT, CHECK_XML_WHITESPACE | VALIDATE_XML }, @@ -84,13 +84,13 @@ public class RoundTripLargeObjectsTest extends RoundTripTest { }, { /* 6 */ "UrlEncoding", - new UrlEncodingSerializer().setTrimNullProperties(false).setSimpleMode(false), + new UrlEncodingSerializer().setTrimNullProperties(false), UrlEncodingParser.DEFAULT, 0 }, { /* 7 */ "Uon", - new UonSerializer().setTrimNullProperties(false).setSimpleMode(false), + new UonSerializer().setTrimNullProperties(false), UonParser.DEFAULT, 0 }, @@ -144,22 +144,22 @@ public class RoundTripLargeObjectsTest extends RoundTripTest { A a = A.create(); Serializer s = getSerializer(); Parser p = getParser(); - System.err.println("\n---Speed test on " + label + "---"); + System.err.println("\n---Speed test on " + label + "---"); // NOT DEBUG Object r = ""; // Initialization run. r = s.serialize(a); - System.err.println(MessageFormat.format("Serialized size: {0,number} ", (r instanceof String ? r.toString().length() : ((byte[])r).length))); + System.err.println(MessageFormat.format("Serialized size: {0,number} ", (r instanceof String ? r.toString().length() : ((byte[])r).length))); // NOT DEBUG p.parse(r, A.class); startTime = System.currentTimeMillis(); for (int i = 0; i < numRuns; i++) r = s.serialize(a); - System.err.println(MessageFormat.format("Average serialize time: {0,number}ms", (System.currentTimeMillis()-startTime)/numRuns)); + System.err.println(MessageFormat.format("Average serialize time: {0,number}ms", (System.currentTimeMillis()-startTime)/numRuns)); // NOT DEBUG startTime = System.currentTimeMillis(); for (int i = 0; i < numRuns; i++) a = p.parse(r, A.class); - System.err.println(MessageFormat.format("Average parsed time: {0,number}ms", (System.currentTimeMillis()-startTime)/numRuns)); + System.err.println(MessageFormat.format("Average parsed time: {0,number}ms", (System.currentTimeMillis()-startTime)/numRuns)); // NOT DEBUG } public static class A { http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/097b8103/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java index a644e85..f7d2d13 100755 --- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java +++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java @@ -121,12 +121,12 @@ public class RoundTripMapsTest extends RoundTripTest { assertEquals(e, r); s = new UonSerializer.Encoding().addPojoSwaps(getPojoSwaps()).setTrimNullProperties(false); - e = "$o(AQID=a,BAUG=%00,%00=b)"; + e = "(AQID=a,BAUG=null,null=b)"; r = s.serialize(t); assertEquals(e, r); s = new UrlEncodingSerializer().addPojoSwaps(getPojoSwaps()).setTrimNullProperties(false); - e = "AQID=a&BAUG=%00&%00=b"; + e = "AQID=a&BAUG=null&null=b"; r = s.serialize(t); assertEquals(e, r); } http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/097b8103/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java index 1912417..25c8222 100755 --- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java +++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java @@ -66,7 +66,7 @@ public abstract class RoundTripTest { }, { /* 3 */ "Xml - namespaces, validation, readable", - new XmlSerializer.NsSq().setTrimNullProperties(false).setAddNamespaceUrisToRoot(true).setUseIndentation(true), + new XmlSerializer.NsSq().setTrimNullProperties(false).setAddNamespaceUrisToRoot(true).setUseWhitespace(true), XmlParser.DEFAULT, CHECK_XML_WHITESPACE | VALIDATE_XML }, @@ -96,37 +96,37 @@ public abstract class RoundTripTest { }, { /* 8 */ "Uon - default", - new UonSerializer().setTrimNullProperties(false).setSimpleMode(false), + new UonSerializer().setTrimNullProperties(false), UonParser.DEFAULT, 0 }, { /* 9 */ "Uon - readable", - new UonSerializer.Readable().setTrimNullProperties(false).setSimpleMode(false), - UonParser.DEFAULT_WS_AWARE, + new UonSerializer.Readable().setTrimNullProperties(false), + UonParser.DEFAULT, 0 }, { /* 10 */ "Uon - encoded", - new UonSerializer.Encoding().setTrimNullProperties(false).setSimpleMode(false), + new UonSerializer.Encoding().setTrimNullProperties(false), UonParser.DEFAULT_DECODING, 0 }, { /* 11 */ "UrlEncoding - default", - new UrlEncodingSerializer().setTrimNullProperties(false).setSimpleMode(false), + new UrlEncodingSerializer().setTrimNullProperties(false), UrlEncodingParser.DEFAULT, 0 }, { /* 12 */ "UrlEncoding - readable", - new UrlEncodingSerializer.Readable().setTrimNullProperties(false).setSimpleMode(false), - UrlEncodingParser.DEFAULT_WS_AWARE, + new UrlEncodingSerializer.Readable().setTrimNullProperties(false), + UrlEncodingParser.DEFAULT, 0 }, { /* 13 */ "UrlEncoding - expanded params", - new UrlEncodingSerializer().setExpandedParams(true).setSimpleMode(false), + new UrlEncodingSerializer().setExpandedParams(true), new UrlEncodingParser().setExpandedParams(true), 0 }, @@ -192,8 +192,8 @@ public abstract class RoundTripTest { public boolean debug = false; public RoundTripTest(String label, Serializer s, Parser p, int flags) throws Exception { - this.s = s.clone().addBeanFilters(getBeanFilters()).addPojoSwaps(getPojoSwaps()).addToBeanDictionary(getDictionary()); - this.p = p == null ? null : p.clone().addBeanFilters(getBeanFilters()).addPojoSwaps(getPojoSwaps()).addToBeanDictionary(getDictionary()); + this.s = s.clone().addBeanFilters(getBeanFilters()).addPojoSwaps(getPojoSwaps()).addToBeanDictionary(getDictionary()).setProperties(getProperties()); + this.p = p == null ? null : p.clone().addBeanFilters(getBeanFilters()).addPojoSwaps(getPojoSwaps()).addToBeanDictionary(getDictionary()).setProperties(getProperties()); this.label = label; Map<Class<Object>, Class<? extends Object>> m = getImplClasses(); @@ -221,6 +221,10 @@ public abstract class RoundTripTest { public Class<?>[] getDictionary() { return new Class<?>[0]; } + + public ObjectMap getProperties() { + return ObjectMap.EMPTY_MAP; + } public <T> Map<Class<T>,Class<? extends T>> getImplClasses() { return null; @@ -286,7 +290,7 @@ public abstract class RoundTripTest { } if (debug) - System.err.println("Serialized contents from ["+label+"]...\n---START---\n" + (out instanceof byte[] ? TestUtils.toReadableBytes((byte[])out) : out) + "\n---END---\n"); + System.err.println("Serialized contents from ["+label+"]...\n---START---\n" + (out instanceof byte[] ? TestUtils.toReadableBytes((byte[])out) : out) + "\n---END---\n"); // NOT DEBUG if (validateXmlWhitespace) TestUtils.checkXmlWhitespace(out.toString()); http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/097b8103/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java index c4d792f..cc6c1b9 100755 --- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java +++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java @@ -275,14 +275,11 @@ public class RoundTripTransformBeansTest extends RoundTripTest { C1 c1 = C3.create(); String r = s.serialize(c1); - assertEquals("{\"type\":\"C3\",\"f1\":{\"f2\":\"f2\",\"f3\":3}}", r); + assertEquals("{\"_type\":\"C3\",\"f1\":{\"f2\":\"f2\",\"f3\":3}}", r); } - @Bean( - subTypeProperty="type", - subTypes={C3.class} - ) + @Bean(beanDictionary={C3.class}) public static interface C1<T> extends Serializable { void setF1(T f1); T getF1(); http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/097b8103/juneau-core-test/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java b/juneau-core-test/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java index bd98a6d..358d8e3 100755 --- a/juneau-core-test/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java +++ b/juneau-core-test/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java @@ -73,7 +73,7 @@ public class CognosXmlTest { }; XmlSerializer s = new XmlSerializer() - .setUseIndentation(true) + .setUseWhitespace(true) .setQuoteChar('\'') .setDefaultNamespace("cognos") .setEnableNamespaces(true)