Class ExpressionSpecBuilder

  • All Implemented Interfaces:
    Cloneable

    @Beta
    public final class ExpressionSpecBuilder
    extends Object
    implements Cloneable
    A request-centric Expression Specification Builder that can be used to construct valid expressions, and the respective name maps and value maps, for various DynamoDB requests in a typeful manner. This includes Update expression, Condition expression (including Filter expression and Key Condition expression), and Projection expression. This class is the API entry point to this library.

    This builder object is not thread-safe but you can reuse or build on (the specific states of) a builder by cloning it into separate instances for use in a concurrent environment.

    Sample Usage 1: Conditional Updates with Expressions

     import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
     ...
     Table table = dynamo.getTable(TABLE_NAME);
    
     UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder()
          // SET num1 = num1 + 20
          .addUpdate(
              N("num1").set(N("num1").plus(20)))
          // SET string-attr = "string-value"
          .addUpdate(
              S("string-attr").set("string-value")
          )
          // num2 BETWEEN 0 AND 100
          .withCondition(
              N("num2").between(0, 100)
          ).buildForUpdate();
    
     table.updateItem(HASH_KEY_NAME, "hashKeyValue", RANGE_KEY_NAME, 0, xspec);
     

    Sample Usage 2: Conditional Updates with complex Condition Expression

    Let's say you want to include a complex condition expression such as:

       (attribute_not_exists(item_version) AND attribute_not_exists(config_id) AND attribute_not_exists(config_version)) OR
       (item_version < 123) OR
       (item_version = 123 AND config_id < 456) OR
       (item_version = 123 AND config_id = 456 AND config_version < 999)
     
    Here is how:

     import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
     ...
     Table table = dynamo.getTable(TABLE_NAME);
    
     UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder()
          // SET num1 = num1 + 20
          .addUpdate(
              N("num1").set(N("num1").plus(20)))
          // SET string-attr = "string-value"
          .addUpdate(
              S("string-attr").set("string-value")
          )
          // a complex condition expression (as shown above)
          .withCondition(
              // add explicit parenthesis
              parenthesize( attribute_not_exists("item_version")
                  .and( attribute_not_exists("config_id") )
                  .and( attribute_not_exists("config_version") )
              ).or( N("item_version").lt(123) )
               .or( N("item_version").eq(123)
                  .and( N("config_id").lt(456) ) )
               .or( N("item_version").eq(123)
                  .and( N("config_id").eq(456) )
                  .and( N("config_version").lt(999) ))
          ).buildForUpdate();
    
     table.updateItem(HASH_KEY_NAME, "hashKeyValue", RANGE_KEY_NAME, 0, xspec);
     

    Sample Usage 3: Scan with Filter Expression

    Without ExpressionSpecBuilder, the code (using the DynamoDB Document API) could be something like:

     ItemCollection<?> col = table.scan(
             "(#hk = :hashkeyAttrValue) AND (#rk BETWEEN :lo AND :hi)",
             new NameMap().with("#hk", HASH_KEY_NAME).with("#rk", RANGE_KEY_NAME),
             new ValueMap().withString(":hashkeyAttrValue", "allDataTypes")
                     .withInt(":lo", 1).withInt(":hi", 10));
     
    In contrast, using ExpressionSpecBuilder:

     import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
     ...
     ScanExpressionSpec xspec = new ExpressionSpecBuilder()
         .withCondition(
             S(HASH_KEY_NAME).eq("allDataTypes")
                 .and(N(RANGE_KEY_NAME).between(1, 10))
     ).buildForScan();
    
     ItemCollection col = table.scan(xspec);
     

    Sample Usage 4: Updates with SET, ADD, DELETE and REMOVE

     import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
     ...
     Table table = dynamo.getTable(TABLE_NAME);
    
     UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder()
         .addUpdate(S("mapAttr.colors[0]").set("red"))
         .addUpdate(S("mapAttr.colors[1]").set("blue"))
         .addUpdate(L("mapAttr.members").set(
             L("mapAttr.members").listAppend("marry", "liza")))
         .addUpdate(SS("mapAttr.countries").append("cn", "uk"))
         .addUpdate(SS("mapAttr.brands").delete("Facebook", "LinkedIn"))
         .addUpdate(attribute("mapAttr.foo").remove())
         .buildForUpdate();
    
     assertEquals("SET #0.#1[0] = :0, #0.#1[1] = :1, #0.#2 = list_append(#0.#2, :2) ADD #0.#3 :3 DELETE #0.#4 :4 REMOVE #0.#5",
         xspec.getUpdateExpression());
    
     final String hashkey = "addRemoveDeleteColors";
     table.updateItem(HASH_KEY_NAME, hashkey, RANGE_KEY_NAME, 0, xspec);
     
    See Also:
    PathOperand
    • Constructor Detail

      • ExpressionSpecBuilder

        public ExpressionSpecBuilder()
        Constructs a request-centric Expression Specification Builder that can be used to construct valid expressions, and the respective name maps and value maps, for various DynamoDB requests in a typeful manner. This includes Update expression, Condition expression (including Filter expression and Key Condition expression), and Projection expression. This class is the API entry point to this library.

        This builder object is not thread-safe but you can reuse or build on (the specific states of) a builder by cloning it into separate instances for use in a concurrent environment.

        Sample Usage: Query with Filter Expression

         import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
         ...
         Table table = dynamo.getTable(TABLE_NAME);
        
         QueryExpressionSpec xspec = new ExpressionSpecBuilder()
             .addProjections("numberAttr", "stringAttr")
             .withCondition(BOOL("booleanTrue").eq(true)
                            .and(S("mapAttr.key1").eq("value1"))
          ).buildForQuery();
        
          ItemCollection col = table.query(HASH_KEY_NAME, "allDataTypes",
              new RangeKeyCondition("range_key_name").between(1, 10), xspec);
         

        Sample Usage: Conditional Updates with Expressions

         import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
         ...
         Table table = dynamo.getTable(TABLE_NAME);
        
         UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder()
              // SET num1 = num1 + 20
              .addUpdate(
                  N("num1").set(N("num1").plus(20)))
              // SET string-attr = "string-value"
              .addUpdate(
                  S("string-attr").set("string-value")
              )
              // num2 BETWEEN 0 AND 100
              .withCondition(
                  N("num2").between(0, 100)
              ).buildForUpdate();
        
         table.updateItem(HASH_KEY_NAME, "hashKeyValue", RANGE_KEY_NAME, 0, xspec);
         

        Sample Usage: Scan with Filter Expression

        Without ExpressionSpecBuilder, the code (using the DynamoDB Document API) could be something like:

         ItemCollection<?> col = table.scan(
                 "(#hk = :hashkeyAttrValue) AND (#rk BETWEEN :lo AND :hi)",
                 new NameMap().with("#hk", HASH_KEY_NAME).with("#rk", RANGE_KEY_NAME),
                 new ValueMap().withString(":hashkeyAttrValue", "allDataTypes")
                         .withInt(":lo", 1).withInt(":hi", 10));
         
        In contrast, using ExpressionSpecBuilder:

         import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
         ...
         ScanExpressionSpec xspec = new ExpressionSpecBuilder()
             .withCondition(
                 S(HASH_KEY_NAME).eq("allDataTypes")
                     .and(N(RANGE_KEY_NAME).between(1, 10))
         ).buildForScan();
        
         ItemCollection col = table.scan(xspec);
         

        Sample Usage: Conditional Updates with Expressions

         import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
         ...
         Table table = dynamo.getTable(TABLE_NAME);
        
         UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder()
              // SET num1 = num1 + 20
              .addUpdate(
                  N("num1").set(N("num1").plus(20)))
              // SET string-attr = "string-value"
              .addUpdate(
                  S("string-attr").set("string-value")
              )
              // num2 BETWEEN 0 AND 100
              .withCondition(
                  N("num2").between(0, 100)
              ).buildForUpdate();
        
         table.updateItem(HASH_KEY_NAME, "hashKeyValue", RANGE_KEY_NAME, 0, xspec);
         

        Sample Usage: Conditional Updates with complex Condition Expression

        Let's say you want to include a complex condition expression such as:

           (attribute_not_exists(item_version) AND attribute_not_exists(config_id) AND attribute_not_exists(config_version)) OR
           (item_version < 123) OR
           (item_version = 123 AND config_id < 456) OR
           (item_version = 123 AND config_id = 456 AND config_version < 999)
         
        Here is how:

         import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
         ...
         Table table = dynamo.getTable(TABLE_NAME);
        
         UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder()
              // SET num1 = num1 + 20
              .addUpdate(
                  N("num1").set(N("num1").plus(20)))
              // SET string-attr = "string-value"
              .addUpdate(
                  S("string-attr").set("string-value")
              )
              // a complex condition expression (as shown above)
              .withCondition(
                  // add explicit parenthesis
                  parenthesize( attribute_not_exists("item_version")
                      .and( attribute_not_exists("config_id") )
                      .and( attribute_not_exists("config_version") )
                  ).or( N("item_version").lt(123) )
                   .or( N("item_version").eq(123)
                      .and( N("config_id").lt(456) ) )
                   .or( N("item_version").eq(123)
                      .and( N("config_id").eq(456) )
                      .and( N("config_version").lt(999) ))
              ).buildForUpdate();
        
         table.updateItem(HASH_KEY_NAME, "hashKeyValue", RANGE_KEY_NAME, 0, xspec);
         

        Sample Usage: Updates with SET, ADD, DELETE and REMOVE

         import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
         ...
         Table table = dynamo.getTable(TABLE_NAME);
        
         UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder()
             .addUpdate(S("mapAttr.colors[0]").set("red"))
             .addUpdate(S("mapAttr.colors[1]").set("blue"))
             .addUpdate(L("mapAttr.members").set(
                 L("mapAttr.members").listAppend("marry", "liza")))
             .addUpdate(SS("mapAttr.countries").append("cn", "uk"))
             .addUpdate(SS("mapAttr.brands").delete("Facebook", "LinkedIn"))
             .addUpdate(attribute("mapAttr.foo").remove())
             .buildForUpdate();
        
         assertEquals("SET #0.#1[0] = :0, #0.#1[1] = :1, #0.#2 = list_append(#0.#2, :2) ADD #0.#3 :3 DELETE #0.#4 :4 REMOVE #0.#5",
             xspec.getUpdateExpression());
        
         final String hashkey = "addRemoveDeleteColors";
         table.updateItem(HASH_KEY_NAME, hashkey, RANGE_KEY_NAME, 0, xspec);
         
        See Also:
        PathOperand
    • Method Detail

      • addUpdate

        public ExpressionSpecBuilder addUpdate​(UpdateAction updateAction)
        Fluent API to add the given Update expression for a request.

        For example:

         import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
         ...
         builder
              // SET num1 = num1 + 20
             .addUpdate(
                 N("num1").set(N("num1").plus(20)))
              // SET string-attr = "string-value"
             .addUpdate(
                 S("string-attr").set("string-value")
         )
      • withCondition

        public ExpressionSpecBuilder withCondition​(Condition condition)
        Fluent API to set the condition expression for a request.

        For example:

         import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
         ...
             builder.withCondition(
                 // num2 BETWEEN 0 AND 100
                 ExpressionSpecBuilder.N("num2").between(0, 100)
             )
         ...
         
        Example of specifying a complex condition:
         import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
         ...
              // A complex condition expression:
              //
              // (attribute_not_exists(item_version) AND attribute_not_exists(config_id) AND attribute_not_exists(config_version)) OR
              // (item_version < 123) OR
              // (item_version = 123 AND config_id < 456) OR
              // (item_version = 123 AND config_id = 456 AND config_version < 999)
              //
              builder.withCondition(
                  // add explicit parenthesis
                  parenthesize( attribute_not_exists("item_version")
                      .and( attribute_not_exists("config_id") )
                      .and( attribute_not_exists("config_version") )
                  ).or( N("item_version").lt(123) )
                   .or( N("item_version").eq(123)
                      .and( N("config_id").lt(456) ) )
                   .or( N("item_version").eq(123)
                      .and( N("config_id").eq(456) )
                      .and( N("config_version").lt(999) ))
              )
         ...
         
      • addProjection

        public ExpressionSpecBuilder addProjection​(String path)
        Fluent API to add the given attribute to the list of projection of a request. For example:
         builder.addProjection("binarySetAttribute")
                .addProjection("listAttr[0]")
                .addProjection("mapAttr.name")
                .addProjection("stringSetAttr")
                ;
         
      • addProjections

        public ExpressionSpecBuilder addProjections​(String... paths)
        Fluent API to add the given attributes to the list of projection of a request. For example:
         builder.addProjections("binarySetAttribute", "listAttr[0]", "mapAttr.name", "stringSetAttr");
         
      • buildForDeleteItem

        public DeleteItemExpressionSpec buildForDeleteItem()
        Returns an expression specification for use in a DeleteItem request to DynamoDB.
      • buildForGetItem

        public GetItemExpressionSpec buildForGetItem()
        Returns an expression specification for use in a GetItem request to DynamoDB.
      • buildForQuery

        public QueryExpressionSpec buildForQuery()
        Returns an expression specification for use in a query request to DynamoDB.
      • buildForScan

        public ScanExpressionSpec buildForScan()
        Returns an expression specification for use in a scan request to DynamoDB.
      • buildForUpdate

        public UpdateItemExpressionSpec buildForUpdate()
        Returns an expression specification for use in an UpdateItem request to DynamoDB.
      • buildForPut

        public PutItemExpressionSpec buildForPut()
        Returns an expression specification for use in a PutItem request to DynamoDB.
      • if_not_exists

        public static IfNotExistsFunction<N> if_not_exists​(String path,
                                                           Number defaultValue)
        Returns an IfNotExists object which represents an if_not_exists(path, operand) function call; used for building expression.
         "if_not_exists (path, operand) – If the item does not contain an attribute
         at the specified path, then if_not_exists evaluates to operand; otherwise,
         it evaluates to path. You can use this function to avoid overwriting an
         attribute already present in the item."
         
        Parameters:
        path - document path to an attribute
        defaultValue - default value if the attribute doesn't exist
        Returns:
        an IfNotExists object for number (N) attribute.
      • if_not_exists

        public static IfNotExistsFunction<B> if_not_exists​(String path,
                                                           byte[] defaultValue)
        Returns an IfNotExists object which represents an if_not_exists(path, operand) function call; used for building expression.
         "if_not_exists (path, operand) – If the item does not contain an attribute
         at the specified path, then if_not_exists evaluates to operand; otherwise,
         it evaluates to path. You can use this function to avoid overwriting an
         attribute already present in the item."
         
        Parameters:
        path - document path to an attribute
        defaultValue - default value if the attribute doesn't exist
        Returns:
        an IfNotExists object for binary (B) attribute.
      • if_not_exists

        public static IfNotExistsFunction<B> if_not_exists​(String path,
                                                           ByteBuffer defaultValue)
        Returns an IfNotExists object which represents an if_not_exists(path, operand) function call; used for building expression.
         "if_not_exists (path, operand) – If the item does not contain an attribute
         at the specified path, then if_not_exists evaluates to operand; otherwise,
         it evaluates to path. You can use this function to avoid overwriting an
         attribute already present in the item."
         
        Parameters:
        path - document path to an attribute
        defaultValue - default value if the attribute doesn't exist
        Returns:
        an IfNotExists object for binary (B) attribute.
      • if_not_exists

        public static IfNotExistsFunction<BOOL> if_not_exists​(String path,
                                                              boolean defaultValue)
        Returns an IfNotExists object which represents an if_not_exists(path, operand) function call; used for building expression.
         "if_not_exists (path, operand) – If the item does not contain an attribute
         at the specified path, then if_not_exists evaluates to operand; otherwise,
         it evaluates to path. You can use this function to avoid overwriting an
         attribute already present in the item."
         
        Parameters:
        path - document path to an attribute
        defaultValue - default value if the attribute doesn't exist
        Returns:
        an IfNotExists object for boolean (BOOL) attribute.
      • if_not_exists

        public static IfNotExistsFunction<BS> if_not_exists​(String path,
                                                            byte[]... defaultValue)
        Returns an IfNotExists object which represents an if_not_exists(path, operand) function call; used for building expression.
         "if_not_exists (path, operand) – If the item does not contain an attribute
         at the specified path, then if_not_exists evaluates to operand; otherwise,
         it evaluates to path. You can use this function to avoid overwriting an
         attribute already present in the item."
         
        Parameters:
        path - document path to an attribute
        defaultValue - default value if the attribute doesn't exist
        Returns:
        an IfNotExists object for binary set (BS) attribute.
      • if_not_exists

        public static IfNotExistsFunction<BS> if_not_exists​(String path,
                                                            ByteBuffer... defaultValue)
        Returns an IfNotExists object which represents an if_not_exists(path, operand) function call; used for building expression.
         "if_not_exists (path, operand) – If the item does not contain an attribute
         at the specified path, then if_not_exists evaluates to operand; otherwise,
         it evaluates to path. You can use this function to avoid overwriting an
         attribute already present in the item."
         
        Parameters:
        path - document path to an attribute
        defaultValue - default value if the attribute doesn't exist
        Returns:
        an IfNotExists object for binary set (BS) attribute.
      • if_not_exists

        public static IfNotExistsFunction<L> if_not_exists​(String path,
                                                           List<?> defaultValue)
        Returns an IfNotExists object which represents an if_not_exists(path, operand) function call; used for building expression.
         "if_not_exists (path, operand) – If the item does not contain an attribute
         at the specified path, then if_not_exists evaluates to operand; otherwise,
         it evaluates to path. You can use this function to avoid overwriting an
         attribute already present in the item."
         
        Parameters:
        path - document path to an attribute
        defaultValue - default value if the attribute doesn't exist
        Returns:
        an IfNotExists object for list (L) attribute.
      • if_not_exists

        public static IfNotExistsFunction<M> if_not_exists​(String path,
                                                           Map<String,​?> defaultValue)
        Returns an IfNotExists object which represents an if_not_exists(path, operand) function call; used for building expression.
         "if_not_exists (path, operand) – If the item does not contain an attribute
         at the specified path, then if_not_exists evaluates to operand; otherwise,
         it evaluates to path. You can use this function to avoid overwriting an
         attribute already present in the item."
         
        Parameters:
        path - document path to an attribute
        defaultValue - default value if the attribute doesn't exist
        Returns:
        an IfNotExists object for map (M) attribute.
      • if_not_exists

        public static IfNotExistsFunction<NS> if_not_exists​(String path,
                                                            Number... defaultValue)
        Returns an IfNotExists object which represents an if_not_exists(path, operand) function call; used for building expression.
         "if_not_exists (path, operand) – If the item does not contain an attribute
         at the specified path, then if_not_exists evaluates to operand; otherwise,
         it evaluates to path. You can use this function to avoid overwriting an
         attribute already present in the item."
         
        Parameters:
        path - document path to an attribute
        defaultValue - default value if the attribute doesn't exist
        Returns:
        an IfNotExists object for number set (NS) attribute.
      • if_not_exists

        public static IfNotExistsFunction<S> if_not_exists​(String path,
                                                           String defaultValue)
        Returns an IfNotExists object which represents an if_not_exists(path, operand) function call; used for building expression.
         "if_not_exists (path, operand) – If the item does not contain an attribute
         at the specified path, then if_not_exists evaluates to operand; otherwise,
         it evaluates to path. You can use this function to avoid overwriting an
         attribute already present in the item."
         
        Parameters:
        path - document path to an attribute
        defaultValue - default value if the attribute doesn't exist
        Returns:
        an IfNotExists object for string (S) attribute.
      • if_not_exists

        public static IfNotExistsFunction<SS> if_not_exists​(String path,
                                                            String... defaultValue)
        Returns an IfNotExists object which represents an if_not_exists(path, operand) function call; used for building expression.
         "if_not_exists (path, operand) – If the item does not contain an attribute
         at the specified path, then if_not_exists evaluates to operand; otherwise,
         it evaluates to path. You can use this function to avoid overwriting an
         attribute already present in the item."
         
        Parameters:
        path - document path to an attribute
        defaultValue - default value if the attribute doesn't exist
        Returns:
        an IfNotExists object for string set (SS) attribute.
      • list_append

        public static <T> ListAppendFunction list_append​(String path,
                                                         T value)
        Returns a ListAppend object which represents a list_append(operand, operand) function call; used for building expression.
         "list_append(operand, operand) – This function evaluates to a list with a
         new element added to it. You can append the new element to the start or
         the end of the list by reversing the order of the operands."
         
        Parameters:
        path - document path to a list attribute
        value - single value to be appended to the list attribute
      • list_append

        public static <T> ListAppendFunction list_append​(String path,
                                                         List<? extends T> value)
        Returns a ListAppend object which represents a list_append(operand, operand) function call; used for building expression.
         "list_append(operand, operand) – This function evaluates to a list with a
         new element added to it. You can append the new element to the start or
         the end of the list by reversing the order of the operands."
         
        Parameters:
        path - document path to a list attribute
        value - list of values to be appended to the list attribute
      • list_append

        public static <T> ListAppendFunction list_append​(List<? extends T> value,
                                                         String path)
        Returns a ListAppend object which represents a list_append(operand, operand) function call; used for building expression.
         "list_append(operand, operand) – This function evaluates to a list with a
         new element added to it. You can append the new element to the start or
         the end of the list by reversing the order of the operands."
         
        Parameters:
        value - list of values to be appended to
        path - document path to a list attribute
      • attribute_exists

        public static <T> FunctionCondition attribute_exists​(PathOperand pathOperand)
        Returns a function condition (that evaluates to true if the attribute of the specified path operand exists) for building condition expression.
      • attribute_exists

        public static <T> FunctionCondition attribute_exists​(String path)
        Returns a function condition (that evaluates to true if the attribute at the specified path exists) for building condition expression.
      • attribute_not_exists

        public static FunctionCondition attribute_not_exists​(PathOperand pathOperand)
        Returns a function condition (that evaluates to true if the attribute of the specified path operand does not exist) for building condition expression.
      • attribute_not_exists

        public static FunctionCondition attribute_not_exists​(String path)
        Returns a function condition (that evaluates to true if the attribute at the specified path does not exist) for building condition expression.
      • remove

        public static RemoveAction remove​(String path)
        Returns a RemoveAction for removing the attribute with the specified path from an item; used for building update expression.
        Parameters:
        path - the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
      • attribute

        public static PathOperand attribute​(String path)
        Returns a path operand that refers to an attribute of some unspecified data type; used for building expressions.
        Parameters:
        path - the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
      • BOOL

        public static BOOL BOOL​(String path)
        Creates a path operand that refers to a boolean attribute for the purpose of building expressions.
        Parameters:
        path - the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
      • NULL

        public static NULL NULL​(String path)
        Creates a path operand that refers to a NULL attribute for the purpose of building expressions.
        Parameters:
        path - the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
      • B

        public static B B​(String path)
        Creates a path operand that refers to a binary attribute for the purpose of building expressions.
        Parameters:
        path - the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
      • N

        public static N N​(String path)
        Creates a path operand that refers to a number attribute for the purpose of building expressions.
        Parameters:
        path - the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
      • S

        public static S S​(String path)
        Creates a path operand that refers to a string attribute for the purpose of building expressions.
        Parameters:
        path - the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
      • BS

        public static BS BS​(String path)
        Creates a path operand that refers to a binary-set attribute for the purpose of building expressions.
        Parameters:
        path - the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
      • NS

        public static NS NS​(String path)
        Creates a path operand that refers to a number-set attribute for the purpose of building expressions.
        Parameters:
        path - the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
      • SS

        public static SS SS​(String path)
        Creates a path operand that refers to a string-set attribute for the purpose of building expressions.
        Parameters:
        path - the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
      • L

        public static L L​(String path)
        Creates a path operand that refers to a list attribute for the purpose of building expressions.
        Parameters:
        path - the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
      • M

        public static M M​(String path)
        Creates a path operand that refers to a map attribute for the purpose of building expressions.
        Parameters:
        path - the document path to the attribute, where nested path elements are assumed to be delimited by either "." or array indexing such as "[1]".
      • parenthesize

        public static <T> ParenthesizedCondition parenthesize​(Condition condition)
        Returns an explicitly parenthesized condition, ie '(' condition ')' used in building condition expressions.