org::xmlBlaster::util::qos::ClientProperty Class Reference

This class encapsulates one client property in a QoS. More...

List of all members.

Public Member Functions

template<typename T_VALUE>
 ClientProperty (std::string &name, T_VALUE &value, std::string &type="", std::string &encoding="", std::string &charset="")
 Standard constructor.
 ClientProperty (bool dummy, std::string &name, std::string &type, std::string &encoding, std::string &charset)
 Constructor called by SAX parser.
 ClientProperty (std::string &name, char *value, std::string &type="")
 Specialized ctor for literal data.
 ClientProperty (std::string &name, std::vector< unsigned char > &value, std::string &type="")
 Specialized ctor for blob data.
std::string & getName ()
 The unique key of the property.
std::string getType ()
 Get the data type of the property value.
std::string getEncoding ()
 Get the internally used encoding to transfer data to/from xmlBlaster.
std::string getCharset ()
 If value is of type "String" and base64 encoded you can specify a charset (like "UTF-8" or "windows-1252").
void setCharset (std::string &charset)
 Set a charset, needed only it not "UTF-8" (default).
bool isBase64 ()
 Check if getValueRaw() is Base64 encoded.
std::string getValueRaw ()
 The raw, possibly still Base64 encoded value.
std::string getStringValue ()
 Convenience method for getValue(T_VALUE&).
std::vector< unsigned char > getValue ()
 Accessor for binary data (BLOB).
template<typename T_VALUE>
void getValue (T_VALUE &value)
 Access with for supported data type.
void setValue (std::string &value)
 Set the value, it will be encoded with the encoding specified in the constructor.
void setValueRaw (std::string &value)
 Set the already correctly encoded value, used internally by SAX parser.
std::string toXml (std::string extraOffset="", bool clearText=false, std::string tagName="clientProperty")
 Dump state of this object into a XML ASCII string.


Detailed Description

This class encapsulates one client property in a QoS.

Examples:

<clientProperty name='transactionId' type='int'>120001</clientProperty>
<clientProperty name='myKey'>Hello World</clientProperty>
<clientProperty name='myBlob' type='byte[]' encoding='base64'>OKFKAL==</clientProperty>
 
If the attribute type is missing we assume a 'String' property

Charactersets other than US-ASCII (7bit)

For international character sets like "UTF-8" or "iso-8859-1" you need to force the type to Constants::TYPE_BLOB which will send the data base64 encoded.

The key name may only consist of US-ASCII characters

Author:
Marcel Ruff
See also:
The client.qos.clientProperty requirement

TestClientProperty

Definition at line 42 of file ClientProperty.h.


Constructor & Destructor Documentation

template<typename T_VALUE>
org::xmlBlaster::util::qos::ClientProperty::ClientProperty ( std::string &  name,
T_VALUE &  value,
std::string &  type = "",
std::string &  encoding = "",
std::string &  charset = "" 
)

Standard constructor.

A typical example is:

 ClientProperty("myKey", "myValue");
 
If you want to send a string in your own locale character set:
 ClientProperty("myKey", "myValue", Constants::TYPE_STRING, Constants::ENCODING_BASE64, "windows-1252");
 
Parameters:
name The unique property key in US-ASCII encoding (7-bit), UTF-8 should work as well A duplicate key will overwrite the old setting
value Your data . The type (like "float") is guessed from T_VALUE NOTE: "vector<unsigned char>" "unsigned char*" are treated as BLOBs and will be transferred Base64 encoded.
type The data type of the value, optional, e.g. Constants::TYPE_FLOAT ("float")
encoding How the data is transferred, org::xmlBlaster::util::Constants::ENCODING_BASE64 or ""
charset XmlBlaster expects all XML strings as UTF-8, however you can send your client properties in any other charset but you must then encode it with ENCODING_BASE64 and pass the charset used, for example "windows-1252". Please use the official IANA charset names.
See also:
http://www.iana.org/assignments/charset-reg/

Definition at line 224 of file ClientProperty.h.

References org::xmlBlaster::util::Constants::ENCODING_BASE64, and org::xmlBlaster::util::lexical_cast().

org::xmlBlaster::util::qos::ClientProperty::ClientProperty ( bool  dummy,
std::string &  name,
std::string &  type,
std::string &  encoding,
std::string &  charset 
)

Constructor called by SAX parser.

Nothing is interpreted, all values are set as given

Parameters:
dummy To distinguish the constructor from the others

Definition at line 23 of file ClientProperty.cpp.

org::xmlBlaster::util::qos::ClientProperty::ClientProperty ( std::string &  name,
char *  value,
std::string &  type = "" 
)

Specialized ctor for literal data.

Parameters:
name The unique property key in US-ASCII encoding (7-bit)
value Your pointer to data
type Optionally you can force another type than "String", for example Constant::TYPE_DOUBLE if the pointer contains such a number as a string representation.

Definition at line 37 of file ClientProperty.cpp.

References org::xmlBlaster::util::Constants::ENCODING_BASE64.

org::xmlBlaster::util::qos::ClientProperty::ClientProperty ( std::string &  name,
std::vector< unsigned char > &  value,
std::string &  type = "" 
)

Specialized ctor for blob data.

Parameters:
name The unique property key in US-ASCII encoding (7-bit)
value Your BLOB data.
type Optionally you can force another type than "byte[]", for example Constant::TYPE_DOUBLE if the vector contains such a number as a string representation.

Definition at line 64 of file ClientProperty.cpp.

References org::xmlBlaster::util::Constants::ENCODING_BASE64, and org::xmlBlaster::util::Constants::TYPE_BLOB.


