test_class.file: outland-feature-java/src/test/java/outland/feature/OffsetDateTimeSerdesTest.java
test_class.identifier: OffsetDateTimeSerdesTest
test_case.body: @Test
    public void testSerdes() {
      OffsetDateTimeSerdes serdes = new OffsetDateTimeSerdes();
      try {
        // https://validator.w3.org/feed/docs/error/InvalidRFC3339Date.html
        serdes.toOffsetDateTime("2002-10-02T10:00:00-05:00");
        serdes.toOffsetDateTime("2002-10-02T15:00:00Z");
        serdes.toOffsetDateTime("2002-10-02T15:00:00.05Z");
        // https://tools.ietf.org/html/rfc3339
        serdes.toOffsetDateTime("1937-01-01T12:00:27.87+00:20");
        serdes.toOffsetDateTime("1996-12-19T16:39:57-08:00");
      } catch (Exception e) {
        e.printStackTrace();
        fail();
      }
  
      try {
        /*
        this date is from https://tools.ietf.org/html/rfc3339 and
        represents a leap second (note the 60 at the end). Java's default
        iso formatter doesn't handle this so it adding it here as a memo
        that we cater for it
         */
        serdes.toOffsetDateTime("2016-12-31T23:59:60Z");
      } catch (Exception ignored) {
        fail();
      }
    }
test_case.class_method_signature: OffsetDateTimeSerdesTest.testSerdes()
test_case.full_signature: @Test public void testSerdes()
test_case.identifier: testSerdes
test_case.invocations: toOffsetDateTime toOffsetDateTime toOffsetDateTime toOffsetDateTime toOffsetDateTime printStackTrace fail toOffsetDateTime fail
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testSerdes()
focal_class.declarator: logger = LoggerFactory.getLogger("FeatureClient")
focal_class.modifier: private static final
focal_class.original_string: private static final Logger logger = LoggerFactory.getLogger("FeatureClient");
focal_class.type: Logger
focal_class.var_name: logger
focal_class.declarator: ISO = DateTimeFormatter.ISO_OFFSET_DATE_TIME
focal_class.modifier: private static final
focal_class.original_string: private static final DateTimeFormatter ISO = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
focal_class.type: DateTimeFormatter
focal_class.var_name: ISO
focal_class.file: outland-feature-java/src/main/java/outland/feature/OffsetDateTimeSerdes.java
focal_class.identifier: OffsetDateTimeSerdes
focal_class.interfaces: implements JsonDeserializer<OffsetDateTime>, JsonSerializer<OffsetDateTime>
focal_class.class_method_signature: OffsetDateTimeSerdes.serialize(OffsetDateTime src, Type typeOfSrc,
        JsonSerializationContext context)
focal_class.full_signature: @Override public JsonElement serialize(OffsetDateTime src, Type typeOfSrc,
        JsonSerializationContext context)
focal_class.identifier: serialize
focal_class.modifiers: @Override public
focal_class.parameters: (OffsetDateTime src, Type typeOfSrc,
        JsonSerializationContext context)
focal_class.return: JsonElement
focal_class.signature: JsonElement serialize(OffsetDateTime src, Type typeOfSrc,
        JsonSerializationContext context)
focal_class.class_method_signature: OffsetDateTimeSerdes.deserialize(JsonElement json, Type typeOfT,
        JsonDeserializationContext context)
focal_class.full_signature: @Override public OffsetDateTime deserialize(JsonElement json, Type typeOfT,
        JsonDeserializationContext context)
focal_class.identifier: deserialize
focal_class.modifiers: @Override public
focal_class.parameters: (JsonElement json, Type typeOfT,
        JsonDeserializationContext context)
focal_class.return: OffsetDateTime
focal_class.signature: OffsetDateTime deserialize(JsonElement json, Type typeOfT,
        JsonDeserializationContext context)
focal_class.class_method_signature: OffsetDateTimeSerdes.fromOffsetDateTime(OffsetDateTime src)
focal_class.full_signature:  String fromOffsetDateTime(OffsetDateTime src)
focal_class.identifier: fromOffsetDateTime
focal_class.parameters: (OffsetDateTime src)
focal_class.return: String
focal_class.signature: String fromOffsetDateTime(OffsetDateTime src)
focal_class.class_method_signature: OffsetDateTimeSerdes.toOffsetDateTime(String raw)
focal_class.full_signature:  OffsetDateTime toOffsetDateTime(String raw)
focal_class.identifier: toOffsetDateTime
focal_class.parameters: (String raw)
focal_class.return: OffsetDateTime
focal_class.signature: OffsetDateTime toOffsetDateTime(String raw)
focal_class.class_method_signature: OffsetDateTimeSerdes.toDateObject(String raw, TemporalQuery<T> from)
focal_class.full_signature: private T toDateObject(String raw, TemporalQuery<T> from)
focal_class.identifier: toDateObject
focal_class.modifiers: private
focal_class.parameters: (String raw, TemporalQuery<T> from)
focal_class.return: T
focal_class.signature: T toDateObject(String raw, TemporalQuery<T> from)
focal_method.body: OffsetDateTime toOffsetDateTime(String raw) {
      return toDateObject(raw, OffsetDateTime::from);
    }
focal_method.class_method_signature: OffsetDateTimeSerdes.toOffsetDateTime(String raw)
focal_method.full_signature:  OffsetDateTime toOffsetDateTime(String raw)
focal_method.identifier: toOffsetDateTime
focal_method.invocations: toDateObject
focal_method.parameters: (String raw)
focal_method.return: OffsetDateTime
focal_method.signature: OffsetDateTime toOffsetDateTime(String raw)