org.opengis.cite.ogcapifeatures10.util

## Class JsonUtils

- java.lang.Object
- - org.opengis.cite.ogcapifeatures10.util.JsonUtils

-     public class JsonUtils
      extends Object

  Author:
    Lyn Goltz

- - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static int` | `collectNumberOfAllReturnedFeatures(io.restassured.path.json.JsonPath jsonPath, int maximumLimit)` Collects the number of all returned features by iterating over all 'next' links and summarizing the size of features in 'features' array property.
    `static String` | `findFeaturesUrlForGeoJson(URI rootUri, io.restassured.path.json.JsonPath collection)` Finds the URL to the resource /collections/{collectionId}/items from the path /collections/{collectionId}
    `static String` | `findFeaturesUrlForGeoJson(URI rootUri, Map<String,Object> collection)` Finds the URL to the resource /collections/{collectionId}/items from the path /collections
    `static String` | `findFeatureUrlForGeoJson(URI rootUri, io.restassured.path.json.JsonPath collection, String featureId)` Finds the URL to the resource /collections/{collectionId}/items/{featureId} from the path /collections and creates an valid url to this resource
    `static String` | `findFeatureUrlForGeoJson(URI rootUri, Map<String,Object> collection, String featureId)` Finds the URL to the resource /collections/{collectionId}/items/{featureId} from the path /collections and creates an valid url to this resource
    `static Map<String,Object>` | `findLinkByRel(List<Map<String,Object>> links, String expectedRel)` Parses the link with 'rel=self'.
    `static List<String>` | `findLinksWithoutRelOrType(List<Map<String,Object>> links, Set<String> rels)` Parses the links without 'rel' or 'type' property.
    `static List<Map<String,Object>>` | `findLinksWithSupportedMediaTypeByRel(List<Map<String,Object>> links, List<String> mediaTypesToSupport, String expectedRel)` Parses all links with 'type' of one of the passed mediaTypes and the 'rel' property with the passed value.
    `static List<String>` | `findUnsupportedTypes(List<Map<String,Object>> links, List<String> mediaTypesToSuppport)` Parsing the media types which does not have a link woth property 'type' for.
    `static String` | `formatDate(LocalDate date)` Formats the passed string as ISO 8601 date.
    `static String` | `formatDate(ZonedDateTime dateTime)` Formats the passed string as ISO 8601 date.
    `static String` | `formatDateRange(ZonedDateTime beginDateTime, ZonedDateTime endDateTime)` Formats the passed string as a period using a start and end time.
    `static String` | `formatDateRangeWithDuration(LocalDate beginDate, LocalDate endDate)` Formats the passed string as a period using start time and a duration.
    `static boolean` | `hasAtLeastOneSpatialFeatureCollection(io.restassured.path.json.JsonPath jsonPath)` Checks if a at least one of the collection in the /collections response has a spatial extent.
    `static boolean` | `hasAtLeastOneSpatialFeatureCollection(Map<String,Object> collection)` Checks if a at least one of the collection in the /collections response has a spatial extent.
    `static boolean` | `hasAtLeastOneSpatialFeatureCollection(Object extent)` Checks if the extent contains a spatial extent.
    `static boolean` | `hasProperty(String propertyName, io.restassured.path.json.JsonPath jsonPath)` Checks if a property with the passed name exists in the jsonPath.
    `static boolean` | `linkIncludesRelAndType(Map<String,Object> link)` Checks if the passed link contains 'rel' and 'type' properties.
    `static ZonedDateTime` | `parseAsDate(String dateTime)` Parses the passed string as ISO 8601 date.
    `static List<String>` | `parseAsList(String propertyName, io.restassured.path.json.JsonPath jsonPath)` Retrieves the property values as list.
    `static List<String>` | `parseAsList(String propertyName, Map<String,Object> json)` Retrieves the property values as list.
    `static List<Map<String,Object>>` | `parseAsListOfMaps(String propertyName, io.restassured.path.json.JsonPath jsonPath)` Retrieves the property values as list.
    `static String` | `parseAsString(Object value)` Parse value ass string.
    `static org.locationtech.jts.geom.Geometry` | `parseFeatureGeometry(Map<String,Object> feature, CoordinateSystem crs)` Parse the geometry property as geometry.
    `static String` | `parseFeatureId(io.restassured.path.json.JsonPath collectionItemJson)` Parses the id of the first feature from the passed json.
    `static BBox` | `parseSpatialExtent(Map<String,Object> collection)` Parses the spatial extent from the passed collection.
    `static TemporalExtent` | `parseTemporalExtent(Map<String,Object> collection)` Parses the temporal extent from the passed collection.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### parseAsString

          public static String parseAsString(Object value)

      Parse value ass string.
      Parameters:
        `value` - to parse, may be `null`
      Returns:
        the value as string, `null` if the passed value was `null`

    - #### parseFeatureId

          public static String parseFeatureId(io.restassured.path.json.JsonPath collectionItemJson)

      Parses the id of the first feature from the passed json.
      Parameters:
        `collectionItemJson` - the json document containing the features, never `null`
      Returns:
        the parsed id, may be `null` if no feature could be found

    - #### parseTemporalExtent

          public static TemporalExtent parseTemporalExtent(Map<String,Object> collection)

      Parses the temporal extent from the passed collection.
      Parameters:
        `collection` - the collection containing the extent to parse, never `null`
      Returns:
        the parsed temporal extent, `null` if no extent exists
      Throws:
        `IllegalArgumentException` - if the number of items in the extent invalid

    - #### parseAsDate

          public static ZonedDateTime parseAsDate(String dateTime)

      Parses the passed string as ISO 8601 date.
      Parameters:
        `dateTime` - the dateTime to parse, never `null`
      Returns:
        the parsed date, never `null`

    - #### formatDate

          public static String formatDate(ZonedDateTime dateTime)

      Formats the passed string as ISO 8601 date. Example: "2018-02-12T23:20:50Z"
      Parameters:
        `dateTime` - the dateTime to format, never `null`
      Returns:
        the formatted date, never `null`

    - #### formatDate

          public static String formatDate(LocalDate date)

      Formats the passed string as ISO 8601 date. Example: "2018-02-12"
      Parameters:
        `date` - the dateTime to format, never `null`
      Returns:
        the formatted date, never `null`

    - #### formatDateRange

          public static String formatDateRange(ZonedDateTime beginDateTime,
                                               ZonedDateTime endDateTime)

      Formats the passed string as a period using a start and end time. Example: "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z"
      Parameters:
        `beginDateTime` - the begin dateTime to format, never `null`
        `endDateTime` - the end dateTime to format, never `null`
      Returns:
        the formatted date, never `null`

    - #### formatDateRangeWithDuration

          public static String formatDateRangeWithDuration(LocalDate beginDate,
                                                           LocalDate endDate)

      Formats the passed string as a period using start time and a duration. Example: "2018-02-12T00:00:00Z/P1M6DT12H31M12S"
      Parameters:
        `beginDate` - the begin date to format, never `null`
        `endDate` - the end date to format, never `null`
      Returns:
        the formatted date, never `null`

    - #### parseSpatialExtent

          public static BBox parseSpatialExtent(Map<String,Object> collection)

      Parses the spatial extent from the passed collection.
      Parameters:
        `collection` - the collection containing the extent to parse, never `null`
      Returns:
        the parsed bbox, `null` if no extent exists
      Throws:
        `IllegalArgumentException` - if the number of items in the extent invalid

    - #### findLinksWithSupportedMediaTypeByRel

          public static List<Map<String,Object>> findLinksWithSupportedMediaTypeByRel(List<Map<String,Object>> links,
                                                                                      List<String> mediaTypesToSupport,
                                                                                      String expectedRel)

      Parses all links with 'type' of one of the passed mediaTypes and the 'rel' property with the passed value.
      Parameters:
        `links` - list of all links, never `null`
        `mediaTypesToSupport` - a list of media types the links searched for should support, may be empty but never `null`
        `expectedRel` - the expected value of the property 'rel', never `null`
      Returns:
        a list of links supporting one of the media types and with the expected 'rel' property, may be empty but never `null`

    - #### findUnsupportedTypes

          public static List<String> findUnsupportedTypes(List<Map<String,Object>> links,
                                                          List<String> mediaTypesToSuppport)

      Parsing the media types which does not have a link woth property 'type' for.
      Parameters:
        `links` - list of links to search in, never `null`
        `mediaTypesToSuppport` - a list of media types which should be supported, never `null`
      Returns:
        the media types which does not have a link for.

    - #### findLinksWithoutRelOrType

          public static List<String> findLinksWithoutRelOrType(List<Map<String,Object>> links,
                                                               Set<String> rels)

      Parses the links without 'rel' or 'type' property.
      Parameters:
        `links` - list of links to search in, never `null`
        `rels` - Set of relation types, never `null`
      Returns:
        the links without 'rel' or 'type' property

    - #### findLinkByRel

          public static Map<String,Object> findLinkByRel(List<Map<String,Object>> links,
                                                         String expectedRel)

      Parses the link with 'rel=self'.
      Parameters:
        `links` - list of links to search in, never `null`
        `expectedRel` - the expected value of the property 'rel', never `null`
      Returns:
        the link to itself or `null` if no such link exists

    - #### linkIncludesRelAndType

          public static boolean linkIncludesRelAndType(Map<String,Object> link)

      Checks if the passed link contains 'rel' and 'type' properties.
      Parameters:
        `link` - to check, never `null`
      Returns:
        `true` if the link contains 'rel' and 'type' properties, `false` otherwise

    - #### hasProperty

          public static boolean hasProperty(String propertyName,
                                            io.restassured.path.json.JsonPath jsonPath)

      Checks if a property with the passed name exists in the jsonPath.
      Parameters:
        `propertyName` - name of the property to check, never `null`
        `jsonPath` - to check, never `null`
      Returns:
        `true` if the property exists, `false` otherwise

    - #### hasAtLeastOneSpatialFeatureCollection

          public static boolean hasAtLeastOneSpatialFeatureCollection(io.restassured.path.json.JsonPath jsonPath)

      Checks if a at least one of the collection in the /collections response has a spatial extent.
      Parameters:
        `jsonPath` - to check, never `null`
      Returns:
        `true` at least one of the collection has a spatial extent, `false` otherwise

    - #### hasAtLeastOneSpatialFeatureCollection

          public static boolean hasAtLeastOneSpatialFeatureCollection(Map<String,Object> collection)

      Checks if a at least one of the collection in the /collections response has a spatial extent.
      Parameters:
        `collection` - to check, never `null`
      Returns:
        `true` at least one of the collection has a spatial extent, `false` otherwise

    - #### hasAtLeastOneSpatialFeatureCollection

          public static boolean hasAtLeastOneSpatialFeatureCollection(Object extent)

      Checks if the extent contains a spatial extent.
      Parameters:
        `extent` - to check, never `null`
      Returns:
        `true` if extent contains a spatial extent, `false` otherwise

    - #### parseAsList

          public static List<String> parseAsList(String propertyName,
                                                 io.restassured.path.json.JsonPath jsonPath)

      Retrieves the property values as list.
      Parameters:
        `propertyName` - name of the property, never `null`
        `jsonPath` - the json document to retrieve properties from, never `null`
      Returns:
        the property values as list, may be empty but never `null`

    - #### parseAsListOfMaps

          public static List<Map<String,Object>> parseAsListOfMaps(String propertyName,
                                                                   io.restassured.path.json.JsonPath jsonPath)

      Retrieves the property values as list.
      Parameters:
        `propertyName` - name of the property, never `null`
        `jsonPath` - the json document to retrieve properties from, never `null`
      Returns:
        the property values as list, may be empty but never `null`

    - #### parseAsList

          public static List<String> parseAsList(String propertyName,
                                                 Map<String,Object> json)

      Retrieves the property values as list.
      Parameters:
        `propertyName` - name of the property, never `null`
        `json` - the json map to retrieve properties from, never `null`
      Returns:
        the property values as list, may be empty but never `null`

    - #### collectNumberOfAllReturnedFeatures

          public static int collectNumberOfAllReturnedFeatures(io.restassured.path.json.JsonPath jsonPath,
                                                               int maximumLimit)
                                                        throws URISyntaxException

      Collects the number of all returned features by iterating over all 'next' links and summarizing the size of features in 'features' array property.
      Parameters:
        `jsonPath` - the initial collection, never `null`
        `maximumLimit` - the limit parameter value to use, if <= 0 the parameter is omitted
      Returns:
        the number of all returned features
      Throws:
        `URISyntaxException` - if the creation of a uri fails

    - #### findFeaturesUrlForGeoJson

          public static String findFeaturesUrlForGeoJson(URI rootUri,
                                                         io.restassured.path.json.JsonPath collection)

      Finds the URL to the resource /collections/{collectionId}/items from the path /collections/{collectionId}
      Parameters:
        `rootUri` - never `null`
        `collection` - the /collections/{collectionId} response, never `null`
      Returns:
        the url to the resource /collections/{collectionId}/items or `null`

    - #### findFeaturesUrlForGeoJson

          public static String findFeaturesUrlForGeoJson(URI rootUri,
                                                         Map<String,Object> collection)

      Finds the URL to the resource /collections/{collectionId}/items from the path /collections
      Parameters:
        `rootUri` - never `null`
        `collection` - the collection object /collections response, never `null`
      Returns:
        the url to the resource /collections/{collectionId}/items or `null`

    - #### findFeatureUrlForGeoJson

          public static String findFeatureUrlForGeoJson(URI rootUri,
                                                        io.restassured.path.json.JsonPath collection,
                                                        String featureId)

      Finds the URL to the resource /collections/{collectionId}/items/{featureId} from the path /collections and creates an valid url to this resource
      Parameters:
        `rootUri` - never `null`
        `collection` - the /collections/{collectionId} response, never `null`
        `featureId` - id of the feature, never `null`
      Returns:
        the url to the resource /collections/{collectionId}/items or `null`

    - #### findFeatureUrlForGeoJson

          public static String findFeatureUrlForGeoJson(URI rootUri,
                                                        Map<String,Object> collection,
                                                        String featureId)

      Finds the URL to the resource /collections/{collectionId}/items/{featureId} from the path /collections and creates an valid url to this resource
      Parameters:
        `rootUri` - never `null`
        `collection` - the collection object /collections response, never `null`
        `featureId` - id of the feature, never `null`
      Returns:
        the url to the resource /collections/{collectionId}/items or `null`

    - #### parseFeatureGeometry

          public static org.locationtech.jts.geom.Geometry parseFeatureGeometry(Map<String,Object> feature,
                                                                                CoordinateSystem crs)
                                                                         throws org.locationtech.jts.io.ParseException

      Parse the geometry property as geometry.
      Parameters:
        `feature` - to parse, never `null`
        `crs` - the crs of the geometry, may be `null`
      Returns:
        the parsed geometry, `null` if the feature has no geometry property
      Throws:
        `org.locationtech.jts.io.ParseException` - if the geometry could not be parsed

Copyright © 2023 Open Geospatial Consortium. All rights reserved.