biweekly.property.marshaller
Class ListPropertyMarshaller<T extends ListProperty<V>,V>

java.lang.Object
  extended by biweekly.property.marshaller.ICalPropertyMarshaller<T>
      extended by biweekly.property.marshaller.ListPropertyMarshaller<T,V>
Type Parameters:
T - the property class
V - the value class
Direct Known Subclasses:
ExceptionDatesMarshaller, TextListPropertyMarshaller

public abstract class ListPropertyMarshaller<T extends ListProperty<V>,V>
extends ICalPropertyMarshaller<T>

Marshals properties that contain a list of values.

Author:
Michael Angstadt

Nested Class Summary
 
Nested classes/interfaces inherited from class biweekly.property.marshaller.ICalPropertyMarshaller
ICalPropertyMarshaller.DateParser, ICalPropertyMarshaller.DateWriter, ICalPropertyMarshaller.ListCallback<T>, ICalPropertyMarshaller.Result<T extends ICalProperty>, ICalPropertyMarshaller.SemiStructuredIterator, ICalPropertyMarshaller.Splitter, ICalPropertyMarshaller.StructuredIterator
 
Field Summary
 
Fields inherited from class biweekly.property.marshaller.ICalPropertyMarshaller
clazz, defaultDataType, propertyName, qname
 
Constructor Summary
ListPropertyMarshaller(Class<T> clazz, String propertyName)
           
