From 0b7880affe4f5d4a8184505adbeccf5f104cfcdd Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Mon, 1 Nov 2021 16:33:52 +1100 Subject: [PATCH 1/8] Added JSON Feed serializer --- README.md | 6 +++ .../org/mnode/ical4j/json/JsonBuilder.java | 7 +++ .../ical4j/json/jot/AbstractJotCalMapper.java | 16 ++++--- .../json/jsonfeed/AbstractFeedBuilder.java | 42 ++++++++++++++++ .../ical4j/json/jsonfeed/CalendarBuilder.java | 43 +++++++++++++++++ .../json/jsonfeed/ComponentBuilder.java | 48 +++++++++++++++++++ .../jsonfeed/JSONFeedCalendarSerializer.java | 26 ++++++++++ .../ical4j/json/JCalSerializerTest.groovy | 2 +- .../JSONFeedCalendarSerializerTest.groovy | 28 +++++++++++ src/test/resources/samples/justin.ics | 2 +- 10 files changed, 211 insertions(+), 9 deletions(-) create mode 100644 src/main/java/org/mnode/ical4j/json/jsonfeed/AbstractFeedBuilder.java create mode 100644 src/main/java/org/mnode/ical4j/json/jsonfeed/CalendarBuilder.java create mode 100644 src/main/java/org/mnode/ical4j/json/jsonfeed/ComponentBuilder.java create mode 100644 src/main/java/org/mnode/ical4j/json/jsonfeed/JSONFeedCalendarSerializer.java create mode 100644 src/test/groovy/org/mnode/ical4j/json/jsonfeed/JSONFeedCalendarSerializerTest.groovy diff --git a/README.md b/README.md index b2477b7..a7dc1fd 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ [JSON-LD]: https://json-ld.org/ [Jot API]: https://github.com/micronode/jotapi [CalDAV]: https://tools.ietf.org/html/rfc4791 +[JSON Feed]: https://www.jsonfeed.org/version/1.1/ The purpose of this library is to provide custom marshalling between iCal4j objects and JSON formats. @@ -55,6 +56,11 @@ object model. [jCard] provides a specification for converting JSON to/from vCard [Schema.org] presents a collection of collaborative data models to represent data on the Web. This includes data representations in [JSON-LD] format, which is included here. +### JSON Feed - a format similar to RSS and Atom but in JSON + +[JSON Feed] is a pragmatic syndication format, like RSS and Atom, but with one big difference: +it’s JSON instead of XML. + ### Jot API - An open REST API based on the iCalendar specification diff --git a/src/main/java/org/mnode/ical4j/json/JsonBuilder.java b/src/main/java/org/mnode/ical4j/json/JsonBuilder.java index e2beb30..d69649f 100644 --- a/src/main/java/org/mnode/ical4j/json/JsonBuilder.java +++ b/src/main/java/org/mnode/ical4j/json/JsonBuilder.java @@ -12,6 +12,13 @@ default ObjectNode putIfNotNull(String propertyName, ObjectNode node, Property p return node; } +// default ObjectNode putIfNotNull(String propertyName, ObjectNode node, DateProperty property) { +// if (property != null) { +// node.put(propertyName, property.getValue()); +// } +// return node; +// } + default ObjectNode putIfNotNull(String propertyName, ObjectNode node, net.fortuna.ical4j.vcard.Property property) { if (property != null) { node.put(propertyName, property.getValue()); diff --git a/src/main/java/org/mnode/ical4j/json/jot/AbstractJotCalMapper.java b/src/main/java/org/mnode/ical4j/json/jot/AbstractJotCalMapper.java index 82c45f5..8c060cc 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/AbstractJotCalMapper.java +++ b/src/main/java/org/mnode/ical4j/json/jot/AbstractJotCalMapper.java @@ -15,6 +15,8 @@ import java.util.Arrays; import java.util.List; +import static net.fortuna.ical4j.model.Parameter.*; + public abstract class AbstractJotCalMapper extends StdDeserializer implements JsonMapper { private final List> parameterFactories; @@ -72,12 +74,12 @@ protected Parameter parseParameter(JsonParser p) throws IOException, URISyntaxEx } private boolean isParameter(String fieldName) { - return Arrays.asList(Parameter.ABBREV, Parameter.CN, Parameter.ALTREP, Parameter.CUTYPE, - Parameter.DIR, Parameter.DELEGATED_FROM, Parameter.DELEGATED_TO, Parameter.DISPLAY, - Parameter.EMAIL, Parameter.ENCODING, Parameter.FBTYPE, Parameter.FEATURE, - Parameter.FMTTYPE, Parameter.LABEL, Parameter.LANGUAGE, Parameter.MEMBER, - Parameter.PARTSTAT, Parameter.RANGE, Parameter.RELATED, Parameter.RELTYPE, - Parameter.ROLE, Parameter.RSVP, Parameter.SCHEDULE_AGENT, Parameter.SCHEDULE_STATUS, - Parameter.SENT_BY, Parameter.TYPE, Parameter.TZID, Parameter.VALUE, Parameter.VVENUE).contains(fieldName.toUpperCase()); + return Arrays.asList(ABBREV, CN, ALTREP, CUTYPE, + DIR, DELEGATED_FROM, DELEGATED_TO, DISPLAY, + EMAIL, ENCODING, FBTYPE, FEATURE, + FMTTYPE, LABEL, LANGUAGE, MEMBER, + PARTSTAT, RANGE, RELATED, RELTYPE, + ROLE, RSVP, SCHEDULE_AGENT, SCHEDULE_STATUS, + SENT_BY, TYPE, TZID, VALUE, VVENUE).contains(fieldName.toUpperCase()); } } diff --git a/src/main/java/org/mnode/ical4j/json/jsonfeed/AbstractFeedBuilder.java b/src/main/java/org/mnode/ical4j/json/jsonfeed/AbstractFeedBuilder.java new file mode 100644 index 0000000..83c930c --- /dev/null +++ b/src/main/java/org/mnode/ical4j/json/jsonfeed/AbstractFeedBuilder.java @@ -0,0 +1,42 @@ +package org.mnode.ical4j.json.jsonfeed; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.mnode.ical4j.json.JsonBuilder; + +public abstract class AbstractFeedBuilder implements JsonBuilder { + + private final String version; + + protected T component; + + protected final ObjectMapper mapper; + + public AbstractFeedBuilder() { + this("https://jsonfeed.org/version/1.1"); + } + + public AbstractFeedBuilder(String version) { + this.version = version; + this.mapper = new ObjectMapper(); + } + + public AbstractFeedBuilder component(T component) { + this.component = component; + return this; + } + + protected ObjectNode createObjectNode() { + ObjectNode node = mapper.createObjectNode(); + node.put("version", version); + node.putArray("items"); + return node; + } + + /** + * Build a JSON node representing the Jsonfeed object. + * @return a JSON representation of a Jsonfeed object + */ + public abstract JsonNode build(); +} diff --git a/src/main/java/org/mnode/ical4j/json/jsonfeed/CalendarBuilder.java b/src/main/java/org/mnode/ical4j/json/jsonfeed/CalendarBuilder.java new file mode 100644 index 0000000..7d3e812 --- /dev/null +++ b/src/main/java/org/mnode/ical4j/json/jsonfeed/CalendarBuilder.java @@ -0,0 +1,43 @@ +package org.mnode.ical4j.json.jsonfeed; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import net.fortuna.ical4j.model.Calendar; +import net.fortuna.ical4j.model.Property; +import net.fortuna.ical4j.model.property.Source; + +public class CalendarBuilder extends AbstractFeedBuilder { + + public CalendarBuilder() { + } + + @Override + public JsonNode build() { + ObjectNode node = createObjectNode(); + component.getProperties().forEach(property -> { + switch (property.getName()) { + // skip properties that have no meaning in JSON Feed.. + case Property.PRODID: + case Property.VERSION: + break; + case Property.NAME: + node.put("title", property.getValue()); + break; + case Property.URL: + node.put("home_page_url", property.getValue()); + break; + case Source.PROPERTY_NAME: + node.put("feed_url", property.getValue()); + break; + default: +// node.put(property.getName().toLowerCase(), property.getValue()); + } + }); + component.getComponents().forEach(component -> { + ((ArrayNode) node.get("items")).add( + new ComponentBuilder<>(mapper.createObjectNode()).component(component).build()); + }); + return node; + } +} diff --git a/src/main/java/org/mnode/ical4j/json/jsonfeed/ComponentBuilder.java b/src/main/java/org/mnode/ical4j/json/jsonfeed/ComponentBuilder.java new file mode 100644 index 0000000..8b63067 --- /dev/null +++ b/src/main/java/org/mnode/ical4j/json/jsonfeed/ComponentBuilder.java @@ -0,0 +1,48 @@ +package org.mnode.ical4j.json.jsonfeed; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import net.fortuna.ical4j.model.Component; +import net.fortuna.ical4j.model.Property; + +public class ComponentBuilder extends AbstractFeedBuilder { + + private final ObjectNode node; + + public ComponentBuilder(ObjectNode objectNode) { + this.node = objectNode; + } + + @Override + public JsonNode build() { + component.getProperties().forEach(property -> { + switch (property.getName()) { + // skip properties that have no meaning in JSON Feed.. + case Property.UID: + node.put("id", property.getValue()); + break; + case Property.SUMMARY: + node.put("summary", property.getValue()); + break; + case Property.URL: + node.put("url", property.getValue()); + break; + case Property.DESCRIPTION: + node.put("content_text", property.getValue()); + break; + case Property.STYLED_DESCRIPTION: + node.put("content_html", property.getValue()); + break; + case Property.DTSTAMP: + node.put("date_published", property.getValue()); + break; + case Property.LAST_MODIFIED: + node.put("date_modified", property.getValue()); + break; + default: +// node.put(property.getName().toLowerCase(), property.getValue()); + } + }); + return node; + } +} diff --git a/src/main/java/org/mnode/ical4j/json/jsonfeed/JSONFeedCalendarSerializer.java b/src/main/java/org/mnode/ical4j/json/jsonfeed/JSONFeedCalendarSerializer.java new file mode 100644 index 0000000..e242eaa --- /dev/null +++ b/src/main/java/org/mnode/ical4j/json/jsonfeed/JSONFeedCalendarSerializer.java @@ -0,0 +1,26 @@ +package org.mnode.ical4j.json.jsonfeed; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import net.fortuna.ical4j.model.Calendar; + +import java.io.IOException; + +public class JSONFeedCalendarSerializer extends StdSerializer { + + public JSONFeedCalendarSerializer(Class t) { + super(t); + } + + @Override + public void serialize(Calendar value, JsonGenerator gen, SerializerProvider provider) throws IOException { + gen.writeTree(buildCalendar(value)); + } + + private JsonNode buildCalendar(Calendar calendar) { + AbstractFeedBuilder builder = new CalendarBuilder().component(calendar); + return builder.build(); + } +} diff --git a/src/test/groovy/org/mnode/ical4j/json/JCalSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/json/JCalSerializerTest.groovy index d26a9b6..fb22707 100644 --- a/src/test/groovy/org/mnode/ical4j/json/JCalSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/json/JCalSerializerTest.groovy @@ -22,6 +22,6 @@ class JCalSerializerTest extends AbstractSerializerTest { where: calendar | expectedSerialized calendar1 | '["vcalendar",[["prodid",{},"text","-//Ben Fortuna//iCal4j 1.0//EN"],["version",{},"text","2.0"],["uid",{},"text","123"]],[["vevent",[["uid",{},"text","1"],["summary",{},"text","Test Event 1"],["organizer",{},"cal-address","johnd@example.com"],["dtstart",{"value":"date"},"date","2009-08-10"],["action",{},"text","DISPLAY"],["attach",{"encoding":"base64","value":"binary"},"binary","QlNEIDMtQ2xhdXNlIExpY2Vuc2UKCkNvcHlyaWdodCAoYykgMjAyMSwgaUNhbDRqCkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCgoyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCgozLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQpJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQpGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTApEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgpTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgpDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLApPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQpPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo="]],[]],["vevent",[["uid",{},"text","2"],["summary",{},"text","Test Event 2"],["organizer",{"cn":"john doe"},"cal-address","johnd@example.com"],["dtstart",{"value":"date"},"date","2010-08-10"],["description",{"x-format":"text/plain"},"text","Test Description 2"],["x-test",{},"unknown","test-value"]],[]]]]' - calendar2 | '["vcalendar",[["version",{},"text","2.0"],["prodid",{},"text","-//ABC Corporation//NONSGML My Product//EN"],["uid",{},"text","1"],["name",{},"text","Just In"],["description",{},"text",""],["source",{},"uri","https://www.abc.net.au/news/feed/51120/rss.xml"],["url",{},"uri","https://www.abc.net.au/news/justin/"],["image",{},"uri","https://www.abc.net.au/news/image/8413416-1x1-144x144.png"],["last-modified",{},"date-time","2021-03-04T05:52:23Z"]],[["vjournal",[["uid",{},"text","https://www.abc.net.au/news/2021-03-04/gold-coast-needs-6,500-new-homes-a-year-housing-crisis/13214856"],["summary",{},"text","The Gold Coast needs 6,500 new homes a year, but where can they be built?"],["description",{},"text","\\n \\n

The famous coastal city is fast running out of greenfield land to house its growing population, but the community is opposed to higher-density developments in the city.

