Browse Source

Add com.dmdirc.util.system bundle.

pull/766/head
Chris Smith 7 years ago
parent
commit
76735c2d01
21 changed files with 125 additions and 72 deletions
  1. 0
    50
      api/src/main/java/com/dmdirc/interfaces/SystemLifecycleComponent.java
  2. 1
    0
      build.gradle
  3. 55
    0
      bundles/com.dmdirc.util.system/build.gradle
  4. 2
    7
      bundles/com.dmdirc.util.system/src/main/java/com/dmdirc/util/system/SystemInfo.java
  5. 45
    0
      bundles/com.dmdirc.util.system/src/main/java/com/dmdirc/util/system/SystemLifecycleComponent.java
  6. 7
    0
      src/main/java/com/dmdirc/ClientModule.java
  7. 1
    1
      src/main/java/com/dmdirc/LauncherUtils.java
  8. 1
    1
      src/main/java/com/dmdirc/Main.java
  9. 1
    1
      src/main/java/com/dmdirc/SystemLifecycleController.java
  10. 1
    1
      src/main/java/com/dmdirc/commandline/BaseDirectoryLocator.java
  11. 1
    1
      src/main/java/com/dmdirc/commandline/CommandLineParser.java
  12. 1
    1
      src/main/java/com/dmdirc/commandparser/aliases/AliasLifecycleManager.java
  13. 1
    1
      src/main/java/com/dmdirc/commandparser/aliases/AliasesModule.java
  14. 1
    1
      src/main/java/com/dmdirc/commandparser/auto/AutoCommandLifecycleManager.java
  15. 1
    1
      src/main/java/com/dmdirc/commandparser/auto/AutoCommandModule.java
  16. 1
    1
      src/main/java/com/dmdirc/config/profiles/ProfileManager.java
  17. 1
    1
      src/main/java/com/dmdirc/config/profiles/ProfileManagerLifeCycleManager.java
  18. 1
    1
      src/main/java/com/dmdirc/config/profiles/ProfilesModule.java
  19. 1
    1
      src/main/java/com/dmdirc/plugins/PluginEventFormatManager.java
  20. 1
    1
      src/main/java/com/dmdirc/plugins/PluginModule.java
  21. 1
    1
      src/test/java/com/dmdirc/config/profiles/ProfileManagerTest.java

+ 0
- 50
api/src/main/java/com/dmdirc/interfaces/SystemLifecycleComponent.java View File

1
-/*
2
- * Copyright (c) 2006-2015 DMDirc Developers
3
- *
4
- * Permission is hereby granted, free of charge, to any person obtaining a copy
5
- * of this software and associated documentation files (the "Software"), to deal
6
- * in the Software without restriction, including without limitation the rights
7
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
- * copies of the Software, and to permit persons to whom the Software is
9
- * furnished to do so, subject to the following conditions:
10
- *
11
- * The above copyright notice and this permission notice shall be included in
12
- * all copies or substantial portions of the Software.
13
- *
14
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- * SOFTWARE.
21
- */
22
-
23
-package com.dmdirc.interfaces;
24
-
25
-/**
26
- * A component that participates in or needs to know about the system lifecycle.
27
- */
28
-public interface SystemLifecycleComponent {
29
-
30
-    /**
31
-     * Called when the system or component is starting up.
32
-     */
33
-    void startUp();
34
-
35
-    /**
36
-     * Indicates that the component should save any configuration or other data to disk.
37
-     */
38
-    default void save() {}
39
-
40
-    /**
41
-     * Called when the system or component is shutting down.
42
-     * <p>
43
-     * Any resources or threads used by the implementing class must be released before returning
44
-     * from this method.
45
-     */
46
-    default void shutDown() {
47
-        save();
48
-    }
49
-
50
-}

+ 1
- 0
build.gradle View File

49
     bundle group: 'com.dmdirc', name: 'com.dmdirc.config.binding', version: '+', changing: true
49
     bundle group: 'com.dmdirc', name: 'com.dmdirc.config.binding', version: '+', changing: true
50
     bundle group: 'com.dmdirc', name: 'com.dmdirc.events.eventbus', version: '+', changing: true
50
     bundle group: 'com.dmdirc', name: 'com.dmdirc.events.eventbus', version: '+', changing: true
