Package com.smartgwt.client.docs

# Interface SetterPath

public interface SetterPath
A path expression indicating where and how a nested Object should be updated.

A `SetterPath` is a dot-delimited list of segments, where each segment is a property name. The `SetterPath` can end in an operator that controls how the property update is done:

- `[]` ? append to an Array (creates the Array if missing)
- `{}` ? deep merge into an Object, overwriting existing keys
- `{?}` ? deep merge into an Object, preserving existing keys (non-clobbering)

This syntax is used in `Task.setState()`/`Process.setStateVariable()`.

Missing objects and Arrays are created as needed unless `strictPaths` is set, either in the specific API call, or on the `task` or `process` involved. When `strictPaths` is enabled, attempting to traverse through a non-object/Array or a missing segment throws an error instead.

#### Examples

Assume `process.state` starts as:

      {
          currentDS: {
              fields: [ { name:"orderId", type:"integer" } ],
              defaults: { timezone:"UTC" }
          }
      }

- Append
  `"currentDS.fields[]": { name:"orderDate", type:"date" }`
  Result: `fields` gains a new element at the end.
- Deep merge (clobber)
  `"currentDS.defaults{}": { timezone:"PST", dateFormat:"YYYY-MM-DD" }`
  Result: `timezone` is overwritten to "PST"; `dateFormat` is added.
- Deep merge (non-clobber)
  `"currentDS.defaults{?}": { timezone:"PST", locale:"en-US" }`
  Result: existing `timezone:"UTC"` is preserved; `locale` is added.