org.apache.openjpa.persistence
Class HintHandler

java.lang.Object
  extended by org.apache.openjpa.kernel.AbstractHintHandler
      extended by org.apache.openjpa.persistence.FetchPlanHintHandler
          extended by org.apache.openjpa.persistence.HintHandler
All Implemented Interfaces:
Serializable

public class HintHandler
extends FetchPlanHintHandler

Manages query hint keys and handles their values on behalf of a owning QueryImpl. Uses specific knowledge of hint keys declared in different parts of the system. This receiver collects hint keys from different parts of the system. The keys are implicitly or explicitly declared by several different mechanics. This receiver sets the values on behalf of a owning QueryImpl based on the its specific knowledge of these keys. The hint keys from following sources are collected and handled: 1. QueryHints interface declares hint keys as public static final fields. These fields are collected by reflection. The values are handled by invoking methods on the owning QueryImpl 2. Some hint keys are collected from bean-style property names of JDBCFetchPlan by reflection and prefixed with openjpa.FetchPlan. Their values are used to set the corresponding property of FetchPlan via reflection 3. Currently defined javax.persistence.* hint keys have a equivalent counterpart to one of these FetchPlan keys. The JPA keys are mapped to equivalent FetchPlan hint keys. 4. Some keys directly invoke setters or add listeners to the owning QueryImpl. These hint keys are statically declared in this receiver itself. 5. ProductDerivation may introduce their own query hint keys via ProductDerivation.getSupportedQueryHints(). Their values are set in the FetchConfiguration.setHint(String, Object) A hint key is classified into one of the following three categories: 1. Supported: A key is known to this receiver as collected from different parts of the system. The value of a supported key is recorded and available via getHints() method. 2. Recognized: A key is not known to this receiver but has a prefix which is known to this receiver. The value of a recognized key is not recorded but its value is available via FetchConfiguration.getHint(String) 3. Unrecognized: A key is neither supported nor recognized. The value of a unrecognized key is neither recorded nor set anywhere. If an incompatible value is supplied for a supported key, a non-fatal ArgumentException is raised.

Since:
2.0.0
Author:
Pinaki Poddar
See Also:
Serialized Form

Field Summary
static String HINT_AGGREGATE_LISTENER
           
static String HINT_AGGREGATE_LISTENERS
           
static String HINT_FILTER_LISTENER
           
static String HINT_FILTER_LISTENERS
           
static String HINT_SUBCLASSES
           
 
Fields inherited from class org.apache.openjpa.persistence.FetchPlanHintHandler
_fPlan, JavaxHintsMap, PrecedenceMap, PREFIX_FETCHPLAN, PREFIX_JPA, ValidProductPrefixes
 
Fields inherited from class org.apache.openjpa.kernel.AbstractHintHandler
_fConfig, BLANK, DOT, PREFIX_JDBC, PREFIX_OPENJPA
 
Method Summary
 void addHintKey(String key)
          Add a hint key to the set of supported hint keys.
 Map<String,Object> getHints()
          Gets all the recorded hint keys and their values.
 Set<String> getKnownPrefixes()
           
 Set<String> getSupportedHints()
          Gets all the supported hint keys.
protected  String hintToKey(String key)
           
 void setHint(String key, Object value)
           
protected  boolean setHintInternal(String key, Object value, boolean validateThrowException)
           
 
Methods inherited from class org.apache.openjpa.persistence.FetchPlanHintHandler
handleException, hasPrecedent, setHint
 
Methods inherited from class org.apache.openjpa.kernel.AbstractHintHandler
getPrefixOf, getSuffixOf, hintToSetter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HINT_SUBCLASSES

public static final String HINT_SUBCLASSES
See Also:
Constant Field Values

HINT_FILTER_LISTENER

public static final String HINT_FILTER_LISTENER
See Also:
Constant Field Values

HINT_FILTER_LISTENERS

public static final String HINT_FILTER_LISTENERS
See Also:
Constant Field Values

HINT_AGGREGATE_LISTENER

public static final String HINT_AGGREGATE_LISTENER
See Also:
Constant Field Values

HINT_AGGREGATE_LISTENERS

public static final String HINT_AGGREGATE_LISTENERS
See Also:
Constant Field Values
Method Detail

getHints

public Map<String,Object> getHints()
Gets all the recorded hint keys and their values.


getSupportedHints

public Set<String> getSupportedHints()
Gets all the supported hint keys. The set of supported hint keys is statically determined by collecting hint keys from the ProductDerivations and reflecting upon some of the known classes.


addHintKey

public void addHintKey(String key)
Add a hint key to the set of supported hint keys.


getKnownPrefixes

public Set<String> getKnownPrefixes()

setHint

public void setHint(String key,
                    Object value)

setHintInternal

protected boolean setHintInternal(String key,
                                  Object value,
                                  boolean validateThrowException)
Overrides:
setHintInternal in class FetchPlanHintHandler

hintToKey

protected String hintToKey(String key)
Overrides:
hintToKey in class FetchPlanHintHandler


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