HHH-5205 - Renamed BinderHelper.isDefault() to BinderHelper.isEmptyAnnotationValue() , because this describes better what the function does. Also renamed VersionTest to OptimisitcLockAnnotationTest to better describe what gets tested.

git-svn-id: https://svn.jboss.org/repos/hibernate/core/trunk@20741 1b8cb986-b30d-0410-93ca-fae66ebed9b2
This commit is contained in:
Hardy Ferentschik 2010-09-28 16:32:26 +00:00
parent e14f58de29
commit 7419fc298d
16 changed files with 122 additions and 97 deletions

View File

@ -499,7 +499,7 @@ public class BinderHelper {
// YUCK! but cannot think of a clean way to do this given the string-config based scheme // YUCK! but cannot think of a clean way to do this given the string-config based scheme
params.put( PersistentIdentifierGenerator.IDENTIFIER_NORMALIZER, mappings.getObjectNameNormalizer() ); params.put( PersistentIdentifierGenerator.IDENTIFIER_NORMALIZER, mappings.getObjectNameNormalizer() );
if ( !isDefault( generatorName ) ) { if ( !isEmptyAnnotationValue( generatorName ) ) {
//we have a named generator //we have a named generator
IdGenerator gen = mappings.getGenerator( generatorName, localGenerators ); IdGenerator gen = mappings.getGenerator( generatorName, localGenerators );
if ( gen == null ) { if ( gen == null ) {
@ -526,7 +526,7 @@ public class BinderHelper {
id.setIdentifierGeneratorProperties( params ); id.setIdentifierGeneratorProperties( params );
} }
public static boolean isDefault(String annotationString) { public static boolean isEmptyAnnotationValue(String annotationString) {
return annotationString != null && annotationString.length() == 0; return annotationString != null && annotationString.length() == 0;
//equivalent to (but faster) ANNOTATION_STRING_DEFAULT.equals( annotationString ); //equivalent to (but faster) ANNOTATION_STRING_DEFAULT.equals( annotationString );
} }
@ -628,7 +628,7 @@ public class BinderHelper {
} }
private static void checkAnyMetaDefValidity(boolean mustHaveName, AnyMetaDef defAnn, XAnnotatedElement annotatedElement) { private static void checkAnyMetaDefValidity(boolean mustHaveName, AnyMetaDef defAnn, XAnnotatedElement annotatedElement) {
if ( mustHaveName && isDefault( defAnn.name() ) ) { if ( mustHaveName && isEmptyAnnotationValue( defAnn.name() ) ) {
String name = XClass.class.isAssignableFrom( annotatedElement.getClass() ) ? String name = XClass.class.isAssignableFrom( annotatedElement.getClass() ) ?
( (XClass) annotatedElement ).getName() : ( (XClass) annotatedElement ).getName() :
( (XPackage) annotatedElement ).getName(); ( (XPackage) annotatedElement ).getName();
@ -637,7 +637,7 @@ public class BinderHelper {
} }
private static void bindAnyMetaDef(AnyMetaDef defAnn, Mappings mappings) { private static void bindAnyMetaDef(AnyMetaDef defAnn, Mappings mappings) {
if ( isDefault( defAnn.name() ) ) return; //don't map not named definitions if ( isEmptyAnnotationValue( defAnn.name() ) ) return; //don't map not named definitions
log.info( "Binding Any Meta definition: {}", defAnn.name() ); log.info( "Binding Any Meta definition: {}", defAnn.name() );
mappings.addAnyMetaDef( defAnn ); mappings.addAnyMetaDef( defAnn );
} }

View File

@ -78,7 +78,7 @@ public class CopyIdentifierComponentSecondPass implements SecondPass {
Map<String, Ejb3JoinColumn> columnByReferencedName = new HashMap<String, Ejb3JoinColumn>(joinColumns.length); Map<String, Ejb3JoinColumn> columnByReferencedName = new HashMap<String, Ejb3JoinColumn>(joinColumns.length);
for (Ejb3JoinColumn joinColumn : joinColumns) { for (Ejb3JoinColumn joinColumn : joinColumns) {
final String referencedColumnName = joinColumn.getReferencedColumn(); final String referencedColumnName = joinColumn.getReferencedColumn();
if ( referencedColumnName == null || BinderHelper.isDefault( referencedColumnName ) ) { if ( referencedColumnName == null || BinderHelper.isEmptyAnnotationValue( referencedColumnName ) ) {
break; break;
} }
//JPA 2 requires referencedColumnNames to be case insensitive //JPA 2 requires referencedColumnNames to be case insensitive

View File

@ -71,12 +71,12 @@ public class Ejb3DiscriminatorColumn extends Ejb3Column {
} }
else if ( discAnn != null ) { else if ( discAnn != null ) {
discriminatorColumn.setImplicit( false ); discriminatorColumn.setImplicit( false );
if ( !BinderHelper.isDefault( discAnn.columnDefinition() ) ) { if ( !BinderHelper.isEmptyAnnotationValue( discAnn.columnDefinition() ) ) {
discriminatorColumn.setSqlType( discriminatorColumn.setSqlType(
discAnn.columnDefinition() discAnn.columnDefinition()
); );
} }
if ( !BinderHelper.isDefault( discAnn.name() ) ) { if ( !BinderHelper.isEmptyAnnotationValue( discAnn.name() ) ) {
discriminatorColumn.setLogicalColumnName( discAnn.name() ); discriminatorColumn.setLogicalColumnName( discAnn.name() );
} }
discriminatorColumn.setNullable( false ); discriminatorColumn.setNullable( false );

View File

@ -249,7 +249,7 @@ public class Ejb3JoinColumn extends Ejb3Column {
String suffixForDefaultColumnName, String suffixForDefaultColumnName,
Mappings mappings) { Mappings mappings) {
if ( ann != null ) { if ( ann != null ) {
if ( BinderHelper.isDefault( mappedBy ) ) { if ( BinderHelper.isEmptyAnnotationValue( mappedBy ) ) {
throw new AnnotationException( throw new AnnotationException(
"Illegal attempt to define a @JoinColumn with a mappedBy association: " "Illegal attempt to define a @JoinColumn with a mappedBy association: "
+ BinderHelper.getRelativePath( propertyHolder, propertyName ) + BinderHelper.getRelativePath( propertyHolder, propertyName )
@ -299,8 +299,8 @@ public class Ejb3JoinColumn extends Ejb3Column {
} }
else { else {
setImplicit( false ); setImplicit( false );
if ( !BinderHelper.isDefault( annJoin.columnDefinition() ) ) setSqlType( annJoin.columnDefinition() ); if ( !BinderHelper.isEmptyAnnotationValue( annJoin.columnDefinition() ) ) setSqlType( annJoin.columnDefinition() );
if ( !BinderHelper.isDefault( annJoin.name() ) ) setLogicalColumnName( annJoin.name() ); if ( !BinderHelper.isEmptyAnnotationValue( annJoin.name() ) ) setLogicalColumnName( annJoin.name() );
setNullable( annJoin.nullable() ); setNullable( annJoin.nullable() );
setUnique( annJoin.unique() ); setUnique( annJoin.unique() );
setInsertable( annJoin.insertable() ); setInsertable( annJoin.insertable() );

View File

@ -88,8 +88,8 @@ public class IndexColumn extends Ejb3Column {
Mappings mappings) { Mappings mappings) {
IndexColumn column; IndexColumn column;
if ( ann != null ) { if ( ann != null ) {
String sqlType = BinderHelper.isDefault( ann.columnDefinition() ) ? null : ann.columnDefinition(); String sqlType = BinderHelper.isEmptyAnnotationValue( ann.columnDefinition() ) ? null : ann.columnDefinition();
String name = BinderHelper.isDefault( ann.name() ) ? inferredData.getPropertyName() + "_ORDER" : ann.name(); String name = BinderHelper.isEmptyAnnotationValue( ann.name() ) ? inferredData.getPropertyName() + "_ORDER" : ann.name();
//TODO move it to a getter based system and remove the constructor //TODO move it to a getter based system and remove the constructor
// The JPA OrderColumn annotation defines no table element... // The JPA OrderColumn annotation defines no table element...
// column = new IndexColumn( // column = new IndexColumn(
@ -120,8 +120,8 @@ public class IndexColumn extends Ejb3Column {
Mappings mappings) { Mappings mappings) {
IndexColumn column; IndexColumn column;
if ( ann != null ) { if ( ann != null ) {
String sqlType = BinderHelper.isDefault( ann.columnDefinition() ) ? null : ann.columnDefinition(); String sqlType = BinderHelper.isEmptyAnnotationValue( ann.columnDefinition() ) ? null : ann.columnDefinition();
String name = BinderHelper.isDefault( ann.name() ) ? inferredData.getPropertyName() : ann.name(); String name = BinderHelper.isEmptyAnnotationValue( ann.name() ) ? inferredData.getPropertyName() : ann.name();
//TODO move it to a getter based system and remove the constructor //TODO move it to a getter based system and remove the constructor
column = new IndexColumn( column = new IndexColumn(
false, sqlType, 0, 0, 0, name, ann.nullable(), false, sqlType, 0, 0, 0, name, ann.nullable(),

View File

@ -114,7 +114,7 @@ public class OneToOneSecondPass implements SecondPass {
binder.setCascade( cascadeStrategy ); binder.setCascade( cascadeStrategy );
binder.setAccessType( inferredData.getDefaultAccess() ); binder.setAccessType( inferredData.getDefaultAccess() );
Property prop = binder.makeProperty(); Property prop = binder.makeProperty();
if ( BinderHelper.isDefault( mappedBy ) ) { if ( BinderHelper.isEmptyAnnotationValue( mappedBy ) ) {
/* /*
* we need to check if the columns are in the right order * we need to check if the columns are in the right order
* if not, then we need to create a many to one and formula * if not, then we need to create a many to one and formula
@ -236,7 +236,7 @@ public class OneToOneSecondPass implements SecondPass {
} }
ForeignKey fk = inferredData.getProperty().getAnnotation( ForeignKey.class ); ForeignKey fk = inferredData.getProperty().getAnnotation( ForeignKey.class );
String fkName = fk != null ? fk.name() : ""; String fkName = fk != null ? fk.name() : "";
if ( !BinderHelper.isDefault( fkName ) ) value.setForeignKeyName( fkName ); if ( !BinderHelper.isEmptyAnnotationValue( fkName ) ) value.setForeignKeyName( fkName );
} }
/** /**

View File

@ -24,12 +24,12 @@
package org.hibernate.cfg; package org.hibernate.cfg;
import java.util.Map; import java.util.Map;
import org.hibernate.MappingException; import org.hibernate.MappingException;
import org.hibernate.cfg.annotations.SimpleValueBinder; import org.hibernate.cfg.annotations.SimpleValueBinder;
/** /**
* @author Sharath Reddy * @author Sharath Reddy
*
*/ */
public class SetSimpleValueTypeSecondPass implements SecondPass { public class SetSimpleValueTypeSecondPass implements SecondPass {
@ -42,5 +42,4 @@ public class SetSimpleValueTypeSecondPass implements SecondPass {
public void doSecondPass(Map persistentClasses) throws MappingException { public void doSecondPass(Map persistentClasses) throws MappingException {
binder.fillSimpleValue(); binder.fillSimpleValue();
} }
} }

View File

@ -224,7 +224,7 @@ public abstract class CollectionBinder {
public void setSqlOrderBy(OrderBy orderByAnn) { public void setSqlOrderBy(OrderBy orderByAnn) {
if ( orderByAnn != null ) { if ( orderByAnn != null ) {
if ( !BinderHelper.isDefault( orderByAnn.clause() ) ) { if ( !BinderHelper.isEmptyAnnotationValue( orderByAnn.clause() ) ) {
orderBy = orderByAnn.clause(); orderBy = orderByAnn.clause();
} }
} }
@ -471,7 +471,7 @@ public abstract class CollectionBinder {
} }
//work on association //work on association
boolean isMappedBy = !BinderHelper.isDefault( mappedBy ); boolean isMappedBy = !BinderHelper.isEmptyAnnotationValue( mappedBy );
if (isMappedBy if (isMappedBy
&& (property.isAnnotationPresent( JoinColumn.class ) && (property.isAnnotationPresent( JoinColumn.class )
@ -672,7 +672,7 @@ public abstract class CollectionBinder {
&& !reversePropertyInJoin && !reversePropertyInJoin
&& oneToMany && oneToMany
&& !this.isExplicitAssociationTable && !this.isExplicitAssociationTable
&& ( joinColumns[0].isImplicit() && !BinderHelper.isDefault( this.mappedBy ) //implicit @JoinColumn && ( joinColumns[0].isImplicit() && !BinderHelper.isEmptyAnnotationValue( this.mappedBy ) //implicit @JoinColumn
|| !fkJoinColumns[0].isImplicit() ) //this is an explicit @JoinColumn || !fkJoinColumns[0].isImplicit() ) //this is an explicit @JoinColumn
) { ) {
//this is a Foreign key //this is a Foreign key
@ -865,7 +865,7 @@ public abstract class CollectionBinder {
} }
private String getCondition(String cond, String name) { private String getCondition(String cond, String name) {
if ( BinderHelper.isDefault( cond ) ) { if ( BinderHelper.isEmptyAnnotationValue( cond ) ) {
cond = mappings.getFilterDefinition( name ).getDefaultFilterCondition(); cond = mappings.getFilterDefinition( name ).getDefaultFilterCondition();
if ( StringHelper.isEmpty( cond ) ) { if ( StringHelper.isEmpty( cond ) ) {
throw new AnnotationException( throw new AnnotationException(
@ -879,7 +879,7 @@ public abstract class CollectionBinder {
public void setCache(Cache cacheAnn) { public void setCache(Cache cacheAnn) {
if ( cacheAnn != null ) { if ( cacheAnn != null ) {
cacheRegionName = BinderHelper.isDefault( cacheAnn.region() ) ? null : cacheAnn.region(); cacheRegionName = BinderHelper.isEmptyAnnotationValue( cacheAnn.region() ) ? null : cacheAnn.region();
cacheConcurrencyStrategy = EntityBinder.getCacheConcurrencyStrategy( cacheAnn.usage() ); cacheConcurrencyStrategy = EntityBinder.getCacheConcurrencyStrategy( cacheAnn.usage() );
} }
else { else {
@ -1123,7 +1123,7 @@ public abstract class CollectionBinder {
collValue.setKey( key ); collValue.setKey( key );
ForeignKey fk = property != null ? property.getAnnotation( ForeignKey.class ) : null; ForeignKey fk = property != null ? property.getAnnotation( ForeignKey.class ) : null;
String fkName = fk != null ? fk.name() : ""; String fkName = fk != null ? fk.name() : "";
if ( !BinderHelper.isDefault( fkName ) ) key.setForeignKeyName( fkName ); if ( !BinderHelper.isEmptyAnnotationValue( fkName ) ) key.setForeignKeyName( fkName );
return key; return key;
} }
@ -1188,7 +1188,7 @@ public abstract class CollectionBinder {
} }
} }
boolean mappedBy = !BinderHelper.isDefault( joinColumns[0].getMappedBy() ); boolean mappedBy = !BinderHelper.isEmptyAnnotationValue( joinColumns[0].getMappedBy() );
if ( mappedBy ) { if ( mappedBy ) {
if ( !isCollectionOfEntities ) { if ( !isCollectionOfEntities ) {
StringBuilder error = new StringBuilder( 80 ) StringBuilder error = new StringBuilder( 80 )
@ -1281,7 +1281,7 @@ public abstract class CollectionBinder {
} }
ForeignKey fk = property != null ? property.getAnnotation( ForeignKey.class ) : null; ForeignKey fk = property != null ? property.getAnnotation( ForeignKey.class ) : null;
String fkName = fk != null ? fk.inverseName() : ""; String fkName = fk != null ? fk.inverseName() : "";
if ( !BinderHelper.isDefault( fkName ) ) element.setForeignKeyName( fkName ); if ( !BinderHelper.isEmptyAnnotationValue( fkName ) ) element.setForeignKeyName( fkName );
} }
else if ( anyAnn != null ) { else if ( anyAnn != null ) {
//@ManyToAny //@ManyToAny

View File

@ -170,7 +170,7 @@ public class EntityBinder {
private void bindEjb3Annotation(Entity ejb3Ann) { private void bindEjb3Annotation(Entity ejb3Ann) {
if ( ejb3Ann == null ) throw new AssertionFailure( "@Entity should always be not null" ); if ( ejb3Ann == null ) throw new AssertionFailure( "@Entity should always be not null" );
if ( BinderHelper.isDefault( ejb3Ann.name() ) ) { if ( BinderHelper.isEmptyAnnotationValue( ejb3Ann.name() ) ) {
name = StringHelper.unqualify( annotatedClass.getName() ); name = StringHelper.unqualify( annotatedClass.getName() );
} }
else { else {
@ -243,7 +243,7 @@ public class EntityBinder {
} }
else { else {
org.hibernate.annotations.Entity entityAnn = annotatedClass.getAnnotation( org.hibernate.annotations.Entity.class ); org.hibernate.annotations.Entity entityAnn = annotatedClass.getAnnotation( org.hibernate.annotations.Entity.class );
if ( entityAnn != null && !BinderHelper.isDefault( entityAnn.persister() ) ) { if ( entityAnn != null && !BinderHelper.isEmptyAnnotationValue( entityAnn.persister() ) ) {
try { try {
persister = ReflectHelper.classForName( entityAnn.persister() ); persister = ReflectHelper.classForName( entityAnn.persister() );
} }
@ -319,7 +319,7 @@ public class EntityBinder {
for ( Map.Entry<String, String> filter : filters.entrySet() ) { for ( Map.Entry<String, String> filter : filters.entrySet() ) {
String filterName = filter.getKey(); String filterName = filter.getKey();
String cond = filter.getValue(); String cond = filter.getValue();
if ( BinderHelper.isDefault( cond ) ) { if ( BinderHelper.isEmptyAnnotationValue( cond ) ) {
FilterDefinition definition = mappings.getFilterDefinition( filterName ); FilterDefinition definition = mappings.getFilterDefinition( filterName );
cond = definition == null ? null : definition.getDefaultFilterCondition(); cond = definition == null ? null : definition.getDefaultFilterCondition();
if ( StringHelper.isEmpty( cond ) ) { if ( StringHelper.isEmpty( cond ) ) {
@ -606,7 +606,7 @@ public class EntityBinder {
private void setFKNameIfDefined(Join join) { private void setFKNameIfDefined(Join join) {
org.hibernate.annotations.Table matchingTable = findMatchingComplimentTableAnnotation( join ); org.hibernate.annotations.Table matchingTable = findMatchingComplimentTableAnnotation( join );
if ( matchingTable != null && !BinderHelper.isDefault( matchingTable.foreignKey().name() ) ) { if ( matchingTable != null && !BinderHelper.isEmptyAnnotationValue( matchingTable.foreignKey().name() ) ) {
( (SimpleValue) join.getKey() ).setForeignKeyName( matchingTable.foreignKey().name() ); ( (SimpleValue) join.getKey() ).setForeignKeyName( matchingTable.foreignKey().name() );
} }
} }
@ -740,19 +740,19 @@ public class EntityBinder {
join.setSequentialSelect( FetchMode.JOIN != matchingTable.fetch() ); join.setSequentialSelect( FetchMode.JOIN != matchingTable.fetch() );
join.setInverse( matchingTable.inverse() ); join.setInverse( matchingTable.inverse() );
join.setOptional( matchingTable.optional() ); join.setOptional( matchingTable.optional() );
if ( !BinderHelper.isDefault( matchingTable.sqlInsert().sql() ) ) { if ( !BinderHelper.isEmptyAnnotationValue( matchingTable.sqlInsert().sql() ) ) {
join.setCustomSQLInsert( matchingTable.sqlInsert().sql().trim(), join.setCustomSQLInsert( matchingTable.sqlInsert().sql().trim(),
matchingTable.sqlInsert().callable(), matchingTable.sqlInsert().callable(),
ExecuteUpdateResultCheckStyle.parse( matchingTable.sqlInsert().check().toString().toLowerCase() ) ExecuteUpdateResultCheckStyle.parse( matchingTable.sqlInsert().check().toString().toLowerCase() )
); );
} }
if ( !BinderHelper.isDefault( matchingTable.sqlUpdate().sql() ) ) { if ( !BinderHelper.isEmptyAnnotationValue( matchingTable.sqlUpdate().sql() ) ) {
join.setCustomSQLUpdate( matchingTable.sqlUpdate().sql().trim(), join.setCustomSQLUpdate( matchingTable.sqlUpdate().sql().trim(),
matchingTable.sqlUpdate().callable(), matchingTable.sqlUpdate().callable(),
ExecuteUpdateResultCheckStyle.parse( matchingTable.sqlUpdate().check().toString().toLowerCase() ) ExecuteUpdateResultCheckStyle.parse( matchingTable.sqlUpdate().check().toString().toLowerCase() )
); );
} }
if ( !BinderHelper.isDefault( matchingTable.sqlDelete().sql() ) ) { if ( !BinderHelper.isEmptyAnnotationValue( matchingTable.sqlDelete().sql() ) ) {
join.setCustomSQLDelete( matchingTable.sqlDelete().sql().trim(), join.setCustomSQLDelete( matchingTable.sqlDelete().sql().trim(),
matchingTable.sqlDelete().callable(), matchingTable.sqlDelete().callable(),
ExecuteUpdateResultCheckStyle.parse( matchingTable.sqlDelete().check().toString().toLowerCase() ) ExecuteUpdateResultCheckStyle.parse( matchingTable.sqlDelete().check().toString().toLowerCase() )
@ -782,7 +782,7 @@ public class EntityBinder {
public void setCache(Cache cacheAnn) { public void setCache(Cache cacheAnn) {
if ( cacheAnn != null ) { if ( cacheAnn != null ) {
cacheRegion = BinderHelper.isDefault( cacheAnn.region() ) ? cacheRegion = BinderHelper.isEmptyAnnotationValue( cacheAnn.region() ) ?
null : null :
cacheAnn.region(); cacheAnn.region();
cacheConcurrentStrategy = getCacheConcurrencyStrategy( cacheAnn.usage() ); cacheConcurrentStrategy = getCacheConcurrencyStrategy( cacheAnn.usage() );
@ -853,7 +853,7 @@ public class EntityBinder {
"@org.hibernate.annotations.Table references an unknown table: " + appliedTable "@org.hibernate.annotations.Table references an unknown table: " + appliedTable
); );
} }
if ( !BinderHelper.isDefault( table.comment() ) ) hibTable.setComment( table.comment() ); if ( !BinderHelper.isEmptyAnnotationValue( table.comment() ) ) hibTable.setComment( table.comment() );
TableBinder.addIndexes( hibTable, table.indexes(), mappings ); TableBinder.addIndexes( hibTable, table.indexes(), mappings );
} }

View File

@ -101,7 +101,7 @@ public class IdBagBinder extends BagBinder {
simpleValue.setTable( table ); simpleValue.setTable( table );
simpleValue.setColumns( idColumns ); simpleValue.setColumns( idColumns );
Type typeAnn = collectionIdAnn.type(); Type typeAnn = collectionIdAnn.type();
if ( typeAnn != null && !BinderHelper.isDefault( typeAnn.type() ) ) { if ( typeAnn != null && !BinderHelper.isEmptyAnnotationValue( typeAnn.type() ) ) {
simpleValue.setExplicitType( typeAnn ); simpleValue.setExplicitType( typeAnn );
} }
else { else {

View File

@ -285,12 +285,12 @@ public class MapBinder extends CollectionBinder {
//the algorithm generally does not apply for map key anyway //the algorithm generally does not apply for map key anyway
MapKey mapKeyAnn = property.getAnnotation( org.hibernate.annotations.MapKey.class ); MapKey mapKeyAnn = property.getAnnotation( org.hibernate.annotations.MapKey.class );
elementBinder.setKey(true); elementBinder.setKey(true);
if (mapKeyAnn != null && ! BinderHelper.isDefault( mapKeyAnn.type().type() ) ) { if (mapKeyAnn != null && ! BinderHelper.isEmptyAnnotationValue( mapKeyAnn.type().type() ) ) {
elementBinder.setExplicitType( mapKeyAnn.type() ); elementBinder.setExplicitType( mapKeyAnn.type() );
} }
else { else {
MapKeyType mapKeyTypeAnnotation = property.getAnnotation( MapKeyType.class ); MapKeyType mapKeyTypeAnnotation = property.getAnnotation( MapKeyType.class );
if ( mapKeyTypeAnnotation != null && ! BinderHelper.isDefault( mapKeyTypeAnnotation.value().type() ) ) { if ( mapKeyTypeAnnotation != null && ! BinderHelper.isEmptyAnnotationValue( mapKeyTypeAnnotation.value().type() ) ) {
elementBinder.setExplicitType( mapKeyTypeAnnotation.value() ); elementBinder.setExplicitType( mapKeyTypeAnnotation.value() );
} }
else { else {

View File

@ -59,7 +59,7 @@ public abstract class QueryBinder {
public static void bindQuery(NamedQuery queryAnn, Mappings mappings, boolean isDefault) { public static void bindQuery(NamedQuery queryAnn, Mappings mappings, boolean isDefault) {
if ( queryAnn == null ) return; if ( queryAnn == null ) return;
if ( BinderHelper.isDefault( queryAnn.name() ) ) { if ( BinderHelper.isEmptyAnnotationValue( queryAnn.name() ) ) {
throw new AnnotationException( "A named query must have a name when used in class or package level" ); throw new AnnotationException( "A named query must have a name when used in class or package level" );
} }
//EJBQL Query //EJBQL Query
@ -90,14 +90,14 @@ public abstract class QueryBinder {
public static void bindNativeQuery(NamedNativeQuery queryAnn, Mappings mappings, boolean isDefault) { public static void bindNativeQuery(NamedNativeQuery queryAnn, Mappings mappings, boolean isDefault) {
if ( queryAnn == null ) return; if ( queryAnn == null ) return;
//ResultSetMappingDefinition mappingDefinition = mappings.getResultSetMapping( queryAnn.resultSetMapping() ); //ResultSetMappingDefinition mappingDefinition = mappings.getResultSetMapping( queryAnn.resultSetMapping() );
if ( BinderHelper.isDefault( queryAnn.name() ) ) { if ( BinderHelper.isEmptyAnnotationValue( queryAnn.name() ) ) {
throw new AnnotationException( "A named query must have a name when used in class or package level" ); throw new AnnotationException( "A named query must have a name when used in class or package level" );
} }
NamedSQLQueryDefinition query; NamedSQLQueryDefinition query;
String resultSetMapping = queryAnn.resultSetMapping(); String resultSetMapping = queryAnn.resultSetMapping();
QueryHint[] hints = queryAnn.hints(); QueryHint[] hints = queryAnn.hints();
String queryName = queryAnn.query(); String queryName = queryAnn.query();
if ( !BinderHelper.isDefault( resultSetMapping ) ) { if ( !BinderHelper.isEmptyAnnotationValue( resultSetMapping ) ) {
//sql result set usage //sql result set usage
query = new NamedSQLQueryDefinition( query = new NamedSQLQueryDefinition(
queryName, queryName,
@ -151,25 +151,25 @@ public abstract class QueryBinder {
public static void bindNativeQuery(org.hibernate.annotations.NamedNativeQuery queryAnn, Mappings mappings) { public static void bindNativeQuery(org.hibernate.annotations.NamedNativeQuery queryAnn, Mappings mappings) {
if ( queryAnn == null ) return; if ( queryAnn == null ) return;
//ResultSetMappingDefinition mappingDefinition = mappings.getResultSetMapping( queryAnn.resultSetMapping() ); //ResultSetMappingDefinition mappingDefinition = mappings.getResultSetMapping( queryAnn.resultSetMapping() );
if ( BinderHelper.isDefault( queryAnn.name() ) ) { if ( BinderHelper.isEmptyAnnotationValue( queryAnn.name() ) ) {
throw new AnnotationException( "A named query must have a name when used in class or package level" ); throw new AnnotationException( "A named query must have a name when used in class or package level" );
} }
NamedSQLQueryDefinition query; NamedSQLQueryDefinition query;
String resultSetMapping = queryAnn.resultSetMapping(); String resultSetMapping = queryAnn.resultSetMapping();
if ( !BinderHelper.isDefault( resultSetMapping ) ) { if ( !BinderHelper.isEmptyAnnotationValue( resultSetMapping ) ) {
//sql result set usage //sql result set usage
query = new NamedSQLQueryDefinition( query = new NamedSQLQueryDefinition(
queryAnn.query(), queryAnn.query(),
resultSetMapping, resultSetMapping,
null, null,
queryAnn.cacheable(), queryAnn.cacheable(),
BinderHelper.isDefault( queryAnn.cacheRegion() ) ? null : queryAnn.cacheRegion(), BinderHelper.isEmptyAnnotationValue( queryAnn.cacheRegion() ) ? null : queryAnn.cacheRegion(),
queryAnn.timeout() < 0 ? null : queryAnn.timeout(), queryAnn.timeout() < 0 ? null : queryAnn.timeout(),
queryAnn.fetchSize() < 0 ? null : queryAnn.fetchSize(), queryAnn.fetchSize() < 0 ? null : queryAnn.fetchSize(),
getFlushMode( queryAnn.flushMode() ), getFlushMode( queryAnn.flushMode() ),
getCacheMode( queryAnn.cacheMode() ), getCacheMode( queryAnn.cacheMode() ),
queryAnn.readOnly(), queryAnn.readOnly(),
BinderHelper.isDefault( queryAnn.comment() ) ? null : queryAnn.comment(), BinderHelper.isEmptyAnnotationValue( queryAnn.comment() ) ? null : queryAnn.comment(),
null, null,
queryAnn.callable() queryAnn.callable()
); );
@ -184,13 +184,13 @@ public abstract class QueryBinder {
new NativeSQLQueryReturn[] { entityQueryReturn }, new NativeSQLQueryReturn[] { entityQueryReturn },
null, null,
queryAnn.cacheable(), queryAnn.cacheable(),
BinderHelper.isDefault( queryAnn.cacheRegion() ) ? null : queryAnn.cacheRegion(), BinderHelper.isEmptyAnnotationValue( queryAnn.cacheRegion() ) ? null : queryAnn.cacheRegion(),
queryAnn.timeout() < 0 ? null : queryAnn.timeout(), queryAnn.timeout() < 0 ? null : queryAnn.timeout(),
queryAnn.fetchSize() < 0 ? null : queryAnn.fetchSize(), queryAnn.fetchSize() < 0 ? null : queryAnn.fetchSize(),
getFlushMode( queryAnn.flushMode() ), getFlushMode( queryAnn.flushMode() ),
getCacheMode( queryAnn.cacheMode() ), getCacheMode( queryAnn.cacheMode() ),
queryAnn.readOnly(), queryAnn.readOnly(),
BinderHelper.isDefault( queryAnn.comment() ) ? null : queryAnn.comment(), BinderHelper.isEmptyAnnotationValue( queryAnn.comment() ) ? null : queryAnn.comment(),
null, null,
queryAnn.callable() queryAnn.callable()
); );
@ -227,7 +227,7 @@ public abstract class QueryBinder {
public static void bindQuery(org.hibernate.annotations.NamedQuery queryAnn, Mappings mappings) { public static void bindQuery(org.hibernate.annotations.NamedQuery queryAnn, Mappings mappings) {
if ( queryAnn == null ) return; if ( queryAnn == null ) return;
if ( BinderHelper.isDefault( queryAnn.name() ) ) { if ( BinderHelper.isEmptyAnnotationValue( queryAnn.name() ) ) {
throw new AnnotationException( "A named query must have a name when used in class or package level" ); throw new AnnotationException( "A named query must have a name when used in class or package level" );
} }
@ -237,13 +237,13 @@ public abstract class QueryBinder {
NamedQueryDefinition query = new NamedQueryDefinition( NamedQueryDefinition query = new NamedQueryDefinition(
queryAnn.query(), queryAnn.query(),
queryAnn.cacheable(), queryAnn.cacheable(),
BinderHelper.isDefault( queryAnn.cacheRegion() ) ? null : queryAnn.cacheRegion(), BinderHelper.isEmptyAnnotationValue( queryAnn.cacheRegion() ) ? null : queryAnn.cacheRegion(),
queryAnn.timeout() < 0 ? null : queryAnn.timeout(), queryAnn.timeout() < 0 ? null : queryAnn.timeout(),
queryAnn.fetchSize() < 0 ? null : queryAnn.fetchSize(), queryAnn.fetchSize() < 0 ? null : queryAnn.fetchSize(),
flushMode, flushMode,
getCacheMode( queryAnn.cacheMode() ), getCacheMode( queryAnn.cacheMode() ),
queryAnn.readOnly(), queryAnn.readOnly(),
BinderHelper.isDefault( queryAnn.comment() ) ? null : queryAnn.comment(), BinderHelper.isEmptyAnnotationValue( queryAnn.comment() ) ? null : queryAnn.comment(),
null null
); );

View File

@ -157,7 +157,7 @@ public class ResultsetMappingSecondPass implements QuerySecondPass {
); );
} }
if ( !BinderHelper.isDefault( entity.discriminatorColumn() ) ) { if ( !BinderHelper.isEmptyAnnotationValue( entity.discriminatorColumn() ) ) {
final String quotingNormalizedName = mappings.getObjectNameNormalizer().normalizeIdentifierQuoting( final String quotingNormalizedName = mappings.getObjectNameNormalizer().normalizeIdentifierQuoting(
entity.discriminatorColumn() entity.discriminatorColumn()
); );

View File

@ -213,8 +213,8 @@ public class TableBinder {
Table denormalizedSuperTable, Table denormalizedSuperTable,
Mappings mappings, Mappings mappings,
String subselect) { String subselect) {
schema = BinderHelper.isDefault( schema ) ? mappings.getSchemaName() : schema; schema = BinderHelper.isEmptyAnnotationValue( schema ) ? mappings.getSchemaName() : schema;
catalog = BinderHelper.isDefault( catalog ) ? mappings.getCatalogName() : catalog; catalog = BinderHelper.isEmptyAnnotationValue( catalog ) ? mappings.getCatalogName() : catalog;
String realTableName = mappings.getObjectNameNormalizer().normalizeDatabaseIdentifier( String realTableName = mappings.getObjectNameNormalizer().normalizeDatabaseIdentifier(
nameSource.getExplicitName(), nameSource.getExplicitName(),
@ -282,8 +282,8 @@ public class TableBinder {
String constraints, String constraints,
Table denormalizedSuperTable, Table denormalizedSuperTable,
Mappings mappings) { Mappings mappings) {
schema = BinderHelper.isDefault( schema ) ? mappings.getSchemaName() : schema; schema = BinderHelper.isEmptyAnnotationValue( schema ) ? mappings.getSchemaName() : schema;
catalog = BinderHelper.isDefault( catalog ) ? mappings.getCatalogName() : catalog; catalog = BinderHelper.isEmptyAnnotationValue( catalog ) ? mappings.getCatalogName() : catalog;
Table table; Table table;
if ( denormalizedSuperTable != null ) { if ( denormalizedSuperTable != null ) {
table = mappings.addDenormalizedTable( table = mappings.addDenormalizedTable(

View File

@ -0,0 +1,67 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* Copyright (c) 2010, Red Hat Inc. or third-party contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors. All third-party contributions are
* distributed under license by Red Hat Inc.
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution; if not, write to:
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
//$Id$
package org.hibernate.test.annotations.various;
import org.hibernate.Session;
import org.hibernate.test.annotations.TestCase;
/**
* Test for the @OptimisticLock annotation.
*
* @author Emmanuel Bernard
*/
public class OptimisticLockAnnotationTest extends TestCase {
public void testOptimisticLockExcludeOnNameProperty() throws Exception {
Conductor c = new Conductor();
c.setName( "Bob" );
Session s = openSession();
s.getTransaction().begin();
s.persist( c );
s.flush();
s.clear();
c = ( Conductor ) s.get( Conductor.class, c.getId() );
Long version = c.getVersion();
c.setName( "Don" );
s.flush();
s.clear();
c = ( Conductor ) s.get( Conductor.class, c.getId() );
assertEquals( version, c.getVersion() );
s.getTransaction().rollback();
s.close();
}
protected Class[] getAnnotatedClasses() {
return new Class[] {
Conductor.class
};
}
}

View File

@ -1,41 +0,0 @@
//$Id$
package org.hibernate.test.annotations.various;
import org.hibernate.Session;
import org.hibernate.test.annotations.TestCase;
/**
* @author Emmanuel Bernard
*/
public class VersionTest extends TestCase {
public void testOptimisticLockDisabled() throws Exception {
Conductor c = new Conductor();
c.setName( "Bob" );
Session s = openSession( );
s.getTransaction().begin();
s.persist( c );
s.flush();
s.clear();
c = (Conductor) s.get( Conductor.class, c.getId() );
Long version = c.getVersion();
c.setName( "Don" );
s.flush();
s.clear();
c = (Conductor) s.get( Conductor.class, c.getId() );
assertEquals( version, c.getVersion() );
s.getTransaction().rollback();
s.close();
}
protected Class[] getAnnotatedClasses() {
return new Class[] {
Conductor.class
};
}
}