shibsp::Attribute Class Referenceabstract

A resolved attribute. More...

`#include <shibsp/attribute/Attribute.h>`

Inheritance diagram for shibsp::Attribute:
[legend]
Collaboration diagram for shibsp::Attribute:
[legend]

## Public Types

typedef Attribute * | AttributeFactory(DDF &in)
| A function that unmarshalls remoted data into the proper Attribute subclass.

## Public Member Functions

const char * | getId () const
| Returns the Attribute identifier. More...
const std::vector< std::string > & | getAliases () const
| Returns all of the effective names for the Attribute. More...
std::vector< std::string > & | getAliases ()
| Returns all of the effective names for the Attribute. More...
void | setCaseSensitive (bool caseSensitive)
| Sets whether case sensitivity should apply to basic value comparisons. More...
void | setInternal (bool internal)
| Sets whether the attribute should be exported for CGI use. More...
bool | isCaseSensitive () const
| Indicates whether case sensitivity should apply to basic value comparisons. More...
bool | isInternal () const
| Indicates whether the attribute should be exported for CGI use. More...
virtual size_t | valueCount () const
| Returns the number of values. More...
virtual const std::vector< std::string > & | getSerializedValues () const
| Returns serialized Attribute values encoded as UTF-8 strings. More...
virtual void | clearSerializedValues ()=0
| Informs the Attribute that values have changed and any serializations must be cleared. More...
virtual const char * | getString (size_t index) const
| Gets the string equivalent of the value at the specified position (starting from zero). More...
virtual const char * | getScope (size_t index) const
| Gets the "scope" of the value at the specified position (starting from zero). More...
virtual void | removeValue (size_t index)
| Removes the value at the specified position (starting from zero). More...
virtual DDF | marshall () const
| Marshalls an Attribute for remoting. More...

## Static Public Member Functions

static Attribute * | unmarshall (DDF &in)
| Unmarshalls a remoted Attribute. More...
static void | registerFactory (const char *type, AttributeFactory *factory)
| Registers an AttributeFactory function for a given attribute "type". More...
static void | deregisterFactory (const char *type)
| Deregisters an AttributeFactory function for a given attribute "type". More...
static void | deregisterFactories ()
| Clears the map of factories.

## Protected Member Functions

| Attribute (const std::vector< std::string > &ids)
| Constructor. More...
| Attribute (DDF &in)
| Constructs based on a remoted Attribute. More...

## Protected Attributes

std::vector< std::string > | m_serialized
| Maintains a copy of serialized attribute values, when possible. More...

## Detailed Description

A resolved attribute.

Resolved attributes are a neutral construct that represent both simple and complex attribute data structures that might be found in SAML assertions or obtained from other sources.

Attributes consist of an id/name that is locally unique (that is, unique to a configuration at any given point in time) and zero or more values. Values can be of any type or structure, but will generally be made available to applications only if a serialized string form exists. More complex values can be used with access control plugins and other components that understand them, however.

## Constructor & Destructor Documentation

## Attribute() [1/2]

shibsp::Attribute::Attribute | ( | const std::vector< std::string > & | ids | ) |

protected

Constructor.

Parameters

  ids | array with primary identifier in first position, followed by any aliases

## Attribute() [2/2]

shibsp::Attribute::Attribute | ( | DDF & | in | ) |

protected

Constructs based on a remoted Attribute.

This allows Attribute objects to be recreated after marshalling. The DDF supplied must be a struct containing a single list member named with the Attribute's "id" and containing the values.

Parameters

  in | input object containing marshalled Attribute

## Member Function Documentation

## clearSerializedValues()

virtual void shibsp::Attribute::clearSerializedValues | ( |  | ) |

pure virtual

Informs the Attribute that values have changed and any serializations must be cleared.

Implemented in shibsp::BinaryAttribute, shibsp::ExtensibleAttribute, shibsp::NameIDAttribute, shibsp::ScopedAttribute, shibsp::SimpleAttribute, and shibsp::XMLAttribute.

## deregisterFactory()

static void shibsp::Attribute::deregisterFactory | ( | const char * | type | ) |

static

Deregisters an AttributeFactory function for a given attribute "type".

Parameters

  type | string used at the root of remoted Attribute structures

## getAliases() [1/2]

std::vector< std::string > & shibsp::Attribute::getAliases | ( |  | ) |

Returns all of the effective names for the Attribute.

Returns
  mutable array of identifiers, with the primary ID in the first position

## getAliases() [2/2]

const std::vector< std::string > & shibsp::Attribute::getAliases | ( |  | ) | const

