super(QueryHints.QUERY_RESULTS_CACHE_TYPE, "");
}
DatabaseQuery applyToDatabaseQuery(Object valueToApply, DatabaseQuery query, ClassLoader loader, AbstractSession activeSession) {
if (query.isReadQuery()) {
ReadQuery readQuery = (ReadQuery)query;
if (readQuery.getQueryResultsCachePolicy() == null) {
readQuery.cacheQueryResults();
}
if (valueToApply == null) {
// Leave as default.
} else if (valueToApply.equals(CacheType.SOFT_WEAK.name())) {
readQuery.getQueryResultsCachePolicy().setCacheType(ClassConstants.SoftCacheWeakIdentityMap_Class);
} else if (valueToApply.equals(CacheType.FULL.name())) {
readQuery.getQueryResultsCachePolicy().setCacheType(ClassConstants.FullIdentityMap_Class);
} else if (valueToApply.equals(CacheType.WEAK.name())) {
readQuery.getQueryResultsCachePolicy().setCacheType(ClassConstants.WeakIdentityMap_Class);
} else if (valueToApply.equals(CacheType.SOFT.name())) {
readQuery.getQueryResultsCachePolicy().setCacheType(ClassConstants.SoftIdentityMap_Class);
} else if (valueToApply.equals(CacheType.HARD_WEAK.name())) {
readQuery.getQueryResultsCachePolicy().setCacheType(ClassConstants.HardCacheWeakIdentityMap_Class);
} else if (valueToApply.equals(CacheType.CACHE.name())) {
readQuery.getQueryResultsCachePolicy().setCacheType(ClassConstants.CacheIdentityMap_Class);
} else if (valueToApply.equals(CacheType.NONE.name())) {
readQuery.getQueryResultsCachePolicy().setCacheType(ClassConstants.NoIdentityMap_Class);
} else {
throw new IllegalArgumentException(ExceptionLocalization.buildMessage("ejb30-wrong-query-hint-value",new Object[]{getQueryId(query), name, getPrintValue(valueToApply)}));
}
} else {
throw new IllegalArgumentException(ExceptionLocalization.buildMessage("ejb30-wrong-type-for-query-hint",new Object[]{getQueryId(query), name, getPrintValue(valueToApply)}));