Member Function Documentation

std::string & org::xmlBlaster::util::qos::ClientProperty::getName (  ) 

The unique key of the property.

Returns:
The key string

Definition at line 104 of file ClientProperty.cpp.

Referenced by org::xmlBlaster::util::qos::address::AddressBase::addAttribute(), org::xmlBlaster::util::qos::QosData::addClientProperty(), org::xmlBlaster::util::qos::ConnectQosData::addClientProperty(), org::xmlBlaster::test::TestClientProperty::testClientProperty(), org::xmlBlaster::test::TestClientProperty::testQosData(), and toXml().

std::string org::xmlBlaster::util::qos::ClientProperty::getType (  ) 

Get the data type of the property value.

Returns:
The data type, for example "short" or "byte[]" for "vector<unsigned char>"
See also:
Constants::TYPE_SHORT

Constants::TYPE_BLOB

Definition at line 108 of file ClientProperty.cpp.

Referenced by org::xmlBlaster::test::TestClientProperty::testClientProperty(), org::xmlBlaster::test::TestClientProperty::testQosData(), and toXml().

std::string org::xmlBlaster::util::qos::ClientProperty::getEncoding (  ) 

Get the internally used encoding to transfer data to/from xmlBlaster.

Returns:
The used encoding, for example "base64" or "" for none
See also:
Constants::ENCODING_BASE64

Definition at line 116 of file ClientProperty.cpp.

Referenced by org::xmlBlaster::test::TestClientProperty::testClientProperty(), and toXml().

std::string org::xmlBlaster::util::qos::ClientProperty::getCharset (  ) 

If value is of type "String" and base64 encoded you can specify a charset (like "UTF-8" or "windows-1252").

Returns:
The used encoding, for example "base64" or "" for none
See also:
Constants::ENCODING_BASE64

Definition at line 120 of file ClientProperty.cpp.

Referenced by org::xmlBlaster::test::TestClientProperty::testClientProperty(), and toXml().

void org::xmlBlaster::util::qos::ClientProperty::setCharset ( std::string &  charset  ) 

Set a charset, needed only it not "UTF-8" (default).

Parameters:
charset e.g. "windows-1252"

Referenced by PublishDemo::initEnvironment(), and org::xmlBlaster::test::TestClientProperty::testClientProperty().

bool org::xmlBlaster::util::qos::ClientProperty::isBase64 (  ) 

Check if getValueRaw() is Base64 encoded.

Definition at line 124 of file ClientProperty.cpp.

References org::xmlBlaster::util::Constants::ENCODING_BASE64.

Referenced by getValue(), org::xmlBlaster::test::TestClientProperty::testClientProperty(), and org::xmlBlaster::test::TestClientProperty::testQosData().

std::string org::xmlBlaster::util::qos::ClientProperty::getValueRaw (  ) 

The raw, possibly still Base64 encoded value.

Definition at line 128 of file ClientProperty.cpp.

Referenced by org::xmlBlaster::test::TestClientProperty::testClientProperty(), and toXml().

std::string org::xmlBlaster::util::qos::ClientProperty::getStringValue (  ) 

Convenience method for getValue(T_VALUE&).

Returns:
The value. It is decoded (readable) in case it was base64 encoded

Definition at line 132 of file ClientProperty.cpp.

References org::xmlBlaster::util::Constants::ENCODING_BASE64.

Referenced by getValue(), org::xmlBlaster::test::TestClientProperty::testClientProperty(), org::xmlBlaster::test::TestClientProperty::testQosData(), and toXml().

std::vector< unsigned char > org::xmlBlaster::util::qos::ClientProperty::getValue (  ) 

Accessor for binary data (BLOB).

Returns:
The value. It is decoded (readable) in case it was base64 encoded

Definition at line 152 of file ClientProperty.cpp.

References org::xmlBlaster::util::Constants::ENCODING_BASE64.

Referenced by org::xmlBlaster::test::TestClientProperty::testClientProperty().

template<typename T_VALUE>
void org::xmlBlaster::util::qos::ClientProperty::getValue ( T_VALUE &  value  ) 

Access with for supported data type.

Parameters:
value OUT parameter: The value in the desired data type. It is decoded (readable) in case it was base64 encoded

Definition at line 294 of file ClientProperty.h.

References getStringValue(), isBase64(), org::xmlBlaster::util::lexical_cast(), and org::xmlBlaster::util::Constants::TYPE_BLOB.

void org::xmlBlaster::util::qos::ClientProperty::setValue ( std::string &  value  ) 

Set the value, it will be encoded with the encoding specified in the constructor.

void org::xmlBlaster::util::qos::ClientProperty::setValueRaw ( std::string &  value  ) 

Set the already correctly encoded value, used internally by SAX parser.

std::string org::xmlBlaster::util::qos::ClientProperty::toXml ( std::string  extraOffset = "",
bool  clearText = false,
std::string  tagName = "clientProperty" 
)

Dump state of this object into a XML ASCII string.


Parameters:
extraOffset indenting of tags for nice output
clearText if true the base64 for properties are dumped decoded in plain text
Returns:
internal state of the ClientProperty as a XML ASCII string

Definition at line 177 of file ClientProperty.cpp.

References getCharset(), getEncoding(), getName(), getStringValue(), getType(), getValueRaw(), and org::xmlBlaster::util::Constants::OFFSET.

Referenced by org::xmlBlaster::test::TestClientProperty::testClientProperty(), and org::xmlBlaster::test::TestClientProperty::testQosData().


The documentation for this class was generated from the following files: