Class DateAccessor

java.lang.Object
org.jolokia.service.serializer.json.DateAccessor
All Implemented Interfaces:
ObjectAccessor

public class DateAccessor extends Object implements ObjectAccessor
ObjectAccessor for sophisticated date handling which support virtual path handling (i.e for converting to epoch time or an ISO-8601 format). The JSON representation is Long value if seconds/milliseconds/nanoseconds of UNIX time is expected, or String for configured formatter.
Since:
17.04.11
Author:
roland
  • Constructor Details

    • DateAccessor

      public DateAccessor(DateFormatConfiguration configuration)
      Create this accessor using configurable format and TimeZone.
      Parameters:
      configuration -
  • Method Details

    • getType

      public Class<?> getType()
      Description copied from interface: ObjectAccessor
      Gets a class of supported objects.
      Specified by:
      getType in interface ObjectAccessor
      Returns:
      supported type of the objects handled by this accessor
    • extractObject

      public Object extractObject(ObjectToJsonConverter pConverter, Object pDate, Deque<String> pPathParts, boolean pJsonify) throws AttributeNotFoundException
      Description copied from interface: ObjectAccessor

      Extract an object from given pValue of the supported type.

      In the simplest case without jsonification and without a property path, we extract the value itself.

      pPathParts may be used as a Deque (a stack) of keys into the object being accessed, where the first item (Deque.pop()) is the 1st level inner object and the remainder of the stack is passed recursively when accessing composite objects. First key may be null, which means that the remaining path parts are applied to each item of the object (like elements of the array).

      pJsonify flag indicates that the returned value should be converted into a JSON representation.

      Specified by:
      extractObject in interface ObjectAccessor
      Parameters:
      pConverter - the top-level converter that knows about other accessors used for drilling into inner objects.
      pDate - the objects being accessed
      pPathParts - a path into inner object(s) to access internal structure of the object. Each accessor should Deque.pop() its attribute and pass the remaining stack recursively.
      pJsonify - whether to convert the extracted object into a JSON representation
      Returns:
      the extracted object in JSON or original format
      Throws:
      AttributeNotFoundException - if the inner path does not exist.
    • supportsStringConversion

      public boolean supportsStringConversion()
      Description copied from interface: ObjectAccessor
      Some accessors may support dedicated conversion to String. By default, generic extraction of the value from given object should be used, but in some cases (like explicit conversion to String for Map keys), some accessors can be used to get a String value.
      Specified by:
      supportsStringConversion in interface ObjectAccessor
      Returns:
    • extractString

      public String extractString(Object pDate)
      Description copied from interface: ObjectAccessor
      Convert a value to String - only if such conversion is supported.
      Specified by:
      extractString in interface ObjectAccessor
      Returns:
    • canSetValue

      public boolean canSetValue()
      Description copied from interface: ObjectAccessor
      Whether this accessor can be used to set a value inside (directly or nested) a value of given class.
      Specified by:
      canSetValue in interface ObjectAccessor
      Returns:
      true if this extractor can be used to set inner values.
    • setObjectValue

      public Object setObjectValue(Converter<String> pConverter, Object pDate, String pAttribute, Object pValue) throws IllegalAccessException, InvocationTargetException
      Sets the content of Date object. The value must be either a long in which case it is converted directly to a date, or a String which should be formatted according to configured date format.
      Specified by:
      setObjectValue in interface ObjectAccessor
      Parameters:
      pConverter - Converter used to convert the value being set to a class of the accessed attribute
      pDate - object on which to set the value
      pAttribute - attribute of the object to set. (For arrays or lists it should be an index.)
      pValue - the new value to set after conversion
      Returns:
      Throws:
      IllegalAccessException
      InvocationTargetException