You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by je...@apache.org on 2019/01/23 00:31:29 UTC

[geode] branch develop updated: GEODE-6280: Create new public module for the Management API (#3083)

This is an automated email from the ASF dual-hosted git repository.

jensdeppe pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new 9bb8579  GEODE-6280: Create new public module for the Management API (#3083)
9bb8579 is described below

commit 9bb8579df6f9669fe45fce96b6c6b617598f141d
Author: Jens Deppe <jd...@pivotal.io>
AuthorDate: Tue Jan 22 16:31:20 2019 -0800

    GEODE-6280: Create new public module for the Management API (#3083)
    
    - This moves the classes under `org.apache.geode.cache.configuration` package
      into a public module: `geode-managament`. The intent is that this module
      will have no dependencies to `geode-core` but will allow consumers to perform
      administration tasks (creating regions, etc.).
    - `geode-core` will now depend on both `geode-management` as well as
      `geode-common` (transitively). Suggestions on how to improve these new
      dependencies are welcome.
    
    Signed-off-by: Peter Tran <pt...@pivotal.io>
    Signed-off-by: Aditya Anchuri <aa...@pivotal.io>
---
 .../release/session/bin/modify_war                 |   4 +
 geode-assembly/build.gradle                        |   1 +
 .../apache/geode/session/tests/TomcatInstall.java  |   5 +-
 .../integrationTest/resources/assembly_content.txt |   1 +
 .../resources/dependency_classpath.txt             | 107 ++++----
 geode-common/build.gradle                          |   1 -
 .../org/apache/geode/cache/ExpirationAction.java   |   0
 .../java/org/apache/geode/lang/Identifiable.java   |   0
 geode-core/build.gradle                            |   3 +-
 .../java/org/apache/geode/cache/Declarable.java    |   1 +
 .../cli/functions/RegionAlterFunction.java         |   9 +-
 .../domain/DeclarableTypeInstantiator.java         |  72 ++++++
 .../internal/cli/domain/ClassNameTest.java         |   8 +-
 .../cli/functions/RegionAlterFunctionTest.java     |  30 ++-
 .../domain/DeclarableTypeInstantiatorTest.java     |  88 +++++++
 geode-core/src/test/resources/expected-pom.xml     |   6 +
 {geode-common => geode-management}/build.gradle    |  16 +-
 .../geode/cache/configuration/CacheConfig.java     |  40 +--
 .../geode/cache/configuration/CacheElement.java    |   0
 .../configuration/CacheTransactionManagerType.java |   0
 .../geode/cache/configuration/ClassNameType.java   |   0
 .../geode/cache/configuration/DeclarableType.java  |  35 +--
 .../geode/cache/configuration/DiskDirType.java     |   0
 .../geode/cache/configuration/DiskDirsType.java    |   0
 .../geode/cache/configuration/DiskStoreType.java   |   0
 .../configuration/DynamicRegionFactoryType.java    |   0
 .../configuration/EnumActionDestroyOverflow.java   |   0
 .../cache/configuration/EnumReadableWritable.java  |   0
 .../cache/configuration/FunctionServiceType.java   |   0
 .../cache/configuration/JndiBindingsType.java      |  12 +-
 .../geode/cache/configuration/ObjectType.java      |  24 +-
 .../geode/cache/configuration/ParameterType.java   |   5 +
 .../apache/geode/cache/configuration/PdxType.java  |   0
 .../apache/geode/cache/configuration/PoolType.java |  12 +-
 .../configuration/RegionAttributesDataPolicy.java  |   0
 .../RegionAttributesIndexUpdateType.java           |   0
 .../configuration/RegionAttributesMirrorType.java  |   0
 .../cache/configuration/RegionAttributesScope.java |   0
 .../cache/configuration/RegionAttributesType.java  |  12 +-
 .../geode/cache/configuration/RegionConfig.java    |  10 +-
 .../cache/configuration/ResourceManagerType.java   |   0
 .../SerializationRegistrationType.java             |  12 +-
 .../geode/cache/configuration/ServerType.java      |   0
 .../geode/cache/configuration/XSDRootElement.java  |   0
 .../geode/cache/configuration/package-info.java    |   0
 .../geode/internal/config/VersionAdapter.java      |   0
 .../internal/api/ClusterManagementResult.java      |   0
 .../internal/api/ClusterManagementService.java     |   0
 .../geode/management/internal/api/Status.java      |   2 -
 .../management/internal/cli/domain/ClassName.java  |  19 --
 .../src/test/resources/expected-pom.xml            | 275 +--------------------
 gradle/geode-dependency-management.gradle          |   2 +-
 settings.gradle                                    |   1 +
 53 files changed, 352 insertions(+), 461 deletions(-)

diff --git a/extensions/geode-modules-assembly/release/session/bin/modify_war b/extensions/geode-modules-assembly/release/session/bin/modify_war
index 978e5cf..aa7f71a 100755
--- a/extensions/geode-modules-assembly/release/session/bin/modify_war
+++ b/extensions/geode-modules-assembly/release/session/bin/modify_war
@@ -88,6 +88,8 @@ WHERE <args>:
                         geode-modules-session-internal.jar
                         geode-core.jar
                         geode-json.jar
+                        geode-common.jar
+                        geode-management.jar
                         antlr.jar
                         log4j-core.jar
                         log4j-api.jar
@@ -261,6 +263,8 @@ SESSION_JAR="${LIB_DIR}/geode-modules-session-${VERSION}.jar"
 declare -a OTHER_JARS
 OTHER_JARS=(${GEODE}/lib/geode-core-${VERSION}.jar \
     ${GEODE}/lib/geode-json-${VERSION}.jar \
+    ${GEODE}/lib/geode-common-${VERSION}.jar \
+    ${GEODE}/lib/geode-management-${VERSION}.jar \
     ${GEODE}/lib/antlr-@ANTLR_VERSION@.jar \
     ${GEODE}/lib/log4j-core-@LOG4J_VERSION@.jar \
     ${GEODE}/lib/log4j-api-@LOG4J_VERSION@.jar \
diff --git a/geode-assembly/build.gradle b/geode-assembly/build.gradle
index 2feef3b..78f43c5 100755
--- a/geode-assembly/build.gradle
+++ b/geode-assembly/build.gradle
@@ -144,6 +144,7 @@ dependencies {
   archives project(':geode-web')
   archives project(':geode-web-api')
   archives project(':geode-web-management')
+  archives project(':geode-management')
   archives project(':geode-wan')
   archives project(':geode-cq')
   archives project(':geode-rebalancer')
diff --git a/geode-assembly/geode-assembly-test/src/main/java/org/apache/geode/session/tests/TomcatInstall.java b/geode-assembly/geode-assembly-test/src/main/java/org/apache/geode/session/tests/TomcatInstall.java
index 6e56843..8d5da4c 100644
--- a/geode-assembly/geode-assembly-test/src/main/java/org/apache/geode/session/tests/TomcatInstall.java
+++ b/geode-assembly/geode-assembly-test/src/main/java/org/apache/geode/session/tests/TomcatInstall.java
@@ -90,8 +90,9 @@ public class TomcatInstall extends ContainerInstall {
   }
 
   private static final String[] tomcatRequiredJars =
-      {"antlr", "commons-io", "commons-lang", "commons-validator", "fastutil", "geode-core",
-          "javax.transaction-api", "jgroups", "log4j-api", "log4j-core", "log4j-jul", "shiro-core"};
+      {"antlr", "commons-io", "commons-lang", "commons-validator", "fastutil", "geode-common",
+          "geode-core", "geode-management", "javax.transaction-api", "jgroups", "log4j-api",
+          "log4j-core", "log4j-jul", "shiro-core"};
 
   private final TomcatVersion version;
 
diff --git a/geode-assembly/src/integrationTest/resources/assembly_content.txt b/geode-assembly/src/integrationTest/resources/assembly_content.txt
index 307a2ba..53ae678 100644
--- a/geode-assembly/src/integrationTest/resources/assembly_content.txt
+++ b/geode-assembly/src/integrationTest/resources/assembly_content.txt
@@ -885,6 +885,7 @@ lib/geode-dependencies.jar
 lib/geode-jca-0.0.0.rar
 lib/geode-json-0.0.0.jar
 lib/geode-lucene-0.0.0.jar
+lib/geode-management-0.0.0.jar
 lib/geode-old-client-support-0.0.0.jar
 lib/geode-protobuf-0.0.0.jar
 lib/geode-protobuf-messages-0.0.0.jar
diff --git a/geode-assembly/src/integrationTest/resources/dependency_classpath.txt b/geode-assembly/src/integrationTest/resources/dependency_classpath.txt
index 89d1977..6f374e9 100644
--- a/geode-assembly/src/integrationTest/resources/dependency_classpath.txt
+++ b/geode-assembly/src/integrationTest/resources/dependency_classpath.txt
@@ -1,75 +1,76 @@
+HikariCP-3.2.0.jar
+antlr-2.7.7.jar
+classgraph-4.0.6.jar
+commons-beanutils-1.9.3.jar
+commons-codec-1.10.jar
+commons-collections-3.2.2.jar
+commons-io-2.6.jar
+commons-lang3-3.8.1.jar
+commons-logging-1.2.jar
+commons-math3-3.2.jar
+commons-validator-1.6.jar
+fastutil-8.2.2.jar
+geo-0.7.1.jar
 geode-common-0.0.0.jar
-geode-json-0.0.0.jar
-geode-core-0.0.0.jar
 geode-connectors-0.0.0.jar
+geode-core-0.0.0.jar
+geode-cq-0.0.0.jar
+geode-json-0.0.0.jar
 geode-lucene-0.0.0.jar
+geode-management-0.0.0.jar
 geode-old-client-support-0.0.0.jar
 geode-protobuf-0.0.0.jar
 geode-protobuf-messages-0.0.0.jar
-geode-wan-0.0.0.jar
-geode-cq-0.0.0.jar
 geode-rebalancer-0.0.0.jar
-antlr-2.7.7.jar
-jgroups-3.6.14.Final.jar
-jackson-databind-2.9.7.jar
+geode-wan-0.0.0.jar
+grumpy-core-0.2.2.jar
+istack-commons-runtime-2.2.jar
 jackson-annotations-2.9.7.jar
-spring-shell-1.2.0.RELEASE.jar
-commons-io-2.6.jar
-commons-validator-1.6.jar
+jackson-core-2.9.7.jar
+jackson-databind-2.9.7.jar
+jansi-1.17.1.jar
 javax.activation-1.2.0.jar
+javax.activation-api-1.2.0.jar
+javax.resource-api-1.7.1.jar
+javax.servlet-api-3.1.0.jar
+javax.transaction-api-1.3.jar
 jaxb-api-2.3.1.jar
 jaxb-impl-2.3.1.jar
-commons-lang3-3.8.1.jar
-netty-all-4.1.31.Final.jar
-fastutil-8.2.2.jar
-javax.resource-api-1.7.1.jar
+jetty-http-9.4.12.v20180830.jar
+jetty-io-9.4.12.v20180830.jar
+jetty-security-9.4.12.v20180830.jar
+jetty-server-9.4.12.v20180830.jar
+jetty-servlet-9.4.12.v20180830.jar
+jetty-util-9.4.12.v20180830.jar
+jetty-webapp-9.4.12.v20180830.jar
+jetty-xml-9.4.12.v20180830.jar
+jgroups-3.6.14.Final.jar
+jline-2.12.jar
 jna-4.1.0.jar
 jopt-simple-5.0.4.jar
-log4j-slf4j-impl-2.11.1.jar
+log4j-api-2.11.1.jar
 log4j-core-2.11.1.jar
 log4j-jcl-2.11.1.jar
 log4j-jul-2.11.1.jar
-log4j-api-2.11.1.jar
-geo-0.7.1.jar
-jetty-webapp-9.4.12.v20180830.jar
-spring-core-4.3.20.RELEASE.jar
-snappy-0.4.jar
-shiro-core-1.4.0.jar
-classgraph-4.0.6.jar
+log4j-slf4j-impl-2.11.1.jar
+lucene-analyzers-common-6.6.2.jar
+lucene-analyzers-phonetic-6.6.2.jar
+lucene-core-6.6.2.jar
+lucene-queries-6.6.2.jar
+lucene-queryparser-6.6.2.jar
+netty-all-4.1.31.Final.jar
+protobuf-java-3.6.1.jar
 rmiio-2.1.2.jar
-istack-commons-runtime-2.2.jar
-jansi-1.17.1.jar
 shiro-cache-1.4.0.jar
-shiro-crypto-hash-1.4.0.jar
-shiro-crypto-cipher-1.4.0.jar
-shiro-config-ogdl-1.4.0.jar
 shiro-config-core-1.4.0.jar
-shiro-event-1.4.0.jar
+shiro-config-ogdl-1.4.0.jar
+shiro-core-1.4.0.jar
+shiro-crypto-cipher-1.4.0.jar
 shiro-crypto-core-1.4.0.jar
+shiro-crypto-hash-1.4.0.jar
+shiro-event-1.4.0.jar
 shiro-lang-1.4.0.jar
 slf4j-api-1.7.25.jar
-jackson-core-2.9.7.jar
-commons-beanutils-1.9.3.jar
-commons-logging-1.2.jar
-commons-collections-3.2.2.jar
-javax.activation-api-1.2.0.jar
-javax.transaction-api-1.3.jar
-grumpy-core-0.2.2.jar
-jetty-xml-9.4.12.v20180830.jar
-jetty-servlet-9.4.12.v20180830.jar
-jline-2.12.jar
-commons-math3-3.2.jar
-jetty-security-9.4.12.v20180830.jar
-jetty-server-9.4.12.v20180830.jar
-jetty-http-9.4.12.v20180830.jar
-jetty-io-9.4.12.v20180830.jar
-jetty-util-9.4.12.v20180830.jar
-javax.servlet-api-3.1.0.jar
-HikariCP-3.2.0.jar
-lucene-analyzers-phonetic-6.6.2.jar
-lucene-analyzers-common-6.6.2.jar
-lucene-queryparser-6.6.2.jar
-lucene-core-6.6.2.jar
-lucene-queries-6.6.2.jar
-commons-codec-1.10.jar
-protobuf-java-3.6.1.jar
+snappy-0.4.jar
+spring-core-4.3.20.RELEASE.jar
+spring-shell-1.2.0.RELEASE.jar
diff --git a/geode-common/build.gradle b/geode-common/build.gradle
index 50fbd06..92f01b1 100755
--- a/geode-common/build.gradle
+++ b/geode-common/build.gradle
@@ -18,7 +18,6 @@
 apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
 apply from: "${project.projectDir}/../gradle/publish.gradle"
 
-
 dependencies {
   testCompile('junit:junit')
   testCompile('org.assertj:assertj-core')
diff --git a/geode-core/src/main/java/org/apache/geode/cache/ExpirationAction.java b/geode-common/src/main/java/org/apache/geode/cache/ExpirationAction.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/ExpirationAction.java
rename to geode-common/src/main/java/org/apache/geode/cache/ExpirationAction.java
diff --git a/geode-core/src/main/java/org/apache/geode/lang/Identifiable.java b/geode-common/src/main/java/org/apache/geode/lang/Identifiable.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/lang/Identifiable.java
rename to geode-common/src/main/java/org/apache/geode/lang/Identifiable.java
diff --git a/geode-core/build.gradle b/geode-core/build.gradle
index 3d1470d..a9d99b8 100755
--- a/geode-core/build.gradle
+++ b/geode-core/build.gradle
@@ -263,11 +263,10 @@ dependencies {
 
   compile(project(':geode-common'))
   compile(project(':geode-json'))
-
+  compile(project(':geode-management'))
 
   jcaAnnotationProcessor 'org.apache.logging.log4j:log4j-core'
 
-
   jcaCompile(sourceSets.main.output)
 
   jmhCompile('org.apache.logging.log4j:log4j-core')
diff --git a/geode-core/src/main/java/org/apache/geode/cache/Declarable.java b/geode-core/src/main/java/org/apache/geode/cache/Declarable.java
index c4822c6..3c22054 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/Declarable.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/Declarable.java
@@ -16,6 +16,7 @@ package org.apache.geode.cache;
 
 import java.util.Properties;
 
+
 /**
  * An object that can be described in a declarative caching XML file.
  *
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java
index e8e94bb..bd148d9 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java
@@ -38,6 +38,7 @@ import org.apache.geode.internal.cache.partitioned.PRLocallyDestroyedException;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.management.cli.CliFunction;
 import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.configuration.domain.DeclarableTypeInstantiator;
 
 /**
  * Function used by the 'alter region' gfsh command to alter a region on each member.
@@ -188,7 +189,7 @@ public class RegionAlterFunction extends CliFunction<RegionConfig> {
       // Add new cache listeners
       for (DeclarableType newCacheListener : newCacheListeners) {
         if (!newCacheListener.equals(DeclarableType.EMPTY)) {
-          mutator.addCacheListener(newCacheListener.newInstance(cache));
+          mutator.addCacheListener(DeclarableTypeInstantiator.newInstance(newCacheListener, cache));
         }
       }
       if (logger.isDebugEnabled()) {
@@ -201,7 +202,7 @@ public class RegionAlterFunction extends CliFunction<RegionConfig> {
       if (cacheLoader.equals(DeclarableType.EMPTY)) {
         mutator.setCacheLoader(null);
       } else {
-        mutator.setCacheLoader(cacheLoader.newInstance(cache));
+        mutator.setCacheLoader(DeclarableTypeInstantiator.newInstance(cacheLoader, cache));
       }
 
       if (logger.isDebugEnabled()) {
@@ -214,7 +215,7 @@ public class RegionAlterFunction extends CliFunction<RegionConfig> {
       if (cacheWriter.equals(DeclarableType.EMPTY)) {
         mutator.setCacheWriter(null);
       } else {
-        mutator.setCacheWriter(cacheWriter.newInstance(cache));
+        mutator.setCacheWriter(DeclarableTypeInstantiator.newInstance(cacheWriter, cache));
       }
 
       if (logger.isDebugEnabled()) {
@@ -254,7 +255,7 @@ public class RegionAlterFunction extends CliFunction<RegionConfig> {
       if (newCustomExpiry.equals(DeclarableType.EMPTY)) {
         mutator2.accept(null);
       } else {
-        mutator2.accept(newCustomExpiry.newInstance(cache));
+        mutator2.accept(DeclarableTypeInstantiator.newInstance(newCustomExpiry, cache));
       }
     }
 
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/domain/DeclarableTypeInstantiator.java b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/domain/DeclarableTypeInstantiator.java
new file mode 100644
index 0000000..3921dc8
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/domain/DeclarableTypeInstantiator.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.geode.management.internal.configuration.domain;
+
+import java.util.Properties;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.Declarable;
+import org.apache.geode.cache.configuration.DeclarableType;
+import org.apache.geode.cache.configuration.ObjectType;
+import org.apache.geode.cache.configuration.ParameterType;
+import org.apache.geode.internal.ClassPathLoader;
+import org.apache.geode.management.internal.cli.domain.ClassName;
+
+public abstract class DeclarableTypeInstantiator {
+
+  public static <T extends Declarable> T newInstance(DeclarableType declarableType, Cache cache) {
+    try {
+      Class<T> loadedClass =
+          (Class<T>) ClassPathLoader.getLatest().forName(declarableType.getClassName());
+      T declarable = loadedClass.newInstance();
+      Properties initProperties = new Properties();
+      for (ParameterType parameter : declarableType.getParameters()) {
+        initProperties.put(parameter.getName(), newInstance(parameter, cache));
+      }
+      declarable.initialize(cache, initProperties);
+      return declarable;
+    } catch (Exception e) {
+      throw new RuntimeException(
+          "Error instantiating class: <" + declarableType.getClassName() + ">", e);
+    }
+  }
+
+  public static <T> T newInstance(ObjectType objectType, Cache cache) {
+    if (objectType.getString() != null) {
+      return (T) objectType.getString();
+    }
+
+    if (objectType.getDeclarable() != null) {
+      return newInstance(objectType.getDeclarable(), cache);
+    }
+
+    return null;
+  }
+
+  public static <V> V newInstance(ClassName<?> type, Cache cache) {
+    try {
+      Class<V> loadedClass = (Class<V>) ClassPathLoader.getLatest().forName(type.getClassName());
+      V object = loadedClass.newInstance();
+      if (object instanceof Declarable) {
+        Declarable declarable = (Declarable) object;
+        declarable.initialize(cache, type.getInitProperties());
+        declarable.init(type.getInitProperties()); // for backwards compatibility
+      }
+      return object;
+    } catch (Exception e) {
+      throw new RuntimeException("Error instantiating class: <" + type.getClassName() + ">", e);
+    }
+  }
+}
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/domain/ClassNameTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/domain/ClassNameTest.java
index 9b985fc..9b533fc 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/domain/ClassNameTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/domain/ClassNameTest.java
@@ -22,6 +22,7 @@ import java.util.Properties;
 
 import org.junit.Test;
 
+import org.apache.geode.management.internal.configuration.domain.DeclarableTypeInstantiator;
 
 
 public class ClassNameTest {
@@ -44,7 +45,8 @@ public class ClassNameTest {
 
   @Test
   public void emptyCanNotInstantiate() {
-    assertThatThrownBy(() -> ClassName.EMPTY.newInstance(null)).isInstanceOf(RuntimeException.class)
+    assertThatThrownBy(() -> DeclarableTypeInstantiator.newInstance(ClassName.EMPTY, null))
+        .isInstanceOf(RuntimeException.class)
         .hasMessageContaining("Error instantiating class");
   }
 
@@ -100,7 +102,7 @@ public class ClassNameTest {
   @Test
   public void getInstance() {
     ClassName<String> klass = new ClassName("java.lang.String");
-    String s = klass.newInstance(null);
+    String s = DeclarableTypeInstantiator.newInstance(klass, null);
     assertThat(s.toString()).isEqualTo("");
   }
 
@@ -108,7 +110,7 @@ public class ClassNameTest {
   public void getInstanceWithProps() {
     String json = "{\"k\":\"v\"}";
     ClassName<MyCacheWriter> cacheWriter = new ClassName<>(MyCacheWriter.class.getName(), json);
-    MyCacheWriter obj = cacheWriter.newInstance(null);
+    MyCacheWriter obj = DeclarableTypeInstantiator.newInstance(cacheWriter, null);
     assertThat(obj.getProperties()).containsEntry("k", "v").containsOnlyKeys("k");
   }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunctionTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunctionTest.java
index 8f41f60..4a1492b 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunctionTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunctionTest.java
@@ -36,15 +36,18 @@ import org.mockito.ArgumentCaptor;
 
 import org.apache.geode.cache.AttributesMutator;
 import org.apache.geode.cache.CacheListener;
-import org.apache.geode.cache.CacheWriter;
 import org.apache.geode.cache.CustomExpiry;
+import org.apache.geode.cache.Declarable;
 import org.apache.geode.cache.EvictionAttributesMutator;
 import org.apache.geode.cache.ExpirationAction;
 import org.apache.geode.cache.ExpirationAttributes;
+import org.apache.geode.cache.Region;
 import org.apache.geode.cache.configuration.DeclarableType;
 import org.apache.geode.cache.configuration.RegionAttributesType;
 import org.apache.geode.cache.configuration.RegionConfig;
 import org.apache.geode.cache.execute.FunctionContext;
+import org.apache.geode.cache.util.CacheListenerAdapter;
+import org.apache.geode.cache.util.CacheWriterAdapter;
 import org.apache.geode.internal.cache.AbstractRegion;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.InternalCacheForClientAccess;
@@ -61,6 +64,19 @@ public class RegionAlterFunctionTest {
   private EvictionAttributesMutator evictionMutator;
   private AbstractRegion region;
 
+  public static class MyCustomExpiry implements CustomExpiry, Declarable {
+    @Override
+    public ExpirationAttributes getExpiry(Region.Entry entry) {
+      return null;
+    }
+  }
+
+  public static class MyCacheListener extends CacheListenerAdapter {
+  }
+
+  public static class MyCacheWriter extends CacheWriterAdapter {
+  }
+
   @Before
   public void setUp() throws Exception {
     function = spy(RegionAlterFunction.class);
@@ -179,7 +195,7 @@ public class RegionAlterFunctionTest {
         new RegionAttributesType.ExpirationAttributesType();
     regionAttributes.setEntryIdleTime(expiration);
     DeclarableType mockExpiry = mock(DeclarableType.class);
-    when(mockExpiry.newInstance(any())).thenReturn(mock(CustomExpiry.class));
+    when(mockExpiry.getClassName()).thenReturn(MyCustomExpiry.class.getName());
     expiration.setCustomExpiry(mockExpiry);
 
     function.alterRegion(cache, config);
@@ -232,16 +248,18 @@ public class RegionAlterFunctionTest {
   public void updateWithCacheListeners() {
     // suppose region has one cacheListener, and we want to replace the oldOne one with the new one
     CacheListener oldOne = mock(CacheListener.class);
-    CacheListener newOne = mock(CacheListener.class);
     when(region.getCacheListeners()).thenReturn(new CacheListener[] {oldOne});
 
     DeclarableType newCacheListenerType = mock(DeclarableType.class);
-    when(newCacheListenerType.newInstance(any())).thenReturn(newOne);
+    when(newCacheListenerType.getClassName()).thenReturn(MyCacheListener.class.getName());
     regionAttributes.getCacheListeners().add(newCacheListenerType);
 
+    ArgumentCaptor<CacheListener> argument = ArgumentCaptor.forClass(CacheListener.class);
+
     function.alterRegion(cache, config);
     verify(mutator).removeCacheListener(oldOne);
-    verify(mutator).addCacheListener(newOne);
+    verify(mutator).addCacheListener(argument.capture());
+    assertThat(argument.getValue()).isInstanceOf(MyCacheListener.class);
   }
 
   @Test
@@ -259,7 +277,7 @@ public class RegionAlterFunctionTest {
   @Test
   public void updateWithCacheWriter() {
     DeclarableType newCacheWriterDeclarable = mock(DeclarableType.class);
-    when(newCacheWriterDeclarable.newInstance(any())).thenReturn(mock(CacheWriter.class));
+    when(newCacheWriterDeclarable.getClassName()).thenReturn(MyCacheWriter.class.getName());
     regionAttributes.setCacheWriter(newCacheWriterDeclarable);
 
     function.alterRegion(cache, config);
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/configuration/domain/DeclarableTypeInstantiatorTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/configuration/domain/DeclarableTypeInstantiatorTest.java
new file mode 100644
index 0000000..0c9e1ca
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/configuration/domain/DeclarableTypeInstantiatorTest.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package org.apache.geode.management.internal.configuration.domain;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+
+import java.util.Properties;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.Declarable;
+import org.apache.geode.cache.configuration.DeclarableType;
+import org.apache.geode.cache.configuration.ParameterType;
+
+public class DeclarableTypeInstantiatorTest {
+
+  private Cache cache;
+
+  public static class MyDeclarable implements Declarable {
+    Properties props;
+    Cache cache;
+
+    @Override
+    public void init(Properties props) {
+      this.props = props;
+    }
+
+    @Override
+    public void initialize(Cache cache, Properties props) {
+      init(props);
+      this.cache = cache;
+    }
+  }
+
+  public static class MyOuterDeclarable extends MyDeclarable {
+  }
+
+  @Before
+  public void setup() {
+    cache = mock(Cache.class);
+  }
+
+  @Test
+  public void createDeclarableInstanceFromDeclarableType() {
+    DeclarableType declarableType = new DeclarableType(MyDeclarable.class.getName(),
+        "{\"value1\":5,\"value2\":\"some string\"}");
+
+    MyDeclarable result = DeclarableTypeInstantiator.newInstance(declarableType, cache);
+    assertThat(result).isNotNull().isInstanceOf(MyDeclarable.class);
+
+    assertThat(result.props).isNotNull();
+    assertThat(result.props.getProperty("value1")).isEqualTo("5");
+    assertThat(result.props.getProperty("value2")).isEqualTo("some string");
+  }
+
+  @Test
+  public void createDeclarableInstancedFromNestedDeclarableType() {
+    DeclarableType declarableType = new DeclarableType(MyDeclarable.class.getName(),
+        "{\"value1\":5,\"value2\":\"some string\"}");
+    ParameterType parameterType = new ParameterType("inner-prop", declarableType);
+
+    DeclarableType outerDeclarable = new DeclarableType(MyOuterDeclarable.class.getName());
+    outerDeclarable.getParameters().add(parameterType);
+
+    MyOuterDeclarable result = DeclarableTypeInstantiator.newInstance(outerDeclarable, cache);
+    assertThat(result.props).isNotNull();
+    MyDeclarable innerDeclarable = (MyDeclarable) result.props.get("inner-prop");
+
+    assertThat(innerDeclarable.props.getProperty("value1")).isEqualTo("5");
+    assertThat(innerDeclarable.props.getProperty("value2")).isEqualTo("some string");
+  }
+}
diff --git a/geode-core/src/test/resources/expected-pom.xml b/geode-core/src/test/resources/expected-pom.xml
index f88ee96..89ce669 100644
--- a/geode-core/src/test/resources/expected-pom.xml
+++ b/geode-core/src/test/resources/expected-pom.xml
@@ -277,6 +277,12 @@
       <scope>compile</scope>
     </dependency>
     <dependency>
+      <groupId>org.apache.geode</groupId>
+      <artifactId>geode-management</artifactId>
+      <version>1.9.0-SNAPSHOT</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
       <groupId>org.fusesource.jansi</groupId>
       <artifactId>jansi</artifactId>
       <scope>runtime</scope>
diff --git a/geode-common/build.gradle b/geode-management/build.gradle
similarity index 69%
copy from geode-common/build.gradle
copy to geode-management/build.gradle
index 50fbd06..d89f506 100755
--- a/geode-common/build.gradle
+++ b/geode-management/build.gradle
@@ -17,9 +17,19 @@
 
 apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
 apply from: "${project.projectDir}/../gradle/publish.gradle"
-
+//versionManagement.applySpringDependencyManagement = false
 
 dependencies {
-  testCompile('junit:junit')
-  testCompile('org.assertj:assertj-core')
+  compile('org.apache.commons:commons-lang3')
+  compile('com.fasterxml.jackson.core:jackson-databind')
+  compile('com.fasterxml.jackson.core:jackson-core')
+  compile('com.fasterxml.jackson.core:jackson-annotations')
+
+  compileOnly(project(':geode-common')) {
+    exclude module: 'junit'
+  }
+
+  testCompile(project(':geode-junit')) {
+    exclude module: 'geode-core'
+  }
 }
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/CacheConfig.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/CacheConfig.java
similarity index 98%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/CacheConfig.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/CacheConfig.java
index 6653593..de48201 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/configuration/CacheConfig.java
+++ b/geode-management/src/main/java/org/apache/geode/cache/configuration/CacheConfig.java
@@ -36,10 +36,8 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.w3c.dom.Element;
 
 import org.apache.geode.annotations.Experimental;
-import org.apache.geode.cache.Region;
 import org.apache.geode.internal.config.VersionAdapter;
 
-
 /**
  * <p>
  * Java class for anonymous complex type.
@@ -278,18 +276,18 @@ public class CacheConfig {
   @XmlElement(name = "dynamic-region-factory", namespace = "http://geode.apache.org/schema/cache")
   protected DynamicRegionFactoryType dynamicRegionFactory;
   @XmlElement(name = "gateway-hub", namespace = "http://geode.apache.org/schema/cache")
-  protected List<CacheConfig.GatewayHub> gatewayHubs;
+  protected List<GatewayHub> gatewayHubs;
   @XmlElement(name = "gateway-sender", namespace = "http://geode.apache.org/schema/cache")
-  protected List<CacheConfig.GatewaySender> gatewaySenders;
+  protected List<GatewaySender> gatewaySenders;
   @XmlElement(name = "gateway-receiver", namespace = "http://geode.apache.org/schema/cache")
   protected CacheConfig.GatewayReceiver gatewayReceiver;
   @XmlElement(name = "gateway-conflict-resolver",
       namespace = "http://geode.apache.org/schema/cache")
   protected DeclarableType gatewayConflictResolver;
   @XmlElement(name = "async-event-queue", namespace = "http://geode.apache.org/schema/cache")
-  protected List<CacheConfig.AsyncEventQueue> asyncEventQueues;
+  protected List<AsyncEventQueue> asyncEventQueues;
   @XmlElement(name = "cache-server", namespace = "http://geode.apache.org/schema/cache")
-  protected List<CacheConfig.CacheServer> cacheServers;
+  protected List<CacheServer> cacheServers;
   @XmlElement(name = "pool", namespace = "http://geode.apache.org/schema/cache")
   protected List<PoolType> pools;
   @XmlElement(name = "disk-store", namespace = "http://geode.apache.org/schema/cache")
@@ -331,6 +329,8 @@ public class CacheConfig {
   @XmlJavaTypeAdapter(VersionAdapter.class)
   protected String version;
 
+  public static final String SEPARATOR = "/";
+
   public CacheConfig() {}
 
   public CacheConfig(String version) {
@@ -405,9 +405,9 @@ public class CacheConfig {
    *
    *
    */
-  public List<CacheConfig.GatewayHub> getGatewayHubs() {
+  public List<GatewayHub> getGatewayHubs() {
     if (gatewayHubs == null) {
-      gatewayHubs = new ArrayList<CacheConfig.GatewayHub>();
+      gatewayHubs = new ArrayList<GatewayHub>();
     }
     return this.gatewayHubs;
   }
@@ -435,7 +435,7 @@ public class CacheConfig {
    *
    *
    */
-  public List<CacheConfig.GatewaySender> getGatewaySenders() {
+  public List<GatewaySender> getGatewaySenders() {
     if (gatewaySenders == null) {
       gatewaySenders = new ArrayList<>();
     }
@@ -509,9 +509,9 @@ public class CacheConfig {
    *
    *
    */
-  public List<CacheConfig.AsyncEventQueue> getAsyncEventQueues() {
+  public List<AsyncEventQueue> getAsyncEventQueues() {
     if (asyncEventQueues == null) {
-      asyncEventQueues = new ArrayList<CacheConfig.AsyncEventQueue>();
+      asyncEventQueues = new ArrayList<AsyncEventQueue>();
     }
     return this.asyncEventQueues;
   }
@@ -539,9 +539,9 @@ public class CacheConfig {
    *
    *
    */
-  public List<CacheConfig.CacheServer> getCacheServers() {
+  public List<CacheServer> getCacheServers() {
     if (cacheServers == null) {
-      cacheServers = new ArrayList<CacheConfig.CacheServer>();
+      cacheServers = new ArrayList<CacheServer>();
     }
     return this.cacheServers;
   }
@@ -1027,7 +1027,7 @@ public class CacheConfig {
   }
 
   public RegionConfig findRegionConfiguration(String regionPath) {
-    if (regionPath.startsWith(Region.SEPARATOR)) {
+    if (regionPath.startsWith(SEPARATOR)) {
       regionPath = regionPath.substring(1);
     }
     return findElement(getRegions(), regionPath);
@@ -1638,7 +1638,7 @@ public class CacheConfig {
   public static class GatewayHub {
 
     @XmlElement(name = "gateway", namespace = "http://geode.apache.org/schema/cache")
-    protected List<CacheConfig.GatewayHub.Gateway> gateways;
+    protected List<Gateway> gateways;
     @XmlAttribute(name = "id", required = true)
     protected String id;
     @XmlAttribute(name = "bind-address")
@@ -1679,9 +1679,9 @@ public class CacheConfig {
      *
      *
      */
-    public List<CacheConfig.GatewayHub.Gateway> getGateway() {
+    public List<Gateway> getGateway() {
       if (gateways == null) {
-        gateways = new ArrayList<CacheConfig.GatewayHub.Gateway>();
+        gateways = new ArrayList<Gateway>();
       }
       return this.gateways;
     }
@@ -1936,7 +1936,7 @@ public class CacheConfig {
     public static class Gateway {
 
       @XmlElement(name = "gateway-endpoint", namespace = "http://geode.apache.org/schema/cache")
-      protected List<CacheConfig.GatewayHub.Gateway.GatewayEndpoint> gatewayEndpoints;
+      protected List<GatewayEndpoint> gatewayEndpoints;
       @XmlElement(name = "gateway-listener", namespace = "http://geode.apache.org/schema/cache")
       protected List<DeclarableType> gatewayListeners;
       @XmlElement(name = "gateway-queue", namespace = "http://geode.apache.org/schema/cache")
@@ -1977,9 +1977,9 @@ public class CacheConfig {
        *
        *
        */
-      public List<CacheConfig.GatewayHub.Gateway.GatewayEndpoint> getGatewayEndpoints() {
+      public List<GatewayEndpoint> getGatewayEndpoints() {
         if (gatewayEndpoints == null) {
-          gatewayEndpoints = new ArrayList<CacheConfig.GatewayHub.Gateway.GatewayEndpoint>();
+          gatewayEndpoints = new ArrayList<GatewayEndpoint>();
         }
         return this.gatewayEndpoints;
       }
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/CacheElement.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/CacheElement.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/CacheElement.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/CacheElement.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/CacheTransactionManagerType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/CacheTransactionManagerType.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/CacheTransactionManagerType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/CacheTransactionManagerType.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/ClassNameType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/ClassNameType.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/ClassNameType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/ClassNameType.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/DeclarableType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/DeclarableType.java
similarity index 78%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/DeclarableType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/DeclarableType.java
index 47e4837..dad9722 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/configuration/DeclarableType.java
+++ b/geode-management/src/main/java/org/apache/geode/cache/configuration/DeclarableType.java
@@ -32,13 +32,9 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.commons.lang3.StringUtils;
 
 import org.apache.geode.annotations.Experimental;
-import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.Declarable;
-import org.apache.geode.internal.ClassPathLoader;
 import org.apache.geode.management.internal.cli.domain.ClassName;
 
 /**
- *
  * A "declarable" element specifies a Declarable object to be placed in a Region entry.
  *
  *
@@ -60,8 +56,6 @@ import org.apache.geode.management.internal.cli.domain.ClassName;
  *   &lt;/complexContent>
  * &lt;/complexType>
  * </pre>
- *
- *
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "declarable-type", namespace = "http://geode.apache.org/schema/cache",
@@ -102,10 +96,9 @@ public class DeclarableType extends ClassNameType implements Serializable {
    * Gets the value of the parameter property.
    *
    * <p>
-   * This accessor method returns a reference to the live list,
-   * not a snapshot. Therefore any modification you make to the
-   * returned list will be present inside the JAXB object.
-   * This is why there is not a <CODE>set</CODE> method for the parameter property.
+   * This accessor method returns a reference to the live list, not a snapshot. Therefore any
+   * modification you make to the returned list will be present inside the JAXB object. This is why
+   * there is not a <CODE>set</CODE> method for the parameter property.
    *
    * <p>
    * For example, to add a new item, do as follows:
@@ -116,10 +109,7 @@ public class DeclarableType extends ClassNameType implements Serializable {
    *
    *
    * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link ParameterType }
-   *
-   *
+   * Objects of the following type(s) are allowed in the list {@link ParameterType }
    */
   public List<ParameterType> getParameters() {
     if (parameters == null) {
@@ -155,21 +145,4 @@ public class DeclarableType extends ClassNameType implements Serializable {
         + parameters.stream().map(Objects::toString).collect(Collectors.joining(",")) + "}";
   }
 
-  public <T> T newInstance(Cache cache) {
-    try {
-      Class<T> loadedClass = (Class<T>) ClassPathLoader.getLatest().forName(className);
-      T object = loadedClass.newInstance();
-      if (object instanceof Declarable) {
-        Declarable declarable = (Declarable) object;
-        Properties initProperties = new Properties();
-        for (ParameterType parameter : parameters) {
-          initProperties.put(parameter.getName(), parameter.newInstance(cache));
-        }
-        declarable.initialize(cache, initProperties);
-      }
-      return object;
-    } catch (Exception e) {
-      throw new RuntimeException("Error instantiating class: <" + className + ">", e);
-    }
-  }
 }
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/DiskDirType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/DiskDirType.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/DiskDirType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/DiskDirType.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/DiskDirsType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/DiskDirsType.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/DiskDirsType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/DiskDirsType.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/DiskStoreType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/DiskStoreType.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/DiskStoreType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/DiskStoreType.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/DynamicRegionFactoryType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/DynamicRegionFactoryType.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/DynamicRegionFactoryType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/DynamicRegionFactoryType.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/EnumActionDestroyOverflow.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/EnumActionDestroyOverflow.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/EnumActionDestroyOverflow.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/EnumActionDestroyOverflow.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/EnumReadableWritable.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/EnumReadableWritable.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/EnumReadableWritable.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/EnumReadableWritable.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/FunctionServiceType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/FunctionServiceType.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/FunctionServiceType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/FunctionServiceType.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/JndiBindingsType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/JndiBindingsType.java
similarity index 97%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/JndiBindingsType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/JndiBindingsType.java
index 0b97867..67fbe44 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/configuration/JndiBindingsType.java
+++ b/geode-management/src/main/java/org/apache/geode/cache/configuration/JndiBindingsType.java
@@ -109,7 +109,7 @@ import org.apache.geode.annotations.Experimental;
 public class JndiBindingsType {
 
   @XmlElement(name = "jndi-binding", namespace = "http://geode.apache.org/schema/cache")
-  protected List<JndiBindingsType.JndiBinding> jndiBindings;
+  protected List<JndiBinding> jndiBindings;
 
   /**
    * Gets the value of the jndiBindings property.
@@ -134,9 +134,9 @@ public class JndiBindingsType {
    *
    *
    */
-  public List<JndiBindingsType.JndiBinding> getJndiBindings() {
+  public List<JndiBinding> getJndiBindings() {
     if (jndiBindings == null) {
-      jndiBindings = new ArrayList<JndiBindingsType.JndiBinding>();
+      jndiBindings = new ArrayList<JndiBinding>();
     }
     return this.jndiBindings;
   }
@@ -205,7 +205,7 @@ public class JndiBindingsType {
   public static class JndiBinding implements CacheElement {
 
     @XmlElement(name = "config-property", namespace = "http://geode.apache.org/schema/cache")
-    protected List<JndiBindingsType.JndiBinding.ConfigProperty> configProperties;
+    protected List<ConfigProperty> configProperties;
     @XmlAttribute(name = "blocking-timeout-seconds")
     protected String blockingTimeoutSeconds;
     @XmlAttribute(name = "conn-pooled-datasource-class")
@@ -260,9 +260,9 @@ public class JndiBindingsType {
      *
      *
      */
-    public List<JndiBindingsType.JndiBinding.ConfigProperty> getConfigProperties() {
+    public List<ConfigProperty> getConfigProperties() {
       if (configProperties == null) {
-        configProperties = new ArrayList<JndiBindingsType.JndiBinding.ConfigProperty>();
+        configProperties = new ArrayList<ConfigProperty>();
       }
       return this.configProperties;
     }
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/ObjectType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/ObjectType.java
similarity index 90%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/ObjectType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/ObjectType.java
index 60bbfdc..324a004 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/configuration/ObjectType.java
+++ b/geode-management/src/main/java/org/apache/geode/cache/configuration/ObjectType.java
@@ -25,8 +25,6 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
-import org.apache.geode.cache.Cache;
-
 /**
  * <p>
  * Java class for anonymous complex type.
@@ -48,7 +46,6 @@ import org.apache.geode.cache.Cache;
  * </pre>
  *
  * ObjectType represents either a string or an object represented by the DeclarableType
- *
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "", propOrder = {"string", "declarable"})
@@ -70,7 +67,6 @@ public class ObjectType implements Serializable {
 
   /**
    * Gets the value of the string property.
-   *
    */
   public String getString() {
     return string;
@@ -78,7 +74,6 @@ public class ObjectType implements Serializable {
 
   /**
    * Sets the value of the string property.
-   *
    */
   public void setString(String string) {
     this.string = string;
@@ -87,9 +82,7 @@ public class ObjectType implements Serializable {
   /**
    * Gets the value of the declarable property.
    *
-   * possible object is
-   * {@link DeclarableType }
-   *
+   * possible object is {@link DeclarableType }
    */
   public DeclarableType getDeclarable() {
     return declarable;
@@ -98,9 +91,7 @@ public class ObjectType implements Serializable {
   /**
    * Sets the value of the declarable property.
    *
-   * allowed object is
-   * {@link DeclarableType }
-   *
+   * allowed object is {@link DeclarableType }
    */
   public void setDeclarable(DeclarableType value) {
     this.declarable = value;
@@ -135,15 +126,4 @@ public class ObjectType implements Serializable {
     return "";
   }
 
-  public Object newInstance(Cache cache) {
-    if (string != null) {
-      return string;
-    }
-
-    if (declarable != null) {
-      return declarable.newInstance(cache);
-    }
-
-    return null;
-  }
 }
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/ParameterType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/ParameterType.java
similarity index 96%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/ParameterType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/ParameterType.java
index e27e009..a8921d0 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/configuration/ParameterType.java
+++ b/geode-management/src/main/java/org/apache/geode/cache/configuration/ParameterType.java
@@ -75,6 +75,11 @@ public class ParameterType extends ObjectType {
     setString(value);
   }
 
+  public ParameterType(String name, DeclarableType declarableType) {
+    this.name = name;
+    this.declarable = declarableType;
+  }
+
   /**
    * Gets the value of the name property.
    *
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/PdxType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/PdxType.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/PdxType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/PdxType.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/PoolType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/PoolType.java
similarity index 98%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/PoolType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/PoolType.java
index 7a2267d..7aa810f 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/configuration/PoolType.java
+++ b/geode-management/src/main/java/org/apache/geode/cache/configuration/PoolType.java
@@ -102,9 +102,9 @@ import org.apache.geode.annotations.Experimental;
 public class PoolType {
 
   @XmlElement(name = "locator", namespace = "http://geode.apache.org/schema/cache")
-  protected List<PoolType.Locator> locators;
+  protected List<Locator> locators;
   @XmlElement(name = "server", namespace = "http://geode.apache.org/schema/cache")
-  protected List<PoolType.Server> servers;
+  protected List<Server> servers;
   @XmlAttribute(name = "subscription-timeout-multiplier")
   protected String subscriptionTimeoutMultiplier;
   @XmlAttribute(name = "socket-connect-timeout")
@@ -171,9 +171,9 @@ public class PoolType {
    *
    *
    */
-  public List<PoolType.Locator> getLocators() {
+  public List<Locator> getLocators() {
     if (locators == null) {
-      locators = new ArrayList<PoolType.Locator>();
+      locators = new ArrayList<Locator>();
     }
     return this.locators;
   }
@@ -201,9 +201,9 @@ public class PoolType {
    *
    *
    */
-  public List<PoolType.Server> getServers() {
+  public List<Server> getServers() {
     if (servers == null) {
-      servers = new ArrayList<PoolType.Server>();
+      servers = new ArrayList<Server>();
     }
     return this.servers;
   }
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/RegionAttributesDataPolicy.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/RegionAttributesDataPolicy.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/RegionAttributesDataPolicy.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/RegionAttributesDataPolicy.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/RegionAttributesIndexUpdateType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/RegionAttributesIndexUpdateType.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/RegionAttributesIndexUpdateType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/RegionAttributesIndexUpdateType.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/RegionAttributesMirrorType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/RegionAttributesMirrorType.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/RegionAttributesMirrorType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/RegionAttributesMirrorType.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/RegionAttributesScope.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/RegionAttributesScope.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/RegionAttributesScope.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/RegionAttributesScope.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/RegionAttributesType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/RegionAttributesType.java
similarity index 99%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/RegionAttributesType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/RegionAttributesType.java
index 18265d0..fde2711 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/configuration/RegionAttributesType.java
+++ b/geode-management/src/main/java/org/apache/geode/cache/configuration/RegionAttributesType.java
@@ -2234,7 +2234,7 @@ public class RegionAttributesType implements Serializable {
   public static class MembershipAttributes implements Serializable {
 
     @XmlElement(name = "required-role", namespace = "http://geode.apache.org/schema/cache")
-    protected List<RegionAttributesType.MembershipAttributes.RequiredRole> requiredRoles;
+    protected List<RequiredRole> requiredRoles;
     @XmlAttribute(name = "loss-action")
     protected String lossAction;
     @XmlAttribute(name = "resumption-action")
@@ -2263,9 +2263,9 @@ public class RegionAttributesType implements Serializable {
      *
      *
      */
-    public List<RegionAttributesType.MembershipAttributes.RequiredRole> getRequiredRoles() {
+    public List<RequiredRole> getRequiredRoles() {
       if (requiredRoles == null) {
-        requiredRoles = new ArrayList<RegionAttributesType.MembershipAttributes.RequiredRole>();
+        requiredRoles = new ArrayList<RequiredRole>();
       }
       return this.requiredRoles;
     }
@@ -2442,7 +2442,7 @@ public class RegionAttributesType implements Serializable {
     protected List<DeclarableType> partitionListeners;
     @XmlElement(name = "fixed-partition-attributes",
         namespace = "http://geode.apache.org/schema/cache")
-    protected List<RegionAttributesType.PartitionAttributes.FixedPartitionAttributes> fixedPartitionAttributes;
+    protected List<FixedPartitionAttributes> fixedPartitionAttributes;
     @XmlAttribute(name = "local-max-memory")
     protected String localMaxMemory;
     @XmlAttribute(name = "recovery-delay")
@@ -2533,10 +2533,10 @@ public class RegionAttributesType implements Serializable {
      *
      *
      */
-    public List<RegionAttributesType.PartitionAttributes.FixedPartitionAttributes> getFixedPartitionAttributes() {
+    public List<FixedPartitionAttributes> getFixedPartitionAttributes() {
       if (fixedPartitionAttributes == null) {
         fixedPartitionAttributes =
-            new ArrayList<RegionAttributesType.PartitionAttributes.FixedPartitionAttributes>();
+            new ArrayList<FixedPartitionAttributes>();
       }
       return this.fixedPartitionAttributes;
     }
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/RegionConfig.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/RegionConfig.java
similarity index 98%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/RegionConfig.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/RegionConfig.java
index e5a26c6..a39db22 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/configuration/RegionConfig.java
+++ b/geode-management/src/main/java/org/apache/geode/cache/configuration/RegionConfig.java
@@ -153,9 +153,9 @@ public class RegionConfig implements CacheElement {
   @XmlElement(name = "region-attributes", namespace = "http://geode.apache.org/schema/cache")
   protected RegionAttributesType regionAttributes;
   @XmlElement(name = "index", namespace = "http://geode.apache.org/schema/cache")
-  protected List<RegionConfig.Index> indexes;
+  protected List<Index> indexes;
   @XmlElement(name = "entry", namespace = "http://geode.apache.org/schema/cache")
-  protected List<RegionConfig.Entry> entries;
+  protected List<Entry> entries;
   @XmlAnyElement(lax = true)
   protected List<CacheElement> regionElements;
   @XmlElement(name = "region", namespace = "http://geode.apache.org/schema/cache")
@@ -203,7 +203,7 @@ public class RegionConfig implements CacheElement {
    *
    *
    */
-  public List<RegionConfig.Index> getIndexes() {
+  public List<Index> getIndexes() {
     if (indexes == null) {
       indexes = new ArrayList<>();
     }
@@ -233,9 +233,9 @@ public class RegionConfig implements CacheElement {
    *
    *
    */
-  public List<RegionConfig.Entry> getEntries() {
+  public List<Entry> getEntries() {
     if (entries == null) {
-      entries = new ArrayList<RegionConfig.Entry>();
+      entries = new ArrayList<Entry>();
     }
     return this.entries;
   }
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/ResourceManagerType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/ResourceManagerType.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/ResourceManagerType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/ResourceManagerType.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/SerializationRegistrationType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/SerializationRegistrationType.java
similarity index 94%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/SerializationRegistrationType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/SerializationRegistrationType.java
index ca0b793..4155d17 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/configuration/SerializationRegistrationType.java
+++ b/geode-management/src/main/java/org/apache/geode/cache/configuration/SerializationRegistrationType.java
@@ -86,9 +86,9 @@ import org.apache.geode.annotations.Experimental;
 public class SerializationRegistrationType {
 
   @XmlElement(name = "serializer", namespace = "http://geode.apache.org/schema/cache")
-  protected List<SerializationRegistrationType.Serializer> serializers;
+  protected List<Serializer> serializers;
   @XmlElement(name = "instantiator", namespace = "http://geode.apache.org/schema/cache")
-  protected List<SerializationRegistrationType.Instantiator> instantiators;
+  protected List<Instantiator> instantiators;
 
   /**
    * Gets the value of the serializer property.
@@ -113,9 +113,9 @@ public class SerializationRegistrationType {
    *
    *
    */
-  public List<SerializationRegistrationType.Serializer> getSerializers() {
+  public List<Serializer> getSerializers() {
     if (serializers == null) {
-      serializers = new ArrayList<SerializationRegistrationType.Serializer>();
+      serializers = new ArrayList<Serializer>();
     }
     return this.serializers;
   }
@@ -143,9 +143,9 @@ public class SerializationRegistrationType {
    *
    *
    */
-  public List<SerializationRegistrationType.Instantiator> getInstantiators() {
+  public List<Instantiator> getInstantiators() {
     if (instantiators == null) {
-      instantiators = new ArrayList<SerializationRegistrationType.Instantiator>();
+      instantiators = new ArrayList<Instantiator>();
     }
     return this.instantiators;
   }
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/ServerType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/ServerType.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/ServerType.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/ServerType.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/XSDRootElement.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/XSDRootElement.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/XSDRootElement.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/XSDRootElement.java
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/package-info.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/package-info.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/cache/configuration/package-info.java
rename to geode-management/src/main/java/org/apache/geode/cache/configuration/package-info.java
diff --git a/geode-core/src/main/java/org/apache/geode/internal/config/VersionAdapter.java b/geode-management/src/main/java/org/apache/geode/internal/config/VersionAdapter.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/internal/config/VersionAdapter.java
rename to geode-management/src/main/java/org/apache/geode/internal/config/VersionAdapter.java
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/api/ClusterManagementResult.java b/geode-management/src/main/java/org/apache/geode/management/internal/api/ClusterManagementResult.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/management/internal/api/ClusterManagementResult.java
rename to geode-management/src/main/java/org/apache/geode/management/internal/api/ClusterManagementResult.java
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/api/ClusterManagementService.java b/geode-management/src/main/java/org/apache/geode/management/internal/api/ClusterManagementService.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/management/internal/api/ClusterManagementService.java
rename to geode-management/src/main/java/org/apache/geode/management/internal/api/ClusterManagementService.java
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/api/Status.java b/geode-management/src/main/java/org/apache/geode/management/internal/api/Status.java
similarity index 99%
rename from geode-core/src/main/java/org/apache/geode/management/internal/api/Status.java
rename to geode-management/src/main/java/org/apache/geode/management/internal/api/Status.java
index 1866dc2..097e4ce 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/api/Status.java
+++ b/geode-management/src/main/java/org/apache/geode/management/internal/api/Status.java
@@ -25,8 +25,6 @@ public class Status {
   // needed for json deserialization
   public Status() {}
 
-  ;
-
   public Status(Result status, String message) {
     this.status = status;
     this.message = message;
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/ClassName.java b/geode-management/src/main/java/org/apache/geode/management/internal/cli/domain/ClassName.java
similarity index 83%
rename from geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/ClassName.java
rename to geode-management/src/main/java/org/apache/geode/management/internal/cli/domain/ClassName.java
index bb78d6b..362a4ce 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/ClassName.java
+++ b/geode-management/src/main/java/org/apache/geode/management/internal/cli/domain/ClassName.java
@@ -25,10 +25,6 @@ import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.commons.lang3.StringUtils;
 
-import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.Declarable;
-import org.apache.geode.internal.ClassPathLoader;
-
 /**
  * This is mostly used for Gfsh command options that need to specify a className for instantiation.
  *
@@ -59,7 +55,6 @@ public class ClassName<T> implements Serializable {
   }
 
   /**
-   *
    * @param className this class needs to have an empty param constructor
    * @param jsonInitProperties this class needs to implement Declarable in order for these
    *        properties to be applied at initialization time
@@ -116,18 +111,4 @@ public class ClassName<T> implements Serializable {
         && this.getInitProperties().equals(that.getInitProperties());
   }
 
-  public T newInstance(Cache cache) {
-    try {
-      Class<T> loadedClass = (Class<T>) ClassPathLoader.getLatest().forName(className);
-      T object = loadedClass.newInstance();
-      if (object instanceof Declarable) {
-        Declarable declarable = (Declarable) object;
-        declarable.initialize(cache, initProperties);
-        declarable.init(initProperties); // for backwards compatibility
-      }
-      return object;
-    } catch (Exception e) {
-      throw new RuntimeException("Error instantiating class: <" + className + ">", e);
-    }
-  }
 }
diff --git a/geode-core/src/test/resources/expected-pom.xml b/geode-management/src/test/resources/expected-pom.xml
similarity index 76%
copy from geode-core/src/test/resources/expected-pom.xml
copy to geode-management/src/test/resources/expected-pom.xml
index f88ee96..ef3939a 100644
--- a/geode-core/src/test/resources/expected-pom.xml
+++ b/geode-management/src/test/resources/expected-pom.xml
@@ -18,7 +18,7 @@
   -->
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.geode</groupId>
-  <artifactId>geode-core</artifactId>
+  <artifactId>geode-management</artifactId>
   <version>1.9.0-SNAPSHOT</version>
   <name>Apache Geode</name>
   <description>Apache Geode provides a database-like consistency model, reliable transaction processing and a shared-nothing architecture to maintain very low latency performance with high concurrency processing</description>
@@ -36,281 +36,25 @@
   </scm>
   <dependencies>
     <dependency>
-      <groupId>com.github.stephenc.findbugs</groupId>
-      <artifactId>findbugs-annotations</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.jgroups</groupId>
-      <artifactId>jgroups</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>antlr</groupId>
-      <artifactId>antlr</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.fasterxml.jackson.core</groupId>
-      <artifactId>jackson-annotations</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.fasterxml.jackson.core</groupId>
-      <artifactId>jackson-databind</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>commons-validator</groupId>
-      <artifactId>commons-validator</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>commons-digester</groupId>
-      <artifactId>commons-digester</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.sun.activation</groupId>
-      <artifactId>javax.activation</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>javax.xml.bind</groupId>
-      <artifactId>jaxb-api</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.sun.xml.bind</groupId>
-      <artifactId>jaxb-impl</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.sun.istack</groupId>
-      <artifactId>istack-commons-runtime</artifactId>
-      <scope>compile</scope>
-      <exclusions>
-        <exclusion>
-          <artifactId>*</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
       <scope>compile</scope>
     </dependency>
     <dependency>
-      <groupId>commons-modeler</groupId>
-      <artifactId>commons-modeler</artifactId>
-      <scope>compile</scope>
-      <exclusions>
-        <exclusion>
-          <artifactId>commons-logging-api</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>commons-digester</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>xml-apis</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>mx4j-jmx</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-      </exclusions>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>io.netty</groupId>
-      <artifactId>netty-all</artifactId>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>it.unimi.dsi</groupId>
-      <artifactId>fastutil</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>javax.mail</groupId>
-      <artifactId>javax.mail-api</artifactId>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>javax.resource</groupId>
-      <artifactId>javax.resource-api</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>mx4j</groupId>
-      <artifactId>mx4j</artifactId>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>mx4j</groupId>
-      <artifactId>mx4j-remote</artifactId>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>mx4j</groupId>
-      <artifactId>mx4j-tools</artifactId>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>net.java.dev.jna</groupId>
-      <artifactId>jna</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>net.sf.jopt-simple</groupId>
-      <artifactId>jopt-simple</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-api</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-core</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.github.davidmoten</groupId>
-      <artifactId>geo</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-webapp</artifactId>
-      <version>9.4.12.v20180830</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-core</artifactId>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework.shell</groupId>
-      <artifactId>spring-shell</artifactId>
-      <scope>compile</scope>
-      <exclusions>
-        <exclusion>
-          <artifactId>cglib</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>spring-core</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>asm</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>spring-aop</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>guava</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>aopalliance</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>spring-context-support</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.iq80.snappy</groupId>
-      <artifactId>snappy</artifactId>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.shiro</groupId>
-      <artifactId>shiro-core</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>io.github.classgraph</groupId>
-      <artifactId>classgraph</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.healthmarketscience.rmiio</groupId>
-      <artifactId>rmiio</artifactId>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
       <scope>compile</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.geode</groupId>
-      <artifactId>geode-common</artifactId>
-      <version>1.9.0-SNAPSHOT</version>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-core</artifactId>
       <scope>compile</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.geode</groupId>
-      <artifactId>geode-json</artifactId>
-      <version>1.9.0-SNAPSHOT</version>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-annotations</artifactId>
       <scope>compile</scope>
     </dependency>
-    <dependency>
-      <groupId>org.fusesource.jansi</groupId>
-      <artifactId>jansi</artifactId>
-      <scope>runtime</scope>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-slf4j-impl</artifactId>
-      <scope>runtime</scope>
-      <exclusions>
-        <exclusion>
-          <artifactId>slf4j-api</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-      </exclusions>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-jcl</artifactId>
-      <scope>runtime</scope>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-jul</artifactId>
-      <scope>runtime</scope>
-      <optional>true</optional>
-    </dependency>
   </dependencies>
   <dependencyManagement>
     <dependencies>
@@ -710,6 +454,11 @@
         <version>6.6.2</version>
       </dependency>
       <dependency>
+        <groupId>org.apache.geode</groupId>
+        <artifactId>geode-management</artifactId>
+        <version>1.9.0-SNAPSHOT</version>
+      </dependency>
+      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>1.7.25</version>
diff --git a/gradle/geode-dependency-management.gradle b/gradle/geode-dependency-management.gradle
index 3a27c35..ba68afe 100644
--- a/gradle/geode-dependency-management.gradle
+++ b/gradle/geode-dependency-management.gradle
@@ -67,7 +67,7 @@ class GeodeDependencyManagementPlugin implements Plugin<Project> {
           entry('geode-wan')
           entry('geode-web')
           entry('geode-web-api')
-          entry('geode-management-rest-api')
+          entry('geode-management')
         }
 
         // informal, inter-group dependencySet
diff --git a/settings.gradle b/settings.gradle
index d584f0c..374d3e6 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -31,6 +31,7 @@ include 'geode-core'
 include 'geode-web'
 include 'geode-web-api'
 include 'geode-web-management'
+include 'geode-management'
 include 'geode-pulse'
 include 'geode-pulse:geode-pulse-test'
 include 'geode-assembly'