Fix SAT and null analysis issues (#3781)

Signed-off-by: Wouter Born <github@maindrain.net>
pull/3787/head
Wouter Born 2023-08-27 11:15:15 +02:00 committed by GitHub
parent 8c36d57692
commit 5daf4ff076
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 66 additions and 101 deletions

View File

@ -74,7 +74,9 @@ public class ScriptProfileFactory implements ProfileFactory, ProfileTypeProvider
public void bindScriptTransformationService(ScriptTransformationService service, Map<String, Object> properties) {
String serviceId = (String) properties.get(TransformationService.SERVICE_PROPERTY_NAME);
String serviceLabel = (String) properties.get(TransformationService.SERVICE_PROPERTY_LABEL);
services.put(serviceId, new ServiceRecord(service, serviceLabel));
if (serviceId != null && serviceLabel != null) {
services.put(serviceId, new ServiceRecord(service, serviceLabel));
}
}
public void unbindScriptTransformationService(ScriptTransformationService service, Map<String, Object> properties) {

View File

@ -169,7 +169,6 @@ public class RuleResource implements RESTResource {
@QueryParam("prefix") final @Nullable String prefix, @QueryParam("tags") final @Nullable List<String> tags,
@QueryParam("summary") @Parameter(description = "summary fields only") @Nullable Boolean summary,
@DefaultValue("false") @QueryParam("staticDataOnly") @Parameter(description = "provides a cacheable list of values not expected to change regularly and honors the If-Modified-Since header, all other parameters are ignored") boolean staticDataOnly) {
if ((summary == null || !summary) && !securityContext.isUserInRole(Role.ADMIN)) {
// users may only access the summary
return JSONResponse.createErrorResponse(Status.UNAUTHORIZED, "Authentication required");

View File

@ -53,7 +53,10 @@ import org.openhab.core.config.core.ConfigParser;
import org.openhab.core.config.core.ConfigurableService;
import org.openhab.core.io.rest.JSONResponse;
import org.openhab.core.io.rest.RESTConstants;
import org.openhab.core.io.rest.auth.internal.*;
import org.openhab.core.io.rest.auth.internal.ExpiringUserSecurityContextCache;
import org.openhab.core.io.rest.auth.internal.JwtHelper;
import org.openhab.core.io.rest.auth.internal.JwtSecurityContext;
import org.openhab.core.io.rest.auth.internal.UserSecurityContext;
import org.osgi.framework.Constants;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;

View File

@ -470,26 +470,6 @@ public class FeatureInstaller implements ConfigurationListener {
}
}
private boolean installFeature(String name) {
try {
Feature[] features = featuresService.listInstalledFeatures();
if (!anyMatchingFeature(features, withName(name))) {
featuresService.installFeature(name,
EnumSet.of(FeaturesService.Option.Upgrade, FeaturesService.Option.NoAutoRefreshBundles));
features = featuresService.listInstalledFeatures();
if (anyMatchingFeature(features, withName(name))) {
logger.debug("Installed '{}'", name);
postInstalledEvent(name);
return true;
}
}
} catch (Exception e) {
logger.error("Failed installing '{}': {}", name, e.getMessage(), debugException(e));
configMapCache = null; // make sure we retry the installation
}
return false;
}
private void uninstallFeature(String name) {
try {
Feature[] features = featuresService.listInstalledFeatures();

View File

@ -62,11 +62,11 @@ import org.openhab.core.types.UnDefType;
public class CommunicationManagerConversionTest {
// TODO: remove test - only to show CommunicationManager is too complex
private static final List<Class<? extends Item>> itemTypes = List.of(CallItem.class, ColorItem.class,
private static final List<Class<? extends Item>> ITEM_TYPES = List.of(CallItem.class, ColorItem.class,
ContactItem.class, DateTimeItem.class, DimmerItem.class, ImageItem.class, LocationItem.class,
PlayerItem.class, RollershutterItem.class, StringItem.class);
private static final List<Class<? extends Type>> types = List.of(DateTimeType.class, DecimalType.class,
private static final List<Class<? extends Type>> TYPES = List.of(DateTimeType.class, DecimalType.class,
HSBType.class, IncreaseDecreaseType.class, NextPreviousType.class, OnOffType.class, OpenClosedType.class,
PercentType.class, PlayPauseType.class, PointType.class, QuantityType.class, RawType.class,
RewindFastforwardType.class, StringType.class, UpDownType.class, UnDefType.class);
@ -74,9 +74,9 @@ public class CommunicationManagerConversionTest {
private static Stream<Arguments> arguments()
throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
List<Arguments> arguments = new ArrayList<>();
for (Class<? extends Item> itemType : itemTypes) {
for (Class<? extends Item> itemType : ITEM_TYPES) {
Item item = itemType.getDeclaredConstructor(String.class).newInstance("testItem");
for (Class<? extends Type> type : types) {
for (Class<? extends Type> type : TYPES) {
if (type.isEnum()) {
arguments.add(Arguments.of(item, type.getEnumConstants()[0]));
} else if (type == RawType.class) {

View File

@ -13,15 +13,12 @@
package org.openhab.core.thing.binding;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.hasEntry;
import static org.hamcrest.Matchers.hasItems;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.Matchers.*;
import java.net.URI;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.junit.jupiter.api.Test;
@ -101,9 +98,8 @@ public class AbstractStorageBasedTypeProviderTest {
List<ChannelDefinition> actualChannelDefinitions = actual.getChannelDefinitions();
assertThat(actualChannelDefinitions.size(), is(expectedChannelDefinitions.size()));
for (ChannelDefinition expectedChannelDefinition : expectedChannelDefinitions) {
ChannelDefinition actualChannelDefinition = actualChannelDefinitions.stream()
.filter(d -> d.getId().equals(expectedChannelDefinition.getId())).findFirst().orElse(null);
assertThat(actualChannelDefinition, is(notNullValue()));
ChannelDefinition actualChannelDefinition = Objects.requireNonNull(actualChannelDefinitions.stream()
.filter(d -> d.getId().equals(expectedChannelDefinition.getId())).findFirst().orElse(null));
assertChannelDefinition(actualChannelDefinition, expectedChannelDefinition);
}
}
@ -145,18 +141,17 @@ public class AbstractStorageBasedTypeProviderTest {
List<ChannelDefinition> actualChannelDefinitions = actual.getChannelDefinitions();
assertThat(actualChannelDefinitions.size(), is(expectedChannelDefinitions.size()));
for (ChannelDefinition expectedChannelDefinition : expectedChannelDefinitions) {
ChannelDefinition actualChannelDefinition = actualChannelDefinitions.stream()
.filter(d -> d.getId().equals(expectedChannelDefinition.getId())).findFirst().orElse(null);
assertThat(actualChannelDefinition, is(notNullValue()));
ChannelDefinition actualChannelDefinition = Objects.requireNonNull(actualChannelDefinitions.stream()
.filter(d -> d.getId().equals(expectedChannelDefinition.getId())).findFirst().orElse(null));
assertChannelDefinition(actualChannelDefinition, expectedChannelDefinition);
}
List<ChannelGroupDefinition> expectedChannelGroupDefinitions = expected.getChannelGroupDefinitions();
List<ChannelGroupDefinition> actualChannelGroupDefinitions = actual.getChannelGroupDefinitions();
assertThat(actualChannelGroupDefinitions.size(), is(expectedChannelGroupDefinitions.size()));
for (ChannelGroupDefinition expectedChannelGroupDefinition : expectedChannelGroupDefinitions) {
ChannelGroupDefinition actualChannelGroupDefinition = actualChannelGroupDefinitions.stream()
.filter(d -> d.getId().equals(expectedChannelGroupDefinition.getId())).findFirst().orElse(null);
assertThat(actualChannelGroupDefinition, is(notNullValue()));
ChannelGroupDefinition actualChannelGroupDefinition = Objects.requireNonNull(actualChannelGroupDefinitions
.stream().filter(d -> d.getId().equals(expectedChannelGroupDefinition.getId())).findFirst()
.orElse(null));
assertChannelGroupDefinition(actualChannelGroupDefinition, expectedChannelGroupDefinition);
}
}

View File

@ -85,8 +85,8 @@ public class ItemStateConverterImpl implements ItemStateConverter {
Class<? extends Quantity<?>> dimension = numberItem.getDimension();
@SuppressWarnings({ "unchecked", "rawtypes" })
// explicit cast to Class<? extends Quantity> as JDK compiler complains
Unit<? extends Quantity<?>> conversionUnit = unitProvider
.getUnit((Class<? extends Quantity>) dimension);
Unit<? extends Quantity<?>> conversionUnit = dimension == null ? null
: unitProvider.getUnit((Class<? extends Quantity>) dimension);
if (conversionUnit != null
&& UnitUtils.isDifferentMeasurementSystem(conversionUnit, quantityState.getUnit())) {
return convertOrUndef(quantityState, conversionUnit);

View File

@ -73,7 +73,8 @@ public class NumberItem extends GenericItem implements MetadataAwareItem {
String itemTypeExtension = ItemUtil.getItemTypeExtension(getType());
if (itemTypeExtension != null) {
dimension = UnitUtils.parseDimension(itemTypeExtension);
Class<? extends Quantity<?>> dimension = UnitUtils.parseDimension(itemTypeExtension);
this.dimension = dimension;
if (dimension == null) {
throw new IllegalArgumentException("The given dimension " + itemTypeExtension + " is unknown.");
} else if (unitProvider == null) {
@ -104,13 +105,11 @@ public class NumberItem extends GenericItem implements MetadataAwareItem {
if (dimension == null) {
DecimalType strippedCommand = new DecimalType(command.toBigDecimal());
internalSend(strippedCommand);
} else if (command.getUnit().isCompatible(unit) || command.getUnit().inverse().isCompatible(unit)) {
internalSend(command);
} else {
if (command.getUnit().isCompatible(unit) || command.getUnit().inverse().isCompatible(unit)) {
internalSend(command);
} else {
logger.warn("Command '{}' to item '{}' was rejected because it is incompatible with the item unit '{}'",
command, name, unit);
}
logger.warn("Command '{}' to item '{}' was rejected because it is incompatible with the item unit '{}'",
command, name, unit);
}
}
@ -199,12 +198,7 @@ public class NumberItem extends GenericItem implements MetadataAwareItem {
public void addedMetadata(Metadata metadata) {
if (dimension != null && UNIT_METADATA_NAMESPACE.equals(metadata.getUID().getNamespace())) {
Unit<?> unit = UnitUtils.parseUnit(metadata.getValue());
if (unit == null) {
logger.warn("Unit '{}' could not be parsed to a known unit. Keeping old unit '{}' for item '{}'.",
metadata.getValue(), this.unit, name);
return;
}
if (!unit.isCompatible(this.unit) && !unit.inverse().isCompatible(this.unit)) {
if ((unit == null) || (!unit.isCompatible(this.unit) && !unit.inverse().isCompatible(this.unit))) {
logger.warn("Unit '{}' could not be parsed to a known unit. Keeping old unit '{}' for item '{}'.",
metadata.getValue(), this.unit, name);
return;
@ -222,6 +216,7 @@ public class NumberItem extends GenericItem implements MetadataAwareItem {
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public void removedMetadata(Metadata metadata) {
Class<? extends Quantity<?>> dimension = this.dimension;
if (dimension != null && UNIT_METADATA_NAMESPACE.equals(metadata.getUID().getNamespace())) {
assert unitProvider != null;
unit = unitProvider.getUnit((Class<? extends Quantity>) dimension);

View File

@ -176,8 +176,7 @@ public class I18nProviderImplTest {
@MethodSource("getAllDimensions")
@SuppressWarnings("unchecked")
public <T extends Quantity<T>> void assertThatUnitProviderIsComplete(String dimensionName) {
Class<? extends Quantity<?>> dimension = UnitUtils.parseDimension(dimensionName);
assertThat(dimension, is(notNullValue()));
Class<? extends Quantity<?>> dimension = Objects.requireNonNull(UnitUtils.parseDimension(dimensionName));
Unit<?> defaultUnit = i18nProviderImpl.getUnit((Class<T>) dimension);
assertThat(dimensionName + " has no default unit", defaultUnit, notNullValue());

View File

@ -463,11 +463,11 @@ public class QuantityTypeTest {
assertEquals(8, bits.byteValue());
bytes = new QuantityType<>("1 MB");
assertEquals("1 MB", bytes.toString());
bytes = new QuantityType<DataAmount>(1, MetricPrefix.MEGA(Units.BYTE));
bytes = new QuantityType<>(1, MetricPrefix.MEGA(Units.BYTE));
assertEquals("1 MB", bytes.toString());
bytes = new QuantityType<>("1 GiB");
assertEquals("1 GiB", bytes.toString());
bytes = new QuantityType<DataAmount>(1, BinaryPrefix.GIBI(Units.BYTE));
bytes = new QuantityType<>(1, BinaryPrefix.GIBI(Units.BYTE));
assertEquals("1 GiB", bytes.toString());
QuantityType<DataAmount> bigAmount = new QuantityType<>("1 kio");
QuantityType<DataAmount> octets = bigAmount.toUnit(Units.OCTET);

View File

@ -14,8 +14,7 @@ package org.openhab.core.automation.internal.module;
import static java.util.Map.entry;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.*;
import java.util.ArrayList;
import java.util.Collection;
@ -77,8 +76,8 @@ public class RunRuleModuleTest extends JavaOSGiTest {
startLevelService = mock(StartLevelService.class);
when(startLevelService.getStartLevel()).thenReturn(100);
registerService(startLevelService, StartLevelService.class.getName());
EventPublisher eventPublisher = getService(EventPublisher.class);
ItemRegistry itemRegistry = getService(ItemRegistry.class);
EventPublisher eventPublisher = Objects.requireNonNull(getService(EventPublisher.class));
ItemRegistry itemRegistry = Objects.requireNonNull(getService(ItemRegistry.class));
CoreModuleHandlerFactory coreModuleHandlerFactory = new CoreModuleHandlerFactory(getBundleContext(),
eventPublisher, itemRegistry, mock(TimeZoneProvider.class), mock(StartLevelService.class));
mock(CoreModuleHandlerFactory.class);
@ -206,6 +205,6 @@ public class RunRuleModuleTest extends JavaOSGiTest {
};
ServiceReference<?> subscriberReference = registerService(eventSubscriber).getReference();
assertNotNull(getServices(EventSubscriber.class, (reference) -> reference.equals(subscriberReference)));
assertNotNull(getServices(EventSubscriber.class, reference -> reference.equals(subscriberReference)));
}
}

View File

@ -14,8 +14,7 @@ package org.openhab.core.automation.internal.module;
import static java.util.Map.entry;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.*;
import java.util.Collection;
import java.util.Collections;
@ -87,8 +86,8 @@ public class RuntimeRuleTest extends JavaOSGiTest {
startLevelService = mock(StartLevelService.class);
when(startLevelService.getStartLevel()).thenReturn(100);
registerService(startLevelService, StartLevelService.class.getName());
EventPublisher eventPublisher = getService(EventPublisher.class);
ItemRegistry itemRegistry = getService(ItemRegistry.class);
EventPublisher eventPublisher = Objects.requireNonNull(getService(EventPublisher.class));
ItemRegistry itemRegistry = Objects.requireNonNull(getService(ItemRegistry.class));
CoreModuleHandlerFactory coreModuleHandlerFactory = new CoreModuleHandlerFactory(getBundleContext(),
eventPublisher, itemRegistry, mock(TimeZoneProvider.class), mock(StartLevelService.class));
mock(CoreModuleHandlerFactory.class);
@ -136,7 +135,7 @@ public class RuntimeRuleTest extends JavaOSGiTest {
};
ServiceReference<?> subscriberReference = registerService(eventSubscriber).getReference();
assertNotNull(getServices(EventSubscriber.class, (reference) -> reference.equals(subscriberReference)));
assertNotNull(getServices(EventSubscriber.class, reference -> reference.equals(subscriberReference)));
}
@Test

View File

@ -15,8 +15,7 @@ package org.openhab.core.automation.module.timer.internal;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.*;
import java.util.ArrayList;
import java.util.Collection;
@ -91,8 +90,8 @@ public abstract class BasicConditionHandlerTest extends JavaOSGiTest {
startLevelService = mock(StartLevelService.class);
when(startLevelService.getStartLevel()).thenReturn(100);
registerService(startLevelService, StartLevelService.class.getName());
EventPublisher eventPublisher = getService(EventPublisher.class);
ItemRegistry itemRegistry = getService(ItemRegistry.class);
EventPublisher eventPublisher = Objects.requireNonNull(getService(EventPublisher.class));
ItemRegistry itemRegistry = Objects.requireNonNull(getService(ItemRegistry.class));
CoreModuleHandlerFactory coreModuleHandlerFactory = new CoreModuleHandlerFactory(getBundleContext(),
eventPublisher, itemRegistry, mock(TimeZoneProvider.class), mock(StartLevelService.class));
mock(CoreModuleHandlerFactory.class);

View File

@ -23,6 +23,7 @@ import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.junit.jupiter.api.BeforeEach;
@ -59,8 +60,8 @@ public class DayOfWeekConditionHandlerTest extends BasicConditionHandlerTest {
@BeforeEach
public void before() {
EventPublisher eventPublisher = getService(EventPublisher.class);
ItemRegistry itemRegistry = getService(ItemRegistry.class);
EventPublisher eventPublisher = Objects.requireNonNull(getService(EventPublisher.class));
ItemRegistry itemRegistry = Objects.requireNonNull(getService(ItemRegistry.class));
CoreModuleHandlerFactory coreModuleHandlerFactory = new CoreModuleHandlerFactory(getBundleContext(),
eventPublisher, itemRegistry, mock(TimeZoneProvider.class), mock(StartLevelService.class));
mock(CoreModuleHandlerFactory.class);

View File

@ -15,8 +15,7 @@ package org.openhab.core.automation.module.timer.internal;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.*;
import java.util.Collection;
import java.util.HashMap;
@ -83,8 +82,8 @@ public class RuntimeRuleTest extends JavaOSGiTest {
startLevelService = mock(StartLevelService.class);
when(startLevelService.getStartLevel()).thenReturn(100);
registerService(startLevelService, StartLevelService.class.getName());
EventPublisher eventPublisher = getService(EventPublisher.class);
ItemRegistry itemRegistry = getService(ItemRegistry.class);
EventPublisher eventPublisher = Objects.requireNonNull(getService(EventPublisher.class));
ItemRegistry itemRegistry = Objects.requireNonNull(getService(ItemRegistry.class));
CoreModuleHandlerFactory coreModuleHandlerFactory = new CoreModuleHandlerFactory(getBundleContext(),
eventPublisher, itemRegistry, mock(TimeZoneProvider.class), mock(StartLevelService.class));
mock(CoreModuleHandlerFactory.class);
@ -174,7 +173,7 @@ public class RuntimeRuleTest extends JavaOSGiTest {
if (event.getTopic().contains(testItemName)) {
itemEvents.add(event);
}
};
}
@Override
public java.util.Set<String> getSubscribedEventTypes() {

View File

@ -16,8 +16,7 @@ import static java.util.Map.entry;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.*;
import java.util.ArrayList;
import java.util.Collection;
@ -89,8 +88,8 @@ public class RuleEventTest extends JavaOSGiTest {
startLevelService = mock(StartLevelService.class);
when(startLevelService.getStartLevel()).thenReturn(100);
registerService(startLevelService, StartLevelService.class.getName());
EventPublisher eventPublisher = getService(EventPublisher.class);
ItemRegistry itemRegistry = getService(ItemRegistry.class);
EventPublisher eventPublisher = Objects.requireNonNull(getService(EventPublisher.class));
ItemRegistry itemRegistry = Objects.requireNonNull(getService(ItemRegistry.class));
CoreModuleHandlerFactory coreModuleHandlerFactory = new CoreModuleHandlerFactory(getBundleContext(),
eventPublisher, itemRegistry, mock(TimeZoneProvider.class), mock(StartLevelService.class));
mock(CoreModuleHandlerFactory.class);

View File

@ -13,12 +13,9 @@
package org.openhab.core.thing.binding;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.Matchers.nullValue;
import static org.hamcrest.Matchers.*;
import java.util.Objects;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.junit.jupiter.api.BeforeEach;
@ -58,8 +55,7 @@ public class AbstractStorageBasedTypeProviderOSGiTest extends JavaOSGiTest {
public void setup() {
registerVolatileStorageService();
StorageService storageService = getService(StorageService.class);
assertThat(storageService, is(notNullValue()));
StorageService storageService = Objects.requireNonNull(getService(StorageService.class));
typeProvider = new AbstractStorageBasedTypeProvider(storageService) {
};

View File

@ -104,7 +104,7 @@ public class CommunicationManagerOSGiTest extends JavaOSGiTest {
}
}
private static final UnitProvider unitProviderMock = mock(UnitProvider.class);
private static final UnitProvider UNIT_PROVIDER_MOCK = mock(UnitProvider.class);
private static final String EVENT = "event";
private static final String ITEM_NAME_1 = "testItem1";
@ -116,7 +116,7 @@ public class CommunicationManagerOSGiTest extends JavaOSGiTest {
private static final SwitchItem ITEM_2 = new SwitchItem(ITEM_NAME_2);
private static final NumberItem ITEM_3 = new NumberItem(ITEM_NAME_3);
private static final NumberItem ITEM_4 = new NumberItem(ITEM_NAME_4);
private static NumberItem ITEM_5 = new NumberItem(ITEM_NAME_5); // will be replaced later by dimension item
private NumberItem item5 = new NumberItem(ITEM_NAME_5); // will be replaced later by dimension item
private static final ThingTypeUID THING_TYPE_UID = new ThingTypeUID("test", "type");
private static final ThingUID THING_UID = new ThingUID("test", "thing");
@ -167,8 +167,8 @@ public class CommunicationManagerOSGiTest extends JavaOSGiTest {
@BeforeEach
public void beforeEach() {
when(unitProviderMock.getUnit(Temperature.class)).thenReturn(SIUnits.CELSIUS);
ITEM_5 = new NumberItem("Number:Temperature", ITEM_NAME_5, unitProviderMock);
when(UNIT_PROVIDER_MOCK.getUnit(Temperature.class)).thenReturn(SIUnits.CELSIUS);
item5 = new NumberItem("Number:Temperature", ITEM_NAME_5, UNIT_PROVIDER_MOCK);
safeCaller = getService(SafeCaller.class);
assertNotNull(safeCaller);
@ -179,7 +179,7 @@ public class CommunicationManagerOSGiTest extends JavaOSGiTest {
manager = new CommunicationManager(autoUpdateManagerMock, channelTypeRegistryMock, profileFactory, iclRegistry,
itemRegistryMock, itemStateConverterMock, eventPublisherMock, safeCaller, thingRegistryMock,
unitProviderMock);
UNIT_PROVIDER_MOCK);
doAnswer(invocation -> {
switch (((Channel) invocation.getArguments()[0]).getKind()) {
@ -227,7 +227,7 @@ public class CommunicationManagerOSGiTest extends JavaOSGiTest {
when(itemRegistryMock.get(eq(ITEM_NAME_2))).thenReturn(ITEM_2);
when(itemRegistryMock.get(eq(ITEM_NAME_3))).thenReturn(ITEM_3);
when(itemRegistryMock.get(eq(ITEM_NAME_4))).thenReturn(ITEM_4);
when(itemRegistryMock.get(eq(ITEM_NAME_5))).thenReturn(ITEM_5);
when(itemRegistryMock.get(eq(ITEM_NAME_5))).thenReturn(item5);
ChannelType channelType4 = mock(ChannelType.class);
when(channelType4.getItemType()).thenReturn("Number:Temperature");
@ -238,7 +238,7 @@ public class CommunicationManagerOSGiTest extends JavaOSGiTest {
when(thingRegistryMock.get(eq(THING_UID))).thenReturn(THING);
manager.addItemFactory(new CoreItemFactory(unitProviderMock));
manager.addItemFactory(new CoreItemFactory(UNIT_PROVIDER_MOCK));
}
@Test
@ -307,7 +307,7 @@ public class CommunicationManagerOSGiTest extends JavaOSGiTest {
public void testItemCommandEventDecimal2Quantity2() {
MetadataKey key = new MetadataKey(NumberItem.UNIT_METADATA_NAMESPACE, ITEM_NAME_5);
Metadata metadata = new Metadata(key, ImperialUnits.FAHRENHEIT.toString(), null);
ITEM_5.addedMetadata(metadata);
item5.addedMetadata(metadata);
manager.receive(ItemEventFactory.createCommandEvent(ITEM_NAME_5, DecimalType.valueOf("20")));
waitForAssert(() -> {