ListPropertyMarshaller(Class<T> clazz, String propertyName, ICalDataType dataType)
           
 
Method Summary
protected  T _parseJson(JCalValue value, ICalDataType dataType, ICalParameters parameters, List<String> warnings)
          /**
protected  T _parseText(String value, ICalDataType dataType, ICalParameters parameters, List<String> warnings)
          Unmarshals a property from a plain-text iCalendar data stream.
protected  T _parseXml(XCalElement element, ICalParameters parameters, List<String> warnings)
           Unmarshals a property from an XML document (xCal).
protected  JCalValue _writeJson(T property)
           Marshals a property's value to a JSON data stream (jCal).
protected  String _writeText(T property)
          Marshals a property's value to a string.
protected  void _writeXml(T property, XCalElement element)
           Marshals a property's value to an XML element (xCal).
protected abstract  T newInstance(ICalDataType dataType, ICalParameters parameters)
           
protected abstract  V readValue(String value, ICalDataType dataType, ICalParameters parameters, List<String> warnings)
           
protected abstract  String writeValue(T property, V value)
           
 
Methods inherited from class biweekly.property.marshaller.ICalPropertyMarshaller
_dataType, _prepareParameters, dataType, date, date, escape, getDefaultDataType, getPropertyClass, getPropertyName, getQName, list, list, list, list, missingXmlElements, missingXmlElements, object, object, parseJson, parseText, parseXml, prepareParameters, semistructured, semistructured, split, structured, structured, structured, unescape, writeJson, writeText, writeXml
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ListPropertyMarshaller

public ListPropertyMarshaller(Class<T> clazz,
                              String propertyName)

ListPropertyMarshaller

public ListPropertyMarshaller(Class<T> clazz,
                              String propertyName,
                              ICalDataType dataType)
Method Detail

_writeText

protected String _writeText(T property)
Description copied from class: ICalPropertyMarshaller
Marshals a property's value to a string.

Specified by:
_writeText in class ICalPropertyMarshaller<T extends ListProperty<V>>
Parameters:
property - the property
Returns:
the marshalled value

_parseText

protected T _parseText(String value,
                       ICalDataType dataType,
                       ICalParameters parameters,
                       List<String> warnings)
Description copied from class: ICalPropertyMarshaller
Unmarshals a property from a plain-text iCalendar data stream.

Specified by:
_parseText in class ICalPropertyMarshaller<T extends ListProperty<V>>
Parameters:
value - the value as read off the wire
dataType - the data type of the property value. The property's VALUE parameter is used to determine the data type. If the property has no VALUE parameter, then this parameter will be set to the property's default datatype. Note that the VALUE parameter is removed from the property's parameter list after it has been read.
parameters - the parsed parameters. These parameters will be assigned to the property object once this method returns. Therefore, do not assign any parameters to the property object itself whilst inside of this method, or else they will be overwritten.
warnings - allows the programmer to alert the user to any note-worthy (but non-critical) issues that occurred during the unmarshalling process
Returns:
the unmarshalled property object

_writeXml

protected void _writeXml(T property,
                         XCalElement element)
Description copied from class: ICalPropertyMarshaller

Marshals a property's value to an XML element (xCal).

This method should be overridden by child classes that wish to support xCal. The default implementation of this method will append one child element to the property's XML element. The child element's name will be that of the property's data type (retrieved using the ICalPropertyMarshaller.dataType(T) method), and the child element's text content will be set to the property's marshalled plain-text value (retrieved using the ICalPropertyMarshaller.writeText(T) method).

Overrides:
_writeXml in class ICalPropertyMarshaller<T extends ListProperty<V>>
Parameters:
property - the property
element - the property's XML element

_parseXml

protected T _parseXml(XCalElement element,
                      ICalParameters parameters,
                      List<String> warnings)
Description copied from class: ICalPropertyMarshaller

Unmarshals a property from an XML document (xCal).

This method should be overridden by child classes that wish to support xCal. The default implementation of this method will find the first child element with the xCal namespace. The element's name will be used as the property's data type and its text content will be passed into the ICalPropertyMarshaller._parseText(java.lang.String, biweekly.ICalDataType, biweekly.parameter.ICalParameters, java.util.List) method. If no such child element is found, then the parent element's text content will be passed into ICalPropertyMarshaller._parseText(java.lang.String, biweekly.ICalDataType, biweekly.parameter.ICalParameters, java.util.List) and the data type will be null.

Overrides:
_parseXml in class ICalPropertyMarshaller<T extends ListProperty<V>>
Parameters:
element - the property's XML element
parameters - the parsed parameters. These parameters will be assigned to the property object once this method returns. Therefore, do not assign any parameters to the property object itself whilst inside of this method, or else they will be overwritten.
warnings - allows the programmer to alert the user to any note-worthy (but non-critical) issues that occurred during the unmarshalling process
Returns:
the unmarshalled property object

_writeJson

protected JCalValue _writeJson(T property)
Description copied from class: ICalPropertyMarshaller

Marshals a property's value to a JSON data stream (jCal).

This method should be overridden by child classes that wish to support jCal. The default implementation of this method will create a jCard property that has a single JSON string value (generated by the ICalPropertyMarshaller.writeText(T) method).

Overrides:
_writeJson in class ICalPropertyMarshaller<T extends ListProperty<V>>
Parameters:
property - the property
Returns:
the marshalled value

_parseJson

protected T _parseJson(JCalValue value,
                       ICalDataType dataType,
                       ICalParameters parameters,
                       List<String> warnings)
Description copied from class: ICalPropertyMarshaller
/**

Unmarshals a property from a JSON data stream (jCal).

This method should be overridden by child classes that wish to support jCal. The default implementation of this method will convert the jCal property value to a string and pass it into the ICalPropertyMarshaller._parseText(java.lang.String, biweekly.ICalDataType, biweekly.parameter.ICalParameters, java.util.List) method.


The following paragraphs describe the way in which this method's default implementation converts a jCal value to a string:

If the jCal value consists of a single, non-array, non-object value, then the value is converted to a string. Special characters (backslashes, commas, and semicolons) are escaped in order to simulate what the value might look like in a plain-text iCalendar object.
["x-foo", {}, "text", "the;value"] --> "the\;value"
["x-foo", {}, "text", 2] --> "2"

If the jCal value consists of multiple, non-array, non-object values, then all the values are appended together in a single string, separated by commas. Special characters (backslashes, commas, and semicolons) are escaped for each value in order to prevent commas from being treated as delimiters, and to simulate what the value might look like in a plain-text iCalendar object.
["x-foo", {}, "text", "one", "two,three"] --> "one,two\,three"

If the jCal value is a single array, then this array is treated as a "structured value", and converted its plain-text representation. Special characters (backslashes, commas, and semicolons) are escaped for each value in order to prevent commas and semicolons from being treated as delimiters.
["x-foo", {}, "text", ["one", ["two", "three"], "four;five"]] --> "one;two,three;four\;five"

If the jCal value starts with a JSON object, then the object is converted to a format identical to the one used in the RRULE and EXRULE properties. Special characters (backslashes, commas, semicolons, and equal signs) are escaped for each value in order to preserve the syntax of the string value.
["x-foo", {}, "text", {"one": 1, "two": [2, 2.5]}] --> "ONE=1;TWO=2,2.5"

For all other cases, behavior is undefined.

Overrides:
_parseJson in class ICalPropertyMarshaller<T extends ListProperty<V>>
Parameters:
value - the property's JSON value
dataType - the data type
parameters - the parsed parameters. These parameters will be assigned to the property object once this method returns. Therefore, do not assign any parameters to the property object itself whilst inside of this method, or else they will be overwritten.
warnings - allows the programmer to alert the user to any note-worthy (but non-critical) issues that occurred during the unmarshalling process
Returns:
the unmarshalled property object

newInstance

protected abstract T newInstance(ICalDataType dataType,
                                 ICalParameters parameters)

writeValue

protected abstract String writeValue(T property,
                                     V value)

readValue

protected abstract V readValue(String value,
                               ICalDataType dataType,
                               ICalParameters parameters,
                               List<String> warnings)


Copyright © 2013 Michael Angstadt. All Rights Reserved.