51
     bundle group: 'com.dmdirc', name: 'com.dmdirc.util.io.yaml', version: '+', changing: true
51
     bundle group: 'com.dmdirc', name: 'com.dmdirc.util.io.yaml', version: '+', changing: true
52
+    bundle group: 'com.dmdirc', name: 'com.dmdirc.util.system', version: '+', changing: true
52
 
53
 
53
     bundle group: 'com.dmdirc', name: 'api', version: '+', changing: true
54
     bundle group: 'com.dmdirc', name: 'api', version: '+', changing: true
54
     bundle group: 'com.dmdirc', name: 'util', version: '+', changing: true
55
     bundle group: 'com.dmdirc', name: 'util', version: '+', changing: true

+ 55
- 0
bundles/com.dmdirc.util.system/build.gradle View File

1
+/*
2
+ * Copyright (c) 2006-2017 DMDirc Developers
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
5
+ * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
6
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
7
+ * permit persons to whom the Software is furnished to do so, subject to the following conditions:
8
+ *
9
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
10
+ * Software.
11
+ *
12
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
13
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
14
+ * OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
15
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ */
17
+
18
+plugins {
19
+    id 'java'
20
+    id 'findbugs'
21
+    id 'pmd'
22
+    id 'idea'
23
+    id 'osgi'
24
+}
25
+
26
+group = 'com.dmdirc'
27
+
28
+idea {
29
+    module {
30
+         sourceDirs += file('src/main/generated')
31
+         testSourceDirs += file('src/test/generated_tests')
32
+         generatedSourceDirs = [file('src/main/generated'), file('src/test/generated_tests')]
33
+    }
34
+}
35
+
36
+configurations.all {
37
+    resolutionStrategy.cacheDynamicVersionsFor 2, 'minutes'
38
+    resolutionStrategy.cacheChangingModulesFor 2, 'minutes'
39
+}
40
+
41
+dependencies {
42
+    compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.1'
43
+    compile group: 'org.slf4j', name: 'slf4j-api', version:'1.7.21'
44
+
45
+    testCompile group: 'junit', name: 'junit', version: '4.12'
46
+    testCompile group: 'org.mockito', name: 'mockito-core', version: '1.10.19'
47
+}
48
+
49
+sourceCompatibility = 1.8
50
+targetCompatibility = 1.8
51
+
52
+repositories {
53
+    mavenCentral()
54
+}
55
+

src/main/java/com/dmdirc/util/SystemInfo.java → bundles/com.dmdirc.util.system/src/main/java/com/dmdirc/util/system/SystemInfo.java View File

15
  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
15
  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
  */
16
  */
17
 
17
 
18
-package com.dmdirc.util;
19
-
20
-import javax.inject.Inject;
18
+package com.dmdirc.util.system;
21
 
19
 
22
 /**
20
 /**
23
  * Injectable wrapper around {@link System}
21
  * Injectable wrapper around {@link System}
24
  */
22
  */
25
 public class SystemInfo {
23
 public class SystemInfo {
26
 
24
 
27
-    @Inject
28
-    public SystemInfo() {
29
-    }
30
-
31
     public String getProperty(final String key) {
25
     public String getProperty(final String key) {
32
         return System.getProperty(key);
26
         return System.getProperty(key);
33
     }
27
     }
35
     public String getenv(final String name) {
29
     public String getenv(final String name) {
36
         return System.getenv(name);
30
         return System.getenv(name);
37
     }
31
     }
32
+
38
 }
33
 }

+ 45
- 0
bundles/com.dmdirc.util.system/src/main/java/com/dmdirc/util/system/SystemLifecycleComponent.java View File

1
+/*
2
+ * Copyright (c) 2006-2017 DMDirc Developers
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
5
+ * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
6
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
7
+ * permit persons to whom the Software is furnished to do so, subject to the following conditions:
8
+ *
9
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
10
+ * Software.
11
+ *
12
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
13
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
14
+ * OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
15
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ */
17
+
18
+package com.dmdirc.util.system;
19
+
20
+/**
21
+ * A component that participates in or needs to know about the system lifecycle.
22
+ */
23
+public interface SystemLifecycleComponent {
24
+
25
+    /**
26
+     * Called when the system or component is starting up.
27
+     */
28
+    void startUp();
29
+
30
+    /**
31
+     * Indicates that the component should save any configuration or other data to disk.
32
+     */
33
+    default void save() {}
34
+
35
+    /**
36
+     * Called when the system or component is shutting down.
37
+     * <p>
38
+     * Any resources or threads used by the implementing class must be released before returning
39
+     * from this method.
40
+     */
41
+    default void shutDown() {
42
+        save();
43
+    }
44
+
45
+}

