Skip to content

Commit 0e94ca1

Browse files
committed
add some more use of 'sealed' to org.hibernate.mapping
to enforce model restrictions we implicitly assume in our client code
1 parent fcef126 commit 0e94ca1

17 files changed

+29
-17
lines changed

hibernate-core/src/main/java/org/hibernate/mapping/Bag.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
*
1919
* @author Gavin King
2020
*/
21-
public class Bag extends Collection {
21+
public non-sealed class Bag extends Collection {
2222
/**
2323
* hbm.xml binding
2424
*/

hibernate-core/src/main/java/org/hibernate/mapping/Collection.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,11 @@
4444
*
4545
* @author Gavin King
4646
*/
47-
public abstract class Collection implements Fetchable, Value, Filterable, SoftDeletable {
47+
public abstract sealed class Collection
48+
implements Fetchable, Value, Filterable, SoftDeletable
49+
permits Set, Bag,
50+
IndexedCollection, // List, Map
51+
IdentifierCollection { // IdentifierBag only built-in implementation
4852

4953
public static final String DEFAULT_ELEMENT_COLUMN_NAME = "elt";
5054
public static final String DEFAULT_KEY_COLUMN_NAME = "id";

hibernate-core/src/main/java/org/hibernate/mapping/IdentifierBag.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ public IdentifierBag(MetadataBuildingContext buildingContext, PersistentClass ow
2727
/**
2828
* annotation binding
2929
*/
30-
public IdentifierBag(Supplier<ManagedBean<? extends UserCollectionType>> customTypeBeanResolver, PersistentClass owner, MetadataBuildingContext buildingContext) {
30+
public IdentifierBag(
31+
Supplier<ManagedBean<? extends UserCollectionType>> customTypeBeanResolver, PersistentClass owner,
32+
MetadataBuildingContext buildingContext) {
3133
super( customTypeBeanResolver, owner, buildingContext );
3234
}
3335

hibernate-core/src/main/java/org/hibernate/mapping/IdentifierCollection.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
* A mapping model object representing a collection with a synthetic "identifier" column,
1818
* that is, a surrogate key.
1919
*/
20-
public abstract class IdentifierCollection extends Collection {
20+
public non-sealed abstract class IdentifierCollection extends Collection {
2121

2222
public static final String DEFAULT_IDENTIFIER_COLUMN_NAME = "id";
2323

hibernate-core/src/main/java/org/hibernate/mapping/IndexedCollection.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
* primitive arrays.
1919
* @author Gavin King
2020
*/
21-
public abstract class IndexedCollection extends Collection {
21+
public sealed abstract class IndexedCollection extends Collection permits Map, List {
2222

2323
public static final String DEFAULT_INDEX_COLUMN_NAME = "idx";
2424

hibernate-core/src/main/java/org/hibernate/mapping/JoinedSubclass.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
*
1818
* @author Gavin King
1919
*/
20-
public class JoinedSubclass extends Subclass implements TableOwner {
20+
public final class JoinedSubclass extends Subclass implements TableOwner {
2121
private Table table;
2222
private KeyValue key;
2323

hibernate-core/src/main/java/org/hibernate/mapping/List.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
*
1919
* @author Gavin King
2020
*/
21-
public class List extends IndexedCollection {
21+
public non-sealed class List extends IndexedCollection {
2222

2323
private int baseIndex;
2424

hibernate-core/src/main/java/org/hibernate/mapping/ManyToOne.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
*
1818
* @author Gavin King
1919
*/
20-
public class ManyToOne extends ToOne {
20+
public final class ManyToOne extends ToOne {
2121
private boolean isLogicalOneToOne;
2222
private NotFoundAction notFoundAction;
2323

hibernate-core/src/main/java/org/hibernate/mapping/Map.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* A mapping model object representing a collection of type {@link java.util.Map}.
2020
* A map has a primary key consisting of the key columns + index columns.
2121
*/
22-
public class Map extends IndexedCollection {
22+
public non-sealed class Map extends IndexedCollection {
2323

2424
private String mapKeyPropertyName;
2525
private boolean hasMapKeyProperty;

hibernate-core/src/main/java/org/hibernate/mapping/OneToOne.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
*
1919
* @author Gavin King
2020
*/
21-
public class OneToOne extends ToOne {
21+
public final class OneToOne extends ToOne {
2222

2323
private boolean constrained;
2424
private ForeignKeyDirection foreignKeyType;

0 commit comments

Comments
 (0)