\\n \\n"],["categories",{},"text","Housing Industry,Rental Housing,Housing,Agribusiness"],["dtstamp",{},"date-time","2021-03-04T05:52:23Z"],["url",{},"uri","https://www.abc.net.au/news/2021-03-04/gold-coast-needs-6,500-new-homes-a-year-housing-crisis/13214856"],["contact",{},"text","Dominic Cansdale"],["image",{},"uri","https://www.abc.net.au/news/image/12721466-3x2-940x627.jpg"]],[]]]]' + calendar2 | '["vcalendar",[["version",{},"text","2.0"],["prodid",{},"text","-//ABC Corporation//NONSGML My Product//EN"],["uid",{},"text","1"],["name",{},"text","Just In"],["description",{},"text",""],["source",{},"uri","https://www.abc.net.au/news/feed/51120/rss.xml"],["url",{},"uri","https://www.abc.net.au/news/justin/"],["image",{},"uri","https://www.abc.net.au/news/image/8413416-1x1-144x144.png"],["last-modified",{},"date-time","2021-03-04T05:52:23Z"]],[["vjournal",[["uid",{},"text","https://www.abc.net.au/news/2021-03-04/gold-coast-needs-6,500-new-homes-a-year-housing-crisis/13214856"],["summary",{},"text","The Gold Coast needs 6,500 new homes a year, but where can they be built?"],["styled-description",{"value":"text"},"text","\\n \\n

The famous coastal city is fast running out of greenfield land to house its growing population, but the community is opposed to higher-density developments in the city.

\\n \\n"],["categories",{},"text","Housing Industry,Rental Housing,Housing,Agribusiness"],["dtstamp",{},"date-time","2021-03-04T05:52:23Z"],["url",{},"uri","https://www.abc.net.au/news/2021-03-04/gold-coast-needs-6,500-new-homes-a-year-housing-crisis/13214856"],["contact",{},"text","Dominic Cansdale"],["image",{},"uri","https://www.abc.net.au/news/image/12721466-3x2-940x627.jpg"]],[]]]]' } } diff --git a/src/test/groovy/org/mnode/ical4j/json/jsonfeed/JSONFeedCalendarSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/json/jsonfeed/JSONFeedCalendarSerializerTest.groovy new file mode 100644 index 0000000..33307ff --- /dev/null +++ b/src/test/groovy/org/mnode/ical4j/json/jsonfeed/JSONFeedCalendarSerializerTest.groovy @@ -0,0 +1,28 @@ +package org.mnode.ical4j.json.jsonfeed + +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.databind.module.SimpleModule +import net.fortuna.ical4j.model.Calendar +import org.mnode.ical4j.json.AbstractSerializerTest + +class JSONFeedCalendarSerializerTest extends AbstractSerializerTest { + + def 'test calendar serialization'() { + given: 'an object mapper' + SimpleModule module = [] + module.addSerializer(Calendar, new JSONFeedCalendarSerializer()) + ObjectMapper mapper = [] + mapper.registerModule(module) + + when: 'the calendar is serialized' + String serialized = mapper.writeValueAsString(calendar) + + then: 'serialized string matches expected value' + serialized == expectedSerialized + + where: + calendar | expectedSerialized + calendar1 | '{"version":"https://jsonfeed.org/version/1.1","items":[{"id":"1","summary":"Test Event 1"},{"id":"2","summary":"Test Event 2","content_text":"Test Description 2"}]}' + calendar2 | '{"version":"https://jsonfeed.org/version/1.1","items":[{"id":"https://www.abc.net.au/news/2021-03-04/gold-coast-needs-6,500-new-homes-a-year-housing-crisis/13214856","summary":"The Gold Coast needs 6,500 new homes a year, but where can they be built?","content_html":"\\n \\n

The famous coastal city is fast running out of greenfield land to house its growing population, but the community is opposed to higher-density developments in the city.

\\n \\n","date_published":"20210304T055223Z","url":"https://www.abc.net.au/news/2021-03-04/gold-coast-needs-6,500-new-homes-a-year-housing-crisis/13214856"}],"title":"Just In","feed_url":"https://www.abc.net.au/news/feed/51120/rss.xml","home_page_url":"https://www.abc.net.au/news/justin/"}' + } +} diff --git a/src/test/resources/samples/justin.ics b/src/test/resources/samples/justin.ics index 70e0d01..857e753 100644 --- a/src/test/resources/samples/justin.ics +++ b/src/test/resources/samples/justin.ics @@ -11,7 +11,7 @@ LAST-MODIFIED:20210304T055223Z BEGIN:VJOURNAL UID:https://www.abc.net.au/news/2021-03-04/gold-coast-needs-6\,500-new-homes-a-year-housing-crisis/13214856 SUMMARY:The Gold Coast needs 6\,500 new homes a year\, but where can they be built? -DESCRIPTION:\n \n

The famous coastal city is fast running out of greenfield land to house its growing population\, but the community is opposed to higher-density developments in the city.

\n \n +STYLED-DESCRIPTION;VALUE=TEXT:\n \n

The famous coastal city is fast running out of greenfield land to house its growing population\, but the community is opposed to higher-density developments in the city.