+ 7
- 0
src/main/java/com/dmdirc/ClientModule.java View File

44
 import com.dmdirc.updater.UpdaterModule;
44
 import com.dmdirc.updater.UpdaterModule;
45
 import com.dmdirc.util.LoggingExecutorService;
45
 import com.dmdirc.util.LoggingExecutorService;
46
 import com.dmdirc.util.io.Downloader;
46
 import com.dmdirc.util.io.Downloader;
47
+import com.dmdirc.util.system.SystemInfo;
47
 import dagger.Module;
48
 import dagger.Module;
48
 import dagger.ObjectGraph;
49
 import dagger.ObjectGraph;
49
 import dagger.Provides;
50
 import dagger.Provides;
75
     /** The object graph to inject where necessary. */
76
     /** The object graph to inject where necessary. */
76
     private ObjectGraph objectGraph;
77
     private ObjectGraph objectGraph;
77
 
78
 
79
+    @Provides
80
+    @Singleton
81
+    public SystemInfo getSystemInfo() {
82
+        return new SystemInfo();
83
+    }
84
+
78
     @Provides
85
     @Provides
79
     public ConnectionManager getConnectionManager(final ServerManager serverManager) {
86
     public ConnectionManager getConnectionManager(final ServerManager serverManager) {
80
         return serverManager;
87
         return serverManager;

+ 1
- 1
src/main/java/com/dmdirc/LauncherUtils.java View File

20
 import com.dmdirc.commandline.BaseDirectoryLocator;
20
 import com.dmdirc.commandline.BaseDirectoryLocator;
21
 import com.dmdirc.commandline.CommandLineParser;
21
 import com.dmdirc.commandline.CommandLineParser;
22
 import com.dmdirc.updater.Version;
22
 import com.dmdirc.updater.Version;
23
-import com.dmdirc.util.SystemInfo;
23
+import com.dmdirc.util.system.SystemInfo;
24
 
24
 
25
 /**
25
 /**
26
  * Utility class to help launcher interface with client.
26
  * Utility class to help launcher interface with client.

+ 1
- 1
src/main/java/com/dmdirc/Main.java View File

27
 import com.dmdirc.interfaces.ConnectionManager;
27
 import com.dmdirc.interfaces.ConnectionManager;
28
 import com.dmdirc.events.eventbus.EventBus;
28
 import com.dmdirc.events.eventbus.EventBus;
29
 import com.dmdirc.interfaces.Migrator;
29
 import com.dmdirc.interfaces.Migrator;
30
-import com.dmdirc.interfaces.SystemLifecycleComponent;
30
+import com.dmdirc.util.system.SystemLifecycleComponent;
31
 import com.dmdirc.interfaces.config.IdentityController;
31
 import com.dmdirc.interfaces.config.IdentityController;
32
 import com.dmdirc.interfaces.ui.UIController;
32
 import com.dmdirc.interfaces.ui.UIController;
33
 import com.dmdirc.logger.DMDircExceptionHandler;
33
 import com.dmdirc.logger.DMDircExceptionHandler;

+ 1
- 1
src/main/java/com/dmdirc/SystemLifecycleController.java View File

22
 import com.dmdirc.interfaces.ConnectionManager;
22
 import com.dmdirc.interfaces.ConnectionManager;
23
 import com.dmdirc.events.eventbus.EventBus;
23
 import com.dmdirc.events.eventbus.EventBus;
24
 import com.dmdirc.interfaces.LifecycleController;
24
 import com.dmdirc.interfaces.LifecycleController;
25
-import com.dmdirc.interfaces.SystemLifecycleComponent;
25
+import com.dmdirc.util.system.SystemLifecycleComponent;
26
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
26
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
27
 import com.dmdirc.interfaces.config.IdentityController;
27
 import com.dmdirc.interfaces.config.IdentityController;
28
 
28
 

+ 1
- 1
src/main/java/com/dmdirc/commandline/BaseDirectoryLocator.java View File

17
 
17
 
18
 package com.dmdirc.commandline;
18
 package com.dmdirc.commandline;
19
 
19
 
20
-import com.dmdirc.util.SystemInfo;
20
+import com.dmdirc.util.system.SystemInfo;
21
 
21
 
22
 import java.io.File;
22
 import java.io.File;
23
 
23
 

+ 1
- 1
src/main/java/com/dmdirc/commandline/CommandLineParser.java View File

21
 import com.dmdirc.interfaces.ConnectionManager;
21
 import com.dmdirc.interfaces.ConnectionManager;
22
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
22
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
23
 import com.dmdirc.util.InvalidURIException;
23
 import com.dmdirc.util.InvalidURIException;
24
-import com.dmdirc.util.SystemInfo;
24
+import com.dmdirc.util.system.SystemInfo;
25
 import com.dmdirc.util.URIParser;
25
 import com.dmdirc.util.URIParser;
26
 
26
 
27
 import java.io.File;
27
 import java.io.File;

+ 1
- 1
src/main/java/com/dmdirc/commandparser/aliases/AliasLifecycleManager.java View File

17
 
17
 
18
 package com.dmdirc.commandparser.aliases;
18
 package com.dmdirc.commandparser.aliases;
19
 
19
 
20
-import com.dmdirc.interfaces.SystemLifecycleComponent;
20
+import com.dmdirc.util.system.SystemLifecycleComponent;
21
 
21
 
22
 import javax.inject.Inject;
22
 import javax.inject.Inject;
23
 import javax.inject.Singleton;
23
 import javax.inject.Singleton;

+ 1
- 1
src/main/java/com/dmdirc/commandparser/aliases/AliasesModule.java View File

20
 import com.dmdirc.commandline.CommandLineOptionsModule.Directory;
20
 import com.dmdirc.commandline.CommandLineOptionsModule.Directory;
21
 import com.dmdirc.commandline.CommandLineOptionsModule.DirectoryType;
21
 import com.dmdirc.commandline.CommandLineOptionsModule.DirectoryType;
22
 import com.dmdirc.interfaces.Migrator;
22
 import com.dmdirc.interfaces.Migrator;
23
-import com.dmdirc.interfaces.SystemLifecycleComponent;
23
+import com.dmdirc.util.system.SystemLifecycleComponent;
24
 
24
 
25
 import java.nio.file.Path;
25
 import java.nio.file.Path;
26
 
26
 

+ 1
- 1
src/main/java/com/dmdirc/commandparser/auto/AutoCommandLifecycleManager.java View File

17
 
17
 
18
 package com.dmdirc.commandparser.auto;
18
 package com.dmdirc.commandparser.auto;
19
 
19
 
20
-import com.dmdirc.interfaces.SystemLifecycleComponent;
20
+import com.dmdirc.util.system.SystemLifecycleComponent;
21
 
21
 
22
 import javax.inject.Inject;
22
 import javax.inject.Inject;
23
 import javax.inject.Singleton;
23
 import javax.inject.Singleton;

+ 1
- 1
src/main/java/com/dmdirc/commandparser/auto/AutoCommandModule.java View File

18
 package com.dmdirc.commandparser.auto;
18
 package com.dmdirc.commandparser.auto;
19
 
19
 
20
 import com.dmdirc.interfaces.Migrator;
20
 import com.dmdirc.interfaces.Migrator;
21
-import com.dmdirc.interfaces.SystemLifecycleComponent;
21
+import com.dmdirc.util.system.SystemLifecycleComponent;
22
 
22
 
23
 import java.nio.file.Path;
23
 import java.nio.file.Path;
24
 
24
 

+ 1
- 1
src/main/java/com/dmdirc/config/profiles/ProfileManager.java View File

20
 import com.dmdirc.events.ProfileAddedEvent;
20
 import com.dmdirc.events.ProfileAddedEvent;
21
 import com.dmdirc.events.ProfileDeletedEvent;
21
 import com.dmdirc.events.ProfileDeletedEvent;
22
 import com.dmdirc.events.eventbus.EventBus;
22
 import com.dmdirc.events.eventbus.EventBus;
23
-import com.dmdirc.util.SystemInfo;
23
+import com.dmdirc.util.system.SystemInfo;
24
 
24
 
25
 import com.google.common.collect.Iterables;
25
 import com.google.common.collect.Iterables;
26
 import com.google.common.collect.Lists;
26
 import com.google.common.collect.Lists;

+ 1
- 1
src/main/java/com/dmdirc/config/profiles/ProfileManagerLifeCycleManager.java View File

17
 
17
 
18
 package com.dmdirc.config.profiles;
18
 package com.dmdirc.config.profiles;
19
 
19
 
20
-import com.dmdirc.interfaces.SystemLifecycleComponent;
20
+import com.dmdirc.util.system.SystemLifecycleComponent;
21
 
21
 
22
 import javax.inject.Inject;
22
 import javax.inject.Inject;
23
 import javax.inject.Singleton;
23
 import javax.inject.Singleton;

+ 1
- 1
src/main/java/com/dmdirc/config/profiles/ProfilesModule.java View File

19
 
19
 
20
 import com.dmdirc.commandline.CommandLineOptionsModule;
20
 import com.dmdirc.commandline.CommandLineOptionsModule;
21
 import com.dmdirc.interfaces.Migrator;
21
 import com.dmdirc.interfaces.Migrator;
22
-import com.dmdirc.interfaces.SystemLifecycleComponent;
22
+import com.dmdirc.util.system.SystemLifecycleComponent;
23
 
23
 
24
 import java.nio.file.Path;
24
 import java.nio.file.Path;
25
 
25
 

+ 1
- 1
src/main/java/com/dmdirc/plugins/PluginEventFormatManager.java View File

21
 import com.dmdirc.events.PluginLoadedEvent;
21
 import com.dmdirc.events.PluginLoadedEvent;
22
 import com.dmdirc.events.PluginUnloadedEvent;
22
 import com.dmdirc.events.PluginUnloadedEvent;
23
 import com.dmdirc.events.eventbus.EventBus;
23
 import com.dmdirc.events.eventbus.EventBus;
24
-import com.dmdirc.interfaces.SystemLifecycleComponent;
24
+import com.dmdirc.util.system.SystemLifecycleComponent;
25
 import com.dmdirc.ui.messages.ColourManager;
25
 import com.dmdirc.ui.messages.ColourManager;
26
 import com.dmdirc.ui.messages.EventFormatProvider;
26
 import com.dmdirc.ui.messages.EventFormatProvider;
27
 import com.dmdirc.ui.messages.MultiEventFormatProvider;
27
 import com.dmdirc.ui.messages.MultiEventFormatProvider;

+ 1
- 1
src/main/java/com/dmdirc/plugins/PluginModule.java View File

18
 package com.dmdirc.plugins;
18
 package com.dmdirc.plugins;
19
 
19
 
20
 import com.dmdirc.events.eventbus.EventBus;
20
 import com.dmdirc.events.eventbus.EventBus;
21
-import com.dmdirc.interfaces.SystemLifecycleComponent;
21
+import com.dmdirc.util.system.SystemLifecycleComponent;
22
 import com.dmdirc.interfaces.config.IdentityController;
22
 import com.dmdirc.interfaces.config.IdentityController;
23
 import com.dmdirc.updater.manager.UpdateManager;
23
 import com.dmdirc.updater.manager.UpdateManager;
24
 
24
 

+ 1
- 1
src/test/java/com/dmdirc/config/profiles/ProfileManagerTest.java View File

25
 import com.dmdirc.events.ProfileAddedEvent;
25
 import com.dmdirc.events.ProfileAddedEvent;
26
 import com.dmdirc.events.ProfileDeletedEvent;
26
 import com.dmdirc.events.ProfileDeletedEvent;
27
 import com.dmdirc.events.eventbus.EventBus;
27
 import com.dmdirc.events.eventbus.EventBus;
28
-import com.dmdirc.util.SystemInfo;
28
+import com.dmdirc.util.system.SystemInfo;
29
 
29
 
30
 import com.google.common.collect.Lists;
30
 import com.google.common.collect.Lists;
31
 
31
 

Loading…
Cancel
Save