[geode] 04/04: GEODE-8137 - Implement loadService. (#5136)

2020-05-22 Thread udo
This is an automated email from the ASF dual-hosted git repository.

udo pushed a commit to branch feature/GEODE-8067
in repository https://gitbox.apache.org/repos/asf/geode.git

commit e98d2a0f2ab3794c3e770bda0ad446e5ac4d8bd6
Author: Patrick Johnson 
AuthorDate: Fri May 22 07:31:59 2020 -0700

GEODE-8137 - Implement loadService. (#5136)
---
 .../integrationTest/resources/assembly_content.txt |  2 +-
 .../geode/services/module/ModuleService.java   | 18 
 geode-modules/build.gradle |  3 +
 .../services/module/impl/GeodeModuleLoader.java|  2 +-
 ...uleService.java => JBossModuleServiceImpl.java} | 57 +++--
 .../java/org/apache/geode/InvalidService.java} |  2 +-
 .../java/org/apache/geode/TestService.java}|  3 +-
 ...ceTest.java => JBossModuleServiceImplTest.java} | 95 +-
 .../module1/java/org/apache/geode/Module1.java |  6 +-
 .../META-INF/services/org.apache.geode.TestService |  1 +
 .../apache/geode}/Module2.java |  6 +-
 .../META-INF/services/org.apache.geode.TestService |  1 +
 12 files changed, 182 insertions(+), 14 deletions(-)

diff --git a/geode-assembly/src/integrationTest/resources/assembly_content.txt 
b/geode-assembly/src/integrationTest/resources/assembly_content.txt
index f03ab5b..08d0a20 100644
--- a/geode-assembly/src/integrationTest/resources/assembly_content.txt
+++ b/geode-assembly/src/integrationTest/resources/assembly_content.txt
@@ -969,7 +969,7 @@ 
javadoc/org/apache/geode/services/module/ModuleDescriptor.Builder.html
 javadoc/org/apache/geode/services/module/ModuleDescriptor.html
 javadoc/org/apache/geode/services/module/ModuleService.html
 javadoc/org/apache/geode/services/module/impl/GeodeModuleLoader.html
-javadoc/org/apache/geode/services/module/impl/JBossModuleService.html
+javadoc/org/apache/geode/services/module/impl/JBossModuleServiceImpl.html
 javadoc/org/apache/geode/services/module/impl/package-frame.html
 javadoc/org/apache/geode/services/module/impl/package-summary.html
 javadoc/org/apache/geode/services/module/impl/package-tree.html
diff --git 
a/geode-common-services/src/main/java/org/apache/geode/services/module/ModuleService.java
 
b/geode-common-services/src/main/java/org/apache/geode/services/module/ModuleService.java
index cd295c0..81361be 100644
--- 
a/geode-common-services/src/main/java/org/apache/geode/services/module/ModuleService.java
+++ 
b/geode-common-services/src/main/java/org/apache/geode/services/module/ModuleService.java
@@ -15,6 +15,8 @@
 
 package org.apache.geode.services.module;
 
+import java.util.List;
+
 import org.apache.geode.annotations.Experimental;
 
 /**
@@ -33,4 +35,20 @@ public interface ModuleService {
* @return true on success, false if the module could not be loaded.
*/
   boolean loadModule(ModuleDescriptor moduleDescriptor);
+
+  /**
+   * Unloads a previously loaded module.
+   *
+   * @param moduleName name of the module to be unloaded.
+   * @return true on success, false if the module could not be unloaded.
+   */
+  boolean unloadModule(String moduleName);
+
+  /**
+   * Loads and returns a service instance for an interface.
+   *
+   * @param service interface type to load and instantiate an implementation 
of.
+   * @return An instance of an implementation of service
+   */
+   List loadService(Class service);
 }
diff --git a/geode-modules/build.gradle b/geode-modules/build.gradle
index 319c0bd..17572a8 100644
--- a/geode-modules/build.gradle
+++ b/geode-modules/build.gradle
@@ -94,4 +94,7 @@ dependencies {
 
 implementation('org.apache.logging.log4j:log4j-core')
 compile('org.jboss.modules:jboss-modules')
+
+module1Compile(sourceSets.test.output)
+module2Compile(sourceSets.test.output)
 }
diff --git 
a/geode-modules/src/main/java/org/apache/geode/services/module/impl/GeodeModuleLoader.java
 
