Skip to content

Commit 3a99b1b

Browse files
committed
use isBlank() instead of isEmpty() to better handle annotation values
1 parent c81b802 commit 3a99b1b

25 files changed

+121
-235
lines changed

hibernate-core/src/main/java/org/hibernate/boot/model/internal/AbstractEntityIdGeneratorResolver.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public final void doSecondPass(Map<String, PersistentClass> persistentClasses) t
7373
}
7474

7575
private void handleSequenceStrategy() {
76-
if ( generatedValue.generator().isEmpty() ) {
76+
if ( generatedValue.generator().isBlank() ) {
7777
handleUnnamedSequenceGenerator();
7878
}
7979
else {
@@ -86,7 +86,7 @@ private void handleSequenceStrategy() {
8686
protected abstract void handleNamedSequenceGenerator();
8787

8888
private void handleTableStrategy() {
89-
if ( generatedValue.generator().isEmpty() ) {
89+
if ( generatedValue.generator().isBlank() ) {
9090
handleUnnamedTableGenerator();
9191
}
9292
else {
@@ -99,7 +99,7 @@ private void handleTableStrategy() {
9999
protected abstract void handleNamedTableGenerator();
100100

101101
private void handleAutoStrategy() {
102-
if ( generatedValue.generator().isEmpty() ) {
102+
if ( generatedValue.generator().isBlank() ) {
103103
handleUnnamedAutoGenerator();
104104
}
105105
else {
@@ -148,7 +148,7 @@ private Annotation findGeneratorAnnotation(AnnotationTarget annotationTarget) {
148148
protected boolean handleAsLegacyGenerator() {
149149
// Handle a few legacy Hibernate generators...
150150
final String nameFromGeneratedValue = generatedValue.generator();
151-
if ( !nameFromGeneratedValue.isEmpty() ) {
151+
if ( !nameFromGeneratedValue.isBlank() ) {
152152
final Class<? extends Generator> legacyNamedGenerator = mapLegacyNamedGenerator( nameFromGeneratedValue, idValue );
153153
if ( legacyNamedGenerator != null ) {
154154
final Map<String,String> configuration = buildLegacyGeneratorConfig();

hibernate-core/src/main/java/org/hibernate/boot/model/internal/AbstractPropertyHolder.java

Lines changed: 23 additions & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
*/
55
package org.hibernate.boot.model.internal;
66

7-
import java.lang.annotation.Annotation;
87
import java.util.ArrayList;
98
import java.util.HashMap;
109
import java.util.List;
@@ -24,7 +23,6 @@
2423
import org.hibernate.boot.spi.MetadataBuildingContext;
2524
import org.hibernate.internal.CoreLogging;
2625
import org.hibernate.internal.util.StringHelper;
27-
import org.hibernate.internal.util.collections.CollectionHelper;
2826
import org.hibernate.models.spi.AnnotationTarget;
2927
import org.hibernate.models.spi.ClassDetails;
3028
import org.hibernate.models.spi.MemberDetails;
@@ -36,7 +34,6 @@
3634

3735
import jakarta.persistence.AssociationOverride;
3836
import jakarta.persistence.AttributeOverride;
39-
import jakarta.persistence.CheckConstraint;
4037
import jakarta.persistence.Column;
4138
import jakarta.persistence.Embeddable;
4239
import jakarta.persistence.Entity;
@@ -47,7 +44,10 @@
4744

4845
import static org.hibernate.boot.model.internal.TimeZoneStorageHelper.isOffsetTimeClass;
4946
import static org.hibernate.boot.model.internal.TimeZoneStorageHelper.useColumnForTimeZoneStorage;
47+
import static org.hibernate.internal.util.StringHelper.isNotBlank;
5048
import static org.hibernate.internal.util.StringHelper.qualify;
49+
import static org.hibernate.internal.util.collections.CollectionHelper.isEmpty;
50+
import static org.hibernate.internal.util.collections.CollectionHelper.isNotEmpty;
5151

5252
/**
5353
* @author Emmanuel Bernard
@@ -153,10 +153,12 @@ public boolean isInIdClass() {
153153
if ( isInIdClass != null ) {
154154
return isInIdClass;
155155
}
156-
if ( parent != null ) {
156+
else if ( parent != null ) {
157157
return parent.isInIdClass();
158158
}
159-
return false;
159+
else {
160+
return false;
161+
}
160162
}
161163

162164
@Override
@@ -441,13 +443,15 @@ private static Map<String, Column[]> buildColumnOverride(
441443
return result;
442444
}
443445

444-
final SourceModelBuildingContext sourceModelContext = context.getMetadataCollector().getSourceModelBuildingContext();
446+
final SourceModelBuildingContext sourceModelContext =
447+
context.getMetadataCollector().getSourceModelBuildingContext();
445448
final Map<String, List<Column>> columnOverrideMap = new HashMap<>();
446449

447-
final AttributeOverride[] overrides = element.getRepeatedAnnotationUsages( AttributeOverride.class, sourceModelContext );
448-
if ( CollectionHelper.isNotEmpty( overrides ) ) {
450+
final AttributeOverride[] overrides =
451+
element.getRepeatedAnnotationUsages( AttributeOverride.class, sourceModelContext );
452+
if ( isNotEmpty( overrides ) ) {
449453
for ( AttributeOverride depAttr : overrides ) {
450-
final String qualifiedName = StringHelper.qualify( path, depAttr.name() );
454+
final String qualifiedName = qualify( path, depAttr.name() );
451455
final Column column = depAttr.column();
452456

453457
if ( columnOverrideMap.containsKey( qualifiedName ) ) {
@@ -529,7 +533,7 @@ private static Column createTemporalColumn(
529533
int secondPrecision;
530534
final Column annotatedColumn = element.getDirectAnnotationUsage( Column.class );
531535
if ( annotatedColumn != null ) {
532-
if ( StringHelper.isNotEmpty( annotatedColumn.name() ) ) {
536+
if ( isNotBlank( annotatedColumn.name() ) ) {
533537
return annotatedColumn;
534538
}
535539
precision = annotatedColumn.precision();
@@ -564,7 +568,8 @@ public MetadataBuildingContext getBuildingContext() {
564568
)
565569
);
566570

567-
final ColumnJpaAnnotation created = JpaAnnotations.COLUMN.createUsage( context.getMetadataCollector().getSourceModelBuildingContext() );
571+
final ColumnJpaAnnotation created =
572+
JpaAnnotations.COLUMN.createUsage( context.getMetadataCollector().getSourceModelBuildingContext() );
568573
if ( StringHelper.isNotEmpty( implicitName.getText() ) ) {
569574
created.name( implicitName.getText() );
570575
}
@@ -587,12 +592,8 @@ private static Map<String, ColumnTransformer> buildColumnTransformerOverride(Ann
587592
private static Map<String, JoinColumn[]> buildJoinColumnOverride(AnnotationTarget element, String path, MetadataBuildingContext context) {
588593
final Map<String, JoinColumn[]> columnOverride = new HashMap<>();
589594
if ( element != null ) {
590-
final AssociationOverride[] overrides = buildAssociationOverrides( element, path, context );
591-
for ( AssociationOverride override : overrides ) {
592-
columnOverride.put(
593-
qualify( path, override.name() ),
594-
override.joinColumns()
595-
);
595+
for ( AssociationOverride override : buildAssociationOverrides( element, path, context ) ) {
596+
columnOverride.put( qualify( path, override.name() ), override.joinColumns() );
596597
}
597598
}
598599
return columnOverride;
@@ -601,12 +602,8 @@ private static Map<String, JoinColumn[]> buildJoinColumnOverride(AnnotationTarge
601602
private static Map<String, ForeignKey> buildForeignKeyOverride(AnnotationTarget element, String path, MetadataBuildingContext context) {
602603
final Map<String, ForeignKey> foreignKeyOverride = new HashMap<>();
603604
if ( element != null ) {
604-
final AssociationOverride[] overrides = buildAssociationOverrides( element, path, context );
605-
for ( AssociationOverride override : overrides ) {
606-
foreignKeyOverride.put(
607-
qualify( path, override.name() ),
608-
override.foreignKey()
609-
);
605+
for ( AssociationOverride override : buildAssociationOverrides( element, path, context ) ) {
606+
foreignKeyOverride.put( qualify( path, override.name() ), override.foreignKey() );
610607
}
611608
}
612609
return foreignKeyOverride;
@@ -619,14 +616,9 @@ private static AssociationOverride[] buildAssociationOverrides(AnnotationTarget
619616
private static Map<String, JoinTable> buildJoinTableOverride(AnnotationTarget element, String path, MetadataBuildingContext context) {
620617
final Map<String, JoinTable> result = new HashMap<>();
621618
if ( element != null ) {
622-
final AssociationOverride[] overrides = buildAssociationOverrides( element, path, context );
623-
for ( AssociationOverride override : overrides ) {
624-
final JoinColumn[] joinColumns = override.joinColumns();
625-
if ( CollectionHelper.isEmpty( joinColumns ) ) {
626-
result.put(
627-
qualify( path, override.name() ),
628-
override.joinTable()
629-
);
619+
for ( AssociationOverride override : buildAssociationOverrides( element, path, context ) ) {
620+
if ( isEmpty( override.joinColumns() ) ) {
621+
result.put( qualify( path, override.name() ), override.joinTable() );
630622
}
631623
}
632624
}
@@ -637,113 +629,4 @@ private static Map<String, JoinTable> buildJoinTableOverride(AnnotationTarget el
637629
public void setParentProperty(String parentProperty) {
638630
throw new AssertionFailure( "Setting the parent property to a non component" );
639631
}
640-
641-
private static class ColumnImpl implements Column {
642-
643-
private final String name;
644-
private final boolean unique;
645-
private final boolean nullable;
646-
private final boolean insertable;
647-
private final boolean updatable;
648-
private final String columnDefinition;
649-
private final String table;
650-
private final int precision;
651-
private final int secondPrecision;
652-
653-
private ColumnImpl(
654-
String name,
655-
boolean unique,
656-
boolean nullable,
657-
boolean insertable,
658-
boolean updatable,
659-
String columnDefinition,
660-
String table,
661-
int precision,
662-
int secondPrecision) {
663-
this.name = name;
664-
this.unique = unique;
665-
this.nullable = nullable;
666-
this.insertable = insertable;
667-
this.updatable = updatable;
668-
this.columnDefinition = columnDefinition;
669-
this.table = table;
670-
this.precision = precision;
671-
this.secondPrecision = secondPrecision;
672-
}
673-
674-
@Override
675-
public String name() {
676-
return name;
677-
}
678-
679-
@Override
680-
public boolean unique() {
681-
return unique;
682-
}
683-
684-
@Override
685-
public boolean nullable() {
686-
return nullable;
687-
}
688-
689-
@Override
690-
public boolean insertable() {
691-
return insertable;
692-
}
693-
694-
@Override
695-
public boolean updatable() {
696-
return updatable;
697-
}
698-
699-
@Override
700-
public String columnDefinition() {
701-
return columnDefinition;
702-
}
703-
704-
@Override
705-
public String options() {
706-
return "";
707-
}
708-
709-
@Override
710-
public String table() {
711-
return table;
712-
}
713-
714-
@Override
715-
public int length() {
716-
return 255;
717-
}
718-
719-
@Override
720-
public int precision() {
721-
return precision;
722-
}
723-
724-
@Override
725-
public int scale() {
726-
return 0;
727-
}
728-
729-
@Override
730-
public int secondPrecision() {
731-
return secondPrecision;
732-
}
733-
734-
@Override
735-
public CheckConstraint[] check() {
736-
return new CheckConstraint[0];
737-
}
738-
739-
@Override
740-
public String comment() {
741-
return "";
742-
}
743-
744-
@Override
745-
public Class<? extends Annotation> annotationType() {
746-
return Column.class;
747-
}
748-
}
749632
}

hibernate-core/src/main/java/org/hibernate/boot/model/internal/AnnotatedColumn.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@
2828
import org.hibernate.boot.spi.PropertyData;
2929
import org.hibernate.internal.CoreMessageLogger;
3030
import org.hibernate.internal.util.StringHelper;
31-
import org.hibernate.internal.util.collections.ArrayHelper;
32-
import org.hibernate.internal.util.collections.CollectionHelper;
3331
import org.hibernate.mapping.AggregateColumn;
3432
import org.hibernate.mapping.CheckConstraint;
3533
import org.hibernate.mapping.Column;
@@ -51,6 +49,7 @@
5149
import static org.hibernate.internal.util.StringHelper.isNotEmpty;
5250
import static org.hibernate.internal.util.StringHelper.nullIfBlank;
5351
import static org.hibernate.internal.util.StringHelper.nullIfEmpty;
52+
import static org.hibernate.internal.util.collections.ArrayHelper.isEmpty;
5453
import static org.hibernate.internal.util.collections.CollectionHelper.isNotEmpty;
5554

5655
/**
@@ -667,7 +666,7 @@ public static AnnotatedColumns buildColumnsOrFormulaFromAnnotation(
667666
}
668667
else {
669668
final jakarta.persistence.Column[] actualColumns = overrideColumns( columns, propertyHolder, inferredData );
670-
if ( ArrayHelper.isEmpty( actualColumns ) ) {
669+
if ( isEmpty( actualColumns ) ) {
671670
return buildImplicitColumn(
672671
fractionalSeconds,
673672
inferredData,
@@ -711,7 +710,7 @@ private static jakarta.persistence.Column[] overrideColumns(
711710
+ " columns (every column must have exactly one '@AttributeOverride')" );
712711
}
713712
LOG.debugf( "Column(s) overridden for property %s", inferredData.getPropertyName() );
714-
return ArrayHelper.isEmpty( overriddenCols ) ? null : overriddenCols;
713+
return isEmpty( overriddenCols ) ? null : overriddenCols;
715714
}
716715
else {
717716
return columns;

hibernate-core/src/main/java/org/hibernate/boot/model/internal/AnnotatedJoinColumn.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -407,9 +407,10 @@ protected void addColumnBinding(SimpleValue value) {
407407
final String referencedColumn = normalizer.normalizeIdentifierQuotingAsString( getReferencedColumn() );
408408
final String unquotedLogColName = unquote( logicalColumnName );
409409
final String unquotedRefColumn = unquote( referencedColumn );
410-
final String collectionColName = isNotEmpty( unquotedLogColName )
411-
? unquotedLogColName
412-
: getParent().getPropertyName() + '_' + unquotedRefColumn;
410+
final String collectionColName =
411+
isNotEmpty( unquotedLogColName )
412+
? unquotedLogColName
413+
: getParent().getPropertyName() + '_' + unquotedRefColumn;
413414
final InFlightMetadataCollector collector = getBuildingContext().getMetadataCollector();
414415
final String logicalCollectionColumnName =
415416
collector.getDatabase().getJdbcEnvironment().getIdentifierHelper()

hibernate-core/src/main/java/org/hibernate/boot/model/internal/AnnotatedJoinColumns.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@
2828
import org.hibernate.boot.spi.MetadataBuildingOptions;
2929
import org.hibernate.boot.spi.PropertyData;
3030
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
31-
import org.hibernate.internal.util.StringHelper;
32-
import org.hibernate.internal.util.collections.ArrayHelper;
3331
import org.hibernate.mapping.Column;
3432
import org.hibernate.mapping.Component;
3533
import org.hibernate.mapping.Join;
@@ -50,6 +48,7 @@
5048
import static org.hibernate.internal.util.StringHelper.isQuoted;
5149
import static org.hibernate.internal.util.StringHelper.nullIfEmpty;
5250
import static org.hibernate.internal.util.StringHelper.qualify;
51+
import static org.hibernate.internal.util.collections.ArrayHelper.isEmpty;
5352

5453
/**
5554
* A list of {@link jakarta.persistence.JoinColumn}s that form a single join
@@ -178,7 +177,7 @@ public static AnnotatedJoinColumns buildJoinColumnsWithDefaultColumnSuffix(
178177
parent.setPropertyName( getRelativePath( propertyHolder, propertyName ) );
179178
parent.setMappedBy( mappedBy );
180179
final MemberDetails memberDetails = inferredData.getAttributeMember();
181-
if ( ArrayHelper.isEmpty( actualColumns ) ) {
180+
if ( isEmpty( actualColumns ) ) {
182181
AnnotatedJoinColumn.buildJoinColumn(
183182
null,
184183
// comment,

hibernate-core/src/main/java/org/hibernate/boot/model/internal/AnnotationBinder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ private static void handleImport(ClassDetails annotatedClass, MetadataBuildingCo
226226
final String qualifiedName = annotatedClass.getName();
227227
final String name = unqualify( qualifiedName );
228228
final String rename = annotatedClass.getDirectAnnotationUsage( Imported.class ).rename();
229-
context.getMetadataCollector().addImport( rename.isEmpty() ? name : rename, qualifiedName );
229+
context.getMetadataCollector().addImport( rename.isBlank() ? name : rename, qualifiedName );
230230
}
231231
}
232232

0 commit comments

Comments
 (0)