| 
 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.odata4j.producer.inmemory.InMemoryProducer
public class InMemoryProducer
An in-memory implementation of an ODATA Producer. Uses the standard Java bean and property model to access information within entities.
| Nested Class Summary | |
|---|---|
| static class | InMemoryProducer.RequestContext | 
| Field Summary | |
|---|---|
| static String | ID_PROPNAME | 
| Constructor Summary | |
|---|---|
| InMemoryProducer(String namespace)Creates a new instance of an in-memory POJO producer. | |
| InMemoryProducer(String namespace,
                 int maxResults)Creates a new instance of an in-memory POJO producer. | |
| InMemoryProducer(String namespace,
                 String containerName,
                 int maxResults,
                 EdmDecorator decorator,
                 InMemoryTypeMapping typeMapping)Creates a new instance of an in-memory POJO producer. | |
| InMemoryProducer(String namespace,
                 String containerName,
                 int maxResults,
                 EdmDecorator decorator,
                 InMemoryTypeMapping typeMapping,
                 boolean flattenEdm) | |
| Method Summary | ||
|---|---|---|
| protected  void | addPropertiesFromObject(Object obj,
                        PropertyModel propertyModel,
                        EdmStructuralType structuralType,
                        List<OProperty<?>> properties,
                        PropertyPathHelper pathHelper)Transforms a POJO into a list of OProperties based on a given EdmStructuralType. | |
|  BaseResponse | callFunction(EdmFunctionImport name,
             Map<String,OFunctionParameter> params,
             QueryInfo queryInfo)Calls a function (aka Service Operation). | |
|  void | close()Releases any resources managed by this producer. | |
|  EntityResponse | createEntity(String entitySetName,
             OEntity entity)Creates a new OData entity. | |
|  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. | |
|  void | createLink(OEntityId sourceEntity,
           String targetNavProp,
           OEntityId targetEntity)Creates a link between two entities. | |
|  void | deleteEntity(String entitySetName,
             OEntityKey entityKey)Deletes an existing entity. | |
|  void | deleteLink(OEntityId sourceEntity,
           String targetNavProp,
           OEntityKey targetEntityKey)Deletes an existing link between two entities. | |
| protected 
 | fillInPojo(OStructuralObject sobj,
           EdmStructuralType stype,
           PropertyModel propertyModel,
           Class<T> pojoClass)Populates a new POJO instance of type pojoClass using data from the given structural object. | |
| protected  InMemoryComplexTypeInfo<?> | findComplexTypeInfoForClass(Class<?> clazz) | |
| protected  InMemoryEntityInfo<?> | findEntityInfoForClass(Class<?> clazz) | |
| protected  InMemoryEntityInfo<?> | findEntityInfoForEntitySet(String entitySetName) | |
| protected  EdmEntitySet | findEntitySetForNavProperty(EdmNavigationProperty navProp) | |
| 
 | findExtension(Class<TExtension> clazz)Finds an extension instance given an interface, if one exists. | |
| protected  void | fireUnmarshalEvent(Object pojo,
                   OStructuralObject sobj,
                   org.odata4j.producer.inmemory.InMemoryProducer.TriggerType ttype) | |
|  String | getContainerName() | |
|  EntitiesResponse | getEntities(String entitySetName,
            QueryInfo queryInfo)Gets all the entities for a given set matching the query information. | |
|  CountResponse | getEntitiesCount(String entitySetName,
                 QueryInfo queryInfo)Gets the count of all the entities for a given set matching the query information. | |
| protected  EntitiesResponse | getEntitiesResponse(InMemoryProducer.RequestContext rc,
                    EdmEntitySet targetEntitySet,
                    Enumerable<Object> objects,
                    PropertyModel propertyModel) | |
|  EntityResponse | getEntity(String entitySetName,
          OEntityKey entityKey,
          EntityQueryInfo queryInfo)Obtains a single entity based on its type and key. | |
