XAP66 == "XAP9NET" || XAP66 == "XAP9" || XAP66 == "XAP9NET")

C++ Mapping File

Search XAP 6.6
Searching XAP 6.6 Documentation
Browse XAP 6.6
Offline Documentation

Download latest offline documentation in HTML format:
xap-6.6.1-documentation.zip (20.6MB)

                                                              

Summary: Elements that are available to be used in your gs.xml file and supported types.

Overview

This section describes the elements that are available to be used in your gs.xml file.
The type property is mandatory in case the property element is defined.

The gs.xml file allows you to define C++ classes in the space. To learn how to do this, see the C++ Code Generator section.

To find out about the supported C++ types, see below.

The *.gs.xml configuration needs to reside in a <Root Folder>\config\mapping folder where the <Root Folder> should be part of the application classpath.

XML mapping can be defined in the same package as the class (using the class name as the file prefix).

Elements

class

Usage: <class name="myClass" >

XML Attribute Name Type Description Default Value
name string The name of the class.  
cpp-name string The C++ name of the class.
If not specified then 'name' is used.
 
dotnet-name string The .NET name of the class, including the namespace.
If not specified then 'name' is used.
 
replicate boolean When running in partial replication mode, a true value for this field replicates all objects of this type to a target space or spaces. true
persist boolean When a space is defined as persistent, a true value for this annotation persists objects of this type.

For more details, refer to the Persistency section.



true
fifo boolean To enable FIFO-based notifications and take operations, this annotation should be true.

For more details, refer to the FIFO operations section.



false
The default values for replicate, persist, and fifo should only be considered as recommended default values. Actual values should be specified in the gs.xml file.

superclass

Declares the parent class. If it inherits from another class, only one class is allowed.

The superclass must also be a C++ class.

Usage: <superclass name="myBaseClass" />

XML Attribute Name Type Description
name string The name of the inherited class

include-header

This attribute is used to add include file declaration to your generated C++ code.

XML Attribute Name Type Description
file string The name of the include file.

For example:

<include-header file="UserMessage.h"/>

property

The property element defines a field in this class.

Usage: <property name="m_Age" type="int" null-value="-1" />

XML Attribute Name Type Description Default Value
name string The property name.
It is recommended that property names start with a lowercase letter to avoid conflicts in Java. If POJO classes are generated too, then any property that starts with an uppercase letter will be excluded from its POJO class.
NONE
index string of IndexType Defines if this field data is indexed. Querying indexed fields speeds up read and take operations. Possible values are false and true. false
null-value String Specifies that a value be treated as null.
For example: <property name="m_Age" type="int" null-value="4711" />, where 4711 functions as a null value.
 
type String Defines the type of the property. This is required. See possible values below.  

type - Supported Types

The table below shows the supported types that can be used in the space, and how the different types are mapped in each language.

XML Type C++ Type Java Type .NET Type
bool bool boolean boolean
byte char byte byte
char char char char
double double double double
float float float float
int int int int
long long int int
long long long long long long
short short short short
string std::string java.lang.String string
bool[] std::vector<bool> boolean[] bool[]
byte[] std::vector<char> byte[] byte[]
char[] std::vector<char> char[] char[]
double[] std::vector<double> double[] double[]
float[] std::vector<float> float[] float[]
int[] std::vector<int> int[] int[]
long[] std::vector<long> int[] int[]
long long[] std::vector<long long> long[] long[]
short[] std::vector<short> short[] short[]
string[] std::vector<std::string> java.lang.String[] string[]
blob Blob byte[] byte[]

ref-property

XML Attribute Name Type Description Default Value
name string The property name NONE
class-ref string The class name NONE
type string Determines if the object is an array or a single object NONE
storage-type string Determines how this field value is stored in the space.
Options are:
  • object - The value of this property is stored explicitly, so entries can be matched by specific value.
  • binary - The value is stored as a blob. It is more efficient but entries cannot be matched by the value of this property.
object

Types that can be used with the ref-property attribute:

XML type CPP Type Java Type .NET Type
array std::vector < boost::shared_ptr < POCO > > POJO[] PONO[]
boost::shared_ptr boost::shared_ptr< POCO > POJO PONO

For example:

<class name="com.gigaspaces.tests.test_refNode" persist="true" replicate="true" fifo="false" >
    <property name="intIndex"  type="int" null-value="0" index="true"/>
    <ref-property class-ref="com.gigaspaces.tests.test_refChildNode" name="children" type="array"></ref-property>
    <ref-property class-ref="com.gigaspaces.tests.test_refChildNode" name="leftChild" type="boost::shared_ptr"></ref-property>
    <ref-property class-ref="com.gigaspaces.tests.test_refChildNode" name="rightChild" type="boost::shared_ptr"></ref-property>
</class>

id

Usage:

<property name="idField" type="string" null-value="" />
<id name="idField" auto-generate="true" />

Defines whether this field value is used when generating the Entry's UID. The field value should be unique - i.e. multiple objects with the same value cannot be written into the space. Each object should have a different field value. When writing an object into the space with an existing id field value, an EntryAlreadyInSpaceException is thrown. The Entry's UID is created based on the id field value.

XML Attribute Name Type Description Default Value
name string Specifies the name of the property for holding the UID.  
auto-generate String Specifies if the Entry's UID is generated automatically by the space when written into the space. If false, the field is indexed automatically, and if true, the field isn't indexed false

The id element cannot be used with multiple fields.

The id element type must be string.

If auto-generate is declared as false, the field is indexed automatically. If auto-generate is declared as true, the field isn't indexed.

For more details, see the [POJO UID Generation and Usage Scenarios] section.


version

XML Attribute Name Type Description
name string Specifies the name of the property holding the version's ID.

persist Field-Level Element - Not supported yet

XML Attribute Name Type Description
name string Specifies the name of the property holding the persist flag.

routing

The routing element routes the field value under this element to the relevant space. This is done using hash-based load-balancing.

XML Attribute Name Type Description
name string Specifies the property that allows identification of the routing element in the space.

When working with a partitioned persistent space that persists into a central data-source, make sure that a property mapped for routing is also mapped with id.

Example

<class name="com.gigaspaces.tests.completeType" persist="true" replicate="true" fifo="false" >
    <property name="idField" type="string" null-value="" />
    <id name="idField" auto-generate="true" />

    <property name="stringField" index="true" type="string" null-value="" />
    <routing  name="stringField"/>

    <property name="versionField"     type="long" null-value="0" />
    <version name="versionField"/>

    <!--<property name="byteField"     type="byte" null-value="0" />-->
    <property name="booleanField"  type="bool" null-value="false" />
    <property name="shortField"    type="short" null-value="0" />
    <property name="charField"     type="char" null-value="0" />
    <property name="intField"      type="int" null-value="0" />
    <property name="longField"     type="long" null-value="0" />
    <property name="longlongField"     type="long long" null-value="0" />
    <property name="floatField"    type="float" null-value="0" />
    <property name="doubleField"   type="double" null-value="0" />
</class>


IMPORTANT: This is an old version of GigaSpaces XAP. Click here for the latest version.

Labels