Skip to content

Commit

Permalink
Refactor code with instanceof pattern variable.
Browse files Browse the repository at this point in the history
In some cases, we currently use the traditional `instanceof` checks followed by explicit type casting.
With the introduction of pattern matching in recent Java versions, we can refactor these checks to make the code more concise and readable.

Original pull request #1868
  • Loading branch information
arefbehboudi authored and schauder committed Aug 30, 2024
1 parent 9b0b91b commit c8b9697
Show file tree
Hide file tree
Showing 9 changed files with 47 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -81,32 +81,32 @@ <T> void executeDelete(AggregateChange<T> aggregateChange) {
private void execute(DbAction<?> action, JdbcAggregateChangeExecutionContext executionContext) {

try {
if (action instanceof DbAction.InsertRoot) {
executionContext.executeInsertRoot((DbAction.InsertRoot<?>) action);
} else if (action instanceof DbAction.BatchInsertRoot<?>) {
executionContext.executeBatchInsertRoot((DbAction.BatchInsertRoot<?>) action);
} else if (action instanceof DbAction.Insert) {
executionContext.executeInsert((DbAction.Insert<?>) action);
} else if (action instanceof DbAction.BatchInsert) {
executionContext.executeBatchInsert((DbAction.BatchInsert<?>) action);
} else if (action instanceof DbAction.UpdateRoot) {
executionContext.executeUpdateRoot((DbAction.UpdateRoot<?>) action);
} else if (action instanceof DbAction.Delete) {
executionContext.executeDelete((DbAction.Delete<?>) action);
} else if (action instanceof DbAction.BatchDelete<?>) {
executionContext.executeBatchDelete((DbAction.BatchDelete<?>) action);
} else if (action instanceof DbAction.DeleteAll) {
executionContext.executeDeleteAll((DbAction.DeleteAll<?>) action);
} else if (action instanceof DbAction.DeleteRoot) {
executionContext.executeDeleteRoot((DbAction.DeleteRoot<?>) action);
} else if (action instanceof DbAction.BatchDeleteRoot) {
executionContext.executeBatchDeleteRoot((DbAction.BatchDeleteRoot<?>) action);
} else if (action instanceof DbAction.DeleteAllRoot) {
executionContext.executeDeleteAllRoot((DbAction.DeleteAllRoot<?>) action);
} else if (action instanceof DbAction.AcquireLockRoot) {
executionContext.executeAcquireLock((DbAction.AcquireLockRoot<?>) action);
} else if (action instanceof DbAction.AcquireLockAllRoot) {
executionContext.executeAcquireLockAllRoot((DbAction.AcquireLockAllRoot<?>) action);
if (action instanceof DbAction.InsertRoot<?> insertRoot) {
executionContext.executeInsertRoot(insertRoot);
} else if (action instanceof DbAction.BatchInsertRoot<?> batchInsertRoot) {
executionContext.executeBatchInsertRoot(batchInsertRoot);
} else if (action instanceof DbAction.Insert<?> insert) {
executionContext.executeInsert(insert);
} else if (action instanceof DbAction.BatchInsert<?> batchInsert) {
executionContext.executeBatchInsert(batchInsert);
} else if (action instanceof DbAction.UpdateRoot<?> updateRoot) {
executionContext.executeUpdateRoot(updateRoot);
} else if (action instanceof DbAction.Delete<?> delete) {
executionContext.executeDelete(delete);
} else if (action instanceof DbAction.BatchDelete<?> batchDelete) {
executionContext.executeBatchDelete(batchDelete);
} else if (action instanceof DbAction.DeleteAll<?> deleteAll) {
executionContext.executeDeleteAll(deleteAll);
} else if (action instanceof DbAction.DeleteRoot<?> deleteRoot) {
executionContext.executeDeleteRoot(deleteRoot);
} else if (action instanceof DbAction.BatchDeleteRoot<?> batchDeleteRoot) {
executionContext.executeBatchDeleteRoot(batchDeleteRoot);
} else if (action instanceof DbAction.DeleteAllRoot<?> deleteAllRoot) {
executionContext.executeDeleteAllRoot(deleteAllRoot);
} else if (action instanceof DbAction.AcquireLockRoot<?> acquireLockRoot) {
executionContext.executeAcquireLock(acquireLockRoot);
} else if (action instanceof DbAction.AcquireLockAllRoot<?> acquireLockAllRoot) {
executionContext.executeAcquireLockAllRoot(acquireLockAllRoot);
} else {
throw new RuntimeException("unexpected action");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -312,8 +312,8 @@ private <S> Object setIdAndCascadingProperties(DbAction.WithEntity<S> action, @N
@SuppressWarnings("unchecked")
private PersistentPropertyPath<?> getRelativePath(DbAction<?> action, PersistentPropertyPath<?> pathToValue) {

if (action instanceof DbAction.Insert) {
return pathToValue.getExtensionForBaseOf(((DbAction.Insert) action).getPropertyPath());
if (action instanceof DbAction.Insert insert) {
return pathToValue.getExtensionForBaseOf(insert.getPropertyPath());
}

if (action instanceof DbAction.InsertRoot) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,9 +192,9 @@ public Object readValue(@Nullable Object value, TypeInformation<?> type) {
return value;
}

if (value instanceof Array) {
if (value instanceof Array array) {
try {
return super.readValue(((Array) value).getArray(), type);
return super.readValue(array.getArray(), type);
} catch (SQLException | ConverterNotFoundException e) {
LOG.info("Failed to extract a value of type %s from an Array; Attempting to use standard conversions", e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ Expression getMappedObject(Expression expression, @Nullable RelationalPersistent
Assert.state(table != null, String.format("The column %s must have a table set", column));

Column columnFromTable = table.column(field.getMappedColumnName());
return column instanceof Aliased ? columnFromTable.as(((Aliased) column).getAlias()) : columnFromTable;
return column instanceof Aliased aliased ? columnFromTable.as(aliased.getAlias()) : columnFromTable;
}

if (expression instanceof SimpleFunction function) {
Expand All @@ -162,7 +162,7 @@ Expression getMappedObject(Expression expression, @Nullable RelationalPersistent

SimpleFunction mappedFunction = SimpleFunction.create(function.getFunctionName(), mappedArguments);

return function instanceof Aliased ? mappedFunction.as(((Aliased) function).getAlias()) : mappedFunction;
return function instanceof Aliased aliased ? mappedFunction.as(aliased.getAlias()) : mappedFunction;
}

throw new IllegalArgumentException(String.format("Cannot map %s", expression));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public Class<?>[] getSpecificTargetClasses() {

@Override
public boolean canRead(EvaluationContext context, @Nullable Object target, String name) {
return target instanceof ResultSetAccessor && ((ResultSetAccessor) target).hasValue(name);
return target instanceof ResultSetAccessor resultSetAccessor && resultSetAccessor.hasValue(name);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -491,8 +491,7 @@ public ContentNoId getEmbedded() {

public boolean equals(final Object o) {
if (o == this) return true;
if (!(o instanceof DummyEntity)) return false;
final DummyEntity other = (DummyEntity) o;
if (!(o instanceof DummyEntity other)) return false;
final Object this$rootId = this.getRootId();
final Object other$rootId = other.getRootId();
if (this$rootId == null ? other$rootId != null : !this$rootId.equals(other$rootId)) return false;
Expand Down Expand Up @@ -623,8 +622,7 @@ public Map<String, Tag> getTagMap() {

public boolean equals(final Object o) {
if (o == this) return true;
if (!(o instanceof Content)) return false;
final Content other = (Content) o;
if (!(o instanceof Content other)) return false;
final Object this$id = this.getId();
final Object other$id = other.getId();
if (this$id == null ? other$id != null : !this$id.equals(other$id)) return false;
Expand Down Expand Up @@ -725,8 +723,7 @@ public Map<String, Tag> getTagMap() {

public boolean equals(final Object o) {
if (o == this) return true;
if (!(o instanceof ContentNoId)) return false;
final ContentNoId other = (ContentNoId) o;
if (!(o instanceof ContentNoId other)) return false;
final Object this$single = this.getSingle();
final Object other$single = other.getSingle();
if (this$single == null ? other$single != null : !this$single.equals(other$single)) return false;
Expand Down Expand Up @@ -805,8 +802,7 @@ public String getName() {

public boolean equals(final Object o) {
if (o == this) return true;
if (!(o instanceof Tag)) return false;
final Tag other = (Tag) o;
if (!(o instanceof Tag other)) return false;
final Object this$id = this.getId();
final Object other$id = other.getId();
if (this$id == null ? other$id != null : !this$id.equals(other$id)) return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -941,8 +941,8 @@ void mappingMapKeyToChildShouldNotResultInDuplicateColumn() {
@Nullable
private SqlIdentifier getAlias(Object maybeAliased) {

if (maybeAliased instanceof Aliased) {
return ((Aliased) maybeAliased).getAlias();
if (maybeAliased instanceof Aliased aliased) {
return aliased.getAlias();
}
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,8 @@ void fieldForFkShouldNotBeCreatedTwice() {

ChangeSet changeSet = writer.createChangeSet(ChangeSetMetadata.create(), new DatabaseChangeLog());

Optional<Change> tableWithFk = changeSet.getChanges().stream().filter(change -> {
return change instanceof CreateTableChange
&& ((CreateTableChange) change).getTableName().equals("table_with_fk_field");
}).findFirst();
Optional<Change> tableWithFk = changeSet.getChanges().stream().filter(change -> change instanceof CreateTableChange createTableChange
&& createTableChange.getTableName().equals("table_with_fk_field")).findFirst();
assertThat(tableWithFk.isPresent()).isEqualTo(true);

List<ColumnConfig> columns = ((CreateTableChange) tableWithFk.get()).getColumns();
Expand Down Expand Up @@ -181,9 +179,7 @@ void createForeignKeyForOneToOneWithMultipleChildren() {


void assertCreateTable(ChangeSet changeSet, String tableName, Tuple... columnTuples) {
Optional<Change> createTableOptional = changeSet.getChanges().stream().filter(change -> {
return change instanceof CreateTableChange && ((CreateTableChange) change).getTableName().equals(tableName);
}).findFirst();
Optional<Change> createTableOptional = changeSet.getChanges().stream().filter(change -> change instanceof CreateTableChange createTableChange && createTableChange.getTableName().equals(tableName)).findFirst();
assertThat(createTableOptional.isPresent()).isTrue();
CreateTableChange createTable = (CreateTableChange) createTableOptional.get();
assertThat(createTable.getColumns())
Expand All @@ -193,11 +189,9 @@ void assertCreateTable(ChangeSet changeSet, String tableName, Tuple... columnTup

void assertAddForeignKey(ChangeSet changeSet, String baseTableName, String baseColumnNames,
String referencedTableName, String referencedColumnNames) {
Optional<Change> addFkOptional = changeSet.getChanges().stream().filter(change -> {
return change instanceof AddForeignKeyConstraintChange
&& ((AddForeignKeyConstraintChange) change).getBaseTableName().equals(baseTableName)
&& ((AddForeignKeyConstraintChange) change).getBaseColumnNames().equals(baseColumnNames);
}).findFirst();
Optional<Change> addFkOptional = changeSet.getChanges().stream().filter(change -> change instanceof AddForeignKeyConstraintChange addForeignKeyConstraintChange
&& addForeignKeyConstraintChange.getBaseTableName().equals(baseTableName)
&& addForeignKeyConstraintChange.getBaseColumnNames().equals(baseColumnNames)).findFirst();
assertThat(addFkOptional.isPresent()).isTrue();
AddForeignKeyConstraintChange addFk = (AddForeignKeyConstraintChange) addFkOptional.get();
assertThat(addFk.getBaseTableName()).isEqualTo(baseTableName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@ public ApplicationListener<?> idSetting() {

return (ApplicationListener<BeforeConvertEvent>) event -> {

if (event.getEntity() instanceof DummyEntity) {
setIds((DummyEntity) event.getEntity());
if (event.getEntity() instanceof DummyEntity dummyEntity) {
setIds(dummyEntity);
}
};
}
Expand Down

0 comments on commit c8b9697

Please sign in to comment.