| protected  Object | getEntityPojo(InMemoryProducer.RequestContext rc)Given an entity set and an entity key, returns the pojo that is that entity instance. | |
|  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). | |
|  EdmDataServices | getMetadata()Obtains the service metadata for this producer. | |
|  MetadataProducer | getMetadataProducer()Obtains the ODataProducer implementation that serves the metadata as OData EDM constructs. | |
| protected  BaseResponse | getNavProperty(EdmNavigationProperty navProp,
               InMemoryProducer.RequestContext rc)Gets the entity(s) on the target end of a NavigationProperty. | |
|  BaseResponse | getNavProperty(String entitySetName,
               OEntityKey entityKey,
               String navProp,
               QueryInfo queryInfo)Given a specific entity, follow one of its navigation properties, applying constraints as appropriate. | |
|  CountResponse | getNavPropertyCount(String entitySetName,
                    OEntityKey entityKey,
                    String navProp,
                    QueryInfo queryInfo)Given a specific entity, follow one of its navigation properties, applying constraints as appropriate. | |
| protected  Iterable<?> | getRelatedPojos(EdmNavigationProperty navProp,
                Object srcObject,
                InMemoryEntityInfo<?> srcInfo) | |
|  void | mergeEntity(String entitySetName,
            OEntity entity)Modifies an existing entity using merge semantics. | |
| protected  InMemoryEdmGenerator | newEdmGenerator(String namespace,
                InMemoryTypeMapping typeMapping,
                String idPropName,
                Map<String,InMemoryEntityInfo<?>> eis,
                Map<String,InMemoryComplexTypeInfo<?>> complexTypesInfo) | |
| 
 | register(Class<TEntity> entityClass,
         Class<TKey> keyClass,
         String entitySetName,
         Func<Iterable<TEntity>> get,
         Func1<TEntity,TKey> id)Registers a new entity set based on a POJO type using the default property model. | |
| 
 | register(Class<TEntity> entityClass,
         PropertyModel propertyModel,
         String entitySetName,
         Func<Iterable<TEntity>> get,
         String... keys)Registers a new entity set based on a POJO type and a property model. | |
| 
 | register(Class<TEntity> entityClass,
         PropertyModel propertyModel,
         String entitySetName,
         String entityTypeName,
         Func<Iterable<TEntity>> get,
         Func1<InMemoryProducer.RequestContext,Iterable<TEntity>> getWithContext,
         String... keys) | |
| 
 | register(Class<TEntity> entityClass,
         PropertyModel propertyModel,
         String entitySetName,
         String entityTypeName,
         Func<Iterable<TEntity>> get,
         String... keys) | |
| 
 | register(Class<TEntity> entityClass,
         String entitySetName,
         Func<Iterable<TEntity>> get,
         String... keys)Registers a new entity based on a POJO, with support for composite keys. | |
| 
 | register(Class<TEntity> entityClass,
         String entitySetName,
         String entityTypeName,
         Func<Iterable<TEntity>> get,
         String... keys)Registers a new entity based on a POJO, with support for composite keys. | |
| 
 | registerComplexType(Class<TEntity> complexTypeClass,
                    String typeName)Registers a POJO class as an EdmComplexType. | |
| 
 | registerComplexType(Class<TEntity> complexTypeClass,
                    String typeName,
                    PropertyModel propertyModel) | |
|  void | setIncludeNullPropertyValues(boolean value) | |
| protected  OEntity | toOEntity(EdmEntitySet ees,
          Object obj,
          PropertyPathHelper pathHelper) | |
| 
 | toPojo(OComplexObject entity,
       Class<T> pojoClass)Transforms an OComplexObject into a POJO of the given class | |
| 
 | toPojo(OEntity entity,
       Class<T> pojoClass)Transforms the given entity into a POJO of type pojoClass. | |
|  void | updateEntity(String entitySetName,
             OEntity entity)Modifies an existing entity using update semantics. | |
