/** * Create a new metadata parser. */ protected AnnotationPersistenceMetaDataParser newAnnotationParser() { return new AnnotationPersistenceMetaDataParser (repos.getConfiguration()); }
/** * Update the source mode to the class package and class to indicate that * we've fully parsed them. */ private void updateSourceMode(ClassMetaData meta) { if (_cls.getPackage() != null) addSourceMode(_cls.getPackage(), _mode); if (meta != null) meta.setSourceMode(_mode, true); }
@Override public void clear() { super.clear(); if (_annoParser != null) _annoParser.clear(); if (_xmlParser != null) _xmlParser.clear(); if (_xml != null) _xml.clear(); }
/** * Parse @EntityListeners */ private Collection<LifecycleCallbacks>[] parseEntityListeners (ClassMetaData meta, EntityListeners listeners) { Class[] classes = listeners.value(); Collection<LifecycleCallbacks>[] parsed = null; for (Class cls : classes) parsed = parseCallbackMethods(cls, parsed, true, true, getRepository()); return parsed; }
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); }
int pkgMode = getSourceMode(pkg); if (pkgMode == 0 && _log.isTraceEnabled()) _log.trace(_loc.get("parse-package", _cls.getName())); tag = _tags.get(anno.annotationType()); if (tag == null) { handleUnknownPackageAnnotation(pkg, anno); continue; if (isQueryMode() && (pkgMode & MODE_QUERY) == 0) parseNamedNativeQueries(pkg, ((NamedNativeQueries) anno).value()); break; case NATIVE_QUERY: if (isQueryMode() && (pkgMode & MODE_QUERY) == 0) parseNamedNativeQueries(pkg, (NamedNativeQuery) anno); break; case QUERIES: if (isQueryMode() && (pkgMode & MODE_QUERY) == 0) parseNamedQueries(pkg, ((NamedQueries) anno).value()); break; case QUERY: if (isQueryMode() && (pkgMode & MODE_QUERY) == 0) parseNamedQueries(pkg, (NamedQuery) anno); break; case STOREDPROCEDURE_QUERIES: if (isQueryMode()) parseNamedStoredProcedureQueries(pkg, ((NamedStoredProcedureQueries) anno).value()); break;
Member member = getRepository().getMetaDataFactory().getDefaults(). getBackingMember(fmd); PersistenceStrategy pstrat = PersistenceMetaDataDefaults. boolean lob = (AccessController.doPrivileged(J2DoPrivHelper .isAnnotationPresentAction(el, Lob.class))).booleanValue(); if (isMetaDataMode()) { switch (pstrat) { case BASIC: parseBasic(fmd, (Basic) el.getAnnotation(Basic.class), lob); break; case MANY_ONE: parseManyToOne(fmd, (ManyToOne) el.getAnnotation (ManyToOne.class)); break; case ONE_ONE: parseOneToOne(fmd, (OneToOne) el.getAnnotation (OneToOne.class)); break; case EMBEDDED: parseEmbedded(fmd, (Embedded) el.getAnnotation (Embedded.class)); break; case ONE_MANY: parseOneToMany(fmd, (OneToMany) el.getAnnotation (OneToMany.class)); break; case MANY_MANY: parseManyToMany(fmd, (ManyToMany) el.getAnnotation
ClassMetaData meta = getMetaData(); if (meta == null) return null; if (isMetaDataMode()) { tag = _tags.get(anno.annotationType()); if (tag == null) { handleUnknownClassAnnotation(meta, anno); continue; if (isMetaDataMode()) listeners = parseEntityListeners(meta, (EntityListeners) anno); break; case EXCLUDE_DEFAULT_LISTENERS: if (isMetaDataMode()) meta.getLifecycleMetaData() .setIgnoreSystemListeners(true); break; case EXCLUDE_SUPERCLASS_LISTENERS: if (isMetaDataMode()) meta.getLifecycleMetaData().setIgnoreSuperclassCallbacks (LifecycleMetaData.IGNORE_HIGH); break; case FLUSH_MODE: if (isMetaDataMode()) warnFlushMode(meta); break;
/** * Find or create metadata for the given type. May return null if * this class has already been parsed fully. */ private ClassMetaData getMetaData() { ClassMetaData meta = getRepository().getCachedMetaData(_cls); if (meta != null && ((isMetaDataMode() && (meta.getSourceMode() & MODE_META) != 0) || (isMappingMode() && (meta.getSourceMode() & MODE_MAPPING) != 0))) { if (_log.isWarnEnabled()) _log.warn(_loc.get("dup-metadata", _cls.getName())); return null; } if (meta == null) { meta = getRepository().addMetaData(_cls); meta.setEnvClassLoader(_envLoader); meta.setSourceMode(MODE_NONE); meta.setSource(getSourceFile(), meta.SRC_ANNOTATIONS); } return meta; }
_log.trace(_loc.get("parse-sequence", name)); SequenceMetaData meta = getRepository().getCachedSequenceMetaData (name); if (meta != null) { meta = getRepository().addSequenceMetaData(name); String seq = gen.sequenceName(); seq = normalizeSequenceName(seq); String schema = normalizeSchemaName(gen.schema()); String catalog = normalizeCatalogName(gen.catalog()); meta.setSchema(schema); meta.setCatalog(catalog); meta.setSource(getSourceFile(), (el instanceof Class) ? el : null, SourceTracker.SRC_ANNOTATIONS);
QueryMetaData existing = getRepository().addQueryMetaData(meta); if (existing != null && existing.getDefiningType() != meta.getDefiningType()) { getLog().warn(_loc.get("dup-query", meta.getName(), el, existing.getDefiningType())); for (StoredProcedureParameter param : params) { MultiQueryMetaData.Parameter p = new MultiQueryMetaData.Parameter( param.name(), param.type(), toKernelParameterMode(param.mode())); meta.registerParameter(p); addHints(meta, proc.hints()); addSourceInfo(el, meta);
int strat = getGeneratedValueStrategy(fmd, strategy, generator); if (strat != -1) fmd.setValueStrategy(strat);
_log.trace(_loc.get("parse-sequence", name)); SequenceMetaData meta = getRepository().getCachedSequenceMetaData (name); if (meta != null) { meta = getRepository().addSequenceMetaData(name); String seq = gen.sequenceName(); int initial = gen.initialValue(); meta.setInitialValue(initial); meta.setAllocate(allocate); meta.setSource(getSourceFile(), (el instanceof Class) ? el : null, meta.SRC_ANNOTATIONS);
Member member = getRepository().getMetaDataFactory().getDefaults(). getBackingMember(fmd); PersistenceStrategy pstrat = PersistenceMetaDataDefaults. boolean lob = ((Boolean) AccessController.doPrivileged(J2DoPriv5Helper .isAnnotationPresentAction(el, Lob.class))).booleanValue(); if (isMetaDataMode()) { switch (pstrat) { case BASIC: parseBasic(fmd, (Basic) el.getAnnotation(Basic.class), lob); break; case MANY_ONE: parseManyToOne(fmd, (ManyToOne) el.getAnnotation (ManyToOne.class)); break; case ONE_ONE: parseOneToOne(fmd, (OneToOne) el.getAnnotation (OneToOne.class)); break; case EMBEDDED: parseEmbedded(fmd, (Embedded) el.getAnnotation (Embedded.class)); break; case ONE_MANY: parseOneToMany(fmd, (OneToMany) el.getAnnotation (OneToMany.class)); break; case MANY_MANY: parseManyToMany(fmd, (ManyToMany) el.getAnnotation
ClassMetaData m = getRepository().getCachedMetaData(_cls); if (m == null) { if (!(AccessController.doPrivileged(J2DoPrivHelper.isAnnotationPresentAction(_cls, Entity.class))) ClassMetaData meta = (m == null) ? getMetaData() : m; if (meta == null) return null; MappedSuperclass mapped = _cls.getAnnotation(MappedSuperclass.class); Embeddable embeddable = _cls.getAnnotation(Embeddable.class); if (isMetaDataMode()) { meta.setAbstract(mapped != null); if (embeddable != null) meta.setEmbeddable(); tag = _tags.get(anno.annotationType()); if (tag == null) { handleUnknownClassAnnotation(meta, anno); continue; if (isMetaDataMode()) listeners = parseEntityListeners(meta, (EntityListeners) anno); break; case EXCLUDE_DEFAULT_LISTENERS: if (isMetaDataMode()) meta.getLifecycleMetaData() .setIgnoreSystemListeners(true); break; case EXCLUDE_SUPERCLASS_LISTENERS:
int pkgMode = getSourceMode(pkg); if (pkgMode == 0 && _log.isTraceEnabled()) _log.trace(_loc.get("parse-package", _cls.getName())); tag = _tags.get(anno.annotationType()); if (tag == null) { handleUnknownPackageAnnotation(pkg, anno); continue; if (isQueryMode() && (pkgMode & MODE_QUERY) == 0) parseNamedNativeQueries(pkg, ((NamedNativeQueries) anno).value()); break; case NATIVE_QUERY: if (isQueryMode() && (pkgMode & MODE_QUERY) == 0) parseNamedNativeQueries(pkg, (NamedNativeQuery) anno); break; case QUERIES: if (isQueryMode() && (pkgMode & MODE_QUERY) == 0) parseNamedQueries(pkg, ((NamedQueries) anno).value()); break; case QUERY: if (isQueryMode() && (pkgMode & MODE_QUERY) == 0) parseNamedQueries(pkg, (NamedQuery) anno); break; case SEQ_GENERATOR: if (isMappingOverrideMode() && (pkgMode & MODE_MAPPING) == 0) parseSequenceGenerator(pkg, (SequenceGenerator) anno);
/** * Find or create metadata for the given type. May return null if * this class has already been parsed fully. */ private ClassMetaData getMetaData() { ClassMetaData meta = getRepository().getCachedMetaData(_cls); if (meta != null && ((isMetaDataMode() && (meta.getSourceMode() & MODE_META) != 0) || (isMappingMode() && (meta.getSourceMode() & MODE_MAPPING) != 0) ) ) { if (_log.isWarnEnabled()) { _log.warn(_loc.get("dup-metadata", _cls.getName())); } if(_log.isTraceEnabled()) { _log.trace(String.format( "MetaData originally obtained from file: %s under mode :%d with scope %s, and type :%d", meta.getSourceName(), meta.getSourceMode(), meta.getSourceScope(), meta.getSourceType())); } return null; } if (meta == null) { meta = getRepository().addMetaData(_cls, getAccessCode(_cls)); meta.setEnvClassLoader(_envLoader); meta.setSourceMode(MODE_NONE); meta.setSource(getSourceFile(), SourceTracker.SRC_ANNOTATIONS, getSourceFile() == null ? "" : getSourceFile().getPath()); } return meta; }
_log.trace(_loc.get("parse-sequence", name)); SequenceMetaData meta = getRepository().getCachedSequenceMetaData (name); if (meta != null) { meta = getRepository().addSequenceMetaData(name); String seq = gen.sequenceName(); seq = normalizeSequenceName(seq); String schema = normalizeSchemaName(gen.schema()); String catalog = normalizeCatalogName(gen.catalog()); meta.setSchema(schema); meta.setCatalog(catalog); meta.setSource(getSourceFile(), (el instanceof Class) ? el : null, SourceTracker.SRC_ANNOTATIONS);
/** * Parse @EntityListeners */ private Collection<LifecycleCallbacks>[] parseEntityListeners (ClassMetaData meta, EntityListeners listeners) { Class<?>[] classes = listeners.value(); Collection<Class<?>> listenerColl = null; Collection<LifecycleCallbacks>[] parsed = null; for (Class<?> cls : classes) { if (!_conf.getCallbackOptionsInstance().getAllowsDuplicateListener()) { if (listenerColl == null) listenerColl = new ArrayList<Class<?>>(); if (listenerColl.contains(cls)) continue; listenerColl.add(cls); } parsed = parseCallbackMethods(cls, parsed, true, true, getRepository()); } return parsed; }
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); }