Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 233805 Details for
Bug 411382
JSON-P - Marshal to javax.json.stream.JsonGenerator
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Additional update
bug411382_trunk_update.patch (text/plain), 6.69 KB, created by
Denise Smith
on 2013-07-25 13:03:28 EDT
(
hide
)
Description:
Additional update
Filename:
MIME Type:
Creator:
Denise Smith
Created:
2013-07-25 13:03:28 EDT
Size:
6.69 KB
patch
obsolete
> .../persistence/oxm/json/JsonGeneratorResult.java | 9 ++++- > .../oxm/record/JsonGeneratorRecord.java | 13 ++++-- > .../JsonObjectInArrayBuilderTestCases.java | 47 +++++++++++++++++++--- > 10 files changed, 90 insertions(+), 22 deletions(-) > >diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/oxm/json/JsonGeneratorResult.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/oxm/json/JsonGeneratorResult.java >index a4c3e3d..b814668 100644 >--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/oxm/json/JsonGeneratorResult.java >+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/oxm/json/JsonGeneratorResult.java >@@ -20,14 +20,21 @@ import org.eclipse.persistence.oxm.record.JsonGeneratorRecord; > public class JsonGeneratorResult extends ExtendedResult{ > > private JsonGenerator generator; >+ private String rootKeyName; > > public JsonGeneratorResult(JsonGenerator generator){ > this.generator = generator; >+ rootKeyName = null; >+ } >+ >+ public JsonGeneratorResult(JsonGenerator generator, String rootKeyName){ >+ this.generator = generator; >+ this.rootKeyName = rootKeyName; > } > > @Override > public org.eclipse.persistence.oxm.record.MarshalRecord createRecord() { >- JsonGeneratorRecord record = new JsonGeneratorRecord(generator); >+ JsonGeneratorRecord record = new JsonGeneratorRecord(generator, rootKeyName); > return record; > } > >diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/oxm/record/JsonGeneratorRecord.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/oxm/record/JsonGeneratorRecord.java >index 3bfecd3..ddc69d2 100644 >--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/oxm/record/JsonGeneratorRecord.java >+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/oxm/record/JsonGeneratorRecord.java >@@ -31,12 +31,14 @@ public class JsonGeneratorRecord extends JsonRecord { > > private Level position; > private JsonGenerator jsonGenerator; >+ private String rootKeyName; > >- public JsonGeneratorRecord(JsonGenerator generator){ >+ public JsonGeneratorRecord(JsonGenerator generator, String rootKeyName){ > super(); > this.jsonGenerator = generator; >+ this.rootKeyName = rootKeyName; > } >- >+ > @Override > public void startDocument(String encoding, String version) { > if(isRootArray){ >@@ -49,6 +51,7 @@ public class JsonGeneratorRecord extends JsonRecord { > isLastEventStart = true; > }else{ > Level rootLevel = new Level(false, null); >+ rootLevel.setKeyName(rootKeyName); > position = rootLevel; > setComplex(position, true); > } >@@ -74,7 +77,11 @@ public class JsonGeneratorRecord extends JsonRecord { > isRootArray = true; > Level rootLevel = new Level(true, null); > position = rootLevel; >- jsonGenerator.writeStartArray(); >+ if(rootKeyName != null){ >+ jsonGenerator.writeStartArray(rootKeyName); >+ }else{ >+ jsonGenerator.writeStartArray(); >+ } > } else { > if(isLastEventStart){ > setComplex(position, true); >diff --git a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/JsonObjectInArrayBuilderTestCases.java b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/JsonObjectInArrayBuilderTestCases.java >index 7b95816..c43f185 100644 >--- a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/JsonObjectInArrayBuilderTestCases.java >+++ b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/jaxb/json/rootlevellist/JsonObjectInArrayBuilderTestCases.java >@@ -77,18 +77,19 @@ public class JsonObjectInArrayBuilderTestCases extends OXTestCase { > > StringWriter sw = new StringWriter(); > JsonGenerator jsonGenerator = Json.createGenerator(sw); >+ >+ JsonGenerator arrayGenerator = jsonGenerator.writeStartArray(); > JsonGeneratorResult result = new JsonGeneratorResult(jsonGenerator); > > WithoutXmlRootElementRoot foo = new WithoutXmlRootElementRoot(); > foo.setName("FOO"); >+ jsonMarshaller.marshal(foo, result); > > WithoutXmlRootElementRoot foo2 = new WithoutXmlRootElementRoot(); > foo2.setName("FOO2"); >- >- List<WithoutXmlRootElementRoot> things = new ArrayList<WithoutXmlRootElementRoot>(); >- things.add(foo); >- things.add(foo2); >- jsonMarshaller.marshal(things, result); >+ jsonMarshaller.marshal(foo2, result); >+ >+ jsonGenerator.writeEnd(); > jsonGenerator.flush(); > > log(sw.toString()); >@@ -126,5 +127,41 @@ public class JsonObjectInArrayBuilderTestCases extends OXTestCase { > assertEquals(controlString, sw.toString()); > } > >+ public void testNestedResults() throws Exception{ >+ JAXBContext ctx = JAXBContextFactory.createContext(new Class[]{WithXmlRootElementRoot.class}, null); >+ Marshaller jsonMarshaller = ctx.createMarshaller(); >+ jsonMarshaller.setProperty(MarshallerProperties.MEDIA_TYPE, MediaType.APPLICATION_JSON); >+ jsonMarshaller.setProperty(MarshallerProperties.JSON_INCLUDE_ROOT, false); >+ >+ StringWriter sw = new StringWriter(); >+ >+ >+ WithXmlRootElementRoot foo = new WithXmlRootElementRoot(); >+ foo.setName("FOO"); >+ >+ WithXmlRootElementRoot foo2 = new WithXmlRootElementRoot(); >+ foo2.setName("FOO2"); >+ >+ List<WithXmlRootElementRoot> foos = new ArrayList<WithXmlRootElementRoot>(); >+ foos.add(foo); >+ foos.add(foo2); >+ >+ JsonGenerator generator = Json.createGenerator(sw); >+ JsonGenerator arrayGenerator = generator.writeStartObject(); >+ JsonGeneratorResult nestedResult = new JsonGeneratorResult(arrayGenerator,"foosList"); >+ jsonMarshaller.marshal(foos, nestedResult); >+ >+ JsonGeneratorResult nestedSingleResult = new JsonGeneratorResult(generator,"singleThing"); >+ jsonMarshaller.marshal(foo, nestedSingleResult); >+ >+ generator.writeEnd(); //end root object >+ generator.flush(); >+ >+ log(sw.toString()); >+ String controlString = "{\"foosList\":[{\"name\":\"FOO\"},{\"name\":\"FOO2\"}],\"singleThing\":{\"name\":\"FOO\"}}"; >+ >+ assertEquals(controlString, sw.toString()); >+ } >+ > > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 411382
:
233765
|
233768
| 233805 |
233848