|  void | updateLink(OEntityId sourceEntity,
           String targetNavProp,
           OEntityKey oldTargetEntityKey,
           OEntityId newTargetEntity)Replaces an existing link between two entities. | |
| Methods inherited from class java.lang.Object | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Field Detail | 
|---|
public static final String ID_PROPNAME
| Constructor Detail | 
|---|
public InMemoryProducer(String namespace)
namespace - the namespace of the schema registrations
public InMemoryProducer(String namespace,
                        int maxResults)
namespace - the namespace of the schema registrationsmaxResults - the maximum number of entities to return in a single call
public InMemoryProducer(String namespace,
                        String containerName,
                        int maxResults,
                        EdmDecorator decorator,
                        InMemoryTypeMapping typeMapping)
namespace - the namespace of the schema registrationscontainerName - the container name for generated metadatamaxResults - the maximum number of entities to return in a single calldecorator - a decorator to use for edm customizationstypeMapping - optional mapping between java types and edm types, null for default
public InMemoryProducer(String namespace,
                        String containerName,
                        int maxResults,
                        EdmDecorator decorator,
                        InMemoryTypeMapping typeMapping,
                        boolean flattenEdm)
| Method Detail | 
|---|
protected void addPropertiesFromObject(Object obj,
                                       PropertyModel propertyModel,
                                       EdmStructuralType structuralType,
                                       List<OProperty<?>> properties,
                                       PropertyPathHelper pathHelper)
obj - the POJO to transformpropertyModel - the PropertyModel to use to access POJO class
 structure and values.structuralType - the EdmStructuralTypeproperties - put properties into this list.
public BaseResponse callFunction(EdmFunctionImport name,
                                 Map<String,OFunctionParameter> params,
                                 QueryInfo queryInfo)
ODataProducer
callFunction in interface ODataProducername - the name of the functionparams - the parameters to the functionqueryInfo - additional query parameters to apply to collection-valued results
    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 void close()
ODataProducer
close in interface ODataProducer
public EntityResponse createEntity(String entitySetName,
                                   OEntity entity)
ODataProducer
createEntity in interface ODataProducerentitySetName - the entity-set nameentity - the request entity sent from the client
public EntityResponse createEntity(String entitySetName,
                                   OEntityKey entityKey,
                                   String navProp,
                                   OEntity entity)
ODataProducer
createEntity in interface ODataProducerentitySetName - the entity-set name of the existing entityentityKey - the entity-key of the existing entitynavProp - the navigation property off of the existing entityentity - the request entity sent from the client
public void createLink(OEntityId sourceEntity,
                       String targetNavProp,
                       OEntityId targetEntity)
ODataProducer
createLink in interface ODataProducersourceEntity - an entity with at least one navigation propertytargetNavProp - the navigation propertytargetEntity - the link target entity
public void deleteEntity(String entitySetName,
                         OEntityKey entityKey)
ODataProducer
deleteEntity in interface ODataProducerentitySetName - the entity-set name of the entityentityKey - the entity-key of the entity
public void deleteLink(OEntityId sourceEntity,
                       String targetNavProp,
                       OEntityKey targetEntityKey)
ODataProducer
deleteLink in interface ODataProducersourceEntity - an entity with at least one navigation propertytargetNavProp - the navigation propertytargetEntityKey - if the navigation property represents a set, the key identifying the target entity within the set, else n/a
protected <T> T fillInPojo(OStructuralObject sobj,
                           EdmStructuralType stype,
                           PropertyModel propertyModel,
                           Class<T> pojoClass)
                throws InstantiationException,
                       IllegalAccessException,
                       IllegalArgumentException,
                       InvocationTargetException
