public interface

ODataProducer

org.odata4j.producer.ODataProducer
Known Indirect Subclasses

Class Overview

Implement ODataProducer on the server-side to create a new java-based OData producer.

The interface contains methods for clients to retrieve/query entities and to introspect service metadata (for read-only services) as well as methods to create/modify/delete entities (for read-write services).

Note that all client requests/responses are normalized - all details involving the OData http protocol, query expression model, EDM structure are handled by odata4j at a higher level.

Summary

Public Methods
abstract BaseResponse callFunction(EdmFunctionImport name, Map<String, OFunctionParameter> params, QueryInfo queryInfo)
Call a function (aka Service Operation)
abstract void close()
Releases any resources managed by this producer.
abstract EntityResponse createEntity(String entitySetName, OEntity entity)
Creates a new OData entity.
abstract EntityResponse createEntity(String entitySetName, OEntityKey entityKey, String navProp, OEntity entity)
Creates a new OData entity as a reference of an existing entity, implicitly linked to the existing entity by a navigation property.
abstract void createLink(OEntityId sourceEntity, String targetNavProp, OEntityId targetEntity)
Creates a link between two entities.
abstract void deleteEntity(String entitySetName, OEntityKey entityKey)
Deletes an existing entity.
abstract void deleteLink(OEntityId sourceEntity, String targetNavProp, OEntityKey targetEntityKey)
Deletes an existing link between two entities.
abstract EntitiesResponse getEntities(String entitySetName, QueryInfo queryInfo)
Gets all the entities for a given set matching the query information.
abstract CountResponse getEntitiesCount(String entitySetName, QueryInfo queryInfo)
Gets the count of all the entities for a given set matching the query information.
abstract EntityResponse getEntity(String entitySetName, OEntityKey entityKey, EntityQueryInfo queryInfo)
Obtains a single entity based on its type and key.
abstract EntityIdResponse getLinks(OEntityId sourceEntity, String targetNavProp)
Returns the value of an entity's navigation property as a collection of entity links (or a single link if the association cardinality is 1).
abstract EdmDataServices getMetadata()
Obtains the service metadata for this producer.
abstract MetadataProducer getMetadataProducer()
Obtains the ODataProducer implementation that serves the metadata as OData EDM constructs.
abstract BaseResponse getNavProperty(String entitySetName, OEntityKey entityKey, String navProp, QueryInfo queryInfo)
Given a specific entity, follow one of its navigation properties, applying constraints as appropriate.
abstract CountResponse getNavPropertyCount(String entitySetName, OEntityKey entityKey, String navProp, QueryInfo queryInfo)
Given a specific entity, follow one of its navigation properties, applying constraints as appropriate.
abstract void mergeEntity(String entitySetName, OEntity entity)
Modifies an existing entity using merge semantics.
abstract void updateEntity(String entitySetName, OEntity entity)
Modifies an existing entity using update semantics.
abstract void updateLink(OEntityId sourceEntity, String targetNavProp, OEntityKey oldTargetEntityKey, OEntityId newTargetEntity)
Replaces an existing link between two entities.

Public Methods

public abstract BaseResponse callFunction (EdmFunctionImport name, Map<String, OFunctionParameter> params, QueryInfo queryInfo)

Call a function (aka Service Operation)

Parameters
name The name of the function
params The parameters to the function
queryInfo Additional query parameters to apply to collection-valued results
Returns
  • a BaseResponse appropriately typed to hold the function results From the spec:
        The return type of <Function> MUST be one of the following:
            An EDMSimpleType or collection of EDMSimpleTypes.
            An entity type or collection of entity types.
            A complex type or collection of complex types.
            A row type or collection of row types.
            <ReturnType> can contain a maximum of one <CollectionType> element.
            <ReturnType> can contain a maximum of one <ReferenceType> element.
            <ReturnType> can contain a maximum of one <RowType> element.
            A ref type or collection of ref types.

public abstract void close ()

Releases any resources managed by this producer.

public abstract EntityResponse createEntity (String entitySetName, OEntity entity)

Creates a new OData entity.

Parameters
entitySetName The entity-set name
entity The request entity sent from the client
Returns
  • the newly-created entity, fully populated with the key and default properties

public abstract EntityResponse createEntity (String entitySetName, OEntityKey entityKey, String navProp, OEntity entity)

Creates a new OData entity as a reference of an existing entity, implicitly linked to the existing entity by a navigation property.

