From ad452d4d4299d87c5f4efb95b0fbf56c5fac74dd Mon Sep 17 00:00:00 2001 From: labkey-nicka Date: Mon, 27 Oct 2025 14:33:36 -0700 Subject: [PATCH] Replace AbstractContainerListener with ContainerListener default --- .../AnnouncementContainerListener.java | 2 +- api/src/org/labkey/api/data/Container.java | 6 - .../org/labkey/api/data/ContainerManager.java | 103 ++++-------------- .../module/SimpleModuleContainerListener.java | 7 +- .../api/reports/model/ReportPropsManager.java | 6 +- .../reports/model/ViewCategoryManager.java | 7 +- .../labkey/api/security/SecurityManager.java | 2 +- .../api/settings/FolderSettingsCache.java | 25 ----- .../api/study/DataspaceContainerFilter.java | 7 -- .../api/webdav/AbstractWebdavResolver.java | 2 +- .../labkey/assay/AssayContainerListener.java | 16 --- .../labkey/core/CoreContainerListener.java | 14 --- .../attachment/AttachmentServiceImpl.java | 25 ----- .../EmailPreferenceContainerListener.java | 4 +- .../notification/NotificationServiceImpl.java | 8 +- .../labkey/experiment/ExperimentModule.java | 39 ++++--- .../FileContentContainerListener.java | 7 +- .../filecontent/FileContentServiceImpl.java | 7 -- .../labkey/issue/IssueContainerListener.java | 7 +- .../labkey/mothership/MothershipModule.java | 2 +- .../org/labkey/pipeline/PipelineModule.java | 25 ----- .../org/labkey/query/olap/ServerManager.java | 2 +- .../labkey/query/persist/QueryManager.java | 2 +- .../query/reports/ReportServiceImpl.java | 3 +- .../search/SearchContainerListener.java | 2 +- .../SpecimenRequestContainerListener.java | 10 -- .../labkey/study/StudyContainerListener.java | 2 +- .../survey/SurveyContainerListener.java | 2 +- .../labkey/wiki/WikiContainerListener.java | 7 +- 29 files changed, 57 insertions(+), 294 deletions(-) diff --git a/announcements/src/org/labkey/announcements/AnnouncementContainerListener.java b/announcements/src/org/labkey/announcements/AnnouncementContainerListener.java index 8d10c50f26a..f548cb93aea 100644 --- a/announcements/src/org/labkey/announcements/AnnouncementContainerListener.java +++ b/announcements/src/org/labkey/announcements/AnnouncementContainerListener.java @@ -5,7 +5,7 @@ import org.labkey.api.data.ContainerManager; import org.labkey.api.security.User; -public class AnnouncementContainerListener extends ContainerManager.AbstractContainerListener +public class AnnouncementContainerListener implements ContainerManager.ContainerListener { // Note: Attachments are purged by AttachmentServiceImpl.containerDeleted() @Override diff --git a/api/src/org/labkey/api/data/Container.java b/api/src/org/labkey/api/data/Container.java index 7c013c0477a..c55c45cd561 100644 --- a/api/src/org/labkey/api/data/Container.java +++ b/api/src/org/labkey/api/data/Container.java @@ -185,12 +185,6 @@ public void containerMoved(Container c, Container oldParent, User user) REQUIRED_MODULES_CACHE.clear(); } - @Override - public @NotNull Collection canMove(Container c, Container newParent, User user) - { - return Collections.emptyList(); - } - @Override public void propertyChange(PropertyChangeEvent evt) { diff --git a/api/src/org/labkey/api/data/ContainerManager.java b/api/src/org/labkey/api/data/ContainerManager.java index af7d9098e1a..5e0f10e522b 100644 --- a/api/src/org/labkey/api/data/ContainerManager.java +++ b/api/src/org/labkey/api/data/ContainerManager.java @@ -380,7 +380,7 @@ public static Container createContainer(Container parent, String name, @Nullable SecurityManager.setInheritPermissions(c); } - // NOTE parent caches some info about children (e.g. hasWorkbookChildren) + // NOTE parent caches some info about children (e.g., hasWorkbookChildren) // since mutating cached objects is frowned upon, just uncache parent // CONSIDER: we could perhaps only uncache if the child is a workbook, but I think this reasonable _removeFromCache(parent, true); @@ -1165,7 +1165,6 @@ public static Container getChild(Container c, String name) return map.get(name); } - public static Container getForURL(@NotNull ActionURL url) { Container ret = getForPath(url.getExtraPath()); @@ -1174,7 +1173,6 @@ public static Container getForURL(@NotNull ActionURL url) return ret; } - public static Container getForPath(@NotNull String path) { if (GUID.isGUID(path)) @@ -1448,7 +1446,7 @@ public static NavTree getFolderListForUser(final Container project, ViewContext NavTree t = new NavTree(name); - // 34137: Support folder path expansion for containers where label != name + // Issue 34137: Support folder path expansion for containers where label != name t.setId(f.getId()); if (hasPolicyRead) { @@ -1464,7 +1462,7 @@ public static NavTree getFolderListForUser(final Container project, ViewContext } else { - // 32718: If navigation access is not open then hide projects that aren't directly + // Issue 32718: If navigation access is not open then hide projects that aren't directly // accessible in site folder navigation. if (f.equals(c) || f.isRoot() || (hasPolicyRead && f.isProject())) @@ -1689,7 +1687,7 @@ public static boolean move(Container c, final Container newParent, User user) th boolean changedProjects = !oldProject.getId().equals(newProject.getId()); - // Synchronize the transaction, but not the listeners -- see #9901 + // Issue 9901: Synchronize the transaction, but not the listeners try (DbScope.Transaction t = ensureTransaction()) { new SqlExecutor(CORE.getSchema()).execute("UPDATE " + CORE.getTableInfoContainers() + " SET Parent = ? WHERE EntityId = ?", newParent.getId(), c.getId()); @@ -1752,7 +1750,7 @@ public static Container rename(@NotNull Container c, User user, String name, @Nu // Rename if (isRenaming) { - // Issue 16221: Don't allow renaming of system reserved folders (e.g. /Shared, home, root, etc). + // Issue 16221: Don't allow renaming of system reserved folders (e.g., /Shared, home, root, etc). if (!isRenameable(c)) throw new ApiUsageException("This folder may not be renamed as it is reserved by the system."); @@ -1949,8 +1947,7 @@ private static boolean delete(final Container c, User user, @Nullable String com if (experimentService != null) experimentService.removeContainerDataTypeExclusions(c.getId()); - // After we've committed the transaction, be sure that we remove this container from the cache - // See https://www.labkey.org/issues/home/Developer/issues/details.view?issueId=17015 + // Issue 17015: After we've committed the transaction, be sure that we remove this container from the cache tx.addCommitTask(() -> { // Be sure that we've waited until any threads that might be populating the cache have finished @@ -2141,7 +2138,6 @@ public static void notifyContainerChange(String id, Property prop, @Nullable Use } } - /** Recursive, including root node */ public static Set getAllChildren(Container root) { @@ -2192,7 +2188,6 @@ public static long getAuditCommentRequiredCount() return new SqlSelector(CORE.getSchema(), sql).getObject(Long.class); } - /** Retrieve entire container hierarchy */ public static MultiValuedMap getContainerTree() { @@ -2264,7 +2259,6 @@ public static Set getContainerSet(MultiValuedMap containers, SqlDialect d) { if (containers.isEmpty()) @@ -2283,7 +2277,6 @@ public static SQLFragment getIdsAsCsvList(Set containers, SqlDialect return csvList; } - public static List getIds(User user, Class perm) { Set containers = getContainerSet(getContainerTree(), user, perm); @@ -2296,67 +2289,38 @@ public static List getIds(User user, Class perm) return ids; } - - // - // ContainerListener - // - public interface ContainerListener extends PropertyChangeListener { enum Order {First, Last} /** Called after a new container has been created */ - void containerCreated(Container c, User user); + default void containerCreated(Container c, User user) { } default void containerCreated(Container c, User user, @Nullable String auditMsg) { containerCreated(c, user); } - /** Called immediately prior to deleting the row from core.containers */ - void containerDeleted(Container c, User user); + /** Called immediately before deleting the row from core.containers */ + default void containerDeleted(Container c, User user) { } - /** Called after the container has been moved to its new parent */ - void containerMoved(Container c, Container oldParent, User user); + /** Called after the container has been moved to its new parent (post-commit) */ + default void containerMoved(Container c, Container oldParent, User user) { } /** - * Called prior to moving a container, to find out if there are any issues that would prevent a successful move + * Called before moving a container, to find out if there are any issues that would prevent a successful move * @return a list of errors that should prevent the move from happening, if any */ @NotNull - Collection canMove(Container c, Container newParent, User user); - - @Override - void propertyChange(PropertyChangeEvent evt); - } - - public static abstract class AbstractContainerListener implements ContainerListener - { - @Override - public void containerCreated(Container c, User user) - {} - - @Override - public void containerDeleted(Container c, User user) - {} - - @Override - public void containerMoved(Container c, Container oldParent, User user) - {} - - @NotNull - @Override - public Collection canMove(Container c, Container newParent, User user) + default Collection canMove(Container c, Container newParent, User user) { return Collections.emptyList(); } @Override - public void propertyChange(PropertyChangeEvent evt) - {} + default void propertyChange(PropertyChangeEvent evt) { } } - public static class ContainerPropertyChangeEvent extends PropertyChangeEvent implements PropertyChange { public final Property property; @@ -2383,7 +2347,6 @@ public Property getProperty() } } - // Thread-safe list implementation that allows iteration and modifications without external synchronization private static final List _listeners = new CopyOnWriteArrayList<>(); private static final List _laterListeners = new CopyOnWriteArrayList<>(); @@ -2394,7 +2357,6 @@ public static void addContainerListener(ContainerListener listener) addContainerListener(listener, ContainerListener.Order.First); } - // Explicitly request "Last" ordering via this method. "Last" listeners execute after all "First" listeners. public static void addContainerListener(ContainerListener listener, ContainerListener.Order order) { @@ -2404,14 +2366,12 @@ public static void addContainerListener(ContainerListener listener, ContainerLis _laterListeners.add(listener); } - public static void removeContainerListener(ContainerListener listener) { _listeners.remove(listener); _laterListeners.remove(listener); } - private static List getListeners() { List combined = new ArrayList<>(_listeners.size() + _laterListeners.size()); @@ -2421,7 +2381,6 @@ private static List getListeners() return combined; } - private static List getListenersReversed() { List combined = new LinkedList<>(); @@ -2431,7 +2390,7 @@ private static List getListenersReversed() ListIterator iter = copy.listIterator(copy.size()); // Iterate in reverse - while(iter.hasPrevious()) + while (iter.hasPrevious()) combined.add(iter.previous()); // Copy to guarantee consistency between .listIterator() and .size() @@ -2440,13 +2399,12 @@ private static List getListenersReversed() ListIterator laterIter = laterCopy.listIterator(laterCopy.size()); // Iterate in reverse - while(laterIter.hasPrevious()) + while (laterIter.hasPrevious()) combined.add(laterIter.previous()); return combined; } - protected static void fireCreateContainer(Container c, User user, @Nullable String auditMsg) { List list = getListeners(); @@ -2464,7 +2422,6 @@ protected static void fireCreateContainer(Container c, User user, @Nullable Stri } } - protected static void fireDeleteContainer(Container c, User user) { List list = getListenersReversed(); @@ -2480,21 +2437,19 @@ protected static void fireDeleteContainer(Container c, User user) { LOG.error("fireDeleteContainer for " + l.getClass().getName(), e); - // Fail fast (first Throwable aborts iteration), #17560 + // Issue 17560: Fail fast (first Throwable aborts iteration) throw e; } } } - - protected static void fireRenameContainer(Container c, User user, String oldValue) + private static void fireRenameContainer(Container c, User user, String oldValue) { ContainerPropertyChangeEvent evt = new ContainerPropertyChangeEvent(c, user, Property.Name, oldValue, c.getName()); firePropertyChangeEvent(evt); } - - protected static void fireMoveContainer(Container c, Container oldParent, User user) + private static void fireMoveContainer(Container c, Container oldParent, User user) { List list = getListeners(); @@ -2512,7 +2467,6 @@ protected static void fireMoveContainer(Container c, Container oldParent, User u firePropertyChangeEvent(evt); } - public static void firePropertyChangeEvent(ContainerPropertyChangeEvent evt) { if (_constructing.contains(evt.container.getEntityId())) @@ -2986,12 +2940,6 @@ private static void logNode(MultiValuedMap mm, String name, int } } - // ContainerListener - @Override - public void propertyChange(PropertyChangeEvent evt) - { - } - @Override public void containerCreated(Container c, User user) { @@ -3000,24 +2948,11 @@ public void containerCreated(Container c, User user) _containers.put(c.getParsedPath(), c); } - @Override public void containerDeleted(Container c, User user) { _containers.remove(c.getParsedPath()); } - - @Override - public void containerMoved(Container c, Container oldParent, User user) - { - } - - @NotNull - @Override - public Collection canMove(Container c, Container newParent, User user) - { - return Collections.emptyList(); - } } static diff --git a/api/src/org/labkey/api/module/SimpleModuleContainerListener.java b/api/src/org/labkey/api/module/SimpleModuleContainerListener.java index a2d30feefd4..92ab68b3959 100644 --- a/api/src/org/labkey/api/module/SimpleModuleContainerListener.java +++ b/api/src/org/labkey/api/module/SimpleModuleContainerListener.java @@ -36,12 +36,7 @@ import java.util.Collections; import java.util.List; -/** - * User: bimber - * Date: 3/4/13 - * Time: 10:45 AM - */ -public class SimpleModuleContainerListener extends ContainerManager.AbstractContainerListener +public class SimpleModuleContainerListener implements ContainerManager.ContainerListener { private final Module _owner; diff --git a/api/src/org/labkey/api/reports/model/ReportPropsManager.java b/api/src/org/labkey/api/reports/model/ReportPropsManager.java index 04708973083..d6a63835079 100644 --- a/api/src/org/labkey/api/reports/model/ReportPropsManager.java +++ b/api/src/org/labkey/api/reports/model/ReportPropsManager.java @@ -51,11 +51,7 @@ import java.util.List; import java.util.Map; -/** - * User: klum - * Date: Feb 13, 2012 - */ -public class ReportPropsManager extends ContainerManager.AbstractContainerListener +public class ReportPropsManager implements ContainerManager.ContainerListener { private static final Logger _log = LogManager.getLogger(ReportPropsManager.class); private static final String PROPERTIES_DOMAIN = "Report Properties"; diff --git a/api/src/org/labkey/api/reports/model/ViewCategoryManager.java b/api/src/org/labkey/api/reports/model/ViewCategoryManager.java index 6e1eaf9d0ed..2405b8d5443 100644 --- a/api/src/org/labkey/api/reports/model/ViewCategoryManager.java +++ b/api/src/org/labkey/api/reports/model/ViewCategoryManager.java @@ -42,12 +42,7 @@ import java.util.Map; import java.util.concurrent.CopyOnWriteArrayList; -/** - * User: klum - * Date: Oct 12, 2011 - * Time: 7:13:20 PM - */ -public class ViewCategoryManager extends ContainerManager.AbstractContainerListener +public class ViewCategoryManager implements ContainerManager.ContainerListener { private static final ViewCategoryManager _instance = new ViewCategoryManager(); private static final List _listeners = new CopyOnWriteArrayList<>(); diff --git a/api/src/org/labkey/api/security/SecurityManager.java b/api/src/org/labkey/api/security/SecurityManager.java index 3d3872ace57..72406beaeaf 100644 --- a/api/src/org/labkey/api/security/SecurityManager.java +++ b/api/src/org/labkey/api/security/SecurityManager.java @@ -391,7 +391,7 @@ private static void scrubTables() } /** Move is handled by direct call from ContainerManager into SecurityManager */ - private static class SecurityContainerListener extends ContainerManager.AbstractContainerListener + private static class SecurityContainerListener implements ContainerManager.ContainerListener { @Override public void containerDeleted(Container c, User user) diff --git a/api/src/org/labkey/api/settings/FolderSettingsCache.java b/api/src/org/labkey/api/settings/FolderSettingsCache.java index 1aec4afc343..61eb8ad8b21 100644 --- a/api/src/org/labkey/api/settings/FolderSettingsCache.java +++ b/api/src/org/labkey/api/settings/FolderSettingsCache.java @@ -15,7 +15,6 @@ */ package org.labkey.api.settings; -import org.jetbrains.annotations.NotNull; import org.labkey.api.Constants; import org.labkey.api.cache.BlockingCache; import org.labkey.api.cache.CacheManager; @@ -23,10 +22,6 @@ import org.labkey.api.data.ContainerManager; import org.labkey.api.security.User; -import java.beans.PropertyChangeEvent; -import java.util.Collection; -import java.util.Collections; - // Folder settings inherit all the way up the folder tree. All the property sets involved should be cached, but the walk // up the tree is a potentially expensive operation just to format a date or number. So, we cache the set of resolved // properties on a per-container basis and clear the entire cache on every change of look and feel settings. @@ -115,13 +110,6 @@ public boolean areRestrictedColumnsEnabled() public static class FolderSettingsCacheListener implements ContainerManager.ContainerListener { - @Override - public void containerCreated(Container c, User user) - { - // Don't care... nothing should be cached for a brand new container, and it must be a leaf node (doesn't - // affect other folders' settings. - } - @Override public void containerDeleted(Container c, User user) { @@ -136,18 +124,5 @@ public void containerMoved(Container c, Container oldParent, User user) // When moving a tree, this is called only for the top node, so we need to clear the entire cache. clear(); } - - @NotNull - @Override - public Collection canMove(Container c, Container newParent, User user) - { - return Collections.emptyList(); - } - - @Override - public void propertyChange(PropertyChangeEvent evt) - { - // Don't care - } } } \ No newline at end of file diff --git a/api/src/org/labkey/api/study/DataspaceContainerFilter.java b/api/src/org/labkey/api/study/DataspaceContainerFilter.java index a52ca9055ee..9f5ba049207 100644 --- a/api/src/org/labkey/api/study/DataspaceContainerFilter.java +++ b/api/src/org/labkey/api/study/DataspaceContainerFilter.java @@ -217,13 +217,6 @@ public void containerMoved(Container c, Container oldParent, User user) studiesCache.remove(oldParent.getProject().getId()); } - @NotNull - @Override - public Collection canMove(Container c, Container newParent, User user) - { - return Collections.emptyList(); - } - @Override public void propertyChange(PropertyChangeEvent evt) { diff --git a/api/src/org/labkey/api/webdav/AbstractWebdavResolver.java b/api/src/org/labkey/api/webdav/AbstractWebdavResolver.java index cca5c568979..6d2f827a4cb 100644 --- a/api/src/org/labkey/api/webdav/AbstractWebdavResolver.java +++ b/api/src/org/labkey/api/webdav/AbstractWebdavResolver.java @@ -269,7 +269,7 @@ public Collection listNames() } } - public abstract static class AbstractWebdavListener extends ContainerManager.AbstractContainerListener + public abstract static class AbstractWebdavListener implements ContainerManager.ContainerListener { @Override public void containerCreated(Container c, User user) diff --git a/assay/src/org/labkey/assay/AssayContainerListener.java b/assay/src/org/labkey/assay/AssayContainerListener.java index f7aa84a4f07..f2a7cb2948b 100644 --- a/assay/src/org/labkey/assay/AssayContainerListener.java +++ b/assay/src/org/labkey/assay/AssayContainerListener.java @@ -26,7 +26,6 @@ import org.labkey.api.security.User; import org.labkey.assay.plate.PlateManager; -import java.beans.PropertyChangeEvent; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -36,11 +35,6 @@ public class AssayContainerListener implements ContainerListener { - @Override - public void containerCreated(Container c, User user) - { - } - @Override public void containerDeleted(Container c, User user) { @@ -50,16 +44,6 @@ public void containerDeleted(Container c, User user) AssayManager.get().clearProtocolCache(); } - @Override - public void propertyChange(PropertyChangeEvent evt) - { - } - - @Override - public void containerMoved(Container c, Container oldParent, User user) - { - } - @NotNull @Override public Collection canMove(Container c, Container newParent, User user) diff --git a/core/src/org/labkey/core/CoreContainerListener.java b/core/src/org/labkey/core/CoreContainerListener.java index 09647eb22b6..d2f66ef7c78 100644 --- a/core/src/org/labkey/core/CoreContainerListener.java +++ b/core/src/org/labkey/core/CoreContainerListener.java @@ -15,9 +15,6 @@ */ package org.labkey.core; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.labkey.api.audit.AuditLogService; import org.labkey.api.audit.AuditTypeEvent; @@ -36,14 +33,10 @@ import org.labkey.api.view.Portal; import java.beans.PropertyChangeEvent; -import java.util.Collection; -import java.util.Collections; import java.util.Objects; public class CoreContainerListener implements ContainerManager.ContainerListener { - private static final Logger _log = LogManager.getLogger(CoreContainerListener.class); - @Override public void containerCreated(Container c, User user) { @@ -86,13 +79,6 @@ public void containerMoved(Container c, Container oldParent, User user) // re-index is handled when the propertyChange() event fires } - @NotNull - @Override - public Collection canMove(Container c, Container newParent, User user) - { - return Collections.emptyList(); - } - private void addAuditEvent(User user, Container c, String comment) { if (user != null) diff --git a/core/src/org/labkey/core/attachment/AttachmentServiceImpl.java b/core/src/org/labkey/core/attachment/AttachmentServiceImpl.java index c99dda51338..9755d824801 100644 --- a/core/src/org/labkey/core/attachment/AttachmentServiceImpl.java +++ b/core/src/org/labkey/core/attachment/AttachmentServiceImpl.java @@ -110,7 +110,6 @@ import org.springframework.validation.BindException; import org.springframework.web.multipart.MultipartFile; -import java.beans.PropertyChangeEvent; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -1000,18 +999,6 @@ public Map getAttachments(AttachmentParent parent, Collectio } } - - @Override - public void containerCreated(Container c, User user) - { - } - - - @Override - public void propertyChange(PropertyChangeEvent propertyChangeEvent) - { - } - @Override public void containerDeleted(Container c, User user) { @@ -1020,18 +1007,6 @@ public void containerDeleted(Container c, User user) AttachmentCache.removeAttachments(c); } - @Override - public void containerMoved(Container c, Container oldParent, User user) - { - } - - @NotNull - @Override - public Collection canMove(Container c, Container newParent, User user) - { - return Collections.emptyList(); - } - private void writeDocument(DocumentWriter writer, AttachmentParent parent, String name, @Nullable String alias, boolean asAttachment) throws ServletException, IOException { checkSecurityPolicy(parent); diff --git a/core/src/org/labkey/core/notification/EmailPreferenceContainerListener.java b/core/src/org/labkey/core/notification/EmailPreferenceContainerListener.java index 7bc1240afb8..8bbd6ccc083 100644 --- a/core/src/org/labkey/core/notification/EmailPreferenceContainerListener.java +++ b/core/src/org/labkey/core/notification/EmailPreferenceContainerListener.java @@ -1,12 +1,12 @@ package org.labkey.core.notification; import org.labkey.api.data.Container; -import org.labkey.api.data.ContainerManager.AbstractContainerListener; +import org.labkey.api.data.ContainerManager; import org.labkey.api.data.CoreSchema; import org.labkey.api.security.User; import org.labkey.api.util.ContainerUtil; -public class EmailPreferenceContainerListener extends AbstractContainerListener +public class EmailPreferenceContainerListener implements ContainerManager.ContainerListener { @Override public void containerDeleted(Container c, User user) diff --git a/core/src/org/labkey/core/notification/NotificationServiceImpl.java b/core/src/org/labkey/core/notification/NotificationServiceImpl.java index 5e8584f9530..32632974827 100644 --- a/core/src/org/labkey/core/notification/NotificationServiceImpl.java +++ b/core/src/org/labkey/core/notification/NotificationServiceImpl.java @@ -32,7 +32,6 @@ import org.labkey.api.data.Container; import org.labkey.api.data.ContainerFilter; import org.labkey.api.data.ContainerManager; -import org.labkey.api.data.ContainerManager.AbstractContainerListener; import org.labkey.api.data.CoreSchema; import org.labkey.api.data.DbScope; import org.labkey.api.data.SimpleFilter; @@ -67,11 +66,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; -/** - * User: cnathe - * Date: 9/14/2015 - */ -public class NotificationServiceImpl extends AbstractContainerListener implements NotificationService +public class NotificationServiceImpl implements ContainerManager.ContainerListener, NotificationService { private final static NotificationServiceImpl INSTANCE = new NotificationServiceImpl(); private final Map _typeLabelMap = new ConcurrentHashMap<>(); @@ -398,7 +393,6 @@ public String getNotificationTypeIconCls(@NotNull String type) return _typeIconMap.getOrDefault(type, "fa-bell"); } - @Override public void sendServerEvent(int userId, Class clazz) { diff --git a/experiment/src/org/labkey/experiment/ExperimentModule.java b/experiment/src/org/labkey/experiment/ExperimentModule.java index 7c57a79c011..987859c3deb 100644 --- a/experiment/src/org/labkey/experiment/ExperimentModule.java +++ b/experiment/src/org/labkey/experiment/ExperimentModule.java @@ -531,27 +531,26 @@ protected void startupAfterSpringConfig(ModuleContext moduleContext) fileContentService.addFileListener(new TableUpdaterFileListener(ExperimentService.get().getTinfoExperimentRun(), "FilePathRoot", TableUpdaterFileListener.Type.fileRootPath, "RowId")); fileContentService.addFileListener(new FileLinkFileListener()); } - ContainerManager.addContainerListener( - new ContainerManager.AbstractContainerListener() + ContainerManager.addContainerListener(new ContainerManager.ContainerListener() + { + @Override + public void containerDeleted(Container c, User user) + { + try { - @Override - public void containerDeleted(Container c, User user) - { - try - { - ExperimentService.get().deleteAllExpObjInContainer(c, user); - } - catch (ExperimentException ee) - { - throw new RuntimeException(ee); - } - } - }, - // This is in the Last group because when a container is deleted, - // the Experiment listener needs to be called after the Study listener, - // because Study needs the metadata held by Experiment to delete properly. - // but it should be before the CoreContainerListener - ContainerManager.ContainerListener.Order.Last); + ExperimentService.get().deleteAllExpObjInContainer(c, user); + } + catch (ExperimentException ee) + { + throw new RuntimeException(ee); + } + } + }, + // This is in the Last group because when a container is deleted, + // the Experiment listener needs to be called after the Study listener, + // because Study needs the metadata held by Experiment to delete properly. + // but it should be before the CoreContainerListener + ContainerManager.ContainerListener.Order.Last); if (ModuleLoader.getInstance().shouldInsertData()) SystemProperty.registerProperties(); diff --git a/filecontent/src/org/labkey/filecontent/FileContentContainerListener.java b/filecontent/src/org/labkey/filecontent/FileContentContainerListener.java index 848ffd04a22..e0d6d05b8a2 100644 --- a/filecontent/src/org/labkey/filecontent/FileContentContainerListener.java +++ b/filecontent/src/org/labkey/filecontent/FileContentContainerListener.java @@ -19,12 +19,7 @@ import org.labkey.api.data.ContainerManager; import org.labkey.api.security.User; -/** - * User: adam - * Date: 2/25/12 - * Time: 8:44 PM - */ -public class FileContentContainerListener extends ContainerManager.AbstractContainerListener +public class FileContentContainerListener implements ContainerManager.ContainerListener { @Override public void containerDeleted(Container c, User user) diff --git a/filecontent/src/org/labkey/filecontent/FileContentServiceImpl.java b/filecontent/src/org/labkey/filecontent/FileContentServiceImpl.java index da9fe34706a..f3ed5d2eaff 100644 --- a/filecontent/src/org/labkey/filecontent/FileContentServiceImpl.java +++ b/filecontent/src/org/labkey/filecontent/FileContentServiceImpl.java @@ -904,13 +904,6 @@ public void containerMoved(Container c, Container oldParent, User user) } } - @NotNull - @Override - public Collection canMove(Container c, Container newParent, User user) - { - return Collections.emptyList(); - } - @Override public void propertyChange(PropertyChangeEvent propertyChangeEvent) { diff --git a/issues/src/org/labkey/issue/IssueContainerListener.java b/issues/src/org/labkey/issue/IssueContainerListener.java index f9acdf14f94..95966bbcba8 100644 --- a/issues/src/org/labkey/issue/IssueContainerListener.java +++ b/issues/src/org/labkey/issue/IssueContainerListener.java @@ -21,12 +21,7 @@ import org.labkey.issue.model.IssueListDefCache; import org.labkey.issue.model.IssueManager; -/** - * User: adam - * Date: Nov 5, 2008 - * Time: 3:30:34 PM - */ -public class IssueContainerListener extends ContainerManager.AbstractContainerListener +public class IssueContainerListener implements ContainerManager.ContainerListener { @Override public void containerDeleted(Container c, User user) diff --git a/mothership/src/org/labkey/mothership/MothershipModule.java b/mothership/src/org/labkey/mothership/MothershipModule.java index 7fa597ab097..9bf476a5bde 100644 --- a/mothership/src/org/labkey/mothership/MothershipModule.java +++ b/mothership/src/org/labkey/mothership/MothershipModule.java @@ -121,7 +121,7 @@ public void doStartup(ModuleContext moduleContext) { MothershipReport.setShowSelfReportExceptions(true); - ContainerManager.addContainerListener(new ContainerManager.AbstractContainerListener() + ContainerManager.addContainerListener(new ContainerManager.ContainerListener() { @Override public void containerDeleted(Container c, User user) diff --git a/pipeline/src/org/labkey/pipeline/PipelineModule.java b/pipeline/src/org/labkey/pipeline/PipelineModule.java index 6482353c6b2..570227f29fc 100644 --- a/pipeline/src/org/labkey/pipeline/PipelineModule.java +++ b/pipeline/src/org/labkey/pipeline/PipelineModule.java @@ -95,10 +95,8 @@ import org.labkey.pipeline.xml.ScriptTaskType; import javax.management.StandardMBean; -import java.beans.PropertyChangeEvent; import java.io.IOException; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -294,11 +292,6 @@ public Collection getSummary(Container c) return super.getSummary(c); } - @Override - public void containerCreated(Container c, User user) - { - } - @Override public void containerDeleted(Container c, User user) { @@ -314,24 +307,6 @@ public void containerDeleted(Container c, User user) PipelineManager.purge(c, user); } - @Override - public void containerMoved(Container c, Container oldParent, User user) - { - } - - @NotNull - @Override - public Collection canMove(Container c, Container newParent, User user) - { - return Collections.emptyList(); - } - - @Override - public void propertyChange(PropertyChangeEvent evt) - { - } - - @Override public @NotNull Set> getIntegrationTests() { diff --git a/query/src/org/labkey/query/olap/ServerManager.java b/query/src/org/labkey/query/olap/ServerManager.java index 5aca29b8abd..dbddcfc40cb 100644 --- a/query/src/org/labkey/query/olap/ServerManager.java +++ b/query/src/org/labkey/query/olap/ServerManager.java @@ -126,7 +126,7 @@ public class ServerManager static { - ContainerManager.addContainerListener(new ContainerManager.AbstractContainerListener() + ContainerManager.addContainerListener(new ContainerManager.ContainerListener() { @Override public void containerDeleted(Container c, User user) diff --git a/query/src/org/labkey/query/persist/QueryManager.java b/query/src/org/labkey/query/persist/QueryManager.java index 4314089fde4..28e10d84736 100644 --- a/query/src/org/labkey/query/persist/QueryManager.java +++ b/query/src/org/labkey/query/persist/QueryManager.java @@ -611,7 +611,7 @@ public Collection getViewDepedents(CustomView view) return dependents; } - static public final ContainerManager.ContainerListener CONTAINER_LISTENER = new ContainerManager.AbstractContainerListener() + static public final ContainerManager.ContainerListener CONTAINER_LISTENER = new ContainerManager.ContainerListener() { @Override public void containerDeleted(Container c, User user) diff --git a/query/src/org/labkey/query/reports/ReportServiceImpl.java b/query/src/org/labkey/query/reports/ReportServiceImpl.java index f40adb2e388..392bf647df9 100644 --- a/query/src/org/labkey/query/reports/ReportServiceImpl.java +++ b/query/src/org/labkey/query/reports/ReportServiceImpl.java @@ -34,7 +34,6 @@ import org.labkey.api.collections.MultiSetUtils; import org.labkey.api.data.Container; import org.labkey.api.data.ContainerManager; -import org.labkey.api.data.ContainerManager.AbstractContainerListener; import org.labkey.api.data.CoreSchema; import org.labkey.api.data.DbScope; import org.labkey.api.data.SQLFragment; @@ -117,7 +116,7 @@ import static org.labkey.api.reports.report.ScriptReportDescriptor.REPORT_METADATA_EXTENSION; -public class ReportServiceImpl extends AbstractContainerListener implements ReportService +public class ReportServiceImpl implements ContainerManager.ContainerListener, ReportService { private static final Logger _log = LogHelper.getLogger(ReportService.class, "Errors and warnings with reports"); private static final List _uiProviders = new CopyOnWriteArrayList<>(); diff --git a/search/src/org/labkey/search/SearchContainerListener.java b/search/src/org/labkey/search/SearchContainerListener.java index e7332a85b31..2c479de75eb 100644 --- a/search/src/org/labkey/search/SearchContainerListener.java +++ b/search/src/org/labkey/search/SearchContainerListener.java @@ -25,7 +25,7 @@ import java.beans.PropertyChangeEvent; -public class SearchContainerListener extends ContainerManager.AbstractContainerListener +public class SearchContainerListener implements ContainerManager.ContainerListener { @Override public void containerCreated(Container c, User user) diff --git a/specimen/src/org/labkey/specimen/SpecimenRequestContainerListener.java b/specimen/src/org/labkey/specimen/SpecimenRequestContainerListener.java index a9dfc275edd..96865519763 100644 --- a/specimen/src/org/labkey/specimen/SpecimenRequestContainerListener.java +++ b/specimen/src/org/labkey/specimen/SpecimenRequestContainerListener.java @@ -1,13 +1,10 @@ package org.labkey.specimen; -import org.jetbrains.annotations.NotNull; import org.labkey.api.data.Container; import org.labkey.api.data.ContainerManager; import org.labkey.api.security.User; import java.beans.PropertyChangeEvent; -import java.util.Collection; -import java.util.Collections; public class SpecimenRequestContainerListener implements ContainerManager.ContainerListener { @@ -29,13 +26,6 @@ public void containerMoved(Container c, Container oldParent, User user) SpecimenRequestManager.get().clearCaches(c); } - @NotNull - @Override - public Collection canMove(Container c, Container newParent, User user) - { - return Collections.emptyList(); - } - @Override public void propertyChange(PropertyChangeEvent evt) { diff --git a/study/src/org/labkey/study/StudyContainerListener.java b/study/src/org/labkey/study/StudyContainerListener.java index d3e4ccace37..3c4732db243 100644 --- a/study/src/org/labkey/study/StudyContainerListener.java +++ b/study/src/org/labkey/study/StudyContainerListener.java @@ -24,7 +24,7 @@ import java.beans.PropertyChangeEvent; -public class StudyContainerListener extends ContainerManager.AbstractContainerListener +public class StudyContainerListener implements ContainerManager.ContainerListener { @Override public void containerDeleted(Container c, User user) diff --git a/survey/src/org/labkey/survey/SurveyContainerListener.java b/survey/src/org/labkey/survey/SurveyContainerListener.java index f7c16897fce..c97398ea409 100644 --- a/survey/src/org/labkey/survey/SurveyContainerListener.java +++ b/survey/src/org/labkey/survey/SurveyContainerListener.java @@ -20,7 +20,7 @@ import org.labkey.api.data.ContainerManager; import org.labkey.api.security.User; -public class SurveyContainerListener extends ContainerManager.AbstractContainerListener +public class SurveyContainerListener implements ContainerManager.ContainerListener { @Override public void containerDeleted(Container c, User user) diff --git a/wiki/src/org/labkey/wiki/WikiContainerListener.java b/wiki/src/org/labkey/wiki/WikiContainerListener.java index 9c1af215093..48d4fa34314 100644 --- a/wiki/src/org/labkey/wiki/WikiContainerListener.java +++ b/wiki/src/org/labkey/wiki/WikiContainerListener.java @@ -19,12 +19,7 @@ import org.labkey.api.data.ContainerManager; import org.labkey.api.security.User; -/** - * User: adam - * Date: Nov 5, 2008 - * Time: 10:52:38 AM - */ -public class WikiContainerListener extends ContainerManager.AbstractContainerListener +public class WikiContainerListener implements ContainerManager.ContainerListener { // Note: Attachments are purged by AttachmentServiceImpl.containerDeleted() @Override