InstantiationException
IllegalAccessException
IllegalArgumentException
InvocationTargetExceptionprotected InMemoryComplexTypeInfo<?> findComplexTypeInfoForClass(Class<?> clazz)
protected InMemoryEntityInfo<?> findEntityInfoForClass(Class<?> clazz)
protected InMemoryEntityInfo<?> findEntityInfoForEntitySet(String entitySetName)
protected EdmEntitySet findEntitySetForNavProperty(EdmNavigationProperty navProp)
public <TExtension extends OExtension<ODataProducer>> TExtension findExtension(Class<TExtension> clazz)
OExtensible
findExtension in interface OExtensible<ODataProducer>TExtension - type of extensionclazz - the extension interface
protected void fireUnmarshalEvent(Object pojo,
                                  OStructuralObject sobj,
                                  org.odata4j.producer.inmemory.InMemoryProducer.TriggerType ttype)
                           throws IllegalAccessException,
                                  IllegalArgumentException,
                                  InvocationTargetException
IllegalAccessException
IllegalArgumentException
InvocationTargetExceptionpublic String getContainerName()
public EntitiesResponse getEntities(String entitySetName,
                                    QueryInfo queryInfo)
ODataProducer
getEntities in interface ODataProducerentitySetName - the entity-set name for entities to returnqueryInfo - the additional constraints to apply to the entities
public CountResponse getEntitiesCount(String entitySetName,
                                      QueryInfo queryInfo)
ODataProducer
getEntitiesCount in interface ODataProducerentitySetName - the entity-set name for entities whose count is returnedqueryInfo - the additional constraints to apply to the entities
protected EntitiesResponse getEntitiesResponse(InMemoryProducer.RequestContext rc,
                                               EdmEntitySet targetEntitySet,
                                               Enumerable<Object> objects,
                                               PropertyModel propertyModel)
public EntityResponse getEntity(String entitySetName,
                                OEntityKey entityKey,
                                EntityQueryInfo queryInfo)
ODataProducer
getEntity in interface ODataProducerentitySetName - the entity-set name for entities to returnentityKey - the unique entity-key of the entity to start withqueryInfo - the additional constraints applicable to single-entity queries
protected Object getEntityPojo(InMemoryProducer.RequestContext rc)
rc - the current ReqeustContext, may be valuable to the ei.getWithContext impl
public EntityIdResponse getLinks(OEntityId sourceEntity,
                                 String targetNavProp)
ODataProducer
getLinks in interface ODataProducersourceEntity - an entity with at least one navigation propertytargetNavProp - the navigation property
public EdmDataServices getMetadata()
ODataProducer
getMetadata in interface ODataProducerpublic MetadataProducer getMetadataProducer()
ODataProducer
getMetadataProducer in interface ODataProducer
protected BaseResponse getNavProperty(EdmNavigationProperty navProp,
                                      InMemoryProducer.RequestContext rc)
navProp - the navigation propertyrc - the request context
public BaseResponse getNavProperty(String entitySetName,
                                   OEntityKey entityKey,
                                   String navProp,
                                   QueryInfo queryInfo)
ODataProducer
getNavProperty in interface ODataProducerentitySetName - the entity-set of the entity to start withentityKey - the unique entity-key of the entity to start withnavProp - the navigation property to followqueryInfo - additional constraints to apply to the result
public CountResponse getNavPropertyCount(String entitySetName,
                                         OEntityKey entityKey,
                                         String navProp,
                                         QueryInfo queryInfo)
ODataProducer
getNavPropertyCount in interface ODataProducerentitySetName - the entity-set of the entity to start withentityKey - the unique entity-key of the entity to start withnavProp - the navigation property to followqueryInfo - additional constraints to apply to the result
protected Iterable<?> getRelatedPojos(EdmNavigationProperty navProp,
                                      Object srcObject,
                                      InMemoryEntityInfo<?> srcInfo)
public void mergeEntity(String entitySetName,
                        OEntity entity)
ODataProducer
mergeEntity in interface ODataProducerentitySetName - the entity-set nameentity - the entity modifications sent from the client
protected InMemoryEdmGenerator newEdmGenerator(String namespace,
                                               InMemoryTypeMapping typeMapping,
                                               String idPropName,
                                               Map<String,InMemoryEntityInfo<?>> eis,
                                               Map<String,InMemoryComplexTypeInfo<?>> complexTypesInfo)
