zorba::OneToOneURIMapper

#include <zorba/uri_resolvers.h>

Inherited from: zorba::URIMapper

Convenience implementation of a mapper that maps URIs to other single URIs. Will only map for one specific Entity Kind.

Private Types

std::map< String, String >

Mapping_t

Mapping_t::const_iterator

MappingIter_t

Public Functions

void

addMapping(const String &aUri, const String &aMappedUri)

Add a mapping from a given URI to another URI.

Kind

mapperKind()

Declare whether this is a "component" or "candidate" URI mapper.

void

mapURI(const zorba::String aUri, EntityData const *aEntityData, std::vector< zorba::String > &oUris)

Transform an input URI into a set of output URIs.

OneToOneURIMapper(EntityData::Kind aEntityKind, URIMapper::Kind aMapperKind=URIMapper::CANDIDATE)

Constructor.

Public Types

Kind

enum defining legal return values for mapperKind().

Public Static Attributes

const zorba::String

DENY_ACCESS

Constant indicating that Zorba should deny access to the given URI.

Private Types

Mapping_t

std::map< String, String > Mapping_t

MappingIter_t

Mapping_t::const_iterator MappingIter_t

Private Attributes

theEntityKind

EntityData::Kind const theEntityKind

theMapperKind

URIMapper::Kind const theMapperKind

theMappings

Mapping_t theMappings

Public Functions

addMapping

void addMapping(const String &aUri, const String &aMappedUri)

Add a mapping from a given URI to another URI.

mapperKind

Kind mapperKind()

Declare whether this is a "component" or "candidate" URI mapper.

Zorba supports two different kinds of URI mapping. The first, "component URI mapping", is to allow mapping from an input URI to a set of URIs which, taken together, comprise the entire entity to be resolved. This is currently only supported for module import, where it can be used to load a module which is physically stored in multiple library module files."Candidate URI mapping" is to allow mapping from an input URI to a set or URIs which are *potential* identifiers of the entity being resolved. Each of these URIs will be treated to any subsequent URI mappers, and then treated as URLs and passed in turn to all registered URLResolvers. This type of URI mapping is supported for all uses of URIs in Zorba. It can be used for example to redirect http: URIs to locally-cached file: URLs, or to provide several alternative locations for a given resource.If you do not override this method, the default is "candidate".

mapURI

void mapURI(const zorba::String aUri, EntityData const *aEntityData, std::vector< zorba::String > &oUris)

Transform an input URI into a set of output URIs.

The "aEntityData" parameter informs the URIMapper what kind of entity is being referenced by URI. URIMappers may choose to make use of this information to alter their behaviour.Implementers of this method should provide output URIs by adding them to the oUris output parameter, using the push_back() method. They should not otherwise view or manipulate this vector.If a URIMapper does not wish to provide any output URIs for the given input URI, they should simply do nothing and return. In this case, Zorba will continue with the original, unmapped URI.

OneToOneURIMapper

 OneToOneURIMapper(EntityData::Kind aEntityKind, URIMapper::Kind aMapperKind=URIMapper::CANDIDATE)

Constructor.

Specify the Entity Kind you wish to map. Optionally, specify whether this should be a CANDIDATE or COMPONENT mapper; default is CANDIDATE.

Public Types

Kind

 Kind

enum defining legal return values for mapperKind().

Public Static Attributes

DENY_ACCESS

const zorba::String DENY_ACCESS

Constant indicating that Zorba should deny access to the given URI.

If any kind of URIMapper returns this value at any point in the vector of URIs, Zorba will cause the resolution of this URI to be denied with an error. This can be used, for example, to suppress importing particular modules by URI.