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 2008/08/16 01:36:16 UTC
svn commit: r686419 - in /openjpa/trunk:
openjpa-kernel/src/main/java/org/apache/openjpa/meta/
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/
openjpa-persistence/src/main/java/org/apache/openjpa/persistence/
openjpa-persis...
Author: ppoddar
Date: Fri Aug 15 16:36:16 2008
New Revision: 686419
URL: http://svn.apache.org/viewvc?rev=686419&view=rev
Log:
OPENJPA-111: Modified tests to use correct binding parameter. Added methods in MetaDataRepository to look for NamedQuery only by name without defining class information.
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/SimpleEntity.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/SimpleEntity2.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestDupNamedQuery.java
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties
openjpa/trunk/openjpa-slice/src/test/java/org/apache/openjpa/slice/TestQuery.java
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java?rev=686419&r1=686418&r2=686419&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java Fri Aug 15 16:36:16 2008
@@ -1618,10 +1618,15 @@
ClassLoader envLoader) {
if (name == null)
return null;
-
+ QueryMetaData qm = null;
+ if (cls == null) {
+ qm = searchQueryMetaDataByName(name);
+ if (qm != null)
+ return qm;
+ }
// check cache
Object key = getQueryKey(cls, name);
- QueryMetaData qm = (QueryMetaData) _queries.get(key);
+ qm = (QueryMetaData) _queries.get(key);
if (qm != null)
return qm;
@@ -1694,6 +1699,18 @@
return false;
return _queries.remove(getQueryKey(cls, name)) != null;
}
+
+ /**
+ * Searches all cached query metadata by name.
+ */
+ public QueryMetaData searchQueryMetaDataByName(String name) {
+ for (Object key : _queries.keySet()) {
+ if (key instanceof QueryKey)
+ if (StringUtils.equals(((QueryKey)key).name, name))
+ return (QueryMetaData)_queries.get(key);
+ }
+ return null;
+ }
/**
* Return a unique key for a given QueryMetaData.
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/SimpleEntity.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/SimpleEntity.java?rev=686419&r1=686418&r2=686419&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/SimpleEntity.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/SimpleEntity.java Fri Aug 15 16:36:16 2008
@@ -33,11 +33,11 @@
import javax.persistence.SqlResultSetMapping;
import javax.persistence.Table;
-@NamedQuery(name="FindXTwo", query="select s from simple s where s.name = :fname")
+@NamedQuery(name="FindXTwo", query="select s from simple s where s.name = ?1")
@NamedQueries( {
- @NamedQuery(name="FindOne", query="select s from simple s where s.name = :fname"),
- @NamedQuery(name="FindOne", query="select s from simple s where s.name = :fname"),
+ @NamedQuery(name="FindOne", query="select s from simple s where s.name = ?1"),
+ @NamedQuery(name="FindOne", query="select s from simple s where s.name = ?1"),
@NamedQuery(name="FindAll", query="select s from simple s")
})
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/SimpleEntity2.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/SimpleEntity2.java?rev=686419&r1=686418&r2=686419&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/SimpleEntity2.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/SimpleEntity2.java Fri Aug 15 16:36:16 2008
@@ -27,11 +27,11 @@
import javax.persistence.NamedQuery;
import javax.persistence.Table;
-@NamedQuery(name="FindXTwo", query="select s from simple2 s where s.name = :fname")
+@NamedQuery(name="FindXTwo", query="select s from simple2 s where s.name = ?1")
@NamedQueries( {
- @NamedQuery(name="FindOne", query="select s from simple2 s where s.name = :fname"),
- @NamedQuery(name="Find2One", query="select s from simple2 s where s.name = :fname"),
+ @NamedQuery(name="FindOne", query="select s from simple2 s where s.name = ?1"),
+ @NamedQuery(name="Find2One", query="select s from simple2 s where s.name = ?1"),
@NamedQuery(name="Find2All", query="select s from simple2 s")
})
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestDupNamedQuery.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestDupNamedQuery.java?rev=686419&r1=686418&r2=686419&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestDupNamedQuery.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestDupNamedQuery.java Fri Aug 15 16:36:16 2008
@@ -55,13 +55,13 @@
String ValueTwo) {
EntityManager em = emf.createEntityManager();
- List list = em.createNamedQuery(findOneQName).setParameter("fname", nameOne)
+ List list = em.createNamedQuery(findOneQName).setParameter(1, nameOne)
.getResultList();
assertNotNull(list);
assertEquals(list.size(), 1);
Object o = list.get(0);
- assertSame(o.getClass(), simple2 ? SimpleEntity2.class
- : SimpleEntity.class);
+ assertTrue(simple2 ? o instanceof SimpleEntity2
+ : o instanceof SimpleEntity);
assertEquals(simple2 ? ((SimpleEntity2) o).getValue()
: ((SimpleEntity) o).getValue(), ValueOne);
@@ -71,8 +71,8 @@
assertEquals(list.size(), 2);
for (Iterator resultIter = list.iterator(); resultIter.hasNext();) {
o = resultIter.next();
- assertSame(o.getClass(), simple2 ? SimpleEntity2.class
- : SimpleEntity.class);
+ assertTrue(simple2 ? o instanceof SimpleEntity2
+ : o instanceof SimpleEntity);
String n = null;
String v = null;
if (simple2) {
Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java?rev=686419&r1=686418&r2=686419&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java (original)
+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java Fri Aug 15 16:36:16 2008
@@ -1582,14 +1582,17 @@
if (_log.isTraceEnabled())
_log.trace(_loc.get("parse-query", query.name()));
- meta = getRepository().getCachedQueryMetaData(null, query.name());
+ meta = getRepository().searchQueryMetaDataByName(query.name());
if (meta != null) {
- if (_log.isWarnEnabled())
- _log.warn(_loc.get("dup-query", query.name(), el));
+ Class definingType = meta.getDefiningType();
+ if ((definingType == null || definingType != _cls)
+ && _log.isWarnEnabled()) {
+ _log.warn(_loc.get("dup-query", query.name(), el,
+ definingType));
+ }
continue;
}
-
- meta = getRepository().addQueryMetaData(null, query.name());
+ meta = getRepository().addQueryMetaData(_cls, query.name());
meta.setQueryString(query.query());
meta.setLanguage(JPQLParser.LANG_JPQL);
for (QueryHint hint : query.hints())
@@ -1623,10 +1626,12 @@
if (_log.isTraceEnabled())
_log.trace(_loc.get("parse-native-query", query.name()));
- meta = getRepository().getCachedQueryMetaData(null, query.name());
+ meta = getRepository().searchQueryMetaDataByName(query.name());
if (meta != null) {
- if (_log.isWarnEnabled())
- _log.warn(_loc.get("dup-query", query.name(), el));
+ Class defType = meta.getDefiningType();
+ if ((defType != _cls) && _log.isWarnEnabled()) {
+ _log.warn(_loc.get("dup-query", query.name(), el, defType));
+ }
continue;
}
Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java?rev=686419&r1=686418&r2=686419&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java (original)
+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java Fri Aug 15 16:36:16 2008
@@ -1407,9 +1407,15 @@
if (log.isTraceEnabled())
log.trace(_loc.get("parse-query", name));
- QueryMetaData meta = getRepository().getCachedQueryMetaData(null, name);
- if (meta != null && log.isWarnEnabled())
- log.warn(_loc.get("override-query", name, currentLocation()));
+ QueryMetaData meta = getRepository().searchQueryMetaDataByName(name);
+ if (meta != null) {
+ Class defType = meta.getDefiningType();
+ if ((defType != _cls) && log.isWarnEnabled()) {
+ log.warn(_loc.get("dup-query", name, currentLocation(), defType));
+ }
+ pushElement(meta);
+ return true;
+ }
meta = getRepository().addQueryMetaData(null, name);
meta.setDefiningType(_cls);
Modified: openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties?rev=686419&r1=686418&r2=686419&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties (original)
+++ openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties Fri Aug 15 16:36:16 2008
@@ -34,7 +34,8 @@
dup-sequence: Found duplicate generator "{0}" in "{1}". Ignoring.
override-sequence: Found duplicate generator "{0}" in "{1}". Overriding \
previous definition.
-dup-query: Found duplicate query "{0}" in "{1}". Ignoring.
+dup-query: Ignoring duplicate query "{0}" in "{1}". A query with the same name \
+ been already declared in "{2}".
override-query: Found duplicate query "{0}" in "{1}". Overriding previous \
definition.
no-seq-name: The sequence generator in "{0}" must declare a name.
Modified: openjpa/trunk/openjpa-slice/src/test/java/org/apache/openjpa/slice/TestQuery.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-slice/src/test/java/org/apache/openjpa/slice/TestQuery.java?rev=686419&r1=686418&r2=686419&view=diff
==============================================================================
--- openjpa/trunk/openjpa-slice/src/test/java/org/apache/openjpa/slice/TestQuery.java (original)
+++ openjpa/trunk/openjpa-slice/src/test/java/org/apache/openjpa/slice/TestQuery.java Fri Aug 15 16:36:16 2008
@@ -111,6 +111,10 @@
em.getTransaction().rollback();
}
+ /**
+ * Retired temporarily. Most likely side-effect of eager compilation of
+ * query introduced recently.
+ */
public void testHint() {
List<String> targets = new ArrayList<String>();
targets.add("Even");