Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove RegistryHook #4568

Merged
merged 1 commit into from
Jan 26, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@
import org.openhab.core.items.ItemNotFoundException;
import org.openhab.core.items.ItemNotUniqueException;
import org.openhab.core.items.ItemRegistry;
import org.openhab.core.items.RegistryHook;
import org.openhab.core.library.items.CallItem;
import org.openhab.core.library.items.ColorItem;
import org.openhab.core.library.items.ContactItem;
Expand Down Expand Up @@ -1428,16 +1427,6 @@ public Item add(Item element) {
return itemRegistry.remove(itemName, recursive);
}

@Override
public void addRegistryHook(RegistryHook<Item> hook) {
itemRegistry.addRegistryHook(hook);
}

@Override
public void removeRegistryHook(RegistryHook<Item> hook) {
itemRegistry.removeRegistryHook(hook);
}

@Override
public @Nullable String getUnitForWidget(Widget w) {
String itemName = w.getItem();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
Expand All @@ -36,7 +35,6 @@
import org.openhab.core.items.Metadata;
import org.openhab.core.items.MetadataAwareItem;
import org.openhab.core.items.MetadataRegistry;
import org.openhab.core.items.RegistryHook;
import org.openhab.core.items.events.ItemEventFactory;
import org.openhab.core.service.CommandDescriptionService;
import org.openhab.core.service.ReadyService;
Expand Down Expand Up @@ -68,7 +66,6 @@ public class ItemRegistryImpl extends AbstractRegistry<Item, String, ItemProvide

private final Logger logger = LoggerFactory.getLogger(ItemRegistryImpl.class);

private final List<RegistryHook<Item>> registryHooks = new CopyOnWriteArrayList<>();
private @Nullable StateDescriptionService stateDescriptionService;
private @Nullable CommandDescriptionService commandDescriptionService;
private final MetadataRegistry metadataRegistry;
Expand Down Expand Up @@ -388,57 +385,16 @@ protected void notifyListenersAboutUpdatedElement(Item oldElement, Item element)
super.notifyListenersAboutUpdatedElement(oldElement, element);
}

@Override
public void added(Provider<Item> provider, Item element) {
for (RegistryHook<Item> registryHook : registryHooks) {
registryHook.beforeAdding(element);
}
super.added(provider, element);
}

@Override
protected void addProvider(Provider<Item> provider) {
for (Item element : provider.getAll()) {
for (RegistryHook<Item> registryHook : registryHooks) {
registryHook.beforeAdding(element);
}
}
super.addProvider(provider);
}

@Override
public void removed(Provider<Item> provider, Item element) {
super.removed(provider, element);
for (RegistryHook<Item> registryHook : registryHooks) {
registryHook.afterRemoving(element);
}
if (provider instanceof ManagedItemProvider) {
// remove our metadata for that item
logger.debug("Item {} was removed, trying to clean up corresponding metadata", element.getUID());
metadataRegistry.removeItemMetadata(element.getName());
}
}

@Override
protected void removeProvider(Provider<Item> provider) {
super.removeProvider(provider);
for (Item element : provider.getAll()) {
for (RegistryHook<Item> registryHook : registryHooks) {
registryHook.afterRemoving(element);
}
}
}

@Override
public void addRegistryHook(RegistryHook<Item> hook) {
registryHooks.add(hook);
}

@Override
public void removeRegistryHook(RegistryHook<Item> hook) {
registryHooks.remove(hook);
}

@Reference(cardinality = ReferenceCardinality.OPTIONAL, policy = ReferencePolicy.DYNAMIC)
public void setStateDescriptionService(StateDescriptionService stateDescriptionService) {
this.stateDescriptionService = stateDescriptionService;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,18 +105,4 @@ public interface ItemRegistry extends Registry<Item, String> {
*/
@Nullable
Item remove(String itemName, boolean recursive);

/**
* Add a hook to be informed before adding/after removing items.
*
* @param hook
*/
void addRegistryHook(RegistryHook<Item> hook);

/**
* Remove the hook again.
*
* @param hook
*/
void removeRegistryHook(RegistryHook<Item> hook);
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,6 @@ public void afterEach() throws Exception {

@Test
public void testIntegrationWithGenericItemProvider() throws Exception {
Thread.sleep(2500); // Wait for the ChannelItemProvider to join the game

Collection<Thing> things = thingRegistry.getAll();
assertThat(things.size(), is(0));

Expand Down Expand Up @@ -133,7 +131,7 @@ public void testIntegrationWithGenericItemProvider() throws Exception {

// Now add the model again
modelRepository.addOrRefreshModel(ITEMS_TESTMODEL_NAME, new ByteArrayInputStream(itemsModel.getBytes()));
assertThat(itemRegistry.getItems().size(), is(2)); // -> ensure ChannelItemProvider cleans up properly
assertThat(itemRegistry.getItems().size(), is(2)); // -> ensure proper clean-up
assertThat(itemChannelLinkRegistry.getAll().size(), is(1));
}

Expand Down