Class XContentTestUtils

java.lang.Object
org.elasticsearch.test.XContentTestUtils

public final class XContentTestUtils
extends java.lang.Object
  • Nested Class Summary

    Nested Classes
    Modifier and Type Class Description
    static class  XContentTestUtils.JsonMapView  
  • Method Summary

    Modifier and Type Method Description
    static java.util.Map<java.lang.String,​java.lang.Object> convertToMap​(org.elasticsearch.common.xcontent.ToXContent part)  
    static org.elasticsearch.common.bytes.BytesReference convertToXContent​(java.util.Map<java.lang.String,​?> map, org.elasticsearch.common.xcontent.XContentType xContentType)  
    static XContentTestUtils.JsonMapView createJsonMapView​(java.io.InputStream inputStream)  
    static java.lang.String differenceBetweenMapsIgnoringArrayOrder​(java.util.Map<java.lang.String,​java.lang.Object> first, java.util.Map<java.lang.String,​java.lang.Object> second)
    Compares two maps generated from XContentObjects.
    static org.elasticsearch.common.xcontent.XContentBuilder insertIntoXContent​(org.elasticsearch.common.xcontent.XContent xContent, org.elasticsearch.common.bytes.BytesReference original, java.util.List<java.lang.String> paths, java.util.function.Supplier<java.lang.String> key, java.util.function.Supplier<java.lang.Object> value)
    Inserts key/value pairs into xContent passed in as BytesReference and returns a new XContentBuilder The paths argument uses dot separated fieldnames and numbers for array indices, similar to what we do in ObjectPath.
    static org.elasticsearch.common.bytes.BytesReference insertRandomFields​(org.elasticsearch.common.xcontent.XContentType contentType, org.elasticsearch.common.bytes.BytesReference xContent, java.util.function.Predicate<java.lang.String> excludeFilter, java.util.Random random)
    This method takes the input xContent data and adds a random field value, inner object or array into each json object.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • convertToMap

      public static java.util.Map<java.lang.String,​java.lang.Object> convertToMap​(org.elasticsearch.common.xcontent.ToXContent part) throws java.io.IOException
      Throws:
      java.io.IOException
    • convertToXContent

      public static org.elasticsearch.common.bytes.BytesReference convertToXContent​(java.util.Map<java.lang.String,​?> map, org.elasticsearch.common.xcontent.XContentType xContentType) throws java.io.IOException
      Throws:
      java.io.IOException
    • differenceBetweenMapsIgnoringArrayOrder

      public static java.lang.String differenceBetweenMapsIgnoringArrayOrder​(java.util.Map<java.lang.String,​java.lang.Object> first, java.util.Map<java.lang.String,​java.lang.Object> second)
      Compares two maps generated from XContentObjects. The order of elements in arrays is ignored.
      Returns:
      null if maps are equal or path to the element where the difference was found
    • insertRandomFields

      public static org.elasticsearch.common.bytes.BytesReference insertRandomFields​(org.elasticsearch.common.xcontent.XContentType contentType, org.elasticsearch.common.bytes.BytesReference xContent, java.util.function.Predicate<java.lang.String> excludeFilter, java.util.Random random) throws java.io.IOException
      This method takes the input xContent data and adds a random field value, inner object or array into each json object. This can e.g. be used to test if parsers that handle the resulting xContent can handle the augmented xContent correctly, for example when testing lenient parsing. If the xContent output contains objects that should be skipped of such treatment, an optional filtering Predicate can be supplied that checks xContent paths that should be excluded from this treatment. This predicate should check the xContent path that we want to insert to and return true if the path should be excluded. Paths are string concatenating field names and array indices, so e.g. in:
       {
            "foo1 : {
                "bar" : [
                    { ... },
                    { ... },
                    {
                        "baz" : {
                            // insert here
                        }
                    }
                ]
            }
       }
       
      "foo1.bar.2.baz" would point to the desired insert location. To exclude inserting into the "foo1" object we would user a Predicate like
       
            (path) -> path.endsWith("foo1")
       
       
      or if we don't want any random insertions in the "foo1" tree we could use
       
            (path) -> path.contains("foo1")
       
       
      Throws:
      java.io.IOException
    • insertIntoXContent

      public static org.elasticsearch.common.xcontent.XContentBuilder insertIntoXContent​(org.elasticsearch.common.xcontent.XContent xContent, org.elasticsearch.common.bytes.BytesReference original, java.util.List<java.lang.String> paths, java.util.function.Supplier<java.lang.String> key, java.util.function.Supplier<java.lang.Object> value) throws java.io.IOException
      Inserts key/value pairs into xContent passed in as BytesReference and returns a new XContentBuilder The paths argument uses dot separated fieldnames and numbers for array indices, similar to what we do in ObjectPath. The key/value arguments can suppliers that either return fixed or random values.
      Throws:
      java.io.IOException
    • createJsonMapView

      public static XContentTestUtils.JsonMapView createJsonMapView​(java.io.InputStream inputStream)