Author: ppoddar
Date: Fri Mar 6 06:33:51 2009
New Revision: 750781
URL: http://svn.apache.org/viewvc?rev=750781&view=rev
Log:
OPENJPA-900: Thread guard while setting hint.
Modified:
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/HintHandler.java
Modified:
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/HintHandler.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/HintHandler.java?rev=750781&r1=750780&r2=750781&view=diff
==============================================================================
---
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/HintHandler.java
(original)
+++
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/HintHandler.java
Fri Mar 6 06:33:51 2009
@@ -114,7 +114,7 @@
private static final Localizer _loc = Localizer.forPackage(
HintHandler.class);
- public HintHandler(QueryImpl impl) {
+ HintHandler(QueryImpl impl) {
owner = impl;
}
@@ -134,7 +134,7 @@
* null (i.e. MAY BE) if the key is recognized, but not supported.
* TRUE if the key is supported.
*/
- public Boolean record(String hint, Object value) {
+ private Boolean record(String hint, Object value) {
if (hint == null)
return Boolean.FALSE;
if (isSupported(hint)) {
@@ -205,7 +205,7 @@
/**
* Affirms the given key matches one of the supported keys.
*/
- public boolean isSupported(String key) {
+ private boolean isSupported(String key) {
return getSupportedHints().contains(key);
}
@@ -213,7 +213,7 @@
* Affirms the given key has a prefix that matches with any of the
* supported prefixes.
*/
- public boolean isSupportedPrefix(String key) {
+ private boolean isSupportedPrefix(String key) {
return getKnownPrefixes().contains(getPrefixOf(key));
}
@@ -230,7 +230,7 @@
return prefix + join + original;
}
- public static String removePrefix(String key, String prefix) {
+ private static String removePrefix(String key, String prefix) {
if (prefix == null)
return key;
if (!prefix.endsWith(DOT))
@@ -245,7 +245,7 @@
return (index != -1) ? key.substring(0,index) : key;
}
- boolean isKnownHintPrefix(String key) {
+ private boolean isKnownHintPrefix(String key) {
String prefix = getPrefixOf(key);
return getKnownPrefixes().contains(prefix);
}
@@ -259,6 +259,15 @@
}
public void setHint(String key, Object value) {
+ owner.lock();
+ try {
+ setHintInternal(key, value);
+ } finally {
+ owner.unlock();
+ }
+ }
+
+ private void setHintInternal(String key, Object value) {
Boolean record = record(key, value);
FetchConfiguration fetch = owner.getDelegate().getFetchConfiguration();
ClassLoader loader = owner.getDelegate().getBroker().getClassLoader();