[persistence] Use Java 17 features (#15486)

Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
This commit is contained in:
Holger Friedrich
2023-08-26 08:56:27 +02:00
committed by GitHub
parent 5b42c4b071
commit 1cf57e7dfe
18 changed files with 118 additions and 107 deletions

View File

@@ -302,8 +302,8 @@ public abstract class AbstractDynamoDBItem<T> implements DynamoDBItem<T> {
} else if (item instanceof NumberItem) {
return new DynamoDBBigDecimalItem(name, convert(state, DecimalType.class).toBigDecimal(), time, expireDays);
} else if (item instanceof PlayerItem) {
if (state instanceof PlayPauseType) {
switch ((PlayPauseType) state) {
if (state instanceof PlayPauseType pauseType) {
switch (pauseType) {
case PLAY:
return new DynamoDBBigDecimalItem(name, PLAY_BIGDECIMAL, time, expireDays);
case PAUSE:
@@ -311,8 +311,8 @@ public abstract class AbstractDynamoDBItem<T> implements DynamoDBItem<T> {
default:
throw new IllegalArgumentException("Unexpected enum with PlayPauseType: " + state.toString());
}
} else if (state instanceof RewindFastforwardType) {
switch ((RewindFastforwardType) state) {
} else if (state instanceof RewindFastforwardType rewindType) {
switch (rewindType) {
case FASTFORWARD:
return new DynamoDBBigDecimalItem(name, FAST_FORWARD_BIGDECIMAL, time, expireDays);
case REWIND:
@@ -329,12 +329,11 @@ public abstract class AbstractDynamoDBItem<T> implements DynamoDBItem<T> {
// Normalize UP/DOWN to %
return new DynamoDBBigDecimalItem(name, convert(state, PercentType.class).toBigDecimal(), time, expireDays);
} else if (item instanceof StringItem) {
if (state instanceof StringType) {
return new DynamoDBStringItem(name, ((StringType) state).toString(), time, expireDays);
} else if (state instanceof DateTimeType) {
if (state instanceof StringType stringType) {
return new DynamoDBStringItem(name, stringType.toString(), time, expireDays);
} else if (state instanceof DateTimeType dateType) {
return new DynamoDBStringItem(name,
ZONED_DATE_TIME_CONVERTER_STRING.toString(((DateTimeType) state).getZonedDateTime()), time,
expireDays);
ZONED_DATE_TIME_CONVERTER_STRING.toString(dateType.getZonedDateTime()), time, expireDays);
} else {
throw new IllegalStateException(
String.format("Unexpected state type %s with StringItem", state.getClass().getSimpleName()));
@@ -411,8 +410,7 @@ public abstract class AbstractDynamoDBItem<T> implements DynamoDBItem<T> {
if (numberState == null) {
return null;
}
if (item instanceof NumberItem) {
NumberItem numberItem = ((NumberItem) item);
if (item instanceof NumberItem numberItem) {
Unit<? extends Quantity<?>> unit = targetUnit == null ? numberItem.getUnit() : targetUnit;
if (unit != null) {
return new QuantityType<>(numberState, unit);

View File

@@ -93,8 +93,10 @@ public class DynamoDBConfig {
String profile = (String) config.get("profile");
if (profilesConfigFile == null || profilesConfigFile.isBlank() || profile == null
|| profile.isBlank()) {
LOGGER.error("Specify either 1) accessKey and secretKey; or 2) profilesConfigFile and "
+ "profile for providing AWS credentials");
LOGGER.error("""
Specify either 1) accessKey and secretKey; or 2) profilesConfigFile and \
profile for providing AWS credentials\
""");
return null;
}
ProfileFile profileFile = ProfileFile.builder().content(Path.of(profilesConfigFile))

View File

@@ -398,8 +398,8 @@ public class DynamoDBPersistenceService implements QueryablePersistenceService {
logger.warn("Could not get item {} from registry! Returning empty query results.", itemName);
return Collections.emptyList();
}
if (item instanceof GroupItem) {
item = ((GroupItem) item).getBaseItem();
if (item instanceof GroupItem groupItem) {
item = groupItem.getBaseItem();
logger.debug("Item is instanceof GroupItem '{}'", itemName);
if (item == null) {
logger.debug("BaseItem of GroupItem is null. Ignore and give up!");
@@ -429,7 +429,7 @@ public class DynamoDBPersistenceService implements QueryablePersistenceService {
// NumberItem.getUnit() is expensive, we avoid calling it in the loop
// by fetching the unit here.
final Item localItem = item;
final Unit<?> itemUnit = localItem instanceof NumberItem ? ((NumberItem) localItem).getUnit() : null;
final Unit<?> itemUnit = localItem instanceof NumberItem ni ? ni.getUnit() : null;
try {
@SuppressWarnings("null")
List<HistoricItem> results = itemsFuture.get().stream().map(dynamoItem -> {
@@ -584,15 +584,15 @@ public class DynamoDBPersistenceService implements QueryablePersistenceService {
private Item getEffectiveItem(Item item) {
final Item effectiveItem;
if (item instanceof GroupItem) {
Item baseItem = ((GroupItem) item).getBaseItem();
if (item instanceof GroupItem groupItem) {
Item baseItem = groupItem.getBaseItem();
if (baseItem == null) {
// if GroupItem:<ItemType> is not defined in
// *.items using StringType
logger.debug(
"Cannot detect ItemType for {} because the GroupItems' base type isn't set in *.items File.",
item.getName());
Iterator<Item> firstGroupMemberItem = ((GroupItem) item).getMembers().iterator();
Iterator<Item> firstGroupMemberItem = groupItem.getMembers().iterator();
if (firstGroupMemberItem.hasNext()) {
effectiveItem = firstGroupMemberItem.next();
} else {
@@ -640,10 +640,10 @@ public class DynamoDBPersistenceService implements QueryablePersistenceService {
throw new IllegalArgumentException(item.toString(), e);
}
State state = stateOverride == null ? item.getState() : stateOverride;
if (state instanceof QuantityType<?> && itemTemplate instanceof NumberItem) {
Unit<?> itemUnit = ((NumberItem) itemTemplate).getUnit();
if (state instanceof QuantityType<?> type && itemTemplate instanceof NumberItem numberItem) {
Unit<?> itemUnit = numberItem.getUnit();
if (itemUnit != null) {
State convertedState = ((QuantityType<?>) state).toUnit(itemUnit);
State convertedState = type.toUnit(itemUnit);
if (convertedState == null) {
logger.error("Unexpected unit conversion failure: {} to item unit {}", state, itemUnit);
throw new IllegalArgumentException(
@@ -657,8 +657,7 @@ public class DynamoDBPersistenceService implements QueryablePersistenceService {
}
private void logIfManyQueuedTasks() {
if (executor instanceof ThreadPoolExecutor) {
ThreadPoolExecutor localExecutor = (ThreadPoolExecutor) executor;
if (executor instanceof ThreadPoolExecutor localExecutor) {
if (localExecutor.getQueue().size() >= 5) {
logger.trace("executor queue size: {}, remaining space {}. Active threads {}",
localExecutor.getQueue().size(), localExecutor.getQueue().remainingCapacity(),