
org.hibernate.cfg.annotations.reflection.EJB3ReflectionManager Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hibernate-annotations
Show all versions of hibernate-annotations
Annotations metadata for Hibernate
package org.hibernate.cfg.annotations.reflection;
import java.lang.reflect.AnnotatedElement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.persistence.EntityListeners;
import javax.persistence.NamedNativeQuery;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.SqlResultSetMapping;
import javax.persistence.TableGenerator;
import org.dom4j.Element;
import org.hibernate.annotations.common.reflection.AnnotationReader;
import org.hibernate.annotations.common.reflection.java.JavaReflectionManager;
import org.hibernate.util.ReflectHelper;
public class EJB3ReflectionManager extends JavaReflectionManager {
private XMLContext xmlContext = new XMLContext();
private HashMap defaults = null;
public AnnotationReader buildAnnotationReader(AnnotatedElement annotatedElement) {
if ( xmlContext.hasContext() ) {
return new EJB3OverridenAnnotationReader(annotatedElement, xmlContext);
}
else {
return super.buildAnnotationReader(annotatedElement);
}
}
public Map getDefaults() {
if (defaults == null) {
defaults = new HashMap();
XMLContext.Default xmlDefaults = xmlContext.getDefault( null );
List entityListeners = new ArrayList();
for ( String className : xmlContext.getDefaultEntityListeners() ) {
try {
entityListeners.add( ReflectHelper.classForName( className, this.getClass() ) );
}
catch (ClassNotFoundException e) {
throw new IllegalStateException( "Default entity listener class not found: " + className );
}
}
defaults.put( EntityListeners.class, entityListeners );
for( Element element : xmlContext.getAllDocuments() ) {
List elements = element.elements( "sequence-generator" );
List sequenceGenerators = (List) defaults.get(SequenceGenerator.class);
if (sequenceGenerators == null) {
sequenceGenerators = new ArrayList();
defaults.put( SequenceGenerator.class, sequenceGenerators );
}
for (Element subelement : elements) {
sequenceGenerators.add( EJB3OverridenAnnotationReader.buildSequenceGeneratorAnnotation( subelement ) );
}
elements = element.elements( "table-generator" );
List tableGenerators = (List) defaults.get(TableGenerator.class);
if (tableGenerators == null) {
tableGenerators = new ArrayList();
defaults.put( TableGenerator.class, tableGenerators );
}
for (Element subelement : elements) {
tableGenerators.add( EJB3OverridenAnnotationReader.buildTableGeneratorAnnotation( subelement, xmlDefaults ) );
}
List namedQueries = (List) defaults.get(NamedQuery.class);
if (namedQueries == null) {
namedQueries = new ArrayList();
defaults.put( NamedQuery.class, namedQueries );
}
List currentNamedQueries = EJB3OverridenAnnotationReader.buildNamedQueries(element, false, xmlDefaults);
namedQueries.addAll( currentNamedQueries );
List namedNativeQueries = (List) defaults.get(NamedNativeQuery.class);
if (namedNativeQueries == null) {
namedNativeQueries = new ArrayList();
defaults.put( NamedNativeQuery.class, namedNativeQueries );
}
List currentNamedNativeQueries = EJB3OverridenAnnotationReader.buildNamedQueries(element, true, xmlDefaults);
namedNativeQueries.addAll( currentNamedNativeQueries );
List sqlResultSetMappings = (List) defaults.get(SqlResultSetMapping.class);
if (sqlResultSetMappings == null) {
sqlResultSetMappings = new ArrayList();
defaults.put( SqlResultSetMapping.class, sqlResultSetMappings );
}
List currentSqlResultSetMappings = EJB3OverridenAnnotationReader.buildSqlResultsetMappings(element, xmlDefaults);
sqlResultSetMappings.addAll( currentSqlResultSetMappings );
}
}
return defaults;
}
public XMLContext getXMLContext() {
return xmlContext;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy