dicoogle
dicoogle copied to clipboard
Refactor components for testing purposes
Many of our classes (e.g. server.web.auth.Authentication), are tightly dependent on the file system or other resources that only make sense in the full application, and so they are hard to test individually. We should refactor these components to loosen this coupling.
Here's a list of singletons in our core project. I retrieved them with a search for the static getInstance method. I suggest that we progressively stop using singletons and rely on dependency injection instead.
pt.ua.dicoogle.core
ClientSettings.java QueryHistorySupport.java ServerSettings.java
pt.ua.dicoogle.DicomLog
LogDICOM.java
pt.ua.dicoogle.plugins
PluginController.java PluginPanelLoader.java
pt.ua.dicoogle.rGUI.client
AdminRefs.java ClientCore.java UserRefs.java
pt.ua.dicoogle.rGUI.client.UIHelper
PanelPluginsController.java Result2Tree.java ServerMessagesManager.java TrayIconCreator.java
pt.ua.dicoogle.rGUI.client.windows
About.java ActiveSessions.java ChangePassword.java ClientOptions.java ConnectWindow.java FileAlreadyIndexed.java Logs.java MainWindow.java QRServers.java QueryHistory.java ServerOptions.java Services.java UsersManager.java
pt.ua.dicoogle.rGUI.RFileBrowser
RemoteFileSystemServer.java
pt.ua.dicoogle.rGUI.server
AdminFeatures.java Login.java
pt.ua.dicoogle.rGUI.server.controllers
AccessList.java DicomSend.java DirectorySettings.java IndexOptions.java Logs.java NetworkInterfaces.java PendingMessages.java PluginController4Admin.java PluginController4user.java QRServers.java QueryRetrieve.java SOPClass.java StartupServices.java TaskList.java UsersManager.java
pt.ua.dicoogle.server
ControlServices.java SOPList.java
pt.ua.dicoogle.server.users
RolesStruct.java UserSessions.java UserSessionsLog.java UsersStruct.java
pt.ua.dicoogle.server.web.auth
Authentication.java
pt.ua.dicoogle.server.web.management
Dicoogle.java Indexer.java Services.java
pt.ua.dicoogle.server.web.rest.elements
ExamTimeCore.java pt.ua.dicoogle.taskManager RunningIndexTasks.java