public Object getSourceScope() { return _queries[0].getSourceScope(); }
/** * Return a unique key for a given QueryMetaData. */ private static Object getQueryKey(QueryMetaData meta) { if (meta == null) return null; return getQueryKey(meta.getDefiningType(), meta.getName()); }
/** * Compare query metadata. */ private int compare(QueryMetaData o1, QueryMetaData o2) { // normal queries before native if (!StringUtils.equals(o1.getLanguage(), o2.getLanguage())) { if (QueryLanguages.LANG_SQL.equals(o1.getLanguage())) return 1; else return -1; } return o1.getName().compareTo(o2.getName()); }
/** * Create a new query metadata instance. */ protected QueryMetaData newQueryMetaData(Class cls, String name) { QueryMetaData meta = new QueryMetaData(name); meta.setDefiningType(cls); return meta; }
/** * Serialize query metadata. */ private void serializeQuery(QueryMetaData meta) { Log log = getLog(); if (log.isInfoEnabled()) { if (meta.getSourceScope() instanceof Class) log.info(_loc.get("ser-cls-query", meta.getSourceScope(), meta.getName())); else log.info(_loc.get("ser-query", meta.getName())); } Class<? extends Annotation> ann = QueryLanguages.LANG_SQL.equals(meta.getLanguage()) ? NamedNativeQuery.class : NamedQuery.class; AnnotationBuilder abQry = addAnnotation(ann, meta); abQry.add("name", meta.getName()); abQry.add("query", meta.getQueryString()); if (QueryLanguages.LANG_SQL.equals(meta.getLanguage())) { if (meta.getResultType() != null) abQry.add("resultClass", meta.getResultType()); } serializeQueryHints(meta, abQry); }
Class<?> defType = meta.getDefiningType(); if ((defType != _cls) && log.isWarnEnabled()) { log.warn(_loc.get("dup-query", name, currentLocation(), meta.setDefiningType(_cls); meta.setLanguage(JPQLParser.LANG_JPQL); meta.setQueryString(attrs.getValue("query")); String lockModeStr = attrs.getValue("lock-mode"); LockModeType lmt = processNamedQueryLockModeType(log, lockModeStr, name); if (lmt != null && lmt != LockModeType.NONE) { meta.addHint("openjpa.FetchPlan.ReadLockMode", lmt); meta.setLineNumber(locator.getLineNumber()); meta.setColNumber(locator.getColumnNumber()); meta.setSource(getSourceFile(), scope, SourceTracker.SRC_XML, locator == null ? "" : locator.getSystemId()); if (isMetaDataMode()) meta.setSourceMode(MODE_META); else if (isMappingMode()) meta.setSourceMode(MODE_MAPPING); else meta.setSourceMode(MODE_QUERY); pushElement(meta); return true;
meta.setDefiningType(_cls); meta.setLanguage(QueryLanguages.LANG_SQL); meta.setQueryString(attrs.getValue("query")); String val = attrs.getValue("result-class"); if (val != null) { Class<?> type = classForName(val); if (ImplHelper.isManagedType(getConfiguration(), type)) meta.setCandidateType(type); else meta.setResultType(type); meta.setResultSetMappingName(val); meta.setSource(getSourceFile(), scope, SourceTracker.SRC_XML, locator == null ? "" : locator.getSystemId()); if (locator != null) { meta.setLineNumber(locator.getLineNumber()); meta.setColNumber(locator.getColumnNumber()); meta.setSourceMode(MODE_META); else if (isMappingMode()) meta.setSourceMode(MODE_MAPPING); else meta.setSourceMode(MODE_QUERY); pushElement(meta); return true;
/** * Assign default source files to the given queries. * * @param clsNames map of class names to metadatas * @return set of existing files used by these metadatas, or * null if no existing files */ private Set assignDefaultQueryFiles(QueryMetaData[] queries, Map clsNames) { Set files = null; for (int i = 0; i < queries.length; i++) { if (queries[i].getSourceMode() != MODE_QUERY) continue; if (queries[i].getSourceFile() == null) { File defaultFile = defaultSourceFile(queries[i], clsNames); queries[i].setSource(defaultFile, queries[i].getSourceScope(), queries[i].getSourceType(), defaultFile == null ? "" : defaultFile.getPath()); } if ((AccessController.doPrivileged( J2DoPrivHelper.existsAction(queries[i].getSourceFile()))) .booleanValue()) { if (files == null) files = new HashSet(); files.add(queries[i].getSourceFile()); } } return files; }
public OpenJPAQuery createNamedQuery(String name) { assertNotCloseInvoked(); _broker.assertOpen(); try { QueryMetaData meta = _broker.getConfiguration(). getMetaDataRepositoryInstance().getQueryMetaData(null, name, _broker.getClassLoader(), true); org.apache.openjpa.kernel.Query del = _broker.newQuery(meta.getLanguage(), null); meta.setInto(del); del.compile(); OpenJPAQuery q = new QueryImpl(this, ret, del); String[] hints = meta.getHintKeys(); Object[] values = meta.getHintValues(); for (int i = 0; i < hints.length; i++) q.setHint(hints[i], values[i]); return q; } catch (RuntimeException re) { throw PersistenceExceptions.toPersistenceException(re); } }
Class<?> definingType = meta.getDefiningType(); if ((definingType == null || definingType != _cls) && _log.isWarnEnabled()) { meta.setLanguage(JPQLParser.LANG_JPQL); meta.setQueryString(query.query()); for (QueryHint hint : query.hints()) meta.addHint(hint.name(), hint.value()); LockModeType lmt = processNamedQueryLockModeType(query); if (lmt != null && lmt != LockModeType.NONE) { meta.addHint("openjpa.FetchPlan.ReadLockMode", lmt); meta.setSource(getSourceFile(), (el instanceof Class) ? el : null, SourceTracker.SRC_ANNOTATIONS, getSourceFile() == null ? "" : getSourceFile().getPath()); if (isMetaDataMode()) meta.setSourceMode(MODE_META); else if (isMappingMode()) meta.setSourceMode(MODE_MAPPING); else meta.setSourceMode(MODE_QUERY);
Class<?> defType = meta.getDefiningType(); if ((defType != _cls) && _log.isWarnEnabled()) { _log.warn(_loc.get("dup-query", query.name(), el, defType)); meta.setLanguage(QueryLanguages.LANG_SQL); meta.setQueryString(query.query()); Class<?> res = query.resultClass(); if (ImplHelper.isManagedType(getConfiguration(), res)) meta.setCandidateType(res); else if (!void.class.equals(res)) meta.setResultType(res); meta.setResultSetMappingName(query.resultSetMapping()); for (QueryHint hint : query.hints()) meta.addHint(hint.name(), hint.value()); meta.setSource(getSourceFile(), (el instanceof Class) ? el : null, SourceTracker.SRC_ANNOTATIONS, getSourceFile() == null ? "" : getSourceFile().getPath()); if (isMetaDataMode()) meta.setSourceMode(MODE_META); else if (isMappingMode()) meta.setSourceMode(MODE_MAPPING); else meta.setSourceMode(MODE_QUERY);
private void loadQuery(Broker broker, QueryMetaData qmd) { try { Query q = broker.newQuery(qmd.getLanguage(), null); qmd.setInto(q); q.compile(); } catch (Exception e) { if (log.isTraceEnabled()) { log.warn("Skipping named query " + qmd.getName() + ": " + e.getMessage(), e); } else { log.warn("Skipping named query " + qmd.getName() + ": " + e.getMessage()); } } }
meta.setDefiningType(_cls); meta.setQueryString(attrs.getValue("query")); meta.setLanguage(JPQLParser.LANG_JPQL); meta.setSource(getSourceFile(), scope, meta.SRC_XML); if (isMetaDataMode()) meta.setSourceMode(MODE_META); else if (isMappingMode()) meta.setSourceMode(MODE_MAPPING); else meta.setSourceMode(MODE_QUERY); pushElement(meta); return true;
private void log(MetaDataRepository repos, Map qcc) { ClassMetaData[] metas = repos.getMetaDatas(); log.info(" Types: " + metas.length); if (log.isTraceEnabled()) for (int i = 0; i < metas.length; i++) log.trace(" " + metas[i].getDescribedType().getName()); QueryMetaData[] qmds = repos.getQueryMetaDatas(); log.info(" Queries: " + qmds.length); if (log.isTraceEnabled()) for (int i = 0; i < qmds.length; i++) log.trace(" " + qmds[i].getName() + ": " + qmds[i].getQueryString()); SequenceMetaData[] smds = repos.getSequenceMetaDatas(); log.info(" Sequences: " + smds.length); if (log.isTraceEnabled()) for (int i = 0; i < smds.length; i++) log.trace(" " + smds[i].getName()); log.info(" Compiled queries: " + (qcc == null ? "0" : "" + qcc.size())); if (log.isTraceEnabled() && qcc != null) for (Iterator iter = qcc.keySet().iterator(); iter.hasNext(); ) log.trace(" " + iter.next()); } }
private QueryMetaData newQueryMetaData() { QueryMetaData part = new QueryMetaData(getName() + "#" + _parts.size(), false); part.setLanguage(getLanguage()); part.setSource(null, getDefiningType(), -1, null); return part; }
public File getSourceFile() { return _queries[0].getSourceFile(); }
public int getSourceType() { return _queries[0].getSourceType(); }
protected void addSourceInfo(AnnotatedElement el, QueryMetaData meta) { meta.setSource(getSourceFile(), (el instanceof Class) ? el : null, SourceTracker.SRC_ANNOTATIONS, getSourceFile() == null ? "" : getSourceFile().getPath()); if (isMetaDataMode()) meta.setSourceMode(MODE_META); else if (isMappingMode()) meta.setSourceMode(MODE_MAPPING); else meta.setSourceMode(MODE_QUERY); }
/** * Return the metadata that defines the given query, if any. * * @param clsNames map of class names to metadatas */ protected ClassMetaData getDefiningMetaData(QueryMetaData query, Map clsNames) { Class def = query.getDefiningType(); if (def != null) return (ClassMetaData) clsNames.get(def.getName()); Map.Entry entry; String pkg; for (Iterator itr = clsNames.entrySet().iterator(); itr.hasNext();) { entry = (Map.Entry) itr.next(); pkg = ClassUtil.getPackageName((String) entry.getKey()); if (pkg.length() == 0) return (ClassMetaData) entry.getValue(); } return null; }
public QueryMetaData addQueryMetaData(QueryMetaData meta) { if (_locking) { synchronized (this) { final QueryMetaData queryMetaData = _queries.get(meta.getName()); return queryMetaData != null ? queryMetaData : _queries.put(meta.getName(), meta); } } else { final QueryMetaData queryMetaData = _queries.get(meta.getName()); return queryMetaData != null ? queryMetaData : _queries.put(meta.getName(), meta); } }