You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pp...@apache.org on 2009/11/25 06:41:07 UTC
svn commit: r883982 -
/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java
Author: ppoddar
Date: Wed Nov 25 05:41:07 2009
New Revision: 883982
URL: http://svn.apache.org/viewvc?rev=883982&view=rev
Log:
Reduce hint handling construction cost
Modified:
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java
Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java?rev=883982&r1=883981&r2=883982&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java (original)
+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java Wed Nov 25 05:41:07 2009
@@ -87,7 +87,7 @@
private Map<Object, Parameter<?>> _declaredParams;
private String _id;
private transient ReentrantLock _lock = null;
- private final HintHandler _hintHandler;
+ private HintHandler _hintHandler;
/**
* Constructor; supply factory exception translator and delegate.
@@ -100,7 +100,6 @@
org.apache.openjpa.kernel.Query query) {
_em = em;
_query = new DelegatingQuery(query, ret);
- _hintHandler = new HintHandler(this);
_lock = new ReentrantLock();
}
@@ -203,7 +202,7 @@
return _query.getCandidateType();
}
- public OpenJPAQuery setResultClass(Class cls) {
+ public OpenJPAQuery<X> setResultClass(Class cls) {
_em.assertNotCloseInvoked();
if (ImplHelper.isManagedType(_em.getConfiguration(), cls))
_query.setCandidateType(cls, true);
@@ -395,7 +394,7 @@
public LockModeType getLockMode() {
assertJPQLOrCriteriaQuery();
- return _fetch.getReadLockMode();
+ return getFetchPlan().getReadLockMode();
}
/**
@@ -409,7 +408,7 @@
ignorePreparedQuery();
}
assertJPQLOrCriteriaQuery();
- _fetch.setReadLockMode(lockMode);
+ getFetchPlan().setReadLockMode(lockMode);
return this;
}
@@ -433,16 +432,24 @@
*/
//TODO: JPA 2.0 Hints that are not set to FetchConfiguration
public Map<String, Object> getHints() {
+ if (_hintHandler == null)
+ return Collections.emptyMap();
return _hintHandler.getHints();
}
public OpenJPAQuery<X> setHint(String key, Object value) {
_em.assertNotCloseInvoked();
+ if (_hintHandler == null) {
+ _hintHandler = new HintHandler(this);
+ }
_hintHandler.setHint(key, value);
return this;
}
public Set<String> getSupportedHints() {
+ if (_hintHandler == null) {
+ _hintHandler = new HintHandler(this);
+ }
return _hintHandler.getSupportedHints();
}
@@ -852,7 +859,7 @@
Parameter<?> param = getDeclaredParameters().get(name);
if (param == null) {
Set<ParameterExpression> exps = getDeclaredParameterKeys(ParameterExpression.class);
- for (ParameterExpression e : exps) {
+ for (ParameterExpression<?> e : exps) {
if (name.equals(e.getName()))
return e;
}