\n \n CATEGORIES:Housing Industry,Rental Housing,Housing,Agribusiness DTSTAMP:20210304T055223Z URL:https://www.abc.net.au/news/2021-03-04/gold-coast-needs-6,500-new-homes-a-year-housing-crisis/13214856 From e38ad7f64cf46bf49e77b904bf21263d8fe8790e Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Sun, 7 Nov 2021 10:24:25 +1100 Subject: [PATCH 2/8] Updated dependencies --- .gitignore | 2 +- README.md | 2 +- build.gradle | 18 ++++++++++-------- gradle.properties | 7 ++++--- .../ical4j/json/AbstractSerializerTest.groovy | 2 +- .../jscalendar/JSGroupSerializerTest.groovy | 2 +- src/test/resources/samples/jcal/1.ics | 2 +- src/test/resources/samples/jcal/1.json | 2 +- 8 files changed, 20 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 4656dfc..f9bb5ca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -ical4j-json.iml +ical4j-serializer.iml .idea .gradle build diff --git a/README.md b/README.md index a7dc1fd..720b824 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ String serialized = mapper.writeValueAsString(calendar); Result: ``` -["vcalendar",[["prodid",{},"text","-//Ben Fortuna//iCal4j 1.0//EN"],["version",{},"text","2.0"],["uid",{},"text","123"]],[["vevent",[["uid",{},"text","1"],["summary",{},"text","Test Event 1"],["dtstart",{"value":"date"},"date","20090810"],["action",{},"text","DISPLAY"],["attach",{"encoding":"base64","value":"binary"},"binary","..."]],[]],["vevent",[["uid",{},"text","2"],["summary",{},"text","Test Event 2"],["dtstart",{"value":"date"},"date","20100810"]],[]]]] +["vcalendar",[["prodid",{},"text","-//Ben Fortuna//iCal4j 3.1//EN"],["version",{},"text","2.0"],["uid",{},"text","123"]],[["vevent",[["uid",{},"text","1"],["summary",{},"text","Test Event 1"],["dtstart",{"value":"date"},"date","20090810"],["action",{},"text","DISPLAY"],["attach",{"encoding":"base64","value":"binary"},"binary","..."]],[]],["vevent",[["uid",{},"text","2"],["summary",{},"text","Test Event 2"],["dtstart",{"value":"date"},"date","20100810"]],[]]]] ``` diff --git a/build.gradle b/build.gradle index fd0b2d7..66634bc 100644 --- a/build.gradle +++ b/build.gradle @@ -18,11 +18,12 @@ targetCompatibility = 1.8 dependencies { api "org.mnode.ical4j:ical4j:$ical4jVersion", "org.mnode.ical4j:ical4j-vcard:$ical4jVCardVersion", - "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion" + "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion", + "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:$jacksonVersion" testCompile "org.codehaus.groovy:groovy:$groovyVersion" - testImplementation platform("org.spockframework:spock-bom:2.0-M4-groovy-3.0"), + testImplementation platform("org.spockframework:spock-bom:$spockVersion"), "org.spockframework:spock-core", "org.slf4j:slf4j-log4j12:$slf4jVersion" } @@ -34,9 +35,10 @@ test { javadoc { options { links 'https://docs.oracle.com/en/java/javase/11/docs/api/', - 'http://ical4j.github.io/docs/ical4j/api/4.0.0-alpha6/', - 'http://fasterxml.github.io/jackson-core/javadoc/2.12/', - 'http://fasterxml.github.io/jackson-databind/javadoc/2.12/' + 'http://ical4j.github.io/docs/ical4j/api/3.1.0/', + 'http://fasterxml.github.io/jackson-core/javadoc/2.13/', + 'http://fasterxml.github.io/jackson-databind/javadoc/2.13/', + 'http://fasterxml.github.io/jackson-dataformat-xml/javadoc/2.13/' } } @@ -75,9 +77,9 @@ publishing { asNode().appendNode('url', 'http://ical4j.github.io') def scmNode = asNode().appendNode('scm') - scmNode.appendNode('url', 'https://github.com/ical4j/ical4j-json') - scmNode.appendNode('connection', 'scm:git@github.com:ical4j/ical4j-json.git') - scmNode.appendNode('developerConnection', 'scm:git@github.com:ical4j/ical4j-json.git') + scmNode.appendNode('url', 'https://github.com/ical4j/ical4j-serializer') + scmNode.appendNode('connection', 'scm:git@github.com:ical4j/ical4j-serializer.git') + scmNode.appendNode('developerConnection', 'scm:git@github.com:ical4j/ical4j-serializer.git') def licenseNode = asNode().appendNode('licenses').appendNode('license') licenseNode.appendNode('name', 'iCal4j - License') diff --git a/gradle.properties b/gradle.properties index 5146b48..52aacd6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,6 @@ ical4jVersion = 3.1.1 ical4jVCardVersion = 1.0.6 -jacksonVersion = 2.12.1 -groovyVersion = 3.0.7 -slf4jVersion = 1.7.30 +jacksonVersion = 2.13.0 +groovyVersion = 3.0.8 +slf4jVersion = 1.7.32 +spockVersion = 2.0-groovy-3.0 diff --git a/src/test/groovy/org/mnode/ical4j/json/AbstractSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/json/AbstractSerializerTest.groovy index c664648..c57a49c 100644 --- a/src/test/groovy/org/mnode/ical4j/json/AbstractSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/json/AbstractSerializerTest.groovy @@ -60,7 +60,7 @@ class AbstractSerializerTest extends Specification { } calendar1 = builder.calendar() { - prodid '-//Ben Fortuna//iCal4j 1.0//EN' + prodid '-//Ben Fortuna//iCal4j 3.1//EN' version '2.0' uid '123' vevent(event1) diff --git a/src/test/groovy/org/mnode/ical4j/json/jscalendar/JSGroupSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/json/jscalendar/JSGroupSerializerTest.groovy index 3af3df8..1f3958c 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jscalendar/JSGroupSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/json/jscalendar/JSGroupSerializerTest.groovy @@ -23,7 +23,7 @@ class JSGroupSerializerTest extends AbstractSerializerTest { where: calendar | expectedSerialized - calendar1 | '{"@type":"jsgroup","prodid":"-//Ben Fortuna//iCal4j 1.0//EN","uid":"123"}' + calendar1 | '{"@type":"jsgroup","prodid":"-//Ben Fortuna//iCal4j 3.1//EN","uid":"123"}' calendar2 | '{"@type":"jsgroup","prodid":"-//ABC Corporation//NONSGML My Product//EN","uid":"1"}' } } diff --git a/src/test/resources/samples/jcal/1.ics b/src/test/resources/samples/jcal/1.ics index 2eb267b..4f2709d 100644 --- a/src/test/resources/samples/jcal/1.ics +++ b/src/test/resources/samples/jcal/1.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Ben Fortuna//iCal4j 1.0//EN +PRODID:-//Ben Fortuna//iCal4j 3.1//EN VERSION:2.0 UID:123 SOURCE;VALUE=URI:https://www.abc.net.au/news/feed/51120/rss.xml diff --git a/src/test/resources/samples/jcal/1.json b/src/test/resources/samples/jcal/1.json index e789cf1..fb3827d 100644 --- a/src/test/resources/samples/jcal/1.json +++ b/src/test/resources/samples/jcal/1.json @@ -5,7 +5,7 @@ "prodid", {}, "string", - "-//Ben Fortuna//iCal4j 1.0//EN" + "-//Ben Fortuna//iCal4j 3.1//EN" ], [ "version", From 99c7d27466d0bdcfd4e057a7b32bc9fcd234b546 Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Sun, 7 Nov 2021 10:30:01 +1100 Subject: [PATCH 3/8] Refactoring to reflect change of library name --- bnd.bnd | 4 ++-- .../org/mnode/ical4j/{json => serializer}/JCalDecoder.java | 2 +- .../org/mnode/ical4j/{json => serializer}/JCalEncoder.java | 2 +- .../org/mnode/ical4j/{json => serializer}/JCalMapper.java | 2 +- .../mnode/ical4j/{json => serializer}/JCalSerializer.java | 2 +- .../org/mnode/ical4j/{json => serializer}/JCardMapper.java | 2 +- .../mnode/ical4j/{json => serializer}/JCardSerializer.java | 2 +- .../org/mnode/ical4j/{json => serializer}/JsonBuilder.java | 2 +- .../org/mnode/ical4j/{json => serializer}/JsonMapper.java | 2 +- .../ical4j/{json => serializer}/jot/AbstractJotBuilder.java | 4 ++-- .../{json => serializer}/jot/AbstractJotCalMapper.java | 4 ++-- .../{json => serializer}/jot/AbstractJotCardMapper.java | 4 ++-- .../ical4j/{json => serializer}/jot/CalendarBuilder.java | 2 +- .../mnode/ical4j/{json => serializer}/jot/CardBuilder.java | 2 +- .../ical4j/{json => serializer}/jot/ComponentBuilder.java | 2 +- .../ical4j/{json => serializer}/jot/JotAlarmMapper.java | 2 +- .../ical4j/{json => serializer}/jot/JotAlarmSerializer.java | 2 +- .../{json => serializer}/jot/JotAvailabilityMapper.java | 2 +- .../{json => serializer}/jot/JotAvailabilitySerializer.java | 2 +- .../ical4j/{json => serializer}/jot/JotAvailableMapper.java | 2 +- .../{json => serializer}/jot/JotAvailableSerializer.java | 2 +- .../ical4j/{json => serializer}/jot/JotCalendarMapper.java | 2 +- .../{json => serializer}/jot/JotCalendarSerializer.java | 2 +- .../mnode/ical4j/{json => serializer}/jot/JotCardMapper.java | 2 +- .../ical4j/{json => serializer}/jot/JotCardSerializer.java | 2 +- .../ical4j/{json => serializer}/jot/JotEventMapper.java | 2 +- .../ical4j/{json => serializer}/jot/JotEventSerializer.java | 2 +- .../ical4j/{json => serializer}/jot/JotFreeBusyMapper.java | 2 +- .../{json => serializer}/jot/JotFreeBusySerializer.java | 2 +- .../ical4j/{json => serializer}/jot/JotJournalMapper.java | 2 +- .../{json => serializer}/jot/JotJournalSerializer.java | 2 +- .../mnode/ical4j/{json => serializer}/jot/JotToDoMapper.java | 2 +- .../ical4j/{json => serializer}/jot/JotToDoSerializer.java | 2 +- .../ical4j/{json => serializer}/jot/OrganizerBuilder.java | 2 +- .../jscalendar/AbstractJSCalendarBuilder.java | 4 ++-- .../{json => serializer}/jscalendar/JSEventBuilder.java | 2 +- .../{json => serializer}/jscalendar/JSEventSerializer.java | 2 +- .../{json => serializer}/jscalendar/JSGroupBuilder.java | 2 +- .../{json => serializer}/jscalendar/JSGroupSerializer.java | 2 +- .../{json => serializer}/jscalendar/JSTaskBuilder.java | 2 +- .../{json => serializer}/jscalendar/JSTaskSerializer.java | 2 +- .../ical4j/{json => serializer}/jscalendar/LinkBuilder.java | 2 +- .../{json => serializer}/jscalendar/LocationBuilder.java | 2 +- .../jscalendar/VirtualLocationBuilder.java | 2 +- .../jscontact/AbstractJSContactBuilder.java | 4 ++-- .../ical4j/{json => serializer}/jscontact/JSCardBuilder.java | 2 +- .../{json => serializer}/jscontact/JSCardGroupBuilder.java | 2 +- .../jscontact/JSCardGroupSerializer.java | 2 +- .../{json => serializer}/jscontact/JSCardSerializer.java | 2 +- .../{json => serializer}/jsonfeed/AbstractFeedBuilder.java | 4 ++-- .../{json => serializer}/jsonfeed/CalendarBuilder.java | 2 +- .../{json => serializer}/jsonfeed/ComponentBuilder.java | 2 +- .../jsonfeed/JSONFeedCalendarSerializer.java | 2 +- .../{json => serializer}/schema/AbstractSchemaBuilder.java | 4 ++-- .../schema/AbstractSchemaCalendarSerializer.java | 2 +- .../schema/AbstractSchemaCardSerializer.java | 2 +- .../{json => serializer}/schema/SchemaActionBuilder.java | 2 +- .../{json => serializer}/schema/SchemaActionSerializer.java | 2 +- .../schema/SchemaCreativeWorkBuilder.java | 2 +- .../schema/SchemaCreativeWorkSerializer.java | 2 +- .../{json => serializer}/schema/SchemaEventBuilder.java | 2 +- .../{json => serializer}/schema/SchemaEventSerializer.java | 2 +- .../schema/SchemaOrganizationBuilder.java | 2 +- .../schema/SchemaOrganizationSerializer.java | 2 +- .../{json => serializer}/schema/SchemaPersonBuilder.java | 2 +- .../{json => serializer}/schema/SchemaPersonSerializer.java | 2 +- .../{json => serializer}/schema/SchemaPlaceBuilder.java | 2 +- .../{json => serializer}/schema/SchemaPlaceSerializer.java | 2 +- .../schema/SchemaPostalAddressBuilder.java | 2 +- .../{json => serializer}/schema/SchemaScheduleBuilder.java | 2 +- .../{json => serializer}/schema/SchemaServiceBuilder.java | 2 +- .../{json => serializer}/schema/SchemaServiceSerializer.java | 2 +- .../{json => serializer}/AbstractSerializerTest.groovy | 2 +- .../mnode/ical4j/{json => serializer}/JCalMapperTest.groovy | 2 +- .../ical4j/{json => serializer}/JCalSerializerTest.groovy | 4 ++-- .../mnode/ical4j/{json => serializer}/JCardMapperTest.groovy | 2 +- .../ical4j/{json => serializer}/JCardSerializerTest.groovy | 2 +- .../{json => serializer}/jot/JotAlarmMapperTest.groovy | 2 +- .../{json => serializer}/jot/JotAlarmSerializerTest.groovy | 4 ++-- .../jot/JotAvailabilityMapperTest.groovy | 2 +- .../jot/JotAvailabilitySerializerTest.groovy | 4 ++-- .../{json => serializer}/jot/JotAvailableMapperTest.groovy | 2 +- .../jot/JotAvailableSerializerTest.groovy | 4 ++-- .../{json => serializer}/jot/JotCalendarMapperTest.groovy | 2 +- .../jot/JotCalendarSerializerTest.groovy | 4 ++-- .../ical4j/{json => serializer}/jot/JotCardMapperTest.groovy | 2 +- .../{json => serializer}/jot/JotCardSerializerTest.groovy | 4 ++-- .../{json => serializer}/jot/JotEventMapperTest.groovy | 2 +- .../{json => serializer}/jot/JotEventSerializerTest.groovy | 4 ++-- .../{json => serializer}/jot/JotFreeBusyMapperTest.groovy | 2 +- .../jot/JotFreeBusySerializerTest.groovy | 4 ++-- .../{json => serializer}/jot/JotJournalMapperTest.groovy | 2 +- .../{json => serializer}/jot/JotJournalSerializerTest.groovy | 4 ++-- .../ical4j/{json => serializer}/jot/JotToDoMapperTest.groovy | 2 +- .../{json => serializer}/jot/JotToDoSerializerTest.groovy | 4 ++-- .../jscalendar/JSEventSerializerTest.groovy | 5 ++--- .../jscalendar/JSGroupSerializerTest.groovy | 5 ++--- .../jscalendar/JSTaskSerializerTest.groovy | 4 ++-- .../jsonfeed/JSONFeedCalendarSerializerTest.groovy | 4 ++-- .../schema/SchemaActionSerializerTest.groovy | 4 ++-- .../schema/SchemaCreativeWorkSerializerTest.groovy | 4 ++-- .../schema/SchemaEventSerializerTest.groovy | 4 ++-- .../schema/SchemaOrganizationSerializerTest.groovy | 4 ++-- .../schema/SchemaPersonSerializerTest.groovy | 4 ++-- .../schema/SchemaPlaceSerializerTest.groovy | 4 ++-- .../schema/SchemaServiceSerializerTest.groovy | 4 ++-- 106 files changed, 135 insertions(+), 137 deletions(-) rename src/main/java/org/mnode/ical4j/{json => serializer}/JCalDecoder.java (97%) rename src/main/java/org/mnode/ical4j/{json => serializer}/JCalEncoder.java (97%) rename src/main/java/org/mnode/ical4j/{json => serializer}/JCalMapper.java (99%) rename src/main/java/org/mnode/ical4j/{json => serializer}/JCalSerializer.java (99%) rename src/main/java/org/mnode/ical4j/{json => serializer}/JCardMapper.java (98%) rename src/main/java/org/mnode/ical4j/{json => serializer}/JCardSerializer.java (98%) rename src/main/java/org/mnode/ical4j/{json => serializer}/JsonBuilder.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/JsonMapper.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/AbstractJotBuilder.java (89%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/AbstractJotCalMapper.java (97%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/AbstractJotCardMapper.java (97%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/CalendarBuilder.java (95%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/CardBuilder.java (91%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/ComponentBuilder.java (97%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotAlarmMapper.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotAlarmSerializer.java (95%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotAvailabilityMapper.java (97%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotAvailabilitySerializer.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotAvailableMapper.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotAvailableSerializer.java (95%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotCalendarMapper.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotCalendarSerializer.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotCardMapper.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotCardSerializer.java (94%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotEventMapper.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotEventSerializer.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotFreeBusyMapper.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotFreeBusySerializer.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotJournalMapper.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotJournalSerializer.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotToDoMapper.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/JotToDoSerializer.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jot/OrganizerBuilder.java (93%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jscalendar/AbstractJSCalendarBuilder.java (90%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jscalendar/JSEventBuilder.java (89%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jscalendar/JSEventSerializer.java (95%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jscalendar/JSGroupBuilder.java (92%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jscalendar/JSGroupSerializer.java (95%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jscalendar/JSTaskBuilder.java (89%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jscalendar/JSTaskSerializer.java (95%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jscalendar/LinkBuilder.java (72%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jscalendar/LocationBuilder.java (89%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jscalendar/VirtualLocationBuilder.java (76%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jscontact/AbstractJSContactBuilder.java (89%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jscontact/JSCardBuilder.java (87%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jscontact/JSCardGroupBuilder.java (87%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jscontact/JSCardGroupSerializer.java (95%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jscontact/JSCardSerializer.java (95%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jsonfeed/AbstractFeedBuilder.java (91%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jsonfeed/CalendarBuilder.java (97%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jsonfeed/ComponentBuilder.java (97%) rename src/main/java/org/mnode/ical4j/{json => serializer}/jsonfeed/JSONFeedCalendarSerializer.java (94%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/AbstractSchemaBuilder.java (93%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/AbstractSchemaCalendarSerializer.java (94%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/AbstractSchemaCardSerializer.java (93%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/SchemaActionBuilder.java (95%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/SchemaActionSerializer.java (91%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/SchemaCreativeWorkBuilder.java (94%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/SchemaCreativeWorkSerializer.java (91%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/SchemaEventBuilder.java (95%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/SchemaEventSerializer.java (91%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/SchemaOrganizationBuilder.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/SchemaOrganizationSerializer.java (91%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/SchemaPersonBuilder.java (96%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/SchemaPersonSerializer.java (90%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/SchemaPlaceBuilder.java (94%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/SchemaPlaceSerializer.java (90%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/SchemaPostalAddressBuilder.java (94%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/SchemaScheduleBuilder.java (90%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/SchemaServiceBuilder.java (94%) rename src/main/java/org/mnode/ical4j/{json => serializer}/schema/SchemaServiceSerializer.java (92%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/AbstractSerializerTest.groovy (98%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/JCalMapperTest.groovy (95%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/JCalSerializerTest.groovy (97%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/JCardMapperTest.groovy (95%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/JCardSerializerTest.groovy (95%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotAlarmMapperTest.groovy (98%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotAlarmSerializerTest.groovy (88%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotAvailabilityMapperTest.groovy (97%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotAvailabilitySerializerTest.groovy (89%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotAvailableMapperTest.groovy (97%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotAvailableSerializerTest.groovy (89%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotCalendarMapperTest.groovy (98%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotCalendarSerializerTest.groovy (91%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotCardMapperTest.groovy (95%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotCardSerializerTest.groovy (88%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotEventMapperTest.groovy (99%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotEventSerializerTest.groovy (96%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotFreeBusyMapperTest.groovy (98%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotFreeBusySerializerTest.groovy (88%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotJournalMapperTest.groovy (98%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotJournalSerializerTest.groovy (88%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotToDoMapperTest.groovy (98%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jot/JotToDoSerializerTest.groovy (88%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jscalendar/JSEventSerializerTest.groovy (84%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jscalendar/JSGroupSerializerTest.groovy (86%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jscalendar/JSTaskSerializerTest.groovy (87%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/jsonfeed/JSONFeedCalendarSerializerTest.groovy (94%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/schema/SchemaActionSerializerTest.groovy (88%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/schema/SchemaCreativeWorkSerializerTest.groovy (89%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/schema/SchemaEventSerializerTest.groovy (90%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/schema/SchemaOrganizationSerializerTest.groovy (92%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/schema/SchemaPersonSerializerTest.groovy (91%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/schema/SchemaPlaceSerializerTest.groovy (88%) rename src/test/groovy/org/mnode/ical4j/{json => serializer}/schema/SchemaServiceSerializerTest.groovy (89%) diff --git a/bnd.bnd b/bnd.bnd index 6e3c2a1..a2023bd 100644 --- a/bnd.bnd +++ b/bnd.bnd @@ -1,3 +1,3 @@ -Export-Package: org.mnode.ical4j.json -Automatic-Module-Name: org.mnode.ical4j.json +Export-Package: org.mnode.ical4j.serializer +Automatic-Module-Name: org.mnode.ical4j.serializer Bundle-License: https://raw.githubusercontent.com/ical4j/ical4j/master/LICENSE.txt diff --git a/src/main/java/org/mnode/ical4j/json/JCalDecoder.java b/src/main/java/org/mnode/ical4j/serializer/JCalDecoder.java similarity index 97% rename from src/main/java/org/mnode/ical4j/json/JCalDecoder.java rename to src/main/java/org/mnode/ical4j/serializer/JCalDecoder.java index fd81d24..7a47e32 100644 --- a/src/main/java/org/mnode/ical4j/json/JCalDecoder.java +++ b/src/main/java/org/mnode/ical4j/serializer/JCalDecoder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json; +package org.mnode.ical4j.serializer; import net.fortuna.ical4j.model.ZoneOffsetAdapter; import org.apache.commons.codec.StringDecoder; diff --git a/src/main/java/org/mnode/ical4j/json/JCalEncoder.java b/src/main/java/org/mnode/ical4j/serializer/JCalEncoder.java similarity index 97% rename from src/main/java/org/mnode/ical4j/json/JCalEncoder.java rename to src/main/java/org/mnode/ical4j/serializer/JCalEncoder.java index 1085f80..a7e2295 100644 --- a/src/main/java/org/mnode/ical4j/json/JCalEncoder.java +++ b/src/main/java/org/mnode/ical4j/serializer/JCalEncoder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json; +package org.mnode.ical4j.serializer; import org.apache.commons.codec.StringEncoder; diff --git a/src/main/java/org/mnode/ical4j/json/JCalMapper.java b/src/main/java/org/mnode/ical4j/serializer/JCalMapper.java similarity index 99% rename from src/main/java/org/mnode/ical4j/json/JCalMapper.java rename to src/main/java/org/mnode/ical4j/serializer/JCalMapper.java index 2216127..a7dac01 100644 --- a/src/main/java/org/mnode/ical4j/json/JCalMapper.java +++ b/src/main/java/org/mnode/ical4j/serializer/JCalMapper.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json; +package org.mnode.ical4j.serializer; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; diff --git a/src/main/java/org/mnode/ical4j/json/JCalSerializer.java b/src/main/java/org/mnode/ical4j/serializer/JCalSerializer.java similarity index 99% rename from src/main/java/org/mnode/ical4j/json/JCalSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/JCalSerializer.java index af5c314..9277c96 100644 --- a/src/main/java/org/mnode/ical4j/json/JCalSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/JCalSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json; +package org.mnode.ical4j.serializer; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/JCardMapper.java b/src/main/java/org/mnode/ical4j/serializer/JCardMapper.java similarity index 98% rename from src/main/java/org/mnode/ical4j/json/JCardMapper.java rename to src/main/java/org/mnode/ical4j/serializer/JCardMapper.java index e1d3fd9..685cf8e 100644 --- a/src/main/java/org/mnode/ical4j/json/JCardMapper.java +++ b/src/main/java/org/mnode/ical4j/serializer/JCardMapper.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json; +package org.mnode.ical4j.serializer; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; diff --git a/src/main/java/org/mnode/ical4j/json/JCardSerializer.java b/src/main/java/org/mnode/ical4j/serializer/JCardSerializer.java similarity index 98% rename from src/main/java/org/mnode/ical4j/json/JCardSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/JCardSerializer.java index c5ddfb3..91e77e1 100644 --- a/src/main/java/org/mnode/ical4j/json/JCardSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/JCardSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json; +package org.mnode.ical4j.serializer; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/JsonBuilder.java b/src/main/java/org/mnode/ical4j/serializer/JsonBuilder.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/JsonBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/JsonBuilder.java index d69649f..194694b 100644 --- a/src/main/java/org/mnode/ical4j/json/JsonBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/JsonBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json; +package org.mnode.ical4j.serializer; import com.fasterxml.jackson.databind.node.ObjectNode; import net.fortuna.ical4j.model.Property; diff --git a/src/main/java/org/mnode/ical4j/json/JsonMapper.java b/src/main/java/org/mnode/ical4j/serializer/JsonMapper.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/JsonMapper.java rename to src/main/java/org/mnode/ical4j/serializer/JsonMapper.java index 12dc569..2390812 100644 --- a/src/main/java/org/mnode/ical4j/json/JsonMapper.java +++ b/src/main/java/org/mnode/ical4j/serializer/JsonMapper.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json; +package org.mnode.ical4j.serializer; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; diff --git a/src/main/java/org/mnode/ical4j/json/jot/AbstractJotBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jot/AbstractJotBuilder.java similarity index 89% rename from src/main/java/org/mnode/ical4j/json/jot/AbstractJotBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jot/AbstractJotBuilder.java index 4ba874c..7cc0d51 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/AbstractJotBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/AbstractJotBuilder.java @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.mnode.ical4j.json.JsonBuilder; +import org.mnode.ical4j.serializer.JsonBuilder; public abstract class AbstractJotBuilder implements JsonBuilder { diff --git a/src/main/java/org/mnode/ical4j/json/jot/AbstractJotCalMapper.java b/src/main/java/org/mnode/ical4j/serializer/jot/AbstractJotCalMapper.java similarity index 97% rename from src/main/java/org/mnode/ical4j/json/jot/AbstractJotCalMapper.java rename to src/main/java/org/mnode/ical4j/serializer/jot/AbstractJotCalMapper.java index 8c060cc..2973f13 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/AbstractJotCalMapper.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/AbstractJotCalMapper.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; @@ -6,7 +6,7 @@ import net.fortuna.ical4j.data.DefaultParameterFactorySupplier; import net.fortuna.ical4j.data.DefaultPropertyFactorySupplier; import net.fortuna.ical4j.model.*; -import org.mnode.ical4j.json.JsonMapper; +import org.mnode.ical4j.serializer.JsonMapper; import java.io.IOException; import java.net.URISyntaxException; diff --git a/src/main/java/org/mnode/ical4j/json/jot/AbstractJotCardMapper.java b/src/main/java/org/mnode/ical4j/serializer/jot/AbstractJotCardMapper.java similarity index 97% rename from src/main/java/org/mnode/ical4j/json/jot/AbstractJotCardMapper.java rename to src/main/java/org/mnode/ical4j/serializer/jot/AbstractJotCardMapper.java index 9f46bc1..5819398 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/AbstractJotCardMapper.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/AbstractJotCardMapper.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; @@ -8,7 +8,7 @@ import net.fortuna.ical4j.vcard.Property; import net.fortuna.ical4j.vcard.PropertyFactoryRegistry; import org.apache.commons.codec.DecoderException; -import org.mnode.ical4j.json.JsonMapper; +import org.mnode.ical4j.serializer.JsonMapper; import java.io.IOException; import java.net.URISyntaxException; diff --git a/src/main/java/org/mnode/ical4j/json/jot/CalendarBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jot/CalendarBuilder.java similarity index 95% rename from src/main/java/org/mnode/ical4j/json/jot/CalendarBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jot/CalendarBuilder.java index 3db8b58..3b7a2ab 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/CalendarBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/CalendarBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/jot/CardBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jot/CardBuilder.java similarity index 91% rename from src/main/java/org/mnode/ical4j/json/jot/CardBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jot/CardBuilder.java index 95cf1f5..92a5ed6 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/CardBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/CardBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/jot/ComponentBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jot/ComponentBuilder.java similarity index 97% rename from src/main/java/org/mnode/ical4j/json/jot/ComponentBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jot/ComponentBuilder.java index b2971c8..cc52e2c 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/ComponentBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/ComponentBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotAlarmMapper.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotAlarmMapper.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/jot/JotAlarmMapper.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotAlarmMapper.java index 610d50c..7949cb0 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotAlarmMapper.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotAlarmMapper.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotAlarmSerializer.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotAlarmSerializer.java similarity index 95% rename from src/main/java/org/mnode/ical4j/json/jot/JotAlarmSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotAlarmSerializer.java index ee9c74b..c35908f 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotAlarmSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotAlarmSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotAvailabilityMapper.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotAvailabilityMapper.java similarity index 97% rename from src/main/java/org/mnode/ical4j/json/jot/JotAvailabilityMapper.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotAvailabilityMapper.java index 98bf481..442261f 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotAvailabilityMapper.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotAvailabilityMapper.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotAvailabilitySerializer.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotAvailabilitySerializer.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/jot/JotAvailabilitySerializer.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotAvailabilitySerializer.java index 18186b9..c7ab589 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotAvailabilitySerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotAvailabilitySerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotAvailableMapper.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotAvailableMapper.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/jot/JotAvailableMapper.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotAvailableMapper.java index a2042c5..d41b844 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotAvailableMapper.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotAvailableMapper.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotAvailableSerializer.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotAvailableSerializer.java similarity index 95% rename from src/main/java/org/mnode/ical4j/json/jot/JotAvailableSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotAvailableSerializer.java index 801d241..fabcd9d 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotAvailableSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotAvailableSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotCalendarMapper.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotCalendarMapper.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/jot/JotCalendarMapper.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotCalendarMapper.java index 2a5cde1..b280fc6 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotCalendarMapper.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotCalendarMapper.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotCalendarSerializer.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotCalendarSerializer.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/jot/JotCalendarSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotCalendarSerializer.java index b40f7e1..03fad0c 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotCalendarSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotCalendarSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotCardMapper.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotCardMapper.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/jot/JotCardMapper.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotCardMapper.java index 6058d20..904de6d 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotCardMapper.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotCardMapper.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotCardSerializer.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotCardSerializer.java similarity index 94% rename from src/main/java/org/mnode/ical4j/json/jot/JotCardSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotCardSerializer.java index 3e509db..07dee6e 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotCardSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotCardSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotEventMapper.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotEventMapper.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/jot/JotEventMapper.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotEventMapper.java index a1eb2e2..d4789b3 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotEventMapper.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotEventMapper.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotEventSerializer.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotEventSerializer.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/jot/JotEventSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotEventSerializer.java index 175278b..566600a 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotEventSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotEventSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotFreeBusyMapper.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotFreeBusyMapper.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/jot/JotFreeBusyMapper.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotFreeBusyMapper.java index cb71753..f00f20c 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotFreeBusyMapper.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotFreeBusyMapper.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotFreeBusySerializer.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotFreeBusySerializer.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/jot/JotFreeBusySerializer.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotFreeBusySerializer.java index 2937ca3..573c934 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotFreeBusySerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotFreeBusySerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotJournalMapper.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotJournalMapper.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/jot/JotJournalMapper.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotJournalMapper.java index 6439b2f..9e6f0e8 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotJournalMapper.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotJournalMapper.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotJournalSerializer.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotJournalSerializer.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/jot/JotJournalSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotJournalSerializer.java index 351eeae..dbdd0d0 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotJournalSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotJournalSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotToDoMapper.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotToDoMapper.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/jot/JotToDoMapper.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotToDoMapper.java index 355f459..543638f 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotToDoMapper.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotToDoMapper.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; diff --git a/src/main/java/org/mnode/ical4j/json/jot/JotToDoSerializer.java b/src/main/java/org/mnode/ical4j/serializer/jot/JotToDoSerializer.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/jot/JotToDoSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/jot/JotToDoSerializer.java index 72542b9..9c46f89 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/JotToDoSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/JotToDoSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/jot/OrganizerBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jot/OrganizerBuilder.java similarity index 93% rename from src/main/java/org/mnode/ical4j/json/jot/OrganizerBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jot/OrganizerBuilder.java index 0e18dc6..a9c70e4 100644 --- a/src/main/java/org/mnode/ical4j/json/jot/OrganizerBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jot/OrganizerBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot; +package org.mnode.ical4j.serializer.jot; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/jscalendar/AbstractJSCalendarBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jscalendar/AbstractJSCalendarBuilder.java similarity index 90% rename from src/main/java/org/mnode/ical4j/json/jscalendar/AbstractJSCalendarBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jscalendar/AbstractJSCalendarBuilder.java index cd6c54b..1338f17 100644 --- a/src/main/java/org/mnode/ical4j/json/jscalendar/AbstractJSCalendarBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jscalendar/AbstractJSCalendarBuilder.java @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.jscalendar; +package org.mnode.ical4j.serializer.jscalendar; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.mnode.ical4j.json.JsonBuilder; +import org.mnode.ical4j.serializer.JsonBuilder; public abstract class AbstractJSCalendarBuilder implements JsonBuilder { diff --git a/src/main/java/org/mnode/ical4j/json/jscalendar/JSEventBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jscalendar/JSEventBuilder.java similarity index 89% rename from src/main/java/org/mnode/ical4j/json/jscalendar/JSEventBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jscalendar/JSEventBuilder.java index 2ef3fb0..eb42ca5 100644 --- a/src/main/java/org/mnode/ical4j/json/jscalendar/JSEventBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jscalendar/JSEventBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jscalendar; +package org.mnode.ical4j.serializer.jscalendar; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/jscalendar/JSEventSerializer.java b/src/main/java/org/mnode/ical4j/serializer/jscalendar/JSEventSerializer.java similarity index 95% rename from src/main/java/org/mnode/ical4j/json/jscalendar/JSEventSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/jscalendar/JSEventSerializer.java index 988ef6c..7f83f90 100644 --- a/src/main/java/org/mnode/ical4j/json/jscalendar/JSEventSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/jscalendar/JSEventSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jscalendar; +package org.mnode.ical4j.serializer.jscalendar; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/jscalendar/JSGroupBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jscalendar/JSGroupBuilder.java similarity index 92% rename from src/main/java/org/mnode/ical4j/json/jscalendar/JSGroupBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jscalendar/JSGroupBuilder.java index 24e5263..458f4eb 100644 --- a/src/main/java/org/mnode/ical4j/json/jscalendar/JSGroupBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jscalendar/JSGroupBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jscalendar; +package org.mnode.ical4j.serializer.jscalendar; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/jscalendar/JSGroupSerializer.java b/src/main/java/org/mnode/ical4j/serializer/jscalendar/JSGroupSerializer.java similarity index 95% rename from src/main/java/org/mnode/ical4j/json/jscalendar/JSGroupSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/jscalendar/JSGroupSerializer.java index ec49f3a..53d57d0 100644 --- a/src/main/java/org/mnode/ical4j/json/jscalendar/JSGroupSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/jscalendar/JSGroupSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jscalendar; +package org.mnode.ical4j.serializer.jscalendar; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/jscalendar/JSTaskBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jscalendar/JSTaskBuilder.java similarity index 89% rename from src/main/java/org/mnode/ical4j/json/jscalendar/JSTaskBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jscalendar/JSTaskBuilder.java index 01161d3..8af89e5 100644 --- a/src/main/java/org/mnode/ical4j/json/jscalendar/JSTaskBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jscalendar/JSTaskBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jscalendar; +package org.mnode.ical4j.serializer.jscalendar; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/jscalendar/JSTaskSerializer.java b/src/main/java/org/mnode/ical4j/serializer/jscalendar/JSTaskSerializer.java similarity index 95% rename from src/main/java/org/mnode/ical4j/json/jscalendar/JSTaskSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/jscalendar/JSTaskSerializer.java index 3f20aa0..bd1616e 100644 --- a/src/main/java/org/mnode/ical4j/json/jscalendar/JSTaskSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/jscalendar/JSTaskSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jscalendar; +package org.mnode.ical4j.serializer.jscalendar; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/jscalendar/LinkBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jscalendar/LinkBuilder.java similarity index 72% rename from src/main/java/org/mnode/ical4j/json/jscalendar/LinkBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jscalendar/LinkBuilder.java index d874f47..2576fff 100644 --- a/src/main/java/org/mnode/ical4j/json/jscalendar/LinkBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jscalendar/LinkBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jscalendar; +package org.mnode.ical4j.serializer.jscalendar; import java.net.URL; diff --git a/src/main/java/org/mnode/ical4j/json/jscalendar/LocationBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jscalendar/LocationBuilder.java similarity index 89% rename from src/main/java/org/mnode/ical4j/json/jscalendar/LocationBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jscalendar/LocationBuilder.java index ad74882..8526137 100644 --- a/src/main/java/org/mnode/ical4j/json/jscalendar/LocationBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jscalendar/LocationBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jscalendar; +package org.mnode.ical4j.serializer.jscalendar; import net.fortuna.ical4j.model.LocationType; diff --git a/src/main/java/org/mnode/ical4j/json/jscalendar/VirtualLocationBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jscalendar/VirtualLocationBuilder.java similarity index 76% rename from src/main/java/org/mnode/ical4j/json/jscalendar/VirtualLocationBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jscalendar/VirtualLocationBuilder.java index 0d01528..3fdbcde 100644 --- a/src/main/java/org/mnode/ical4j/json/jscalendar/VirtualLocationBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jscalendar/VirtualLocationBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jscalendar; +package org.mnode.ical4j.serializer.jscalendar; import java.net.URI; diff --git a/src/main/java/org/mnode/ical4j/json/jscontact/AbstractJSContactBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jscontact/AbstractJSContactBuilder.java similarity index 89% rename from src/main/java/org/mnode/ical4j/json/jscontact/AbstractJSContactBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jscontact/AbstractJSContactBuilder.java index 2c5e6b0..64f6b73 100644 --- a/src/main/java/org/mnode/ical4j/json/jscontact/AbstractJSContactBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jscontact/AbstractJSContactBuilder.java @@ -1,10 +1,10 @@ -package org.mnode.ical4j.json.jscontact; +package org.mnode.ical4j.serializer.jscontact; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import net.fortuna.ical4j.vcard.VCard; -import org.mnode.ical4j.json.JsonBuilder; +import org.mnode.ical4j.serializer.JsonBuilder; public abstract class AbstractJSContactBuilder implements JsonBuilder { diff --git a/src/main/java/org/mnode/ical4j/json/jscontact/JSCardBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jscontact/JSCardBuilder.java similarity index 87% rename from src/main/java/org/mnode/ical4j/json/jscontact/JSCardBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jscontact/JSCardBuilder.java index 516db7e..f3a9bc7 100644 --- a/src/main/java/org/mnode/ical4j/json/jscontact/JSCardBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jscontact/JSCardBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jscontact; +package org.mnode.ical4j.serializer.jscontact; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/jscontact/JSCardGroupBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jscontact/JSCardGroupBuilder.java similarity index 87% rename from src/main/java/org/mnode/ical4j/json/jscontact/JSCardGroupBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jscontact/JSCardGroupBuilder.java index ca5cf64..c4af9c0 100644 --- a/src/main/java/org/mnode/ical4j/json/jscontact/JSCardGroupBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jscontact/JSCardGroupBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jscontact; +package org.mnode.ical4j.serializer.jscontact; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/jscontact/JSCardGroupSerializer.java b/src/main/java/org/mnode/ical4j/serializer/jscontact/JSCardGroupSerializer.java similarity index 95% rename from src/main/java/org/mnode/ical4j/json/jscontact/JSCardGroupSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/jscontact/JSCardGroupSerializer.java index 207335d..fa46658 100644 --- a/src/main/java/org/mnode/ical4j/json/jscontact/JSCardGroupSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/jscontact/JSCardGroupSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jscontact; +package org.mnode.ical4j.serializer.jscontact; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/jscontact/JSCardSerializer.java b/src/main/java/org/mnode/ical4j/serializer/jscontact/JSCardSerializer.java similarity index 95% rename from src/main/java/org/mnode/ical4j/json/jscontact/JSCardSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/jscontact/JSCardSerializer.java index 876253c..a3f441c 100644 --- a/src/main/java/org/mnode/ical4j/json/jscontact/JSCardSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/jscontact/JSCardSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jscontact; +package org.mnode.ical4j.serializer.jscontact; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/jsonfeed/AbstractFeedBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jsonfeed/AbstractFeedBuilder.java similarity index 91% rename from src/main/java/org/mnode/ical4j/json/jsonfeed/AbstractFeedBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jsonfeed/AbstractFeedBuilder.java index 83c930c..934d961 100644 --- a/src/main/java/org/mnode/ical4j/json/jsonfeed/AbstractFeedBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jsonfeed/AbstractFeedBuilder.java @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.jsonfeed; +package org.mnode.ical4j.serializer.jsonfeed; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.mnode.ical4j.json.JsonBuilder; +import org.mnode.ical4j.serializer.JsonBuilder; public abstract class AbstractFeedBuilder implements JsonBuilder { diff --git a/src/main/java/org/mnode/ical4j/json/jsonfeed/CalendarBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jsonfeed/CalendarBuilder.java similarity index 97% rename from src/main/java/org/mnode/ical4j/json/jsonfeed/CalendarBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jsonfeed/CalendarBuilder.java index 7d3e812..56890e0 100644 --- a/src/main/java/org/mnode/ical4j/json/jsonfeed/CalendarBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jsonfeed/CalendarBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jsonfeed; +package org.mnode.ical4j.serializer.jsonfeed; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ArrayNode; diff --git a/src/main/java/org/mnode/ical4j/json/jsonfeed/ComponentBuilder.java b/src/main/java/org/mnode/ical4j/serializer/jsonfeed/ComponentBuilder.java similarity index 97% rename from src/main/java/org/mnode/ical4j/json/jsonfeed/ComponentBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/jsonfeed/ComponentBuilder.java index 8b63067..d064f9e 100644 --- a/src/main/java/org/mnode/ical4j/json/jsonfeed/ComponentBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/jsonfeed/ComponentBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jsonfeed; +package org.mnode.ical4j.serializer.jsonfeed; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/jsonfeed/JSONFeedCalendarSerializer.java b/src/main/java/org/mnode/ical4j/serializer/jsonfeed/JSONFeedCalendarSerializer.java similarity index 94% rename from src/main/java/org/mnode/ical4j/json/jsonfeed/JSONFeedCalendarSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/jsonfeed/JSONFeedCalendarSerializer.java index e242eaa..aa2c3d5 100644 --- a/src/main/java/org/mnode/ical4j/json/jsonfeed/JSONFeedCalendarSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/jsonfeed/JSONFeedCalendarSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jsonfeed; +package org.mnode.ical4j.serializer.jsonfeed; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/schema/AbstractSchemaBuilder.java b/src/main/java/org/mnode/ical4j/serializer/schema/AbstractSchemaBuilder.java similarity index 93% rename from src/main/java/org/mnode/ical4j/json/schema/AbstractSchemaBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/schema/AbstractSchemaBuilder.java index 100b0bc..1476f10 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/AbstractSchemaBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/AbstractSchemaBuilder.java @@ -1,10 +1,10 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import net.fortuna.ical4j.vcard.property.Address; -import org.mnode.ical4j.json.JsonBuilder; +import org.mnode.ical4j.serializer.JsonBuilder; public abstract class AbstractSchemaBuilder implements JsonBuilder { diff --git a/src/main/java/org/mnode/ical4j/json/schema/AbstractSchemaCalendarSerializer.java b/src/main/java/org/mnode/ical4j/serializer/schema/AbstractSchemaCalendarSerializer.java similarity index 94% rename from src/main/java/org/mnode/ical4j/json/schema/AbstractSchemaCalendarSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/schema/AbstractSchemaCalendarSerializer.java index 8ba8f59..6cc902f 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/AbstractSchemaCalendarSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/AbstractSchemaCalendarSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/schema/AbstractSchemaCardSerializer.java b/src/main/java/org/mnode/ical4j/serializer/schema/AbstractSchemaCardSerializer.java similarity index 93% rename from src/main/java/org/mnode/ical4j/json/schema/AbstractSchemaCardSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/schema/AbstractSchemaCardSerializer.java index 7775b98..f504aa2 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/AbstractSchemaCardSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/AbstractSchemaCardSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; diff --git a/src/main/java/org/mnode/ical4j/json/schema/SchemaActionBuilder.java b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaActionBuilder.java similarity index 95% rename from src/main/java/org/mnode/ical4j/json/schema/SchemaActionBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/schema/SchemaActionBuilder.java index d708b0f..1ba4a7e 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/SchemaActionBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaActionBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/schema/SchemaActionSerializer.java b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaActionSerializer.java similarity index 91% rename from src/main/java/org/mnode/ical4j/json/schema/SchemaActionSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/schema/SchemaActionSerializer.java index 646f020..358682c 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/SchemaActionSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaActionSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import net.fortuna.ical4j.model.component.VToDo; diff --git a/src/main/java/org/mnode/ical4j/json/schema/SchemaCreativeWorkBuilder.java b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaCreativeWorkBuilder.java similarity index 94% rename from src/main/java/org/mnode/ical4j/json/schema/SchemaCreativeWorkBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/schema/SchemaCreativeWorkBuilder.java index ea08a72..1159b14 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/SchemaCreativeWorkBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaCreativeWorkBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/schema/SchemaCreativeWorkSerializer.java b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaCreativeWorkSerializer.java similarity index 91% rename from src/main/java/org/mnode/ical4j/json/schema/SchemaCreativeWorkSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/schema/SchemaCreativeWorkSerializer.java index 3c41fba..49af387 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/SchemaCreativeWorkSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaCreativeWorkSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import net.fortuna.ical4j.model.component.VJournal; diff --git a/src/main/java/org/mnode/ical4j/json/schema/SchemaEventBuilder.java b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaEventBuilder.java similarity index 95% rename from src/main/java/org/mnode/ical4j/json/schema/SchemaEventBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/schema/SchemaEventBuilder.java index ff7715d..6ec8476 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/SchemaEventBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaEventBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/schema/SchemaEventSerializer.java b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaEventSerializer.java similarity index 91% rename from src/main/java/org/mnode/ical4j/json/schema/SchemaEventSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/schema/SchemaEventSerializer.java index 00b1609..b850533 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/SchemaEventSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaEventSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import net.fortuna.ical4j.model.component.VEvent; diff --git a/src/main/java/org/mnode/ical4j/json/schema/SchemaOrganizationBuilder.java b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaOrganizationBuilder.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/schema/SchemaOrganizationBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/schema/SchemaOrganizationBuilder.java index bcc2b6e..9bb152a 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/SchemaOrganizationBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaOrganizationBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/schema/SchemaOrganizationSerializer.java b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaOrganizationSerializer.java similarity index 91% rename from src/main/java/org/mnode/ical4j/json/schema/SchemaOrganizationSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/schema/SchemaOrganizationSerializer.java index 608094d..36d465a 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/SchemaOrganizationSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaOrganizationSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import net.fortuna.ical4j.vcard.VCard; diff --git a/src/main/java/org/mnode/ical4j/json/schema/SchemaPersonBuilder.java b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaPersonBuilder.java similarity index 96% rename from src/main/java/org/mnode/ical4j/json/schema/SchemaPersonBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/schema/SchemaPersonBuilder.java index cf0dea1..e05f73e 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/SchemaPersonBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaPersonBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/schema/SchemaPersonSerializer.java b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaPersonSerializer.java similarity index 90% rename from src/main/java/org/mnode/ical4j/json/schema/SchemaPersonSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/schema/SchemaPersonSerializer.java index 4482252..33c0ed5 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/SchemaPersonSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaPersonSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import net.fortuna.ical4j.vcard.VCard; diff --git a/src/main/java/org/mnode/ical4j/json/schema/SchemaPlaceBuilder.java b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaPlaceBuilder.java similarity index 94% rename from src/main/java/org/mnode/ical4j/json/schema/SchemaPlaceBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/schema/SchemaPlaceBuilder.java index 9175da7..3e125f3 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/SchemaPlaceBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaPlaceBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/schema/SchemaPlaceSerializer.java b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaPlaceSerializer.java similarity index 90% rename from src/main/java/org/mnode/ical4j/json/schema/SchemaPlaceSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/schema/SchemaPlaceSerializer.java index 0ee794d..5393be5 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/SchemaPlaceSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaPlaceSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import net.fortuna.ical4j.vcard.VCard; diff --git a/src/main/java/org/mnode/ical4j/json/schema/SchemaPostalAddressBuilder.java b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaPostalAddressBuilder.java similarity index 94% rename from src/main/java/org/mnode/ical4j/json/schema/SchemaPostalAddressBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/schema/SchemaPostalAddressBuilder.java index 300e64a..b73a2c5 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/SchemaPostalAddressBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaPostalAddressBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/schema/SchemaScheduleBuilder.java b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaScheduleBuilder.java similarity index 90% rename from src/main/java/org/mnode/ical4j/json/schema/SchemaScheduleBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/schema/SchemaScheduleBuilder.java index 171e5dd..5b68b8c 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/SchemaScheduleBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaScheduleBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/schema/SchemaServiceBuilder.java b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaServiceBuilder.java similarity index 94% rename from src/main/java/org/mnode/ical4j/json/schema/SchemaServiceBuilder.java rename to src/main/java/org/mnode/ical4j/serializer/schema/SchemaServiceBuilder.java index 6630cb1..4381882 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/SchemaServiceBuilder.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaServiceBuilder.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/mnode/ical4j/json/schema/SchemaServiceSerializer.java b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaServiceSerializer.java similarity index 92% rename from src/main/java/org/mnode/ical4j/json/schema/SchemaServiceSerializer.java rename to src/main/java/org/mnode/ical4j/serializer/schema/SchemaServiceSerializer.java index 02b58f7..3f8964b 100644 --- a/src/main/java/org/mnode/ical4j/json/schema/SchemaServiceSerializer.java +++ b/src/main/java/org/mnode/ical4j/serializer/schema/SchemaServiceSerializer.java @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.schema; +package org.mnode.ical4j.serializer.schema; import com.fasterxml.jackson.databind.JsonNode; import net.fortuna.ical4j.model.component.VAvailability; diff --git a/src/test/groovy/org/mnode/ical4j/json/AbstractSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/AbstractSerializerTest.groovy similarity index 98% rename from src/test/groovy/org/mnode/ical4j/json/AbstractSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/AbstractSerializerTest.groovy index c57a49c..2b4e915 100644 --- a/src/test/groovy/org/mnode/ical4j/json/AbstractSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/AbstractSerializerTest.groovy @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json +package org.mnode.ical4j.serializer import net.fortuna.ical4j.model.Calendar import net.fortuna.ical4j.model.ContentBuilder diff --git a/src/test/groovy/org/mnode/ical4j/json/JCalMapperTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/JCalMapperTest.groovy similarity index 95% rename from src/test/groovy/org/mnode/ical4j/json/JCalMapperTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/JCalMapperTest.groovy index 656eeec..3c30047 100644 --- a/src/test/groovy/org/mnode/ical4j/json/JCalMapperTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/JCalMapperTest.groovy @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json +package org.mnode.ical4j.serializer import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule diff --git a/src/test/groovy/org/mnode/ical4j/json/JCalSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/JCalSerializerTest.groovy similarity index 97% rename from src/test/groovy/org/mnode/ical4j/json/JCalSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/JCalSerializerTest.groovy index fb22707..f50f630 100644 --- a/src/test/groovy/org/mnode/ical4j/json/JCalSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/JCalSerializerTest.groovy @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json +package org.mnode.ical4j.serializer import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule @@ -21,7 +21,7 @@ class JCalSerializerTest extends AbstractSerializerTest { where: calendar | expectedSerialized - calendar1 | '["vcalendar",[["prodid",{},"text","-//Ben Fortuna//iCal4j 1.0//EN"],["version",{},"text","2.0"],["uid",{},"text","123"]],[["vevent",[["uid",{},"text","1"],["summary",{},"text","Test Event 1"],["organizer",{},"cal-address","johnd@example.com"],["dtstart",{"value":"date"},"date","2009-08-10"],["action",{},"text","DISPLAY"],["attach",{"encoding":"base64","value":"binary"},"binary","QlNEIDMtQ2xhdXNlIExpY2Vuc2UKCkNvcHlyaWdodCAoYykgMjAyMSwgaUNhbDRqCkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCgoyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCgozLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQpJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQpGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTApEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgpTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgpDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLApPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQpPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo="]],[]],["vevent",[["uid",{},"text","2"],["summary",{},"text","Test Event 2"],["organizer",{"cn":"john doe"},"cal-address","johnd@example.com"],["dtstart",{"value":"date"},"date","2010-08-10"],["description",{"x-format":"text/plain"},"text","Test Description 2"],["x-test",{},"unknown","test-value"]],[]]]]' + calendar1 | '["vcalendar",[["prodid",{},"text","-//Ben Fortuna//iCal4j 3.1//EN"],["version",{},"text","2.0"],["uid",{},"text","123"]],[["vevent",[["uid",{},"text","1"],["summary",{},"text","Test Event 1"],["organizer",{},"cal-address","johnd@example.com"],["dtstart",{"value":"date"},"date","2009-08-10"],["action",{},"text","DISPLAY"],["attach",{"encoding":"base64","value":"binary"},"binary","QlNEIDMtQ2xhdXNlIExpY2Vuc2UKCkNvcHlyaWdodCAoYykgMjAyMSwgaUNhbDRqCkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCgoyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCgozLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQpJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQpGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTApEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgpTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgpDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLApPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQpPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo="]],[]],["vevent",[["uid",{},"text","2"],["summary",{},"text","Test Event 2"],["organizer",{"cn":"john doe"},"cal-address","johnd@example.com"],["dtstart",{"value":"date"},"date","2010-08-10"],["description",{"x-format":"text/plain"},"text","Test Description 2"],["x-test",{},"unknown","test-value"]],[]]]]' calendar2 | '["vcalendar",[["version",{},"text","2.0"],["prodid",{},"text","-//ABC Corporation//NONSGML My Product//EN"],["uid",{},"text","1"],["name",{},"text","Just In"],["description",{},"text",""],["source",{},"uri","https://www.abc.net.au/news/feed/51120/rss.xml"],["url",{},"uri","https://www.abc.net.au/news/justin/"],["image",{},"uri","https://www.abc.net.au/news/image/8413416-1x1-144x144.png"],["last-modified",{},"date-time","2021-03-04T05:52:23Z"]],[["vjournal",[["uid",{},"text","https://www.abc.net.au/news/2021-03-04/gold-coast-needs-6,500-new-homes-a-year-housing-crisis/13214856"],["summary",{},"text","The Gold Coast needs 6,500 new homes a year, but where can they be built?"],["styled-description",{"value":"text"},"text","\\n \\n