public <TEntity,TKey> void register(Class<TEntity> entityClass,
                                    Class<TKey> keyClass,
                                    String entitySetName,
                                    Func<Iterable<TEntity>> get,
                                    Func1<TEntity,TKey> id)
public <TEntity,TKey> void register(Class<TEntity> entityClass,
                                    PropertyModel propertyModel,
                                    String entitySetName,
                                    Func<Iterable<TEntity>> get,
                                    String... keys)
entityClass - the class of the entities that are to be stored in the setpropertyModel - a way to get/set properties on the POJOentitySetName - the alias the set will be known by; this is what is used in the ODATA URLget - a function to iterate over the elements in the setkeys - one or more keys for the entity
public <TEntity> void register(Class<TEntity> entityClass,
                               PropertyModel propertyModel,
                               String entitySetName,
                               String entityTypeName,
                               Func<Iterable<TEntity>> get,
                               Func1<InMemoryProducer.RequestContext,Iterable<TEntity>> getWithContext,
                               String... keys)
public <TEntity> void register(Class<TEntity> entityClass,
                               PropertyModel propertyModel,
                               String entitySetName,
                               String entityTypeName,
                               Func<Iterable<TEntity>> get,
                               String... keys)
public <TEntity> void register(Class<TEntity> entityClass,
                               String entitySetName,
                               Func<Iterable<TEntity>> get,
                               String... keys)
entityClass - the class of the entities that are to be stored in the setentitySetName - the alias the set will be known by; this is what is used in the OData urlget - a function to iterate over the elements in the setkeys - one or more keys for the entity
public <TEntity> void register(Class<TEntity> entityClass,
                               String entitySetName,
                               String entityTypeName,
                               Func<Iterable<TEntity>> get,
                               String... keys)
entityClass - the class of the entities that are to be stored in the setentitySetName - the alias the set will be known by; this is what is used in the OData urlentityTypeName - type name of the entityget - a function to iterate over the elements in the setkeys - one or more keys for the entity
public <TEntity> void registerComplexType(Class<TEntity> complexTypeClass,
                                          String typeName)
complexTypeClass - The POJO ClasstypeName - The name of the EdmComplexType
public <TEntity> void registerComplexType(Class<TEntity> complexTypeClass,
                                          String typeName,
                                          PropertyModel propertyModel)
public void setIncludeNullPropertyValues(boolean value)
protected OEntity toOEntity(EdmEntitySet ees,
                            Object obj,
                            PropertyPathHelper pathHelper)
public <T> T toPojo(OComplexObject entity,
                    Class<T> pojoClass)
         throws InstantiationException,
                IllegalAccessException,
                IllegalArgumentException,
                InvocationTargetException
InstantiationException
IllegalAccessException
IllegalArgumentException
InvocationTargetException
public <T> T toPojo(OEntity entity,
                    Class<T> pojoClass)
         throws InstantiationException,
                IllegalAccessException,
                IllegalArgumentException,
                InvocationTargetException
InstantiationException
IllegalAccessException
IllegalArgumentException
InvocationTargetException
public void updateEntity(String entitySetName,
                         OEntity entity)
ODataProducer
updateEntity in interface ODataProducerentitySetName - the entity-set nameentity - the entity modifications sent from the client
public void updateLink(OEntityId sourceEntity,
                       String targetNavProp,
                       OEntityKey oldTargetEntityKey,
                       OEntityId newTargetEntity)
ODataProducer
updateLink in interface ODataProducersourceEntity - an entity with at least one navigation propertytargetNavProp - the navigation propertyoldTargetEntityKey - if the navigation property represents a set, the key identifying the old target entity within the set, else n/anewTargetEntity - the new link target entity| 
 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||