Apache Geode CHANGELOG

Specifying JSON within Command-Line Options

Some gfsh commands allow JSON specifications within some options. These JSON strings specify initialization properties in the form of key/value pairs.

A JSON string is appended to a fully qualified class name, for those classes that implement the Declarable interface. The parameter to the interface’s init method is an object that contains initialization properties. The JSON string is parsed and broken into a set of property names and values that define the object.

The specification of a cache loader class in the gfsh create region command may have a JSON specification. For example,

gfsh>create region --name=region1 --type=PARTITION \
   --cache-loader=com.example.Setup{'k1':'v1','k2':'v2','k3':'v3'} 

The JSON string in this example is

{'k1':'v1','k2':'v2','k3':'v3'} 

The JSON string is surrounded by curly braces, and the pairs are separated by commas.
Each pair is separated by a colon. Each of the two strings that define a pair is enclosed with single or double quote characters. Be consistent throughout the JSON string in the use of either single or double quote characters.

Space characters separate gfsh command-line options, and the tokenizing of the options occurs before the parsing of JSON strings. If the value within the command-line option contains a space, delimit it with double quote marks.

As an example, assume that there is a single pair, and the value of the pair is value with space. The right-hand side of the --cache-loader example option becomes

gfsh>create region --name=region2 --type=PARTITION \
   --cache-loader="com.example.Setup{'k1':'value with space'}" 

To incorporate a single quote character within a value, escape it with two backslash characters. For example,

gfsh>create region --name=region3 --type=PARTITION \
   --cache-loader="com.example.Setup{'k1':'property\\'s value'}" 

The value of the pair is property's value.