The famous coastal city is fast running out of greenfield land to house its growing population, but the community is opposed to higher-density developments in the city.

\\n \\n"],["categories",{},"text","Housing Industry,Rental Housing,Housing,Agribusiness"],["dtstamp",{},"date-time","2021-03-04T05:52:23Z"],["url",{},"uri","https://www.abc.net.au/news/2021-03-04/gold-coast-needs-6,500-new-homes-a-year-housing-crisis/13214856"],["contact",{},"text","Dominic Cansdale"],["image",{},"uri","https://www.abc.net.au/news/image/12721466-3x2-940x627.jpg"]],[]]]]' } } diff --git a/src/test/groovy/org/mnode/ical4j/json/JCardMapperTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/JCardMapperTest.groovy similarity index 95% rename from src/test/groovy/org/mnode/ical4j/json/JCardMapperTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/JCardMapperTest.groovy index cb2256e..0faff38 100644 --- a/src/test/groovy/org/mnode/ical4j/json/JCardMapperTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/JCardMapperTest.groovy @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json +package org.mnode.ical4j.serializer import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule diff --git a/src/test/groovy/org/mnode/ical4j/json/JCardSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/JCardSerializerTest.groovy similarity index 95% rename from src/test/groovy/org/mnode/ical4j/json/JCardSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/JCardSerializerTest.groovy index 0b65520..93948d1 100644 --- a/src/test/groovy/org/mnode/ical4j/json/JCardSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/JCardSerializerTest.groovy @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json +package org.mnode.ical4j.serializer import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotAlarmMapperTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotAlarmMapperTest.groovy similarity index 98% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotAlarmMapperTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotAlarmMapperTest.groovy index 6ec2723..1038b6a 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotAlarmMapperTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotAlarmMapperTest.groovy @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotAlarmSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotAlarmSerializerTest.groovy similarity index 88% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotAlarmSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotAlarmSerializerTest.groovy index a23dbeb..e9f5069 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotAlarmSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotAlarmSerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.model.component.VAlarm -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class JotAlarmSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotAvailabilityMapperTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotAvailabilityMapperTest.groovy similarity index 97% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotAvailabilityMapperTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotAvailabilityMapperTest.groovy index cf7286a..c982f7a 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotAvailabilityMapperTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotAvailabilityMapperTest.groovy @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotAvailabilitySerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotAvailabilitySerializerTest.groovy similarity index 89% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotAvailabilitySerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotAvailabilitySerializerTest.groovy index 7eb8481..bfcafda 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotAvailabilitySerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotAvailabilitySerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.model.component.VAvailability -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class JotAvailabilitySerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotAvailableMapperTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotAvailableMapperTest.groovy similarity index 97% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotAvailableMapperTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotAvailableMapperTest.groovy index 90d4b69..f8403f6 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotAvailableMapperTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotAvailableMapperTest.groovy @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotAvailableSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotAvailableSerializerTest.groovy similarity index 89% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotAvailableSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotAvailableSerializerTest.groovy index 9874e99..ac2cdb1 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotAvailableSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotAvailableSerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.model.component.Available -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class JotAvailableSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotCalendarMapperTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotCalendarMapperTest.groovy similarity index 98% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotCalendarMapperTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotCalendarMapperTest.groovy index 89b9e4b..dc913bb 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotCalendarMapperTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotCalendarMapperTest.groovy @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotCalendarSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotCalendarSerializerTest.groovy similarity index 91% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotCalendarSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotCalendarSerializerTest.groovy index bdffe02..4983b29 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotCalendarSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotCalendarSerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.model.Calendar -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class JotCalendarSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotCardMapperTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotCardMapperTest.groovy similarity index 95% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotCardMapperTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotCardMapperTest.groovy index 280788e..522f16f 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotCardMapperTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotCardMapperTest.groovy @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotCardSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotCardSerializerTest.groovy similarity index 88% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotCardSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotCardSerializerTest.groovy index a39be6d..554c5e4 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotCardSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotCardSerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.vcard.VCard -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class JotCardSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotEventMapperTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotEventMapperTest.groovy similarity index 99% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotEventMapperTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotEventMapperTest.groovy index d37c2e9..232520e 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotEventMapperTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotEventMapperTest.groovy @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotEventSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotEventSerializerTest.groovy similarity index 96% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotEventSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotEventSerializerTest.groovy index 0be8816..c962afd 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotEventSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotEventSerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.model.component.VEvent -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class JotEventSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotFreeBusyMapperTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotFreeBusyMapperTest.groovy similarity index 98% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotFreeBusyMapperTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotFreeBusyMapperTest.groovy index 43bc65f..0252390 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotFreeBusyMapperTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotFreeBusyMapperTest.groovy @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotFreeBusySerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotFreeBusySerializerTest.groovy similarity index 88% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotFreeBusySerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotFreeBusySerializerTest.groovy index 6037140..bb36924 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotFreeBusySerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotFreeBusySerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.model.component.VFreeBusy -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class JotFreeBusySerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotJournalMapperTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotJournalMapperTest.groovy similarity index 98% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotJournalMapperTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotJournalMapperTest.groovy index 85452d0..a8be03e 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotJournalMapperTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotJournalMapperTest.groovy @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotJournalSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotJournalSerializerTest.groovy similarity index 88% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotJournalSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotJournalSerializerTest.groovy index 79f7993..2cb1bdb 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotJournalSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotJournalSerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.model.component.VJournal -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class JotJournalSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotToDoMapperTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotToDoMapperTest.groovy similarity index 98% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotToDoMapperTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotToDoMapperTest.groovy index b78a8fc..d55765b 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotToDoMapperTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotToDoMapperTest.groovy @@ -1,4 +1,4 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule diff --git a/src/test/groovy/org/mnode/ical4j/json/jot/JotToDoSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotToDoSerializerTest.groovy similarity index 88% rename from src/test/groovy/org/mnode/ical4j/json/jot/JotToDoSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jot/JotToDoSerializerTest.groovy index 222caa9..3813d82 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jot/JotToDoSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jot/JotToDoSerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.jot +package org.mnode.ical4j.serializer.jot import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.model.component.VToDo -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class JotToDoSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/jscalendar/JSEventSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jscalendar/JSEventSerializerTest.groovy similarity index 84% rename from src/test/groovy/org/mnode/ical4j/json/jscalendar/JSEventSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jscalendar/JSEventSerializerTest.groovy index 226483e..6eddb96 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jscalendar/JSEventSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jscalendar/JSEventSerializerTest.groovy @@ -1,10 +1,9 @@ -package org.mnode.ical4j.json.jscalendar +package org.mnode.ical4j.serializer.jscalendar import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.model.component.VEvent -import org.mnode.ical4j.json.AbstractSerializerTest -import org.mnode.ical4j.json.jscalendar.JSEventSerializer +import org.mnode.ical4j.serializer.AbstractSerializerTest class JSEventSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/jscalendar/JSGroupSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jscalendar/JSGroupSerializerTest.groovy similarity index 86% rename from src/test/groovy/org/mnode/ical4j/json/jscalendar/JSGroupSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jscalendar/JSGroupSerializerTest.groovy index 1f3958c..d4acf1c 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jscalendar/JSGroupSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jscalendar/JSGroupSerializerTest.groovy @@ -1,10 +1,9 @@ -package org.mnode.ical4j.json.jscalendar +package org.mnode.ical4j.serializer.jscalendar import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.model.Calendar -import org.mnode.ical4j.json.AbstractSerializerTest -import org.mnode.ical4j.json.jscalendar.JSGroupSerializer +import org.mnode.ical4j.serializer.AbstractSerializerTest class JSGroupSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/jscalendar/JSTaskSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jscalendar/JSTaskSerializerTest.groovy similarity index 87% rename from src/test/groovy/org/mnode/ical4j/json/jscalendar/JSTaskSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jscalendar/JSTaskSerializerTest.groovy index 26f1e49..34c98cb 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jscalendar/JSTaskSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jscalendar/JSTaskSerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.jscalendar +package org.mnode.ical4j.serializer.jscalendar import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.model.component.VToDo -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class JSTaskSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/jsonfeed/JSONFeedCalendarSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/jsonfeed/JSONFeedCalendarSerializerTest.groovy similarity index 94% rename from src/test/groovy/org/mnode/ical4j/json/jsonfeed/JSONFeedCalendarSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/jsonfeed/JSONFeedCalendarSerializerTest.groovy index 33307ff..beb7cff 100644 --- a/src/test/groovy/org/mnode/ical4j/json/jsonfeed/JSONFeedCalendarSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/jsonfeed/JSONFeedCalendarSerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.jsonfeed +package org.mnode.ical4j.serializer.jsonfeed import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.model.Calendar -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class JSONFeedCalendarSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/schema/SchemaActionSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaActionSerializerTest.groovy similarity index 88% rename from src/test/groovy/org/mnode/ical4j/json/schema/SchemaActionSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaActionSerializerTest.groovy index c9bd311..e2e6c2a 100644 --- a/src/test/groovy/org/mnode/ical4j/json/schema/SchemaActionSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaActionSerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.schema +package org.mnode.ical4j.serializer.schema import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.model.component.VToDo -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class SchemaActionSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/schema/SchemaCreativeWorkSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaCreativeWorkSerializerTest.groovy similarity index 89% rename from src/test/groovy/org/mnode/ical4j/json/schema/SchemaCreativeWorkSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaCreativeWorkSerializerTest.groovy index 6d026d4..4793f3a 100644 --- a/src/test/groovy/org/mnode/ical4j/json/schema/SchemaCreativeWorkSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaCreativeWorkSerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.schema +package org.mnode.ical4j.serializer.schema import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.model.component.VJournal -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class SchemaCreativeWorkSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/schema/SchemaEventSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaEventSerializerTest.groovy similarity index 90% rename from src/test/groovy/org/mnode/ical4j/json/schema/SchemaEventSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaEventSerializerTest.groovy index 156284c..1405837 100644 --- a/src/test/groovy/org/mnode/ical4j/json/schema/SchemaEventSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaEventSerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.schema +package org.mnode.ical4j.serializer.schema import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.model.component.VEvent -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class SchemaEventSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/schema/SchemaOrganizationSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaOrganizationSerializerTest.groovy similarity index 92% rename from src/test/groovy/org/mnode/ical4j/json/schema/SchemaOrganizationSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaOrganizationSerializerTest.groovy index 692f608..ab3b4b8 100644 --- a/src/test/groovy/org/mnode/ical4j/json/schema/SchemaOrganizationSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaOrganizationSerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.schema +package org.mnode.ical4j.serializer.schema import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.vcard.VCard -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class SchemaOrganizationSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/schema/SchemaPersonSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaPersonSerializerTest.groovy similarity index 91% rename from src/test/groovy/org/mnode/ical4j/json/schema/SchemaPersonSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaPersonSerializerTest.groovy index b4ac1e1..2899d01 100644 --- a/src/test/groovy/org/mnode/ical4j/json/schema/SchemaPersonSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaPersonSerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.schema +package org.mnode.ical4j.serializer.schema import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.vcard.VCard -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class SchemaPersonSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/schema/SchemaPlaceSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaPlaceSerializerTest.groovy similarity index 88% rename from src/test/groovy/org/mnode/ical4j/json/schema/SchemaPlaceSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaPlaceSerializerTest.groovy index f8ab625..2d5aaf2 100644 --- a/src/test/groovy/org/mnode/ical4j/json/schema/SchemaPlaceSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaPlaceSerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.schema +package org.mnode.ical4j.serializer.schema import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.vcard.VCard -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class SchemaPlaceSerializerTest extends AbstractSerializerTest { diff --git a/src/test/groovy/org/mnode/ical4j/json/schema/SchemaServiceSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaServiceSerializerTest.groovy similarity index 89% rename from src/test/groovy/org/mnode/ical4j/json/schema/SchemaServiceSerializerTest.groovy rename to src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaServiceSerializerTest.groovy index da98e31..05c2027 100644 --- a/src/test/groovy/org/mnode/ical4j/json/schema/SchemaServiceSerializerTest.groovy +++ b/src/test/groovy/org/mnode/ical4j/serializer/schema/SchemaServiceSerializerTest.groovy @@ -1,9 +1,9 @@ -package org.mnode.ical4j.json.schema +package org.mnode.ical4j.serializer.schema import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.module.SimpleModule import net.fortuna.ical4j.model.component.VAvailability -import org.mnode.ical4j.json.AbstractSerializerTest +import org.mnode.ical4j.serializer.AbstractSerializerTest class SchemaServiceSerializerTest extends AbstractSerializerTest { From b866986fbde4232d3f1b9018c97cd7703596bbec Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Sun, 7 Nov 2021 10:35:27 +1100 Subject: [PATCH 4/8] Refactoring to reflect change of library name --- README.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 720b824..169b3ed 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# iCal4j Javascript Object Notation +# iCal4j Serializer [jCal]: https://tools.ietf.org/html/rfc7265 [JSCalendar]: https://datatracker.ietf.org/doc/html/rfc8984 @@ -10,16 +10,16 @@ [CalDAV]: https://tools.ietf.org/html/rfc4791 [JSON Feed]: https://www.jsonfeed.org/version/1.1/ -The purpose of this library is to provide custom marshalling between iCal4j objects and JSON formats. +The purpose of this library is to provide custom marshalling between iCal4j objects and other formats. ## Overview Interoperability is a very important aspect of the iCalendar specification(s), and as such it is important -to support seamless and accurate translation between different data formats. JSON is currently the de-facto -standard for structural data formats, and as such this library aims to provide a mechanism for conversion -between iCalendar objects and JSON formats. +to support seamless and accurate translation between different data formats. There are many alternate formats +using JSON and XML, and as such this library aims to provide a mechanism for conversion +between iCalendar objects and other popular JSON and XML-based formats. -The following JSON calendar formats are the current focus of this library. +The following calendar formats are the current focus of this library. ### jCal - The JSON Format for iCalendar @@ -30,6 +30,10 @@ when translating between iCalendar objects and this JSON format. This format is a good choice when unambiguous interoperability is required, as in theory if an agent supports the iCalendar specification then it should be reasonably trivial to have equivalent support for this format. +### xCal - The XML Format for iCalendar + +TBD. + ### JSCalendar - A JSON representation of calendar data [JSCalendar] is a relatively new format From 158ba786a9a34c70e775edeba499f0f8f370d81b Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Sun, 7 Nov 2021 10:40:58 +1100 Subject: [PATCH 5/8] Added xCal reference --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 169b3ed..17f7b1a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # iCal4j Serializer [jCal]: https://tools.ietf.org/html/rfc7265 +[xCal]: https://www.rfc-editor.org/rfc/rfc6321.html [JSCalendar]: https://datatracker.ietf.org/doc/html/rfc8984 [jCard]: https://tools.ietf.org/html/rfc7095 [JSCard]: https://datatracker.ietf.org/doc/html/draft-ietf-jmap-jscontact @@ -161,6 +162,7 @@ Calendar calendar = mapper.readValue(json, Calendar.class); * [RFC7953](https://datatracker.ietf.org/doc/html/rfc7953) (iCalendar Availability) * [RFC6350](https://datatracker.ietf.org/doc/html/rfc6350) (vCard) * [RFC7265](https://tools.ietf.org/html/rfc7265) (jCal) +* [RFC6321](https://www.rfc-editor.org/rfc/rfc6321.html) (xCal) * [RFC7095](https://tools.ietf.org/html/rfc7095) (jCard) * [RFC8984](https://datatracker.ietf.org/doc/html/rfc8984) (JSCalendar) * [JSCalendar to iCalendar Draft](https://datatracker.ietf.org/doc/html/draft-ietf-calext-jscalendar-icalendar-05) From b667d4af026bf8b38ea2d58520e2434c924ecb1b Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Wed, 10 Nov 2021 19:02:38 +1100 Subject: [PATCH 6/8] Added xCal serializer --- .../ical4j/serializer/XCalSerializer.java | 181 ++++++++++++++++++ .../serializer/XCalSerializerTest.groovy | 37 ++++ 2 files changed, 218 insertions(+) create mode 100644 src/main/java/org/mnode/ical4j/serializer/XCalSerializer.java create mode 100644 src/test/groovy/org/mnode/ical4j/serializer/XCalSerializerTest.groovy diff --git a/src/main/java/org/mnode/ical4j/serializer/XCalSerializer.java b/src/main/java/org/mnode/ical4j/serializer/XCalSerializer.java new file mode 100644 index 0000000..cb8a048 --- /dev/null +++ b/src/main/java/org/mnode/ical4j/serializer/XCalSerializer.java @@ -0,0 +1,181 @@ +package org.mnode.ical4j.serializer; + +import com.fasterxml.jackson.annotation.JsonRootName; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import com.fasterxml.jackson.dataformat.xml.XmlMapper; +import net.fortuna.ical4j.model.*; +import net.fortuna.ical4j.model.component.VEvent; +import net.fortuna.ical4j.model.component.VTimeZone; +import net.fortuna.ical4j.model.component.VToDo; +import net.fortuna.ical4j.model.parameter.Value; + +import java.io.IOException; + +@JsonRootName(value = "icalendar") +public class XCalSerializer extends StdSerializer { + + private ObjectMapper objectMapper; + + public XCalSerializer(Class t) { + super(t); + this.objectMapper = new XmlMapper(); //.builder().enable(SerializationFeature.WRAP_ROOT_VALUE) + } + + @Override + public void serialize(Calendar value, JsonGenerator gen, SerializerProvider provider) throws IOException { + gen.writeTree(buildVCalendar(value)); + } + + private JsonNode buildVCalendar(Calendar calendar) { + ObjectNode icalendar = objectMapper.createObjectNode(); + ObjectNode vcalendar = icalendar.putObject("vcalendar"); + + ObjectNode vcalprops = vcalendar.putObject("properties"); + for (Property p : calendar.getProperties()) { + vcalprops.putIfAbsent(p.getName().toLowerCase(), buildPropertyNode(p)); + } + + ObjectNode vcalcomponents = vcalendar.putObject("components"); + for (Component c : calendar.getComponents()) { + vcalcomponents.putIfAbsent(c.getName().toLowerCase(), buildComponentArray(c)); + } + return icalendar; + } + + private JsonNode buildComponentArray(Component component) { + ObjectNode cArray = objectMapper.createObjectNode(); + + ObjectNode componentprops = cArray.putObject("properties"); + for (Property p : component.getProperties()) { + componentprops.putIfAbsent(p.getName().toLowerCase(), buildPropertyNode(p)); + } + + ObjectNode subcomponents = cArray.putObject("components"); + if (component instanceof VEvent) { + for (Component c : ((VEvent) component).getAlarms()) { + subcomponents.putIfAbsent(c.getName().toLowerCase(), buildComponentArray(c)); + } + } else if (component instanceof VToDo) { + for (Component c : ((VToDo) component).getAlarms()) { + subcomponents.putIfAbsent(c.getName().toLowerCase(), buildComponentArray(c)); + } + } else if (component instanceof VTimeZone) { + for (Component c : ((VTimeZone) component).getObservances()) { + subcomponents.putIfAbsent(c.getName().toLowerCase(), buildComponentArray(c)); + } + } + return cArray; + } + + private JsonNode buildPropertyNode(Property property) { + ObjectNode pArray = objectMapper.createObjectNode(); + pArray.putIfAbsent("parameters", buildParamsObject(property.getParameters())); + + String propertyType = getPropertyType(property); + switch (propertyType) { + case "date": + pArray.put(propertyType, JCalEncoder.DATE.encode(property.getValue())); + break; + case "date-time": + pArray.put(propertyType, JCalEncoder.DATE_TIME.encode(property.getValue())); + break; + case "time": + pArray.put(propertyType, JCalEncoder.TIME.encode(property.getValue())); + break; + case "utc-offset": + pArray.put(propertyType, JCalEncoder.UTCOFFSET.encode(property.getValue())); + break; + case "binary": + case "duration": + case "period": + case "uri": + default: + pArray.put(propertyType, property.getValue()); + } + return pArray; + } + + private String getPropertyType(Property property) { + // handle property type overrides via VALUE param.. + Value value = property.getParameter(Parameter.VALUE); + if (value != null) { + return value.getValue().toLowerCase(); + } + + switch (property.getName()) { + case "CALSCALE": + case "METHOD": + case "PRODID": + case "VERSION": + case "CATEGORIES": + case "CLASS": + case "COMMENT": + case "DESCRIPTION": + case "LOCATION": + case "RESOURCES": + case "STATUS": + case "SUMMARY": + case "TRANSP": + case "TZID": + case "TZNAME": + case "CONTACT": + case "RELATED-TO": + case "UID": + case "ACTION": + case "REQUEST-STATUS": + case "NAME": + return "text"; + case "GEO": + return "float"; + case "PERCENT-COMPLETE": + case "PRIORITY": + case "REPEAT": + case "SEQUENCE": + return "integer"; + case "COMPLETED": + case "DTEND": + case "DUE": + case "DTSTAMP": + case "DTSTART": + case "DURATION": + case "RECURRENCE-ID": + case "EXDATE": + case "RDATE": + case "TRIGGER": + case "CREATED": + case "LAST-MODIFIED": + return "date-time"; + case "FREEBUSY": + return "period"; + case "TZOFFSETFROM": + case "TZOFFSETTO": + return "utc-offset"; + case "TZURL": + case "URL": + case "ATTACH": + case "IMAGE": + case "SOURCE": + return "uri"; + case "ATTENDEE": + case "ORGANIZER": + return "cal-address"; + case "RRULE": + return "recur"; + default: + return "unknown"; + } + } + + private JsonNode buildParamsObject(ParameterList parameterList) { + ObjectNode params = objectMapper.createObjectNode(); + for (Parameter p : parameterList) { + params.put(p.getName().toLowerCase(), p.getValue().toLowerCase()); + } + return params; + } +} diff --git a/src/test/groovy/org/mnode/ical4j/serializer/XCalSerializerTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/XCalSerializerTest.groovy new file mode 100644 index 0000000..7112b69 --- /dev/null +++ b/src/test/groovy/org/mnode/ical4j/serializer/XCalSerializerTest.groovy @@ -0,0 +1,37 @@ +package org.mnode.ical4j.serializer + + +import com.fasterxml.jackson.databind.MapperFeature +import com.fasterxml.jackson.databind.PropertyName +import com.fasterxml.jackson.databind.module.SimpleModule +import com.fasterxml.jackson.dataformat.xml.XmlMapper +import net.fortuna.ical4j.model.Calendar + +class XCalSerializerTest extends AbstractSerializerTest { + + def 'test calendar XML serialization'() { + given: 'an object mapper' + SimpleModule module = [] + module.addSerializer(Calendar, new XCalSerializer()) + XmlMapper mapper = XmlMapper.builder().defaultUseWrapper(true).build() + mapper.setConfig(mapper.getSerializationConfig().withRootName( + PropertyName.construct("icalendar", "urn:ietf:params:xml:ns:icalendar-2.0")) + .with(MapperFeature.USE_WRAPPER_NAME_AS_PROPERTY_NAME)) + mapper.registerModule(module) + + when: 'the calendar is serialized' + String serialized = mapper.writeValueAsString(calendar) + + then: 'serialized string matches expected value' + serialized == expectedSerialized + + where: + calendar | expectedSerialized + calendar1 | '-//Ben Fortuna//iCal4j 3.1//EN2.01231Test Event 1johnd@example.comdate2009-08-10DISPLAYbase64binaryQlNEIDMtQ2xhdXNlIExpY2Vuc2UKCkNvcHlyaWdodCAoYykgMjAyMSwgaUNhbDRqCkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCgoyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCgozLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQpJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQpGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTApEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgpTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgpDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLApPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQpPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo=' + calendar2 | '''2.0-//ABC Corporation//NONSGML My Product//EN1Just Inhttps://www.abc.net.au/news/feed/51120/rss.xmlhttps://www.abc.net.au/news/justin/https://www.abc.net.au/news/image/8413416-1x1-144x144.png2021-03-04T05:52:23Zhttps://www.abc.net.au/news/2021-03-04/gold-coast-needs-6,500-new-homes-a-year-housing-crisis/13214856The Gold Coast needs 6,500 new homes a year, but where can they be built?text + + <p>The famous coastal city is fast running out of greenfield land to house its growing population, but the community is opposed to higher-density developments in the city.</p> + +Housing Industry,Rental Housing,Housing,Agribusiness2021-03-04T05:52:23Zhttps://www.abc.net.au/news/2021-03-04/gold-coast-needs-6,500-new-homes-a-year-housing-crisis/13214856Dominic Cansdalehttps://www.abc.net.au/news/image/12721466-3x2-940x627.jpg''' + } +} From 0615711536c7ba9656d1742a2ae27cc698a25fc3 Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Thu, 11 Nov 2021 14:40:44 +1100 Subject: [PATCH 7/8] Added xCal mapper --- .../mnode/ical4j/serializer/JsonMapper.java | 16 +- .../mnode/ical4j/serializer/XCalMapper.java | 149 ++++++++++++++++++ .../ical4j/serializer/XCalMapperTest.groovy | 27 ++++ src/test/resources/samples/jcal/1.xml | 33 ++++ 4 files changed, 220 insertions(+), 5 deletions(-) create mode 100644 src/main/java/org/mnode/ical4j/serializer/XCalMapper.java create mode 100644 src/test/groovy/org/mnode/ical4j/serializer/XCalMapperTest.groovy create mode 100644 src/test/resources/samples/jcal/1.xml diff --git a/src/main/java/org/mnode/ical4j/serializer/JsonMapper.java b/src/main/java/org/mnode/ical4j/serializer/JsonMapper.java index 2390812..b1c5680 100644 --- a/src/main/java/org/mnode/ical4j/serializer/JsonMapper.java +++ b/src/main/java/org/mnode/ical4j/serializer/JsonMapper.java @@ -9,31 +9,37 @@ public interface JsonMapper { default void assertNextToken(JsonParser p, JsonToken token) throws IOException { if (!token.equals(p.nextToken())) { - throw new IllegalArgumentException("Invalid input"); + throw new IllegalArgumentException(String.format("Invalid input: %s", p.currentToken())); } } default void assertCurrentToken(JsonParser p, JsonToken token) { if (!token.equals(p.currentToken())) { - throw new IllegalArgumentException("Invalid input"); + throw new IllegalArgumentException(String.format("Invalid input: %s", p.currentToken())); } } default void assertNextScalarValue(JsonParser p) throws IOException { if (!p.nextToken().isScalarValue()) { - throw new IllegalArgumentException("Invalid input"); + throw new IllegalArgumentException("Invalid input: non-scalar value"); } } default void assertCurrentScalarValue(JsonParser p) throws IOException { if (!p.currentToken().isScalarValue()) { - throw new IllegalArgumentException("Invalid input"); + throw new IllegalArgumentException("Invalid input: non-scalar value"); } } default void assertTextValue(JsonParser p, String value) throws IOException { if (!value.equals(p.nextTextValue())) { - throw new IllegalArgumentException("Invalid input"); + throw new IllegalArgumentException(String.format("Invalid input: %s", p.currentValue())); + } + } + + default void assertNextName(JsonParser p, String value) throws IOException { + if (!value.equals(p.nextFieldName())) { + throw new IllegalArgumentException(String.format("Invalid input: %s", p.currentName())); } } diff --git a/src/main/java/org/mnode/ical4j/serializer/XCalMapper.java b/src/main/java/org/mnode/ical4j/serializer/XCalMapper.java new file mode 100644 index 0000000..597f22c --- /dev/null +++ b/src/main/java/org/mnode/ical4j/serializer/XCalMapper.java @@ -0,0 +1,149 @@ +package org.mnode.ical4j.serializer; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import net.fortuna.ical4j.data.DefaultParameterFactorySupplier; +import net.fortuna.ical4j.data.DefaultPropertyFactorySupplier; +import net.fortuna.ical4j.model.*; +import net.fortuna.ical4j.model.component.*; +import net.fortuna.ical4j.model.parameter.Value; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.text.ParseException; +import java.util.Arrays; +import java.util.List; + +public class XCalMapper extends StdDeserializer implements JsonMapper { + + private final List> parameterFactories; + + private final List> propertyFactories; + + private final List> componentFactories; + + public XCalMapper(Class vc) { + super(vc); + parameterFactories = new DefaultParameterFactorySupplier().get(); + propertyFactories = new DefaultPropertyFactorySupplier().get(); + componentFactories = Arrays.asList(new Available.Factory(), new Daylight.Factory(), new Standard.Factory(), + new VAlarm.Factory(), new VAvailability.Factory(), new VEvent.Factory(), + new VFreeBusy.Factory(), new VJournal.Factory(), new VTimeZone.Factory(), + new VToDo.Factory(), new VVenue.Factory()); + } + + @Override + public Calendar deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + Calendar calendar = new Calendar(); + assertNextName(p, "vcalendar"); + assertNextToken(p, JsonToken.START_OBJECT); + // calendar properties.. + assertNextName(p, "properties"); + assertNextToken(p, JsonToken.START_OBJECT); + while (!JsonToken.END_OBJECT.equals(p.nextToken())) { + try { + calendar.getProperties().add(parseProperty(p)); + } catch (URISyntaxException | ParseException e) { + throw new IllegalArgumentException(e); + } + } + // calendar components.. + assertNextName(p, "components"); + // test for empty components.. + if (p.nextToken() != JsonToken.VALUE_STRING) { + assertNextToken(p, JsonToken.START_OBJECT); + while (!JsonToken.END_OBJECT.equals(p.nextToken())) { + try { + calendar.getComponents().add((CalendarComponent) parseComponent(p)); + } catch (URISyntaxException | ParseException e) { + throw new IllegalArgumentException(e); + } + } + } + return calendar; + } + + private Component parseComponent(JsonParser p) throws IOException, URISyntaxException, ParseException { + String componentName = p.currentName(); + assertNextToken(p, JsonToken.START_OBJECT); + ComponentBuilder componentBuilder = new ComponentBuilder<>(componentFactories); + componentBuilder.name(componentName); + // component properties.. + assertNextName(p, "properties"); + assertNextToken(p, JsonToken.START_OBJECT); + while (!JsonToken.END_OBJECT.equals(p.nextToken())) { + componentBuilder.property(parseProperty(p)); + } + // sub-components.. + assertNextName(p, "components"); + // test for empty sub-components.. + if (p.nextToken() != JsonToken.VALUE_STRING) { + assertNextToken(p, JsonToken.START_OBJECT); + while (!JsonToken.END_OBJECT.equals(p.nextToken())) { + componentBuilder.subComponent(parseComponent(p)); + } + } + return componentBuilder.build(); + } + + private Property parseProperty(JsonParser p) throws IOException, URISyntaxException, ParseException { + String propertyName = p.currentName(); + assertNextToken(p, JsonToken.START_OBJECT); + PropertyBuilder propertyBuilder = new PropertyBuilder(propertyFactories); + propertyBuilder.name(propertyName); + // property params.. + assertNextName(p, "parameters"); + // test for empty parameters.. + if (p.nextToken() != JsonToken.VALUE_STRING) { + assertCurrentToken(p, JsonToken.START_OBJECT); + while (!JsonToken.END_OBJECT.equals(p.nextToken())) { + try { + propertyBuilder.parameter(parseParameter(p)); + } catch (URISyntaxException | IOException e) { + throw new IllegalArgumentException(e); + } + } + } + // propertyType + String propertyType = p.nextFieldName(); + switch (propertyType) { + case "date": + propertyBuilder.parameter(Value.DATE); + propertyBuilder.value(JCalDecoder.DATE.decode(p.nextTextValue())); + break; + case "date-time": + propertyBuilder.parameter(Value.DATE_TIME); + propertyBuilder.value(JCalDecoder.DATE_TIME.decode(p.nextTextValue())); + break; + case "time": + propertyBuilder.parameter(Value.TIME); + propertyBuilder.value(JCalDecoder.TIME.decode(p.nextTextValue())); + break; + case "utc-offset": + propertyBuilder.parameter(Value.UTC_OFFSET); + propertyBuilder.value(JCalDecoder.UTCOFFSET.decode(p.nextTextValue())); + break; + case "binary": + propertyBuilder.parameter(Value.BINARY); + case "duration": + propertyBuilder.parameter(Value.DURATION); + case "period": + propertyBuilder.parameter(Value.PERIOD); + case "uri": + propertyBuilder.parameter(Value.URI); + default: + propertyBuilder.value(p.nextTextValue()); + } + + assertNextToken(p, JsonToken.END_OBJECT); + + return propertyBuilder.build(); + } + + private Parameter parseParameter(JsonParser p) throws IOException, URISyntaxException { + return new ParameterBuilder(parameterFactories) + .name(p.currentName()).value(p.nextTextValue()).build(); + } +} diff --git a/src/test/groovy/org/mnode/ical4j/serializer/XCalMapperTest.groovy b/src/test/groovy/org/mnode/ical4j/serializer/XCalMapperTest.groovy new file mode 100644 index 0000000..e8cedf6 --- /dev/null +++ b/src/test/groovy/org/mnode/ical4j/serializer/XCalMapperTest.groovy @@ -0,0 +1,27 @@ +package org.mnode.ical4j.serializer + + +import com.fasterxml.jackson.databind.module.SimpleModule +import com.fasterxml.jackson.dataformat.xml.XmlMapper +import net.fortuna.ical4j.model.Calendar +import spock.lang.Specification + +class XCalMapperTest extends Specification { + + def 'test calendar XML deserialization'() { + given: 'a json string' + String xml = getClass().getResourceAsStream('/samples/jcal/1.xml').text + + and: 'an object mapper' + SimpleModule module = [] + module.addDeserializer(Calendar, new XCalMapper()) + XmlMapper mapper = XmlMapper.builder().defaultUseWrapper(true).build() + mapper.registerModule(module) + + when: 'the calendar is deserialized' + Calendar calendar = mapper.readValue(xml, Calendar) + + then: 'calendar matches expected result' + calendar as String == getClass().getResourceAsStream('/samples/jcal/1.ics').text + } +} diff --git a/src/test/resources/samples/jcal/1.xml b/src/test/resources/samples/jcal/1.xml new file mode 100644 index 0000000..e3c933c --- /dev/null +++ b/src/test/resources/samples/jcal/1.xml @@ -0,0 +1,33 @@ + + + + + + -//Ben Fortuna//iCal4j 3.1//EN + + + + 2.0 + + + + 123 + + + + https://www.abc.net.au/news/feed/51120/rss.xml + + + + text/plain + + Sample Calendar 1 + + + + test-value + + + + + From 1c9dd8de89b4c7f2d3877098ecc4eac76132a785 Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Thu, 11 Nov 2021 14:52:54 +1100 Subject: [PATCH 8/8] Configure releases --- build.gradle | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/build.gradle b/build.gradle index 66634bc..13747e9 100644 --- a/build.gradle +++ b/build.gradle @@ -57,6 +57,14 @@ artifacts { archives sourcesJar } +scmVersion { + tag { + prefix = 'ical4j-serializer-' + } + versionCreator 'versionWithBranch' + branchVersionCreator = ['main': 'simple'] +} + group = 'org.mnode.ical4j' description = 'Custom marshalling between iCal4j objects and JSON formats' version = scmVersion.version