org.apache.openjpa.datacache
Class QueryCacheStoreQuery

java.lang.Object
  extended by org.apache.openjpa.datacache.QueryCacheStoreQuery
All Implemented Interfaces:
Serializable, QueryOperations, StoreQuery

public class QueryCacheStoreQuery
extends Object
implements StoreQuery

A StoreQuery implementation that caches the OIDs involved in the query, and can determine whether or not the query has been dirtied.

Since:
0.2.5.0
Author:
Patrick Linskey
See Also:
Serialized Form

Nested Class Summary
static class QueryCacheStoreQuery.CachedList
          Result list implementation for a cached query result.
 
Nested classes/interfaces inherited from interface org.apache.openjpa.kernel.StoreQuery
StoreQuery.Executor, StoreQuery.Range
 
Field Summary
 
Fields inherited from interface org.apache.openjpa.kernel.StoreQuery
EMPTY_BOOLEANS, EMPTY_CLASSES, EMPTY_METAS, EMPTY_OBJECTS, EMPTY_PARAMS, EMPTY_STRINGS
 
Fields inherited from interface org.apache.openjpa.kernel.QueryOperations
OP_DELETE, OP_SELECT, OP_UPDATE
 
Constructor Summary
QueryCacheStoreQuery(StoreQuery query, QueryCache cache)
          Create a new instance that delegates to query if no cached results are available.
 
Method Summary
 Object evaluate(Object value, Object ob, Object[] params, OpenJPAStateManager sm)
           
 AggregateListener getAggregateListener(String tag)
          Return the standard filter listener for the given tag, or null.
 QueryCache getCache()
          Return the QueryCache that this object is associated with.
 QueryContext getContext()
          Return the query context that has been set.
 StoreQuery getDelegate()
          Delegate.
 FilterListener getFilterListener(String tag)
          Return the standard filter listener for the given tag, or null.
 void invalidateCompilation()
          Invalidate any internal compilation state.
 Object newCompilation()
          Create a new compilation for this query.
 Object newCompilationKey()
          Create a new key for caching compiled query information.
 StoreQuery.Executor newDataStoreExecutor(ClassMetaData meta, boolean subs)
          Return an executor for datastore execution of this query.
 StoreQuery.Executor newInMemoryExecutor(ClassMetaData meta, boolean subs)
          Return an executor for in-memory execution of this query.
 void populateFromCompilation(Object comp)
          Populate internal data from compilation.
 boolean requiresCandidateType()
          Whether this query requires a candidate class.
 boolean requiresParameterDeclarations()
          Whether this query requires parameters to be declared.
 void setContext(QueryContext qctx)
          Set the current query context.
 boolean setQuery(Object query)
          This is invoked when the user or a facade creates a new query with an object that the system does not recognize.
 boolean supportsAbstractExecutors()
          Return true if this query supports execution against abstract or interface types.
 boolean supportsDataStoreExecution()
          True if this query supports datastore execution, false if it can only run in memory.
 boolean supportsInMemoryExecution()
          True if this query supports in-memory execution, false if it can only run against the datastore.
 boolean supportsParameterDeclarations()
          Whether this query supports declared parameters.
 Object writeReplace()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

QueryCacheStoreQuery

public QueryCacheStoreQuery(StoreQuery query,
                            QueryCache cache)
Create a new instance that delegates to query if no cached results are available.

Method Detail

getCache

public QueryCache getCache()
Return the QueryCache that this object is associated with.


getDelegate

public StoreQuery getDelegate()
Delegate.


writeReplace

public Object writeReplace()
                    throws ObjectStreamException
Throws:
ObjectStreamException

getContext

public QueryContext getContext()
Description copied from interface: StoreQuery
Return the query context that has been set.

Specified by:
getContext in interface StoreQuery

setContext

public void setContext(QueryContext qctx)
Description copied from interface: StoreQuery
Set the current query context. This will be called before use.

Specified by:
setContext in interface StoreQuery

setQuery

public boolean setQuery(Object query)
Description copied from interface: StoreQuery
This is invoked when the user or a facade creates a new query with an object that the system does not recognize. Return true if the object is recognized by the store, false otherwise.

Specified by:
setQuery in interface StoreQuery