b/geode-modules/src/main/java/org/apache/geode/services/module/impl/GeodeModuleLoader.java
index 913df0c..a9d65c9 100644
--- 
a/geode-modules/src/main/java/org/apache/geode/services/module/impl/GeodeModuleLoader.java
+++ 
b/geode-modules/src/main/java/org/apache/geode/services/module/impl/GeodeModuleLoader.java
@@ -27,7 +27,7 @@ import org.jboss.modules.ModuleSpec;
 import org.apache.geode.annotations.Experimental;
 
 /**
- * {@link ModuleLoader} for use by {@link JBossModuleService}.
+ * {@link ModuleLoader} for use by {@link JBossModuleServiceImpl}.
  */
 @Experimental
 public class GeodeModuleLoader extends DelegatingModuleLoader {
diff --git 
a/geode-modules/src/main/java/org/apache/geode/services/module/impl/JBossModuleService.java
 
b/geode-modules/src/main/java/org/apache/geode/services/module/impl/JBossModuleServiceImpl.java
similarity index 68%
rename from 
geode-modules/src/main/java/org/apache/geode/services/module/impl/JBossModuleService.java
rename to 
geode-modules/src/main/java/org/apache/geode/services/module/impl/JBossModuleServiceImpl.java
index 9715709..c7be4c5 100644
--- 
a/geode-modules/src/m

[geode] 04/04: GEODE-8137 - Implement loadService. (#5136)

2020-05-22 Thread udo
This is an automated email from the ASF dual-hosted git repository.

udo pushed a commit to branch feature/GEODE-8067
in repository https://gitbox.apache.org/repos/asf/geode.git

commit e98d2a0f2ab3794c3e770bda0ad446e5ac4d8bd6
Author: Patrick Johnson 
AuthorDate: Fri May 22 07:31:59 2020 -0700

GEODE-8137 - Implement loadService. (#5136)
---
 .../integrationTest/resources/assembly_content.txt |  2 +-
 .../geode/services/module/ModuleService.java   | 18 
 geode-modules/build.gradle |  3 +
 .../services/module/impl/GeodeModuleLoader.java|  2 +-
 ...uleService.java => JBossModuleServiceImpl.java} | 57 +++--
 .../java/org/apache/geode/InvalidService.java} |  2 +-
 .../java/org/apache/geode/TestService.java}|  3 +-
 ...ceTest.java => JBossModuleServiceImplTest.java} | 95 +-
 .../module1/java/org/apache/geode/Module1.java |  6 +-
 .../META-INF/services/org.apache.geode.TestService |  1 +
 .../apache/geode}/Module2.java |  6 +-
 .../META-INF/services/org.apache.geode.TestService |  1 +
 12 files changed, 182 insertions(+), 14 deletions(-)

diff --git a/geode-assembly/src/integrationTest/resources/assembly_content.txt 
b/geode-assembly/src/integrationTest/resources/assembly_content.txt
index f03ab5b..08d0a20 100644
--- a/geode-assembly/src/integrationTest/resources/assembly_content.txt
+++ b/geode-assembly/src/integrationTest/resources/assembly_content.txt
@@ -969,7 +969,7 @@ 
javadoc/org/apache/geode/services/module/ModuleDescriptor.Builder.html
 javadoc/org/apache/geode/services/module/ModuleDescriptor.html
 javadoc/org/apache/geode/services/module/ModuleService.html
 javadoc/org/apache/geode/services/module/impl/GeodeModuleLoader.html
-javadoc/org/apache/geode/services/module/impl/JBossModuleService.html
+javadoc/org/apache/geode/services/module/impl/JBossModuleServiceImpl.html
 javadoc/org/apache/geode/services/module/impl/package-frame.html
 javadoc/org/apache/geode/services/module/impl/package-summary.html
 javadoc/org/apache/geode/services/module/impl/package-tree.html
diff --git 
a/geode-common-services/src/main/java/org/apache/geode/services/module/ModuleService.java
 
b/geode-common-services/src/main/java/org/apache/geode/services/module/ModuleService.java
index cd295c0..81361be 100644
--- 
a/geode-common-services/src/main/java/org/apache/geode/services/module/ModuleService.java
+++ 
b/geode-common-services/src/main/java/org/apache/geode/services/module/ModuleService.java
@@ -15,6 +15,8 @@
 
 package org.apache.geode.services.module;
 
+import java.util.List;
+
 import org.apache.geode.annotations.Experimental;
 
 /**
@@ -33,4 +35,20 @@ public interface ModuleService {
* @return true on success, false if the module could not be loaded.
*/
   boolean loadModule(ModuleDescriptor moduleDescriptor);
+
+  /**
+   * Unloads a previously loaded module.
+   *
+   * @param moduleName name of the module to be unloaded.
+   * @return true on success, false if the module could not be unloaded.
+   */
+  boolean unloadModule(String moduleName);
+
+  /**
+   * Loads and returns a service instance for an interface.
+   *
+   * @param service interface type to load and instantiate an implementation 
of.
+   * @return An instance of an implementation of service
+   */
+   List loadService(Class service);
 }
diff --git a/geode-modules/build.gradle b/geode-modules/build.gradle
index 319c0bd..17572a8 100644
--- a/geode-modules/build.gradle
+++ b/geode-modules/build.gradle
@@ -94,4 +94,7 @@ dependencies {
 
 implementation('org.apache.logging.log4j:log4j-core')
 compile('org.jboss.modules:jboss-modules')
+
+module1Compile(sourceSets.test.output)
+module2Compile(sourceSets.test.output)
 }
diff --git 
a/geode-modules/src/main/java/org/apache/geode/services/module/impl/GeodeModuleLoader.java
 
b/geode-modules/src/main/java/org/apache/geode/services/module/impl/GeodeModuleLoader.java
index 913df0c..a9d65c9 100644
--- 
a/geode-modules/src/main/java/org/apache/geode/services/module/impl/GeodeModuleLoader.java
+++ 
b/geode-modules/src/main/java/org/apache/geode/services/module/impl/GeodeModuleLoader.java
@@ -27,7 +27,7 @@ import org.jboss.modules.ModuleSpec;
 import org.apache.geode.annotations.Experimental;
 
 /**
- * {@link ModuleLoader} for use by {@link JBossModuleService}.
+ * {@link ModuleLoader} for use by {@link JBossModuleServiceImpl}.
  */
 @Experimental
 public class GeodeModuleLoader extends DelegatingModuleLoader {
diff --git 
a/geode-modules/src/main/java/org/apache/geode/services/module/impl/JBossModuleService.java
 
b/geode-modules/src/main/java/org/apache/geode/services/module/impl/JBossModuleServiceImpl.java
similarity index 68%
rename from 
geode-modules/src/main/java/org/apache/geode/services/module/impl/JBossModuleService.java
rename to 
geode-modules/src/main/java/org/apache/geode/services/module/impl/JBossModuleServiceImpl.java
index 9715709..c7be4c5 100644
--- 
a/geode-modules/src/m