[persistence] Use Java 17 features (#15486)
Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user