use of org.openhab.core.thing.profiles.ProfileTypeUID in project addons by smarthomej.
the class MathTransformationProfileFactoryTest method systemProfileTypesAndUidsShouldBeAvailable.
@Test
public void systemProfileTypesAndUidsShouldBeAvailable() {
Collection<ProfileTypeUID> supportedProfileTypeUIDs = profileFactory.getSupportedProfileTypeUIDs();
assertThat(supportedProfileTypeUIDs, hasSize(NUMBER_OF_PROFILES));
Collection<ProfileType> supportedProfileTypes = profileFactory.getProfileTypes(null);
assertThat(supportedProfileTypeUIDs, hasSize(NUMBER_OF_PROFILES));
for (ProfileType profileType : supportedProfileTypes) {
assertTrue(supportedProfileTypeUIDs.contains(profileType.getUID()));
}
}
use of org.openhab.core.thing.profiles.ProfileTypeUID in project openhab-core by openhab.
the class CommunicationManagerOSGiTest method beforeEach.
@BeforeEach
public void beforeEach() {
safeCaller = getService(SafeCaller.class);
assertNotNull(safeCaller);
SystemProfileFactory profileFactory = getService(ProfileTypeProvider.class, SystemProfileFactory.class);
assertNotNull(profileFactory);
if (profileFactory == null) {
throw new IllegalStateException("thing is null");
}
manager = new CommunicationManager(autoUpdateManagerMock, channelTypeRegistryMock, profileFactory, iclRegistry, itemRegistryMock, itemStateConverterMock, eventPublisherMock, safeCaller, thingRegistryMock);
doAnswer(invocation -> {
switch(((Channel) invocation.getArguments()[0]).getKind()) {
case STATE:
return new ProfileTypeUID("test:state");
case TRIGGER:
return new ProfileTypeUID("test:trigger");
}
return null;
}).when(profileAdvisorMock).getSuggestedProfileTypeUID(isA(Channel.class), isA(String.class));
doAnswer(invocation -> {
switch(((ProfileTypeUID) invocation.getArguments()[0]).toString()) {
case "test:state":
return stateProfileMock;
case "test:trigger":
return triggerProfileMock;
}
return null;
}).when(profileFactoryMock).createProfile(isA(ProfileTypeUID.class), isA(ProfileCallback.class), isA(ProfileContext.class));
when(profileFactoryMock.getSupportedProfileTypeUIDs()).thenReturn(Stream.of(new ProfileTypeUID("test:state"), new ProfileTypeUID("test:trigger")).collect(Collectors.toList()));
manager.addProfileFactory(profileFactoryMock);
manager.addProfileAdvisor(profileAdvisorMock);
iclRegistry.addProvider(new ItemChannelLinkProvider() {
@Override
public void addProviderChangeListener(ProviderChangeListener<ItemChannelLink> listener) {
}
@Override
public void removeProviderChangeListener(ProviderChangeListener<ItemChannelLink> listener) {
}
@Override
public Collection<ItemChannelLink> getAll() {
return List.of(LINK_1_S1, LINK_1_S2, LINK_2_S2, LINK_1_T1, LINK_1_T2, LINK_2_T2, LINK_3_S3, LINK_4_S4);
}
});
when(itemRegistryMock.get(eq(ITEM_NAME_1))).thenReturn(ITEM_1);
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);
ChannelType channelType4 = mock(ChannelType.class);
when(channelType4.getItemType()).thenReturn("Number:Temperature");
when(channelTypeRegistryMock.getChannelType(CHANNEL_TYPE_UID_4)).thenReturn(channelType4);
THING.setHandler(thingHandlerMock);
when(thingRegistryMock.get(eq(THING_UID))).thenReturn(THING);
manager.addItemFactory(new CoreItemFactory());
UnitProvider unitProvider = mock(UnitProvider.class);
when(unitProvider.getUnit(Temperature.class)).thenReturn(SIUnits.CELSIUS);
ITEM_3.setUnitProvider(unitProvider);
ITEM_4.setUnitProvider(unitProvider);
}
use of org.openhab.core.thing.profiles.ProfileTypeUID in project addons by smarthomej.
the class BasicProfilesFactoryTest method systemProfileTypesAndUidsShouldBeAvailable.
@Test
public void systemProfileTypesAndUidsShouldBeAvailable() {
Collection<ProfileTypeUID> supportedProfileTypeUIDs = profileFactory.getSupportedProfileTypeUIDs();
assertThat(supportedProfileTypeUIDs, hasSize(NUMBER_OF_PROFILES));
Collection<ProfileType> supportedProfileTypes = profileFactory.getProfileTypes(null);
assertThat(supportedProfileTypeUIDs, hasSize(NUMBER_OF_PROFILES));
for (ProfileType profileType : supportedProfileTypes) {
assertTrue(supportedProfileTypeUIDs.contains(profileType.getUID()));
}
}
use of org.openhab.core.thing.profiles.ProfileTypeUID in project openhab-core by openhab.
the class CommunicationManager method getProfile.
private Profile getProfile(ItemChannelLink link, Item item, @Nullable Thing thing) {
synchronized (profiles) {
Profile profile = profiles.get(link.getUID());
if (profile != null) {
logger.trace("Using profile '{}' from cache for link '{}'", profile.getProfileTypeUID(), link);
return profile;
}
ProfileTypeUID profileTypeUID = determineProfileTypeUID(link, item, thing);
if (profileTypeUID != null) {
profile = getProfileFromFactories(profileTypeUID, link, createCallback(link));
if (profile != null) {
profiles.put(link.getUID(), profile);
return profile;
}
}
logger.trace("No Profile found for link '{}', using NoOpProfile", link);
return NO_OP_PROFILE;
}
}
use of org.openhab.core.thing.profiles.ProfileTypeUID in project openhab-core by openhab.
the class CommunicationManager method determineProfileTypeUID.
@Nullable
private ProfileTypeUID determineProfileTypeUID(ItemChannelLink link, Item item, @Nullable Thing thing) {
ProfileTypeUID profileTypeUID = getConfiguredProfileTypeUID(link);
Channel channel = null;
if (profileTypeUID == null) {
if (thing == null) {
return null;
}
channel = thing.getChannel(link.getLinkedUID().getId());
if (channel == null) {
return null;
}
// ask advisors
profileTypeUID = getAdvice(link, item, channel);
if (profileTypeUID == null) {
// ask default advisor
logger.trace("No profile advisor found for link '{}', falling back to the defaults", link);
profileTypeUID = defaultProfileFactory.getSuggestedProfileTypeUID(channel, item.getType());
}
}
return profileTypeUID;
}
Aggregations