Returns all of the effective names for the Attribute.

Returns
  immutable array of identifiers, with the primary ID in the first position

## getId()

const char * shibsp::Attribute::getId | ( |  | ) | const

Returns the Attribute identifier.

Returns
  the Attribute identifier

## getScope()

virtual const char * shibsp::Attribute::getScope | ( | size_t | index | ) | const

virtual

Gets the "scope" of the value at the specified position (starting from zero).

Parameters

  index | position of value

Returns
  the specified value's "scope", or nullptr if attribute is unscoped

Reimplemented in shibsp::ExtensibleAttribute, shibsp::NameIDAttribute, and shibsp::ScopedAttribute.

## getSerializedValues()

virtual const std::vector< std::string > & shibsp::Attribute::getSerializedValues | ( |  | ) | const

virtual

Returns serialized Attribute values encoded as UTF-8 strings.

Returns
  an immutable vector of values

Reimplemented in shibsp::BinaryAttribute, shibsp::ExtensibleAttribute, shibsp::NameIDAttribute, shibsp::ScopedAttribute, and shibsp::XMLAttribute.

## getString()

virtual const char * shibsp::Attribute::getString | ( | size_t | index | ) | const

virtual

Gets the string equivalent of the value at the specified position (starting from zero).

Parameters

  index | position of value

Returns
  the specified value in its "string" form, or nullptr if undefined

Reimplemented in shibsp::BinaryAttribute, shibsp::ExtensibleAttribute, shibsp::NameIDAttribute, shibsp::ScopedAttribute, and shibsp::XMLAttribute.

## isCaseSensitive()

bool shibsp::Attribute::isCaseSensitive | ( |  | ) | const

Indicates whether case sensitivity should apply to basic value comparisons.

Returns
  true iff value comparisons should be case sensitive

## isInternal()

bool shibsp::Attribute::isInternal | ( |  | ) | const

Indicates whether the attribute should be exported for CGI use.

Returns
  true iff the attribute should NOT be exported

## marshall()

virtual DDF shibsp::Attribute::marshall | ( |  | ) | const

virtual

Marshalls an Attribute for remoting.

This allows Attribute objects to be communicated across process boundaries without excess XML parsing. The DDF returned must be a struct containing a single list member named with the Attribute's "id". The name of the struct should contain the registered name of the Attribute implementation.

Reimplemented in shibsp::BinaryAttribute, shibsp::ExtensibleAttribute, shibsp::NameIDAttribute, shibsp::ScopedAttribute, shibsp::SimpleAttribute, and shibsp::XMLAttribute.

## registerFactory()

static void shibsp::Attribute::registerFactory | ( | const char * | type,
|  | AttributeFactory * | factory
| ) |  |

static

Registers an AttributeFactory function for a given attribute "type".

Parameters

  type | string used at the root of remoted Attribute structures
  factory | factory function

## removeValue()

virtual void shibsp::Attribute::removeValue | ( | size_t | index | ) |

virtual

Removes the value at the specified position (starting from zero).

Parameters

  index | position of value to remove

Reimplemented in shibsp::BinaryAttribute, shibsp::ExtensibleAttribute, shibsp::NameIDAttribute, shibsp::ScopedAttribute, and shibsp::XMLAttribute.

## setCaseSensitive()

void shibsp::Attribute::setCaseSensitive | ( | bool | caseSensitive | ) |

Sets whether case sensitivity should apply to basic value comparisons.

Parameters

  caseSensitive | true iff value comparisons should be case sensitive

## setInternal()

void shibsp::Attribute::setInternal | ( | bool | internal | ) |

Sets whether the attribute should be exported for CGI use.

Parameters

  internal | true iff the attribute should NOT be exported

## unmarshall()

static Attribute * shibsp::Attribute::unmarshall | ( | DDF & | in | ) |

static

Unmarshalls a remoted Attribute.

Parameters

  in | remoted Attribute data

Returns
  a resolved Attribute of the proper subclass

## valueCount()

virtual size_t shibsp::Attribute::valueCount | ( |  | ) | const

virtual

Returns the number of values.

Returns
  number of values

Reimplemented in shibsp::BinaryAttribute, shibsp::ExtensibleAttribute, shibsp::NameIDAttribute, shibsp::ScopedAttribute, and shibsp::XMLAttribute.

## Member Data Documentation

## m_serialized

std::vector<std::string> shibsp::Attribute::m_serialized

mutable protected

Maintains a copy of serialized attribute values, when possible.

Implementations should maintain the array when values are added or removed.

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

- shibsp/attribute/Attribute.h