getFilterListener

public FilterListener getFilterListener(String tag)
Description copied from interface: StoreQuery
Return the standard filter listener for the given tag, or null.

Specified by:
getFilterListener in interface StoreQuery

getAggregateListener

public AggregateListener getAggregateListener(String tag)
Description copied from interface: StoreQuery
Return the standard filter listener for the given tag, or null.

Specified by:
getAggregateListener in interface StoreQuery

newCompilationKey

public Object newCompilationKey()
Description copied from interface: StoreQuery
Create a new key for caching compiled query information. May be null.

Specified by:
newCompilationKey in interface StoreQuery

newCompilation

public Object newCompilation()
Description copied from interface: StoreQuery
Create a new compilation for this query. May be null.

Specified by:
newCompilation in interface StoreQuery

populateFromCompilation

public void populateFromCompilation(Object comp)
Description copied from interface: StoreQuery
Populate internal data from compilation.

Specified by:
populateFromCompilation in interface StoreQuery

invalidateCompilation

public void invalidateCompilation()
Description copied from interface: StoreQuery
Invalidate any internal compilation state.

Specified by:
invalidateCompilation in interface StoreQuery

supportsDataStoreExecution

public boolean supportsDataStoreExecution()
Description copied from interface: StoreQuery
True if this query supports datastore execution, false if it can only run in memory.

Specified by:
supportsDataStoreExecution in interface StoreQuery

supportsInMemoryExecution

public boolean supportsInMemoryExecution()
Description copied from interface: StoreQuery
True if this query supports in-memory execution, false if it can only run against the datastore.

Specified by:
supportsInMemoryExecution in interface StoreQuery

newInMemoryExecutor

public StoreQuery.Executor newInMemoryExecutor(ClassMetaData meta,
                                               boolean subs)
Description copied from interface: StoreQuery
Return an executor for in-memory execution of this query. Executors must be cachable and thread safe. If this class returns true from StoreQuery.supportsAbstractExecutors(), the given metadata will always be for the candidate class of this query, or possibly null if the candidate class is not itself persistence capable (like an interface or abstract base class). Otherwise, the given type will be a mapped class.

Specified by:
newInMemoryExecutor in interface StoreQuery
subs - whether to include dependent mapped subclasses in the results; independent subclasses should never be included

newDataStoreExecutor

public StoreQuery.Executor newDataStoreExecutor(ClassMetaData meta,
                                                boolean subs)
Description copied from interface: StoreQuery
Return an executor for datastore execution of this query. Executors must be cachable and thread safe. If this class returns true from StoreQuery.supportsAbstractExecutors(), the given metadata will always be for the candidate class of this query, or possibly null if the candidate class is not itself persistence capable (like an interface or abstract base class). Otherwise, the given type will be a mapped class.

Specified by:
newDataStoreExecutor in interface StoreQuery
subs - whether to include dependent mapped subclasses in the results; independent subclasses should never be included

supportsAbstractExecutors

public boolean supportsAbstractExecutors()
Description copied from interface: StoreQuery
Return true if this query supports execution against abstract or interface types. Returns false by default, meaning we will only request executors for persistent classes. In this case, we will automatically combine the results of the executors for all implementing classes if we execute a query for an interface for abstract type.

Specified by:
supportsAbstractExecutors in interface StoreQuery

requiresCandidateType

public boolean requiresCandidateType()
Description copied from interface: StoreQuery
Whether this query requires a candidate class.

Specified by:
requiresCandidateType in interface StoreQuery

requiresParameterDeclarations

public boolean requiresParameterDeclarations()
Description copied from interface: StoreQuery
Whether this query requires parameters to be declared.

Specified by:
requiresParameterDeclarations in interface StoreQuery

supportsParameterDeclarations

public boolean supportsParameterDeclarations()
Description copied from interface: StoreQuery
Whether this query supports declared parameters.

Specified by:
supportsParameterDeclarations in interface StoreQuery

evaluate

public Object evaluate(Object value,
                       Object ob,
                       Object[] params,
                       OpenJPAStateManager sm)
Specified by:
evaluate in interface StoreQuery


Copyright © 2006-2010 Apache Software Foundation. All Rights Reserved.