Class ExpressionSpecBuilder

java.lang.Object
com.amazonaws.services.dynamodbv2.xspec.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 invalid input: '<' 123) OR
   (item_version = 123 AND config_id invalid input: '<' 456) OR
   (item_version = 123 AND config_id = 456 AND config_version invalid input: '<' 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();

 ItemCollectioninvalid input: '<'?> 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:
  • Constructor Details

    • 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();
      
        ItemCollectioninvalid input: '<'?> 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();
      
       ItemCollectioninvalid input: '<'?> 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 invalid input: '<' 123) OR
         (item_version = 123 AND config_id invalid input: '<' 456) OR
         (item_version = 123 AND config_id = 456 AND config_version invalid input: '<' 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:
  • Method Details

    • 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 invalid input: '<' 123) OR
            // (item_version = 123 AND config_id invalid input: '<' 456) OR
            // (item_version = 123 AND config_id = 456 AND config_version invalid input: '<' 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) ))
            )
       ...
       
    • withKeyCondition

      public ExpressionSpecBuilder withKeyCondition(Condition keyCondition)
    • 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.
    • clone

      public ExpressionSpecBuilder clone()
      Overrides:
      clone in class Object
    • 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.
    • not

      public static <T> NegationCondition not(Condition cond)
      Returns a negation of the specified condition; used 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.
    • _

      public static <T> ParenthesizedCondition _(Condition condition)
      A short hand for calling parenthesize(Condition) to explicitly parenthesize a given condition for building condition expressions.