Parameters
entitySetName The entity-set name of the existing entity
entityKey The entity-key of the existing entity
navProp The navigation property off of the existing entity
entity The request entity sent from the client
Returns
  • the newly-created entity, fully populated with the key and default properties, and linked to the existing entity

public abstract void createLink (OEntityId sourceEntity, String targetNavProp, OEntityId targetEntity)

Creates a link between two entities.

Parameters
sourceEntity An entity with at least one navigation property
targetNavProp The navigation property
targetEntity The link target entity

public abstract void deleteEntity (String entitySetName, OEntityKey entityKey)

Deletes an existing entity.

Parameters
entitySetName The entity-set name of the entity
entityKey The entity-key of the entity

public abstract void deleteLink (OEntityId sourceEntity, String targetNavProp, OEntityKey targetEntityKey)

Deletes an existing link between two entities.

Parameters
sourceEntity An entity with at least one navigation property
targetNavProp The navigation property
targetEntityKey If the navigation property represents a set, the key identifying the target entity within the set, else n/a

public abstract EntitiesResponse getEntities (String entitySetName, QueryInfo queryInfo)

Gets all the entities for a given set matching the query information.

Parameters
entitySetName The entity-set name for entities to return
queryInfo The additional constraints to apply to the entities
Returns
  • a packaged collection of entities to pass back to the client

public abstract CountResponse getEntitiesCount (String entitySetName, QueryInfo queryInfo)

Gets the count of all the entities for a given set matching the query information.

Parameters
entitySetName The entity-set name for entities whose count is returned
queryInfo The additional constraints to apply to the entities
Returns
  • count of the entities

public abstract EntityResponse getEntity (String entitySetName, OEntityKey entityKey, EntityQueryInfo queryInfo)

Obtains a single entity based on its type and key.

Parameters
entitySetName The entity-set name for entities to return
entityKey The unique entity-key of the entity to start with
queryInfo The additional constraints applicable to single-entity queries
Returns
  • the resulting entity

public abstract EntityIdResponse getLinks (OEntityId sourceEntity, String targetNavProp)

Returns the value of an entity's navigation property as a collection of entity links (or a single link if the association cardinality is 1).

Parameters
sourceEntity An entity with at least one navigation property
targetNavProp The navigation property
Returns
  • a collection of entity links (or a single link if the association cardinality is 1)

public abstract EdmDataServices getMetadata ()

Obtains the service metadata for this producer.

Returns
  • a fully-constructed metadata object

public abstract MetadataProducer getMetadataProducer ()

Obtains the ODataProducer implementation that serves the metadata as OData EDM constructs.

Returns
  • the MetadataProducer object

public abstract BaseResponse getNavProperty (String entitySetName, OEntityKey entityKey, String navProp, QueryInfo queryInfo)

Given a specific entity, follow one of its navigation properties, applying constraints as appropriate. Return the resulting entity, entities, or property value.

Parameters
entitySetName The entity-set of the entity to start with
entityKey The unique entity-key of the entity to start with
navProp The navigation property to follow
queryInfo Additional constraints to apply to the result
Returns
  • the resulting entity, entities, or property value

public abstract CountResponse getNavPropertyCount (String entitySetName, OEntityKey entityKey, String navProp, QueryInfo queryInfo)

Given a specific entity, follow one of its navigation properties, applying constraints as appropriate. Return the count of the resulting entities.

Parameters
entitySetName The entity-set of the entity to start with
entityKey The unique entity-key of the entity to start with
navProp The navigation property to follow
queryInfo Additional constraints to apply to the result
Returns
  • the count of the resulting entities

public abstract void mergeEntity (String entitySetName, OEntity entity)

Modifies an existing entity using merge semantics.

Parameters
entitySetName The entity-set name
entity The entity modifications sent from the client

public abstract void updateEntity (String entitySetName, OEntity entity)

Modifies an existing entity using update semantics.

Parameters
entitySetName The entity-set name
entity The entity modifications sent from the client

public abstract void updateLink (OEntityId sourceEntity, String targetNavProp, OEntityKey oldTargetEntityKey, OEntityId newTargetEntity)

Replaces an existing link between two entities.

Parameters
sourceEntity An entity with at least one navigation property
targetNavProp The navigation property
oldTargetEntityKey If the navigation property represents a set, the key identifying the old target entity within the set, else n/a
newTargetEntity The new link target entity