⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ejb3overridenannotationreader.java

📁 hibernate3.2.6源码和jar包
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
		List<Element> subelements = element == null ? null : element.elements( "attribute-override" );		return buildAttributeOverrides( subelements );	}	private List<AttributeOverride> buildAttributeOverrides(List<Element> subelements) {		List<AttributeOverride> overrides = new ArrayList<AttributeOverride>();		if ( subelements != null && subelements.size() > 0 ) {			for (Element current : subelements) {				if ( !current.getName().equals( "attribute-override" ) ) continue;				AnnotationDescriptor override = new AnnotationDescriptor( AttributeOverride.class );				copyStringAttribute( override, current, "name", true );				Element column = current != null ? current.element( "column" ) : null;				override.setValue( "column", getColumn( column, true, current ) );				overrides.add( (AttributeOverride) AnnotationFactory.create( override ) );			}		}		return overrides;	}	private Column getColumn(Element element, boolean isMandatory, Element current) {		//Element subelement = element != null ? element.element( "column" ) : null;		if ( element != null ) {			AnnotationDescriptor column = new AnnotationDescriptor( Column.class );			copyStringAttribute( column, element, "name", false );			copyBooleanAttribute( column, element, "unique" );			copyBooleanAttribute( column, element, "nullable" );			copyBooleanAttribute( column, element, "insertable" );			copyBooleanAttribute( column, element, "updatable" );			copyStringAttribute( column, element, "column-definition", false );			copyStringAttribute( column, element, "table", false );			copyIntegerAttribute( column, element, "length" );			copyIntegerAttribute( column, element, "precision" );			copyIntegerAttribute( column, element, "scale" );			return (Column) AnnotationFactory.create( column );		}		else {			if ( isMandatory ) {				throw new AnnotationException( current.getPath() + ".column is mandatory. " + SCHEMA_VALIDATION );			}			return null;		}	}	private void addAttributeOverrideIfNeeded(AttributeOverride annotation, List<AttributeOverride> overrides) {		if ( annotation != null ) {			String overrideName = annotation.name();			boolean present = false;			for (AttributeOverride current : overrides) {				if ( current.name().equals( overrideName ) ) {					present = true;					break;				}			}			if ( !present ) overrides.add( annotation );		}	}	private AccessType getAccessType(Element tree, XMLContext.Default defaults) {		String access = tree == null ? null : tree.attributeValue( "access" );		if ( "FIELD".equals( access ) || "PROPERTY".equals( access ) ) {			access = access.toLowerCase();		}		if ( access != null ) {			AnnotationDescriptor ad = new AnnotationDescriptor( AccessType.class );			ad.setValue( "value", access );			return AnnotationFactory.create( ad );		}		else if ( defaults.canUseJavaAnnotations() && isJavaAnnotationPresent( AccessType.class ) ) {			AccessType annotation = getJavaAnnotation( AccessType.class );			return annotation;		}		else if ( defaults.getAccess() != null ) {			AnnotationDescriptor ad = new AnnotationDescriptor( AccessType.class );			ad.setValue( "value", defaults.getAccess() );			return AnnotationFactory.create( ad );		}		else {			return null;		}	}	private ExcludeSuperclassListeners getExcludeSuperclassListeners(Element tree, XMLContext.Default defaults) {		return (ExcludeSuperclassListeners) getMarkerAnnotation( ExcludeSuperclassListeners.class, tree, defaults );	}	private ExcludeDefaultListeners getExcludeDefaultListeners(Element tree, XMLContext.Default defaults) {		return (ExcludeDefaultListeners) getMarkerAnnotation( ExcludeDefaultListeners.class, tree, defaults );	}	private Annotation getMarkerAnnotation(			Class<? extends Annotation> clazz, Element element, XMLContext.Default defaults	) {		Element subelement = element == null ? null : element.element( annotationToXml.get( clazz ) );		if ( subelement != null ) {			return AnnotationFactory.create( new AnnotationDescriptor( clazz ) );		}		else if ( defaults.canUseJavaAnnotations() ) {			//TODO wonder whether it should be excluded so that user can undone it			return getJavaAnnotation( clazz );		}		else {			return null;		}	}	private SqlResultSetMappings getSqlResultSetMappings(Element tree, XMLContext.Default defaults) {		List<SqlResultSetMapping> results = (List<SqlResultSetMapping>) buildSqlResultsetMappings( tree, defaults );		if ( defaults.canUseJavaAnnotations() ) {			SqlResultSetMapping annotation = getJavaAnnotation( SqlResultSetMapping.class );			addSqlResultsetMappingIfNeeded( annotation, results );			SqlResultSetMappings annotations = getJavaAnnotation( SqlResultSetMappings.class );			if ( annotations != null ) {				for (SqlResultSetMapping current : annotations.value()) {					addSqlResultsetMappingIfNeeded( current, results );				}			}		}		if ( results.size() > 0 ) {			AnnotationDescriptor ad = new AnnotationDescriptor( SqlResultSetMappings.class );			ad.setValue( "value", results.toArray( new SqlResultSetMapping[results.size()] ) );			return AnnotationFactory.create( ad );		}		else {			return null;		}	}	public static List<SqlResultSetMapping> buildSqlResultsetMappings(Element element, XMLContext.Default defaults) {		if ( element == null ) return new ArrayList<SqlResultSetMapping>();		List resultsetElementList = element.elements( "sql-result-set-mapping" );		List<SqlResultSetMapping> resultsets = new ArrayList<SqlResultSetMapping>();		Iterator it = resultsetElementList.listIterator();		while ( it.hasNext() ) {			Element subelement = (Element) it.next();			AnnotationDescriptor ann = new AnnotationDescriptor( SqlResultSetMapping.class );			copyStringAttribute( ann, subelement, "name", true );			List<Element> elements = subelement.elements( "entity-result" );			List<EntityResult> entityResults = new ArrayList<EntityResult>( elements.size() );			for (Element entityResult : elements) {				AnnotationDescriptor entityResultDescriptor = new AnnotationDescriptor( EntityResult.class );				String clazzName = entityResult.attributeValue( "entity-class" );				if ( clazzName == null ) {					throw new AnnotationException( "<entity-result> without entity-class. " + SCHEMA_VALIDATION );				}				Class clazz = null;				try {					clazz = ReflectHelper.classForName(							XMLContext.buildSafeClassName( clazzName, defaults ),							EJB3OverridenAnnotationReader.class					);				}				catch (ClassNotFoundException e) {					throw new AnnotationException( "Unable to find entity-class: " + clazzName, e );				}				entityResultDescriptor.setValue( "entityClass", clazz );				copyStringAttribute( entityResultDescriptor, entityResult, "discriminator-column", false );				List<FieldResult> fieldResults = new ArrayList<FieldResult>();				for (Element fieldResult : (List<Element>) entityResult.elements( "field-result" )) {					AnnotationDescriptor fieldResultDescriptor = new AnnotationDescriptor( FieldResult.class );					copyStringAttribute( fieldResultDescriptor, fieldResult, "name", true );					copyStringAttribute( fieldResultDescriptor, fieldResult, "column", true );					fieldResults.add( (FieldResult) AnnotationFactory.create( fieldResultDescriptor ) );				}				entityResultDescriptor.setValue(						"fields", fieldResults.toArray( new FieldResult[fieldResults.size()] )				);				entityResults.add( (EntityResult) AnnotationFactory.create( entityResultDescriptor ) );			}			ann.setValue( "entities", entityResults.toArray( new EntityResult[entityResults.size()] ) );			elements = subelement.elements( "column-result" );			List<ColumnResult> columnResults = new ArrayList<ColumnResult>( elements.size() );			for (Element columnResult : elements) {				AnnotationDescriptor columnResultDescriptor = new AnnotationDescriptor( ColumnResult.class );				copyStringAttribute( columnResultDescriptor, columnResult, "name", true );				columnResults.add( (ColumnResult) AnnotationFactory.create( columnResultDescriptor ) );			}			ann.setValue( "columns", columnResults.toArray( new ColumnResult[columnResults.size()] ) );			//FIXME there is never such a result-class, get rid of it?			String clazzName = subelement.attributeValue( "result-class" );			if ( StringHelper.isNotEmpty( clazzName ) ) {				Class clazz = null;				try {					clazz = ReflectHelper.classForName(							XMLContext.buildSafeClassName( clazzName, defaults ),							EJB3OverridenAnnotationReader.class					);				}				catch (ClassNotFoundException e) {					throw new AnnotationException( "Unable to find entity-class: " + clazzName, e );				}				ann.setValue( "resultClass", clazz );			}			copyStringAttribute( ann, subelement, "result-set-mapping", false );			resultsets.add( (SqlResultSetMapping) AnnotationFactory.create( ann ) );		}		return resultsets;	}	private void addSqlResultsetMappingIfNeeded(SqlResultSetMapping annotation, List<SqlResultSetMapping> resultsets) {		if ( annotation != null ) {			String resultsetName = annotation.name();			boolean present = false;			for (SqlResultSetMapping current : resultsets) {				if ( current.name().equals( resultsetName ) ) {					present = true;					break;				}			}			if ( !present ) resultsets.add( annotation );		}	}	private NamedQueries getNamedQueries(Element tree, XMLContext.Default defaults) {		//TODO avoid the Proxy Creation (@NamedQueries) when possible		List<NamedQuery> queries = (List<NamedQuery>) buildNamedQueries( tree, false, defaults );		if ( defaults.canUseJavaAnnotations() ) {			NamedQuery annotation = getJavaAnnotation( NamedQuery.class );			addNamedQueryIfNeeded( annotation, queries );			NamedQueries annotations = getJavaAnnotation( NamedQueries.class );			if ( annotations != null ) {				for (NamedQuery current : annotations.value()) {					addNamedQueryIfNeeded( current, queries );				}			}		}		if ( queries.size() > 0 ) {			AnnotationDescriptor ad = new AnnotationDescriptor( NamedQueries.class );			ad.setValue( "value", queries.toArray( new NamedQuery[queries.size()] ) );			return AnnotationFactory.create( ad );		}		else {			return null;		}	}	private void addNamedQueryIfNeeded(NamedQuery annotation, List<NamedQuery> queries) {		if ( annotation != null ) {			String queryName = annotation.name();			boolean present = false;			for (NamedQuery current : queries) {				if ( current.name().equals( queryName ) ) {					present = true;					break;				}			}			if ( !present ) queries.add( annotation );		}	}	private NamedNativeQueries getNamedNativeQueries(Element tree, XMLContext.Default defaults) {		List<NamedNativeQuery> queries = (List<NamedNativeQuery>) buildNamedQueries( tree, true, defaults );		if ( defaults.canUseJavaAnnotations() ) {			NamedNativeQuery annotation = getJavaAnnotation( NamedNativeQuery.class );			addNamedNativeQueryIfNeeded( annotation, queries );			NamedNativeQueries annotations = getJavaAnnotation( NamedNativeQueries.class );			if ( annotations != null ) {				for (NamedNativeQuery current : annotations.value()) {					addNamedNativeQueryIfNeeded( current, queries );				}			}		}		if ( queries.size() > 0 ) {			AnnotationDescriptor ad = new AnnotationDescriptor( NamedNativeQueries.class );			ad.setValue( "value", queries.toArray( new NamedNativeQuery[queries.size()] ) );			return AnnotationFactory.create( ad );		}		else {			return null;		}	}	private void addNamedNativeQueryIfNeeded(NamedNativeQuery annotation, List<NamedNativeQuery> queries) {		if ( annotation != null ) {			String queryName = annotation.name();			boolean present = false;			for (NamedNativeQuery current : queries) {				if ( current.name().equals( queryName ) ) {					present = true;					break;				}			}			if ( !present ) queries.add( annotation );		}	}	public static List buildNamedQueries(Element element, boolean isNative, XMLContext.Default defaults) {		if ( element == null ) return new ArrayList();		List namedQueryElementList = isNative ?				element.elements( "named-native-query" ) :				element.elements( "named-query" );		List namedQueries = new ArrayList();		Iterator it = namedQueryElementList.listIterator();		while ( it.hasNext() ) {			Element subelement = (Element) it.next();			AnnotationDescriptor ann = new AnnotationDescriptor(					isNative ? NamedNativeQuery.class : NamedQuery.class			);			copyStringAttribute( ann, subelement, "name", false );			Element queryElt = subelement.element( "query" );			if ( queryElt == null ) throw new AnnotationException( "No <query> element found." + SCHEMA_VALIDATION );			ann.setValue( "query", queryElt.getTextTrim() );			List<Element> elements = subelement.elements( "hint" );			List<QueryHint> queryHints = new ArrayList<QueryHint>( elements.size() );			for (Element hint : elements) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -