You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2016/10/18 18:57:54 UTC

[24/42] incubator-geode git commit: Move Admin API to internal

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/SystemMemberRegionJmxImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/SystemMemberRegionJmxImpl.java b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/SystemMemberRegionJmxImpl.java
deleted file mode 100644
index 9ee3153..0000000
--- a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/SystemMemberRegionJmxImpl.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * 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.admin.jmx.internal;
-
-import org.apache.geode.admin.internal.SystemMemberCacheImpl;
-import org.apache.geode.cache.Region;
-import org.apache.geode.internal.admin.GemFireVM;
-
-import javax.management.ObjectName;
-import javax.management.modelmbean.ModelMBean;
-
-/**
- * MBean representation of {@link 
- * org.apache.geode.admin.SystemMemberRegion}.
- *
- * @since GemFire     3.5
- */
-public class SystemMemberRegionJmxImpl 
-extends org.apache.geode.admin.internal.SystemMemberRegionImpl
-implements org.apache.geode.admin.jmx.internal.ManagedResource {
-
-  /** The object name of this managed resource */
-  private ObjectName objectName;
-
-  // -------------------------------------------------------------------------
-  //   Constructor(s)
-  // -------------------------------------------------------------------------
-
-  /** 
-   * Constructs an instance of SystemMemberRegionJmxImpl.
-   *
-   * @param cache   the cache this region belongs to
-   * @param region  internal region to delegate real work to
-   */
-  public SystemMemberRegionJmxImpl(SystemMemberCacheImpl cache, 
-                                   Region region)
-                            throws org.apache.geode.admin.AdminException {
-    super(cache, region);
-    initializeMBean(cache);
-  }
-
-  /** Create and register the MBean to manage this resource */
-  private void initializeMBean(SystemMemberCacheImpl cache)
-  throws org.apache.geode.admin.AdminException {
-    
-    GemFireVM vm = cache.getVM();
-    this.mbeanName = new StringBuffer("GemFire.Cache:")
-        .append("path=")
-        .append(MBeanUtil.makeCompliantMBeanNameProperty(getFullPath()))
-        .append(",name=")
-        .append(MBeanUtil.makeCompliantMBeanNameProperty(cache.getName()))
-        .append(",id=")
-        .append(cache.getId())
-        .append(",owner=")
-        .append(MBeanUtil.makeCompliantMBeanNameProperty(vm.getId().toString()))
-        .append(",type=Region").toString();
-      
-    this.objectName = MBeanUtil.createMBean(this);
-  }
-  
-  // -------------------------------------------------------------------------
-  //   ManagedResource implementation
-  // -------------------------------------------------------------------------
-  
-  /** The name of the MBean that will manage this resource */
-  private String mbeanName;
-
-  /** The ModelMBean that is configured to manage this resource */
-  private ModelMBean modelMBean;
-  
-	public String getMBeanName() {
-		return this.mbeanName;
-	}
-  
-	public ModelMBean getModelMBean() {
-		return this.modelMBean;
-	}
-	public void setModelMBean(ModelMBean modelMBean) {
-		this.modelMBean = modelMBean;
-	}
-  
-  public ObjectName getObjectName() {
-    return this.objectName;
-  }
-
-  public ManagedResourceType getManagedResourceType() {
-    return ManagedResourceType.SYSTEM_MEMBER_REGION;
-  }
-  
-  public void cleanupResource() {}
-
-  /**
-   * Checks equality of the given object with <code>this</code> based on the
-   * type (Class) and the MBean Name returned by <code>getMBeanName()</code>
-   * methods.
-   * 
-   * @param obj
-   *          object to check equality with
-   * @return true if the given object is if the same type and its MBean Name is
-   *         same as <code>this</code> object's MBean Name, false otherwise
-   */
-  @Override
-  public boolean equals(Object obj) {
-    if ( !(obj instanceof SystemMemberRegionJmxImpl) ) {
-      return false;
-    }
-    
-    SystemMemberRegionJmxImpl other = (SystemMemberRegionJmxImpl) obj; 
-    
-    return this.getMBeanName().equals(other.getMBeanName());
-  }
-
-  /**
-   * Returns hash code for <code>this</code> object which is based on the MBean 
-   * Name generated. 
-   * 
-   * @return hash code for <code>this</code> object
-   */
-  @Override
-  public int hashCode() {
-    return this.getMBeanName().hashCode();
-  }
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/package.html
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/package.html b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/package.html
deleted file mode 100755
index bc2b2f2..0000000
--- a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/package.html
+++ /dev/null
@@ -1,166 +0,0 @@
-<!--
-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.
--->
-<HTML>
-<BODY>
-
-<P>Contains the implementation of the external JMX APIs from
-<a href="{@docRoot}/org/apache/geode/admin/jmx/package-summary.html#package_description">org.apache.geode.admin.jmx</a>.</P>
-
-<H2>JMX Support in GemFire</H2>
-
-Our goal was to provide JMX administrative support in GemFire.  The design was influenced by these important factors:
-<p>
-<ul>
-<li/>1) Requirement to not impact performance of the product
-<li/>2) Desire to introduce JMX without altering the existing product or the management console
-<li/>3) Similar functionality already existed in the console and the internal.admin pkg which the console uses
-<li/>4) Requirement to also introduce a simple and usable Admin API which or may not be related to JMX
-</ul>
-
-From a functional stand point, the JMX support was supposed to provide most of the same administrative and operational monitoring that the console already provides.  In some cases we limited the functionality due to security concerns and in others because it was hard to express the features as JMX beans.  The JMX Agent also provides some functionality (such as Health monitoring) that is not currently in the console.
-<p>
-The Agent communicates with the distributed system using the same distribution manager {@link org.apache.geode.distributed.internal.DistributionManager} as the console uses and thus has the same requirements that determine what distributed system it can manage.  Although the Console currently supports managing multiple distributed systems, we decided that a given Agent should only be able to manage a single system.  We have not tested the use of more than one Agent for the same system, however nothing currently prohibits this.
-<p>
-We decided to develop a simple public Admin API which in essence wraps the internal.admin API that the Console currently uses extensively.  The Admin API also contains implementations of new functionality not in internal.admin.  Our JMX support is an extension to this Admin API.  In an overly simplified view, the GemFire JMX MBeans are ModelMBeans that manage instances of the Admin API objects housed in the Agent's MBeanServer.
-<p>
-The selected architecture consists of a Daemon Agent, which exists in a separate VM that GemFire does not depend on.  This Agent hosts an MBeanServer, instances of any and all MBeans registered for managing a GemFire distributed system, and server connectors/adaptors that various types of clients can connect to.
-<p>
-The two server connectors we selected are the HttpAdaptor and the RMI Connector.  The HttpAdaptor provides an HTML user interface of all MBeans in the MBeanServer.  Although this generic UI is not as rich as an RMI client (or the GemFire Console) could be, it provides a functional and easy to use UI with no development required.  The JMX Remote specification details the standard connectors.  Although the HttpAdaptor is not required by this Sun spec. it is included in some form with all JMX implementations that I investigated.  It should be noted that our JMX Agent currently starts up the HttpAdaptor, but not the RMI Connector.  The latter is deferred as later work since some form of client must be developed for testing.  Further research may also uncover a generic, configurable open-source RMI client for JMX.  The GemFire Console could in theory be reworked as an RMI Connector client, but this is not currently planned.
-<p>
-Two open-source JMX implementations made it to our final review for consideration: <a href="http://www.xmojo.org">XMOJO</a> and <a href="http://www.mx4j.org">MX4J</a>.  The decision to go with MX4J was based mainly on our perceptions of MX4J being more active and widespread in use.  Additionally, XMOJO is associated with <a href="http://www.adventnet.com/">AdventNet</a> which produces commercial products.  This made MX4J seem more true to open-source and safer from corporate tampering.
-<p>
-ModelMBeans are very dynamic and capable of managing aggregate resources.  Use of a ModelMBean entails specifying meta-data to an instance of javax.management.modelmbean.RequiredModelMBean.  This meta-data identifies the manageble resource(s) which can consist of a single object, or many objects, including those in one VM or in any number of distributed VMs.  We decided to subclass classes in the Admin API in order to massage them a little and make them easier to use as a managed resource by the ModelMBean.  For example, org.apache.geode.admin.GemFireManager represents a type of member in a GemFire system which manages shared memory.  When an MBean is registered for managing the GemFireManager, the JMX Agent instantiates a "JMX friendlier" subclass: org.apache.geode.admin.jmx.internal.GemFireMangerJmxImpl.  Comparison of this class with the non-JMX super class org.apache.geode.admin.internal.GemFireManagerImpl will illustrate what "JMX friendly" means better than trying to explain i
 t here...
-<p>
-One standard approach to defining a ModelMBean is to programmatically
-build the necessary meta-data.  The folks on the Tomcat approach
-developed a better solution... an XML definition file which Jakarta
-Commons-Modeler parses to create the meta-data objects required to
-definie the ModelMBean.  We currently have our XML descriptor file at
-org.apache.geode.admin.jmx.mbeans-descriptors.xml.
-Commons-Modeler can be found at <A href="http://jakarta.apache.org/commons/modeler">http://jakarta.apache.org/commons/modeler/</A>
-<p>
-Here's a quick run-down of the Admin and JMX pkgs in GemFire...
-<p>
-<b>org.apache.geode.admin</b>
-<ul>
-<li/>interfaces describing GemFire entities and resources for managing or monitoring
-</ul>
-<p>
-<b>org.apache.geode.admin.internal</b>
-<ul>
-<li/>implementations of the admin pkg which could be used to managing GemFire
-<li/>recommendation is to create one set on non-JMX unit tests for these and then wrap that unit test within another test that is specific to its use in JMX
-</ul>
-<p>
-<b>org.apache.geode.admin.jmx</b>
-<ul>
-<li/>Commons-Modeler descriptor file mbeans-descriptors.xml
-<li/>AgentMBean - non-required interface that simply represents a public documentation of what the Agent does
-<li/>VersionMBean and Version - unused (but functional) examples of a standard MBean (other MBeans as defined in mbeans-descriptors.xml also provide version info)
-</ul>
-<p>
-<b>org.apache.geode.admin.jmx.internal</b>
-<ul>
-<li/>subclasses of org.apache.geode.admin.internal classes that use JMX services, implement ManagedResource, register ModelMBeans to manage themselves, and other JMX related details
-<li/>ManagedResource - simple interface we use to create a more uniform approach in using JMX
-<li/>Agent - application with main, registers HttpAdaptor, acts as a factory to DistributedSystemJmxImpl (which is the entry point to using JMX with a GemFire system)
-<li/>AgentConfig - configuration for Agent that reads/writes to a properties file
-<li/>MBeanUtil - utility class with static methods for defining MBeans, registering for timer-based refresh notifications, and lots of other JMX stuff
-<li/>StatisticAttributeInfo and ConfigAttributeInfo - these are the results of refactoring common code from some of the JmxImpl classes that required runtime dynamic (ie, not known at design time) MBean attributes
-<li/>SpecManagedBean - subclass of part of Commons-Modeler, this class acts as a workaround for a bug in Commons-Modeler (I hope to remove this after working with Jakarta-Commons to correct the bug)
-<li/>AgentPrintStream - this is a hack workaround for suppressing warnings from Xalan that derive from a purported incompatibility between the XSLT sheets in MX4J and the version of Xalan in JDK1.4.2 - experts with Xalan recommend upgrading to the very latest version of Xalan which is not currently desired for GemFire
-</ul>
-<p>
-<h3>Some caveats, workarounds, and GemFire bugs to be aware of:</h3>
-<p>
-1) MX4J uses XSLT style sheets that are intended to work with the latest version of Xalan.  JDK1.4.2 bundles an older version of Xalan which generates warnings.
-<p>
-2) MX4J's implementation of javax.management.modelmbean.RequiredModelMBean contains a bug such that any return type defined as an array of some object results in it attempting to Class.forName the class name with the "[]" still in the name of the class.  Our current workaround is to return java.lang.Object where we'd like to return an array of some non-primitive type.  I hope to look at this closer and work with MX4J to correct it (unless that latest code base at MX4J already has a fix).
-<p>
-3) Our MBeans currently have some return types of Admin interfaces and GemFire MBean types.  This is not recommended.  The correct approach is to return javax.management.ObjectName or an array of ObjectName so that remotability is not broken.  We have a bug filed to correct this in GemFire.
-<p>
-4) Commons-Modeler provides a simple, incomplete implementation of ModelMBean called org.apache.commons.modeler.BaseModelMBean. We decided to use the standard RequiredModelMBean which all JMX implementations are required to supply.  The JMX spec details several "managed resource types" that a ModelMBean can support.  ObjectReference is the type that both MX4J's RequiredModelMBean and Modeler's BaseModelMBean support.  However, MX4J is more strict in it's interpretation of the spec which spells it out as "ObjectReference".  Modeler's BaseModelMBean performs no enforcement and simply assumes it is managing type ObjectReference.  Modeler has a bug in org.apache.commons.modeler.ManagedBean because it specifies "objectReference" which is the incorrect case in comparison to the specification.  I intend to work with the Jakarta-Commons folks to change this to comply with the spec.  The Modeler will use BaseModelMBean by default even though it is actually depending on a JMX implementation s
 uch as MX4J or XMOJO.  org.apache.geode.admin.jmx.internal.MBeanUtil tells Modeler to use RequiredModelMBean instead and also uses org.apache.geode.admin.jmx.internal.SpecManagedBean as a workaround to the whole "objectReference" issue.  You could feasibly use org.apache.commons.modeler.BaseModelMBean or RequiredModelMBean.
-<p>
-
-<h3>Capabilities currently supported in GemFire via JMX:</h3>
-<ul>
-<li/>1) View overall system and its settings and start/stop all members
-<li/>2) View all managers and applications
-<li/>3) View and modify config (includes optional use of JMX Timer service to auto-refresh)
-<li/>4) View any statistics (includes optional use of JMX Timer service to auto-refresh)
-<li/>5) View member's cache and its statistics
-<li/>6) View a cache's region and its attributes, statistics, but not the data
-<li/>7) Health monitoring (ask David W. for more info... I haven't had a chance to look at this yet)
-<li/>8) Create, start, and stop managers
-</ul>
-<p>
-<h3>TODO:</h3>
-<ul>
-<li/>1) Creation and control of Locators
-<li/>2) Enable the RMI Connector and build tests
-<li/>3) Bind Address support (bug 30898)
-<li/>4) SSL Configuration support
-<li/>5) JMX Connector security
-<li/>6) more thorough automated tests!!
-<li/>7) Documentation of use w/ built-in Connectors (RMI and HTTP)
-<li/>8) Documentation of use w/ AdventNet SNMP Adaptor
-<li/>9) Documentation of use w/ selected commercial management products
-<li/>10) Determine high-availability requirements if any (mentioned by Jags)
-</ul>
-See also <a href="#deferred_ops">deferred backlog from Hardening/Operations sprint</a>
-<p>
-It's very easy to use the JMX Monitor service to monitor an MBean's attribute and fire JMX Notifications.  Statistics and Config Parameters are "MBean attributes".
-
-<p>
-<h3>Using Third Party Management Consoles/Tools</h3>
-There is information on <a href="http://www.adventnet.com/">AdventNet's website</a> detailing the use of their <a href="http://www.adventnet.com/products/snmpadaptor/index.html">SNMP Adaptor</a> to enable connectivity to <a href="http://www.openview.hp.com/">HP OpenView</a>, <a href="http://www.ibm.com/software/tivoli/">IBM Tivoli</a>, <a href="http://www3.ca.com/solutions/solution.asp?id=315">CA Unicenter</a>, and other SNMP managers.
-<p>
-Aside from using AdventNet's SNMP Adaptor, HPOpenView is the first I've seen of the big players offering what appears to be a way to plug our JMX support into their product for management of GemFire.  I haven't had a chance to look at it yet.  Most likely their <a href="http://www.openview.hp.com/products/spi/">SPI</a> supports writing a small amount of glue code to have their console become an RMI client to our JMX VM (which is essentially an MBeanServer "server" that hosts our MBeans).  I think it's unlikely that such vendors would want to support hosting of third party MBeans and the classpath/versioning headaches involved in that.  The JMX Remote specification really is meant to cover how such console's would perform the remote connections to custom MBeans in external VMs/products.  It is likely that the other management tool vendors such as Tivoli have a similar SPI available or in the works.
-<p>
-See HP Dev Resource Central's page on <a href="http://devresource.hp.com/jmx.htm">JMX</a> for info and links on using JMX to integrate with HP OpenView.  You can also sign up for <a href="http://www.hpdev.com/.docs/pg/5">HP Developer News</a>
-<p>
-<h3><a name="deferred_ops">Deferred Backlog from Hardening/Operations Sprint</a></h3>
-Note: some of these tasks may no longer be worded properly or even needed...
-<ul>
-<li/>Provide a consolidated view of all cache Regions via JMX
-<li/>Send an alert upon system failure, communication failure, etc.
-<li/>Monitor cache system failures, comm failures, loader failures, etc via JMX
-<li/>Detect/handle stuck shared memory locks via JMX
-<li/>Provide a "combination view" (distributed system-wide) of certain statistics via JMX
-<li/>Integrate with Tivoli and produce a document
-<li/>Test managing caches via JMX with a large number of Regions, Entries, etc.
-<li/>Create XDoclet module to auto-generate mbeans-descriptors.xml (Note: we're using JavaDoc 1.4.2 which is incompatible with XDoclet; Sun intends to restore compatibility in the next version of JavaDoc)
-<li/>Investigate AdventNet's JMX administration console
-<li/>View percentage of VM memory used by a Cache via JMX
-<li/>Investigate modifying the GemFire Console to use JMX
-<li/>Investigate providing secure management via JMX
-<li/>Document security usage for JMX management
-<li/>Investigate managing GemFire via BMC Patrol
-<li/>Investigate managing GemFire via HP OpenView
-<li/>Investigate managing GemFire via UniCenter
-<li/>Submit fix to Jakrta Commons-Modeler for ObjectReference fix in ManagedBean
-<li/>Submit fix to MX4J for classload error in RequiredModelMBean
-<li/>Enable the RMI Connector (currently commented out in Agent)
-<li/>Create tests for RMI Connector
-<li/>Document and JavaDoc usage of the RMI Connector
-<li/>Add support to MBeanUtil to determine which MBeanServer the Agent is in
-<li/>Correlate information from GemFire MBeans with MBeans from other products
-<li/>Test deploying GemFire MBeans into other products' MBean containers
-</ul>
-
-</BODY>
-</HTML>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/admin/jmx/package.html
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/admin/jmx/package.html b/geode-core/src/main/java/org/apache/geode/admin/jmx/package.html
deleted file mode 100755
index acbefa8..0000000
--- a/geode-core/src/main/java/org/apache/geode/admin/jmx/package.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-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.
--->
-<HTML>
-<BODY>
-
-<P>Provides administrative access to a GemFire distributed system via
-the Java Management Extensions (JMX).</P>
-
-<P>Click <A href="doc-files/mbeans-descriptions.html">here</A> for a
-description of the attributes, operations, and notifications of the
-GemFire JMX MBeans.</P>
-
-</BODY>
-</HTML>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/admin/package.html
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/admin/package.html b/geode-core/src/main/java/org/apache/geode/admin/package.html
deleted file mode 100644
index 29ce994..0000000
--- a/geode-core/src/main/java/org/apache/geode/admin/package.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!--
-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.
--->
-<HTML>
-<BODY>
-
-<P>Provides an API for administering various GemFire components such
-as a GemFire distributed
-system, and processes that host GemFire Caches.</P>
-
-<H3>Administration of a GemFire Distributed System</H3>
-
-The Admin API provides interfaces for administrative control, 
-monitoring, and custom management of a GemFire system.
-<P>
-The {@link org.apache.geode.admin.AdminDistributedSystemFactory}
-is the starting point.  It creates an instance of
-<code>AdminDistributedSystem</code> that administers the distributed
-system to which a VM is {@linkplain
-org.apache.geode.distributed.DistributedSystem connected}.
-<P>
-<pre><code>
-DistributedSystem connection = DistributedSystem.connect(new Properties());
-AdminDistributedSystem system = 
-    AdminDistributedSystemFactory.getDistributedSystem(connection);
-system.connect(new File("admin.log"), "info");
-</code></pre>
-<P>
-This {@link org.apache.geode.admin.AdminDistributedSystem}
-interface exposes methods for such tasks as connecting to the system,
-merging system logs, getting administrative interfaces to 
-applications that host GemFire Caches.
-
-<H3>Monitoring the Health of GemFire</H3>
-
-<P>The {@link org.apache.geode.admin.GemFireHealth} interface
-allows the overall health of GemFire to be monitored.
-<code>GemFireHealth</code> monitors the behavior the members of a
-distributed system namely 
-application VMs that may host {@link org.apache.geode.cache.Cache
-cache} instances.  There are three levels of health: {@linkplain
-org.apache.geode.admin.GemFireHealth#GOOD_HEALTH good health} that
-indicates that all GemFire components are behaving reasonably,
-{@linkplain org.apache.geode.admin.GemFireHealth#OKAY_HEALTH okay
-health} that indicates that one or more GemFire components is slightly
-unhealthy and may need some attention, and {@linkplain
-org.apache.geode.admin.GemFireHealth#POOR_HEALTH poor health} that
-indicates that a GemFire component is unhealthy and needs immediate
-attention.</P>
-
-<P>Because each GemFire application has its own definition of what it
-means to be "healthy", the metrics that are used to determine health
-are configurable.  {@link
-org.apache.geode.admin.GemFireHealthConfig} provides methods for
-configuring how the health of {@linkplain
-org.apache.geode.admin.DistributedSystemHealthConfig the
-distributed system},
-{@linkplain org.apache.geode.admin.CacheHealthConfig members that
-host Cache instances}, and {@linkplain
-org.apache.geode.admin.MemberHealthConfig individual members} of
-the distributed system.  <code>GemFireHealthConfig</code> also allows
-you to configure how often GemFire's health is evaluated.</P>
-
-</BODY>
-</HTML>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/cache/Cache.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/Cache.java b/geode-core/src/main/java/org/apache/geode/cache/Cache.java
index 773654b..40570fb 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/Cache.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/Cache.java
@@ -35,6 +35,7 @@ import org.apache.geode.cache.wan.GatewaySenderFactory;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.i18n.LogWriterI18n;
+import org.apache.geode.internal.admin.api.AdminDistributedSystem;
 
 
 /** 
@@ -286,7 +287,7 @@ public interface Cache extends GemFireCache {
    * Sets whether or not this <code>Cache</code> resides in a
    * long-running "cache server" VM.  A cache server may be an
    * application VM or may be a stand-along VM launched using {@linkplain
-   * org.apache.geode.admin.AdminDistributedSystem#addCacheServer
+   * AdminDistributedSystem#addCacheServer
    * administration API} or the <code>cacheserver</code> command line
    * utility.
    *

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/cache/persistence/ConflictingPersistentDataException.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/persistence/ConflictingPersistentDataException.java b/geode-core/src/main/java/org/apache/geode/cache/persistence/ConflictingPersistentDataException.java
index 26f16ec..a978aac 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/persistence/ConflictingPersistentDataException.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/persistence/ConflictingPersistentDataException.java
@@ -17,7 +17,6 @@
 package org.apache.geode.cache.persistence;
 
 import org.apache.geode.GemFireException;
-import org.apache.geode.admin.AdminDistributedSystem;
 
 /**
  * Thrown when a member with persistence is recovering, and it discovers that

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/cache/persistence/PersistentID.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/persistence/PersistentID.java b/geode-core/src/main/java/org/apache/geode/cache/persistence/PersistentID.java
index 256e208..416609b 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/persistence/PersistentID.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/persistence/PersistentID.java
@@ -20,7 +20,7 @@ import java.net.InetAddress;
 import java.util.UUID;
 
 import org.apache.geode.DataSerializable;
-import org.apache.geode.admin.AdminDistributedSystem;
+import org.apache.geode.internal.admin.api.AdminDistributedSystem;
 import org.apache.geode.cache.DataPolicy;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/cache/persistence/RevokedPersistentDataException.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/persistence/RevokedPersistentDataException.java b/geode-core/src/main/java/org/apache/geode/cache/persistence/RevokedPersistentDataException.java
index 35a8ea5..d86b761 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/persistence/RevokedPersistentDataException.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/persistence/RevokedPersistentDataException.java
@@ -17,7 +17,7 @@
 package org.apache.geode.cache.persistence;
 
 import org.apache.geode.GemFireException;
-import org.apache.geode.admin.AdminDistributedSystem;
+import org.apache.geode.internal.admin.api.AdminDistributedSystem;
 
 /**
  * Thrown when a member with persistence is recovering, and it discovers that

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/distributed/DistributedSystem.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/DistributedSystem.java b/geode-core/src/main/java/org/apache/geode/distributed/DistributedSystem.java
index d0c7366..1d72cae 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/DistributedSystem.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/DistributedSystem.java
@@ -29,10 +29,12 @@ import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.Assert;
 import org.apache.geode.internal.ClassPathLoader;
+import org.apache.geode.internal.admin.api.AdminDistributedSystem;
+import org.apache.geode.internal.admin.api.AdminDistributedSystemFactory;
+import org.apache.geode.internal.admin.api.SystemMembershipEvent;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.internal.tcp.ConnectionTable;
 import org.apache.geode.internal.util.IOUtils;
-import org.apache.geode.security.GemFireSecurityException;
 
 import java.io.File;
 import java.net.InetAddress;
@@ -51,7 +53,7 @@ import static org.apache.geode.distributed.ConfigurationProperties.*;
  * is used when calling {@link
  * org.apache.geode.cache.CacheFactory#create}.  This class should
  * not be confused with the {@link
- * org.apache.geode.admin.AdminDistributedSystem
+ * AdminDistributedSystem
  * AdminDistributedSystem} interface that is used for administering a
  * distributed system.
  *
@@ -169,7 +171,7 @@ public abstract class DistributedSystem implements StatisticsFactory {
    *         If a <code>DistributedSystem</code> with a different
    *         configuration has already been created in this VM or if
    *         this VM is {@link
-   *         org.apache.geode.admin.AdminDistributedSystem
+   *         AdminDistributedSystem
    *         administering} a distributed system.
    * @throws org.apache.geode.GemFireIOException
    *         Problems while reading configuration properties file or
@@ -349,7 +351,7 @@ public abstract class DistributedSystem implements StatisticsFactory {
   }
 
   /**
-   * see {@link org.apache.geode.admin.AdminDistributedSystemFactory}
+   * see {@link AdminDistributedSystemFactory}
    * @since GemFire 5.7
    */
   protected static void setEnableAdministrationOnly(boolean adminOnly) {
@@ -363,28 +365,6 @@ public abstract class DistributedSystem implements StatisticsFactory {
     }
   }
 
-//   /**
-//    * Connects to a GemFire distributed system with a configuration
-//    * supplemented by the given properties.
-//    *
-//    * @param config
-//    *        The <a href="#configuration">configuration properties</a>
-//    *        used when connecting to the distributed system
-//    * @param callback
-//    *        A user-specified object that is delivered with the {@link
-//    *        org.apache.geode.admin.SystemMembershipEvent}
-//    *        triggered by connecting.
-//    *
-//    * @see #connect(Properties)
-//    * @see org.apache.geode.admin.SystemMembershipListener#memberJoined
-//    *
-//    * @since GemFire 4.0
-//    */
-//   public static DistributedSystem connect(Properties config,
-//                                           Object callback) {
-//     throw new UnsupportedOperationException("Not implemented yet");
-//   }
-
   //////////////////////  Constructors  //////////////////////
 
   /**
@@ -476,7 +456,7 @@ public abstract class DistributedSystem implements StatisticsFactory {
    * Returns a string that uniquely identifies this connection to the
    * distributed system.
    *
-   * @see org.apache.geode.admin.SystemMembershipEvent#getMemberId
+   * @see SystemMembershipEvent#getMemberId
    *
    * @since GemFire 4.0
    * @deprecated as of GemFire 5.0, use {@link #getDistributedMember} instead

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionManager.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionManager.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionManager.java
index 1cb4ada..83b74fb 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionManager.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionManager.java
@@ -17,7 +17,7 @@
 package org.apache.geode.distributed.internal;
 
 import org.apache.geode.*;
-import org.apache.geode.admin.GemFireHealthConfig;
+import org.apache.geode.internal.admin.api.GemFireHealthConfig;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.Locator;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/distributed/internal/HealthMonitor.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/HealthMonitor.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/HealthMonitor.java
index 46da196..c6fa293 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/HealthMonitor.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/HealthMonitor.java
@@ -17,7 +17,7 @@
    
 package org.apache.geode.distributed.internal;
 
-import org.apache.geode.admin.GemFireHealth;
+import org.apache.geode.internal.admin.api.GemFireHealth;
 
 /**
  * Represents a thread that monitor the health of the vm it lives in.

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/distributed/internal/HealthMonitorImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/HealthMonitorImpl.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/HealthMonitorImpl.java
index 5773583..d403ffc 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/HealthMonitorImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/HealthMonitorImpl.java
@@ -19,9 +19,9 @@ package org.apache.geode.distributed.internal;
 
 import org.apache.logging.log4j.Logger;
 
-import org.apache.geode.admin.GemFireHealth;
-import org.apache.geode.admin.GemFireHealthConfig;
-import org.apache.geode.admin.internal.GemFireHealthEvaluator;
+import org.apache.geode.internal.admin.api.GemFireHealth;
+import org.apache.geode.internal.admin.api.GemFireHealthConfig;
+import org.apache.geode.internal.admin.api.impl.GemFireHealthEvaluator;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.admin.remote.HealthListenerMessage;
 import org.apache.geode.internal.i18n.LocalizedStrings;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java
index 848a86e..9074390 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java
@@ -54,7 +54,7 @@ import org.apache.geode.StatisticsType;
 import org.apache.geode.StatisticsTypeFactory;
 import org.apache.geode.SystemConnectException;
 import org.apache.geode.SystemFailure;
-import org.apache.geode.admin.AlertLevel;
+import org.apache.geode.internal.admin.api.AlertLevel;
 import org.apache.geode.cache.CacheClosedException;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.execute.internal.FunctionServiceManager;
@@ -75,6 +75,7 @@ import org.apache.geode.internal.DSFIDFactory;
 import org.apache.geode.internal.InternalDataSerializer;
 import org.apache.geode.internal.InternalInstantiator;
 import org.apache.geode.internal.SystemTimer;
+import org.apache.geode.internal.admin.api.AdminDistributedSystemFactory;
 import org.apache.geode.internal.admin.remote.DistributionLocatorId;
 import org.apache.geode.internal.cache.CacheConfig;
 import org.apache.geode.internal.cache.CacheServerImpl;
@@ -2864,7 +2865,7 @@ public class InternalDistributedSystem extends DistributedSystem implements OsSt
   }
 
   /**
-   * see {@link org.apache.geode.admin.AdminDistributedSystemFactory}
+   * see {@link AdminDistributedSystemFactory}
    * @since GemFire 5.7
    */
   public static void setEnableAdministrationOnly(boolean adminOnly) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/internal/DSFIDFactory.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/DSFIDFactory.java b/geode-core/src/main/java/org/apache/geode/internal/DSFIDFactory.java
index d8c0223..9a8abb3 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/DSFIDFactory.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/DSFIDFactory.java
@@ -25,20 +25,19 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.io.NotSerializableException;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 
 import org.apache.geode.DataSerializer;
 import org.apache.geode.InternalGemFireError;
-import org.apache.geode.admin.internal.FinishBackupRequest;
-import org.apache.geode.admin.internal.FinishBackupResponse;
-import org.apache.geode.admin.internal.FlushToDiskRequest;
-import org.apache.geode.admin.internal.FlushToDiskResponse;
-import org.apache.geode.admin.internal.PrepareBackupRequest;
-import org.apache.geode.admin.internal.PrepareBackupResponse;
-import org.apache.geode.admin.internal.SystemMemberCacheEventProcessor;
-import org.apache.geode.admin.jmx.internal.StatAlertNotification;
+import org.apache.geode.internal.admin.api.impl.FinishBackupRequest;
+import org.apache.geode.internal.admin.api.impl.FinishBackupResponse;
+import org.apache.geode.internal.admin.api.impl.FlushToDiskRequest;
+import org.apache.geode.internal.admin.api.impl.FlushToDiskResponse;
+import org.apache.geode.internal.admin.api.impl.PrepareBackupRequest;
+import org.apache.geode.internal.admin.api.impl.PrepareBackupResponse;
+import org.apache.geode.internal.admin.api.impl.SystemMemberCacheEventProcessor;
+import org.apache.geode.internal.admin.api.jmx.impl.StatAlertNotification;
 import org.apache.geode.cache.InterestResultPolicy;
 import org.apache.geode.cache.client.internal.CacheServerLoadMessage;
 import org.apache.geode.cache.client.internal.locator.ClientConnectionRequest;
@@ -78,7 +77,6 @@ import org.apache.geode.cache.query.internal.types.StructTypeImpl;
 import org.apache.geode.distributed.internal.DistributionAdvisor;
 import org.apache.geode.distributed.internal.HighPriorityAckedMessage;
 import org.apache.geode.distributed.internal.ReplyMessage;
-import org.apache.geode.distributed.internal.ReplyProcessor21;
 import org.apache.geode.distributed.internal.SerialAckedMessage;
 import org.apache.geode.distributed.internal.ShutdownMessage;
 import org.apache.geode.distributed.internal.StartupMessage;
@@ -399,7 +397,6 @@ import org.apache.geode.internal.cache.wan.parallel.ParallelQueueBatchRemovalMes
 import org.apache.geode.internal.cache.wan.parallel.ParallelQueueBatchRemovalMessage.BatchRemovalReplyMessage;
 import org.apache.geode.internal.cache.wan.parallel.ParallelQueueRemovalMessage;
 import org.apache.geode.internal.cache.wan.serial.BatchDestroyOperation;
-import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.management.internal.JmxManagerAdvisor.JmxManagerProfile;
 import org.apache.geode.management.internal.JmxManagerAdvisor.JmxManagerProfileMessage;
 import org.apache.geode.management.internal.JmxManagerLocatorRequest;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/internal/MigrationServer.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/MigrationServer.java b/geode-core/src/main/java/org/apache/geode/internal/MigrationServer.java
index 93423f7..b35771c 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/MigrationServer.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/MigrationServer.java
@@ -18,7 +18,7 @@ package org.apache.geode.internal;
 
 import static org.apache.geode.distributed.ConfigurationProperties.*;
 
-import org.apache.geode.admin.internal.InetAddressUtil;
+import org.apache.geode.internal.admin.api.impl.InetAddressUtil;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.Region;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java b/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java
index 2944abe..7f6308d 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java
@@ -19,9 +19,9 @@ package org.apache.geode.internal;
 import static org.apache.geode.distributed.ConfigurationProperties.*;
 
 import org.apache.geode.*;
-import org.apache.geode.admin.AdminException;
-import org.apache.geode.admin.BackupStatus;
-import org.apache.geode.admin.internal.AdminDistributedSystemImpl;
+import org.apache.geode.internal.admin.api.AdminException;
+import org.apache.geode.internal.admin.api.BackupStatus;
+import org.apache.geode.internal.admin.api.impl.AdminDistributedSystemImpl;
 import org.apache.geode.cache.persistence.PersistentID;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.*;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/internal/admin/ClientMembershipMessage.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/ClientMembershipMessage.java b/geode-core/src/main/java/org/apache/geode/internal/admin/ClientMembershipMessage.java
index 5132ff2..3556c6f 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/ClientMembershipMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/ClientMembershipMessage.java
@@ -21,7 +21,7 @@ import java.io.DataOutput;
 import java.io.IOException;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.admin.internal.AdminDistributedSystemImpl;
+import org.apache.geode.internal.admin.api.impl.AdminDistributedSystemImpl;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/internal/admin/GemFireVM.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/GemFireVM.java b/geode-core/src/main/java/org/apache/geode/internal/admin/GemFireVM.java
index 68a4a39..019293c 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/GemFireVM.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/GemFireVM.java
@@ -17,16 +17,11 @@
 
 package org.apache.geode.internal.admin;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-
-import org.apache.geode.admin.AdminException;
-import org.apache.geode.admin.GemFireHealth;
-import org.apache.geode.admin.GemFireHealthConfig;
-import org.apache.geode.admin.GemFireMemberStatus;
-import org.apache.geode.admin.RegionSubRegionSnapshot;
+import org.apache.geode.internal.admin.api.AdminException;
+import org.apache.geode.internal.admin.api.GemFireHealth;
+import org.apache.geode.internal.admin.api.GemFireHealthConfig;
+import org.apache.geode.internal.admin.api.GemFireMemberStatus;
+import org.apache.geode.internal.admin.api.RegionSubRegionSnapshot;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionAttributes;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
@@ -158,7 +153,7 @@ public interface GemFireVM {
   public Config getConfig();
 
   /**
-   * Returns the runtime {@link org.apache.geode.admin.GemFireMemberStatus} from the vm
+   * Returns the runtime {@link GemFireMemberStatus} from the vm
    * The idea is this snapshot is similar to stats that represent the current state of a 
    * running VM. However, this is a bit higher level than a stat 
    * @since GemFire 5.7
@@ -166,7 +161,7 @@ public interface GemFireVM {
   public GemFireMemberStatus getSnapshot();
   
   /**
-   * Returns the runtime {@link org.apache.geode.admin.RegionSubRegionSnapshot} from the vm
+   * Returns the runtime {@link RegionSubRegionSnapshot} from the vm
    * The idea is this snapshot is quickly salvageable to present a cache's region's info 
    * @since GemFire 5.7
    */

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/internal/admin/HealthListener.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/HealthListener.java b/geode-core/src/main/java/org/apache/geode/internal/admin/HealthListener.java
index 671e2c6..cb09347 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/HealthListener.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/HealthListener.java
@@ -17,13 +17,14 @@
    
 package org.apache.geode.internal.admin;
 
-import org.apache.geode.admin.GemFireHealth;
+import org.apache.geode.internal.admin.api.GemFireHealth;
+import org.apache.geode.internal.admin.api.GemFireHealthConfig;
 
 /**
  * Interface for those who want to be alerted of a change in a GemFireVM's
  * health.
  *
- * @see org.apache.geode.admin.GemFireHealthConfig
+ * @see GemFireHealthConfig
  *
  * @since GemFire 3.5
  */

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/internal/admin/StatAlertsManager.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/StatAlertsManager.java b/geode-core/src/main/java/org/apache/geode/internal/admin/StatAlertsManager.java
index eeb6261..33acefc 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/StatAlertsManager.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/StatAlertsManager.java
@@ -31,7 +31,7 @@ import org.apache.geode.CancelException;
 import org.apache.geode.StatisticDescriptor;
 import org.apache.geode.Statistics;
 import org.apache.geode.StatisticsType;
-import org.apache.geode.admin.jmx.internal.StatAlertsAggregator;
+import org.apache.geode.internal.admin.api.jmx.impl.StatAlertsAggregator;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.SystemTimer;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminConfig.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminConfig.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminConfig.java
new file mode 100755
index 0000000..82e9ff5
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminConfig.java
@@ -0,0 +1,156 @@
+/*
+ * 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.internal.admin.api;
+
+import org.apache.geode.internal.i18n.LocalizedStrings;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Date;
+
+
+/**
+ * AdminConfig loads/stores the member information list. The list contains
+ * all of the members being monitored.
+ *
+ * Config must be of the format:
+ * <p>
+ * <li> Name=What you want displayed as a name for the instance
+ * <li> Type=SERVER|CLIENT
+ * <li> Host=A valid hostname or IP Address where the instance is
+ * running
+ * <li> Port=The port you are using to open the monitor port for
+ * the instance
+ * @deprecated as of 7.0 use the <code><a href="{@docRoot}/org/apache/geode/management/package-summary.html">management</a></code> package instead
+ */
+public class AdminConfig
+{
+  // Name, Type, Host, Port
+  public static Entry[] loadConfig(File file) throws IOException
+  {
+
+    // Place all lines into stack
+    ArrayList entryList = new ArrayList();
+    FileReader reader = null;
+    BufferedReader fileReader = null;
+    try {
+      reader = new FileReader(file);
+      fileReader = new BufferedReader(reader);
+      // Read the first line.
+      String line = fileReader.readLine();
+
+      while (line != null) {
+        line = line.trim();
+
+        // Replace tabs with spaces
+        line = line.replace('\t', ' ');
+
+        // Skip all empty and comment lines
+          if (line.length() != 0 && line.startsWith("#") == false) {
+            try {
+              entryList.add(new Entry(line));
+            } catch (Exception ex) {
+          // ignore - drop any lines that are not valid
+        }
+          }
+          line = fileReader.readLine();
+      }
+    }
+    finally {
+      if (fileReader != null) {
+        fileReader.close();
+      }
+      if (reader != null) {
+        reader.close();
+      }
+    }
+
+    return (Entry[])entryList.toArray(new Entry[0]);
+  }
+
+  public static void storeConfig(File file, AdminConfig.Entry entries[]) throws IOException
+  {
+    FileOutputStream fos = null;
+    PrintStream ps = null;
+    try {
+      fos = new FileOutputStream(file);
+      ps = new PrintStream(fos);
+  
+      // Header
+      ps.print("#");
+      ps.println(LocalizedStrings.AdminConfig_THIS_FILE_IS_GENERATED_BY_ADMINCONSOLE_EDIT_AS_YOU_WISH_BUT_IT_WILL_BE_OVERWRITTEN_IF_IT_IS_MODIFIED_IN_ADMINCONSOLE.toLocalizedString());
+      ps.println("#");
+      ps.println(LocalizedStrings.AdminConfig_MODIFIED_0.toLocalizedString(new Date()));
+      ps.println("#");
+      ps.println("# Name, Type, Host, Port");
+      ps.println("#");
+      int len = entries.length;
+      for (int i = 0; i < len; i++) {
+        ps.println(entries[i].toString());
+      }
+      ps.flush();
+    }
+    finally {
+      if (ps != null) {
+        ps.close();
+      }
+      if (fos != null) {
+        fos.close();
+      }
+    }
+  }
+
+
+  public static class Entry
+  {
+    public String name;
+    public String type;
+    public String host;
+    public int port;
+
+    public Entry(String line)
+    {
+            // Split
+            String split[] = line.split(",");
+
+            // Convert line to parameters
+            name = split[0].trim();
+            type = split[1].trim();
+            host = split[2].trim();
+            port = Integer.parseInt(split[3]);
+    }
+
+    public Entry(String name, String type, String host, int port)
+    {
+      this.name = name;
+      this.type = type;
+      this.host = host;
+      this.port = port;
+    }
+
+    @Override // GemStoneAddition
+    public String toString()
+    {
+      return name + "," + type + "," + host + "," + port;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminDistributedSystem.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminDistributedSystem.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminDistributedSystem.java
new file mode 100755
index 0000000..e15c5b9
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminDistributedSystem.java
@@ -0,0 +1,476 @@
+/*
+ * 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.internal.admin.api;
+
+import org.apache.geode.cache.DataPolicy;
+import org.apache.geode.cache.persistence.PersistentID;
+import org.apache.geode.distributed.DistributedMember;
+
+import java.io.File;
+import java.net.InetAddress;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+/**
+ * Administrative interface for managing an entire GemFire distributed
+ * system.  This interface should not be confused with {@link
+ * org.apache.geode.distributed.DistributedSystem
+ * DistributedSystem} that represents a connection to a GemFire
+ * distributed system.
+ *
+ * @see AdminDistributedSystemFactory
+ *
+ * @since GemFire     3.5
+ * @deprecated as of 7.0 use the <code><a href="{@docRoot}/org/apache/geode/management/package-summary.html">management</a></code> package instead
+ */
+public interface AdminDistributedSystem {
+	
+  /**
+   * Retrieves the unique id for this system.
+   */
+  public String getId();
+  
+  /**
+   * Retrieves display friendly name for this system.  If this administrative
+   * VM defined an optional name for its connection to the distributed system,
+   * that name will be returned.  Otherwise the returned value will be {@link
+   * AdminDistributedSystem#getId}.
+   */
+  public String getName();
+  
+  /**
+   * Retrieves the remote command and formatting this system should use to 
+   * access and/or manipulate resources on remote machines.
+   */
+  public String getRemoteCommand();
+
+  /**
+   * Sets the remote command and formatting this system should use to access 
+   * and/or manipulate resources on remote machines.
+   */
+  public void setRemoteCommand(String remoteCommand);
+
+  /**
+   * Sets the lowest level of alert that should be delivered to the
+   * {@link AlertListener}s registered on this
+   * <code>AdminDistributedSystem</code>.  The default level is {@link
+   * AlertLevel#WARNING}. 
+   */
+  public void setAlertLevel(AlertLevel level);
+
+  /**
+   * Returns the lowest level of alerts that should be delivered to
+   * the {@link AlertListener}s registered on this
+   * <code>AdminDistributedSystem</code>.
+   *
+   * @see #setAlertLevel
+   */
+  public AlertLevel getAlertLevel();
+  
+  /**
+   * Sets the lowest level of alert that should be delivered to the
+   * {@link AlertListener}s registered on this
+   * <code>AdminDistributedSystem</code>.  The default level is {@link
+   * AlertLevel#WARNING}. 
+   */
+  public void setAlertLevelAsString(String level);
+
+  /**
+   * Returns the lowest level of alerts that should be delivered to
+   * the {@link AlertListener}s registered on this
+   * <code>AdminDistributedSystem</code>.
+   *
+   * @see #setAlertLevelAsString
+   */
+  public String getAlertLevelAsString();
+
+  /**
+   * Registers an <code>AlertListener</code> that will receive all
+   * alerts that are at or above the {@linkplain #setAlertLevel alert
+   * level}. 
+   */
+  public void addAlertListener(AlertListener listener);
+
+  /**
+   * Unregisters an <code>AlertListener</code> 
+   */
+  public void removeAlertListener(AlertListener listener);
+
+  /**
+   * Retrieves the multicast address in use by this system.
+   */
+  public String getMcastAddress();
+
+  /**
+   * Retrieves the multicast port in use by this system.
+   */
+  public int getMcastPort();
+
+  /**
+   * Retrieves comma-delimited list locators to be used if multi-cast port is
+   * zero.  Format of each locators must be host[port].
+   */
+  public String getLocators();
+
+  /** 
+   * Returns true if this system has enabled the use of multicast for communications
+   */
+  public boolean isMcastEnabled();
+  
+  /**
+   * Returns true if any members of this system are currently running.
+   */
+  public boolean isRunning();
+
+  /** 
+   * Returns <code>true</code> if this is currently connected to the
+   * system.
+   */
+  public boolean isConnected();
+    
+  /**
+   * Starts all managed entities that are not currently running.
+   *
+   * @throws AdminException
+   *         If a problem is encountered while starting the managed
+   *         entities.
+   */
+  public void start() throws AdminException;
+
+  /**
+   * Stops all managed entities that are currently running.
+   *
+   * @throws AdminException
+   *         If a problem is encountered while starting the managed
+   *         entities.
+   */
+  public void stop() throws AdminException;
+
+  /**
+   * Merges and returns all system logs as a single formatted log.
+   */
+  public String displayMergedLogs();
+
+  /**
+   * Retrieves the license information for this installation of GemFire.
+   *
+   * @deprecated Removed licensing in 8.0.
+   */
+  public java.util.Properties getLicense();
+
+  /**
+   * Creates a new <code>DistributionLocator</code> that is ready to
+   * {@linkplain DistributionLocator#getConfig configure} and
+   * {@linkplain #start start}.
+   *
+   * <P>
+   *
+   * It is presumed that the newly-added locator is used to discover
+   * members of the distributed system.  That is, the host/port of the
+   * new locator is appended to the {@link #getLocators locators}
+   * attribute of this <code>AdminDistributedSystem</code>.
+   */
+  public DistributionLocator addDistributionLocator();
+  
+  /** 
+   * Returns array of <code>DistributionLocator</code>s administered
+   * by this <code>AdminDistributedSystem</code>.
+   */ 
+  public DistributionLocator[] getDistributionLocators();
+  
+  /**
+   * Retrieves SystemMember instances for every
+   * application that is running and currently connection to this
+   * system.  Note that this list does not include dedicated
+   * {@linkplain #getCacheVms cache server vms}.
+   */
+  public SystemMember[] getSystemMemberApplications() 
+  throws AdminException;
+
+  /**
+   * Display in readable format the latest Alert in this distributed system.
+   */
+  public String getLatestAlert();
+  
+  /**
+   * Returns an object for monitoring the health of GemFire.
+   */
+  public GemFireHealth getGemFireHealth();
+
+  /**
+   * Connects to the distributed system.  This method will return
+   * immediately after spawning a background thread that connects to
+   * the distributed system.  As a result, a
+   * <code>AdminDistributedSystem</code> can be "connected" to before
+   * any members of the system have been started or have been seen.
+   * The {@link #waitToBeConnected} method will wait for the
+   * connection to be made.
+   *
+   * @see #isConnected
+   * @see #isRunning
+   * @see #waitToBeConnected
+   */
+  public void connect();
+
+  /**
+   * Wait for up to a given number of milliseconds for the connection
+   * to the distributed system to be made.
+   *
+   * @param timeout
+   *        The number of milliseconds to wait for the connection to
+   *        to be made.
+   *
+   * @return Whether or not the connection was made.
+   *         <code>false</code>, if the method times out
+   *
+   * @throws InterruptedException
+   *         If the thread invoking this method is interrupted while
+   *         waiting. 
+   * @throws IllegalStateException
+   *         If {@link #connect} has not yet been called.
+   */
+  public boolean waitToBeConnected(long timeout)
+    throws InterruptedException;
+
+  /**
+   * Disconnects from the distributed system.
+   */
+  public void disconnect();
+
+  /** Returns this system's configuration .*/  
+  public DistributedSystemConfig getConfig();
+  
+  /**
+   * Registers a listener that receives callbacks when a member joins
+   * or leaves the distributed system.
+   */
+  public void addMembershipListener(SystemMembershipListener listener);
+
+  /**
+   * Unregisters a membership listener
+   *
+   * @see #addMembershipListener
+   */
+  public void removeMembershipListener(SystemMembershipListener listener);
+
+  /**
+   * Registers a cache event listener.
+   * Does nothing if the listener is already registered. The listeners are called
+   * in the order they are registered.
+   * @param listener the listener to register.
+    * @since GemFire 5.0
+   */
+   public void addCacheListener(SystemMemberCacheListener listener);
+
+   /**
+    * Unregisters a cache listener. Does nothing if the listener is
+    * not registered.
+    * @param listener the listener to unregister.
+    * @since GemFire 5.0
+    */
+   public void removeCacheListener(SystemMemberCacheListener listener);
+
+  /**
+   * Creates a new cache server that is ready to {@linkplain
+   * CacheServerConfig configure} and {@linkplain #start
+   * start}.
+   *
+   * @since GemFire 4.0
+   * @deprecated as of 5.7 use {@link #addCacheVm} instead.
+   */
+  @Deprecated
+  public CacheServer addCacheServer() throws AdminException;
+
+  /**
+   * Returns all of the dedicated cache server members of the
+   * distributed system.  Because they are not managed entities,
+   * application VMs that host a server cache are not included in the
+   * array.
+   *
+   * @since GemFire 4.0
+   * @deprecated as of 5.7 use {@link #getCacheVms} instead.
+   */
+  @Deprecated
+  public CacheServer[] getCacheServers() throws AdminException;
+
+  /**
+   * Returns all the cache server members of the distributed system which are
+   * hosting a client queue for the particular durable-client having the given
+   * durableClientId
+   * 
+   * @param durableClientId -
+   *                durable-id of the client
+   * @return array of CacheServer(s) having the queue for the durable client
+   * @throws AdminException
+   *
+   * @since GemFire 5.6
+   */
+  public CacheServer[] getCacheServers(String durableClientId)
+      throws AdminException;
+
+  /**
+   * Creates a new cache vm that is ready to {@linkplain
+   * CacheVmConfig configure} and {@linkplain #start
+   * start}.
+   *
+   * @since GemFire 5.7
+   */
+  public CacheVm addCacheVm() throws AdminException;
+
+  /**
+   * Returns all of the dedicated cache server vm members of the
+   * distributed system.  Because they are not managed entities,
+   * application VMs that host a server cache are not included in the
+   * array.
+   *
+   * @since GemFire 5.7
+   */
+  public CacheVm[] getCacheVms() throws AdminException;
+
+  /**
+   * Returns the administrative SystemMember specified by the {@link
+   * org.apache.geode.distributed.DistributedMember}.
+   *
+   * @param distributedMember the distributed member to lookup
+   * @return administrative SystemMember for that distributed member
+   * @since GemFire 5.0
+   */
+  public SystemMember lookupSystemMember(DistributedMember distributedMember) 
+  throws AdminException;
+
+  /**
+   * Indicate to the distributed system that persistent files have been lost.
+   * When a member recovers from a set of persistent files, it will wait for
+   * other members that were also persisting the same region to start up. If the
+   * persistent files for those other members were lost, this method can be used
+   * to tell the remaining members to stop waiting for the lost data.
+   * 
+   * @param host
+   *          The host of the member whose files were lost.
+   * @param directory
+   *          The directory where those files resided.
+   * @since GemFire 6.5
+   * @deprecated use {@link #revokePersistentMember(UUID)} instead
+   */
+  public void revokePersistentMember(InetAddress host, String directory) throws AdminException;
+  
+  /**
+   * Indicate to the distributed system that persistent files have been lost.
+   * When a member recovers from a set of persistent files, it will wait for
+   * other members that were also persisting the same region to start up. If the
+   * persistent files for those other members were lost, this method can be used
+   * to tell the remaining members to stop waiting for the lost data.
+   * 
+   * @param diskStoreID
+   *          The unique id of the disk store which you are revoking. The unique
+   *          id can be discovered from {@link #getMissingPersistentMembers()}
+   * 
+   * @since GemFire 7.0
+   */
+  public void revokePersistentMember(UUID diskStoreID) throws AdminException;
+  
+  /**
+   * Retrieve the set of persistent files that the existing members are waiting
+   * for. See {@link AdminDistributedSystem#revokePersistentMember(InetAddress, String)}
+   * @return The persistent members that were known to the existing persistent members,
+   * when the existing members were last online.
+   * @throws AdminException
+   * @since GemFire 6.5
+   * 
+   */
+  public Set<PersistentID> getMissingPersistentMembers() throws AdminException;
+
+  /**
+   * Shuts down all the members of the distributed system with a cache that the admin 
+   * member is connected to, excluding the stand-alone locators. Calling this method
+   * will ensure that regions with the {@link DataPolicy#PERSISTENT_PARTITION} to
+   * be shutdown in a way which allows for a faster recovery when the members are 
+   * restarted.
+   * 
+   * Killing individual members can lead to inconsistencies in the members persistent
+   * data, which gemfire repairs on startup. Calling shutDownAllMembers makes sure
+   * that the persistent files are consistent on shutdown, which makes recovery faster.
+   *  
+   * This is equivalent to calling shutDownAllMembers(0);
+   * @return The set of members that were shutdown
+   * @since GemFire 6.5
+   */
+  public Set<DistributedMember> shutDownAllMembers() throws AdminException;
+  
+  /**
+   * Shuts down all the members of the distributed system with a cache that the
+   * admin member is connected to, excluding the stand-alone locators. Calling
+   * this method will ensure that regions with the
+   * {@link DataPolicy#PERSISTENT_PARTITION} to be shutdown in a way which
+   * allows for a faster recovery when the members are restarted.
+   * 
+   * Killing individual members can lead to inconsistencies in the members
+   * persistent data, which gemfire repairs on startup. Calling
+   * shutDownAllMembers makes sure that the persistent files are consistent on
+   * shutdown, which makes recovery faster.
+   * 
+   * @param timeout The amount of time to wait (in milliseconds) for the shutdown all to
+   *          complete. 
+   * @return The set of members that were shutdown, or null if the timeout is exceeded.
+   * 
+   * @since GemFire 6.5
+   */
+  public Set<DistributedMember> shutDownAllMembers(long timeout) throws AdminException;
+
+  /**
+   * Backup the persistent files for all of the members of the distributed
+   * system that the admin member is connected to. 
+   * 
+   * @param targetDir The directory where each member's backup should be placed.
+   * 
+   * @return The status of the backup, which includes the set of members
+   * that were backed up and the set of members that were known to be
+   * offline at the time of backup.
+   * @since GemFire 6.5
+   */
+  public BackupStatus backupAllMembers(File targetDir) throws AdminException;
+  
+  /**
+   * Incrementally backup the persistent files for all of the members of the distributed
+   * system that the admin member is connected to. Only new operation log files since the previous backup will be copied during this backup.
+   * The generated restore script will reference and copy operation log files from the previous backup.
+   * 
+   * @param targetDir The directory where each member's backup should be placed.
+   * @param baselineDir The directory of a previous backup.
+   * If this parameter is null or the directory does not exist (on a member by member basis)
+   * a full backup will be performed for the member. 
+   * 
+   * @return The status of the backup, which includes the set of members
+   * that were backed up and the set of members that were known to be
+   * offline at the time of backup.
+   * @since GemFire 6.5
+   */
+  public BackupStatus backupAllMembers(File targetDir,File baselineDir) throws AdminException;
+  
+  /**
+   * Compact the persistent files for all of the members of the distributed
+   * system that the admin member connected to. 
+   * 
+   * This is equivalent to calling {DiskStore#forceCompaction} on all members.
+   * 
+   * @return The set of members that compacted their disk stores.
+   * @since GemFire 6.5
+   */
+  public Map<DistributedMember, Set<PersistentID>> compactAllDiskStores() throws AdminException;
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminDistributedSystemFactory.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminDistributedSystemFactory.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminDistributedSystemFactory.java
new file mode 100755
index 0000000..fb6deb4
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminDistributedSystemFactory.java
@@ -0,0 +1,161 @@
+/*
+ * 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.internal.admin.api;
+
+import org.apache.geode.internal.admin.api.impl.AdminDistributedSystemImpl;
+import org.apache.geode.internal.admin.api.impl.DistributedSystemConfigImpl;
+import org.apache.geode.distributed.DistributedSystem;
+import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.DistributionConfigImpl;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
+import org.apache.geode.i18n.LogWriterI18n;
+import org.apache.geode.internal.i18n.LocalizedStrings;
+import org.apache.geode.internal.logging.LocalLogWriter;
+
+import java.util.Properties;
+
+/**
+ * Factory for creating GemFire administration entities. 
+ *
+ * @since GemFire     3.5
+ * @deprecated as of 7.0 use the <code><a href="{@docRoot}/org/apache/geode/management/package-summary.html">management</a></code> package instead
+ */
+public class AdminDistributedSystemFactory {
+  
+  /**
+   * Sets the address this VM should bind to when connecting to the distributed
+   * system.  This involves a system property, so using this option will limit
+   * all connections to distributed systems to this one network interface.
+   * <p>
+   * Using a null or empty bindAddress will clear the usage of this option and
+   * connections to distributed systems will return to using all available
+   * network interfaces.
+   * <p>
+   * This method always throws UnsupportedOperationException because it is
+   * now deprecated and is unsafe to use. Please use {@link 
+   * DistributedSystemConfig#setBindAddress} instead.
+   *
+   * @param bindAddress machine name or IP address to bind to
+   * @throws UnsupportedOperationException because of deprecation
+   * @deprecated Use {@link DistributedSystemConfig#setBindAddress} instead.
+   */
+  @Deprecated
+  public static void bindToAddress(String bindAddress) {
+    throw new UnsupportedOperationException(LocalizedStrings.AdminDistributedSystemFactory_PLEASE_USE_DISTRIBUTEDSYSTEMCONFIGSETBINDADDRESS_INSTEAD.toLocalizedString());
+  }
+  
+  /**
+   * Defines a "default" distributed system configuration based on VM
+   * system properties and the content of
+   * <code>gemfire.properties</code>.  The {@linkplain
+   * DistributedSystemConfig#DEFAULT_REMOTE_COMMAND} default remote
+   * command is used.
+   *
+   * @see DistributedSystem#connect
+   */
+  public static DistributedSystemConfig defineDistributedSystem() {
+    DistributionConfig dc = new DistributionConfigImpl(new Properties());
+
+    String remoteCommand =
+      DistributedSystemConfig.DEFAULT_REMOTE_COMMAND;
+    return new DistributedSystemConfigImpl(dc, remoteCommand);
+  }
+
+  /**
+   * Call this method with a value of <code>true</code>
+   * to dedicate the VM to GemFire administration only.
+   * Default is <code>false</code>.
+   * <p>This method <em>must</em> be called before calling
+   * {@link AdminDistributedSystem#connect}. It <em>must</em> also be called
+   * before {@link DistributedSystem#connect} is when creating a colocated distributed system.
+   * <p>
+   * Once it has been enabled be careful to only use GemFire APIs from the
+   * <code>org.apache.geode.internal.admin</code> package. In particular do not create
+   * a {@link org.apache.geode.cache.Cache} or a normal {@link DistributedSystem}.
+   * @param adminOnly <code>true</code> if this VM should be limited to administration APIs;
+   *  <code>false</code> if this VM should allow all GemFire APIs.
+   * @throws IllegalStateException if a {@link DistributedSystem}
+   * or {@link AdminDistributedSystem} connection already exists.
+   * 
+   * @since GemFire 5.7
+   */
+  public static void setEnableAdministrationOnly(boolean adminOnly) {
+    InternalDistributedSystem.setEnableAdministrationOnly(adminOnly);
+  }
+  
+  /**
+   * Defines a distributed system configuration for administering the
+   * distributed system to which this VM is currently connected.  The
+   * <code>DistributedSystem</code> is used to configure the discovery
+   * mechanism (multicast or locators), bind address, SSL attributes,
+   * as well as the logger of the
+   * <code>DistributedSystemConfig</code>.  Note that the distributed
+   * system will not be able to be administered until the {@link
+   * AdminDistributedSystem#connect connect} method is invoked.
+   *
+   * @param system
+   *        A connection to the distributed system
+   * @param remoteCommand
+   *        The shell command that is used to launch processes that
+   *        run on remote machines.  If <code>null</code>, then the
+   *        {@linkplain DistributedSystemConfig#DEFAULT_REMOTE_COMMAND
+   *        default} will be used.
+   *
+   * @since GemFire 4.0
+   */
+  public static DistributedSystemConfig
+    defineDistributedSystem(DistributedSystem system,
+                            String remoteCommand)
+    throws AdminException {
+
+    InternalDistributedSystem internal =
+      (InternalDistributedSystem) system;
+    if (remoteCommand == null) {
+      remoteCommand = DistributedSystemConfig.DEFAULT_REMOTE_COMMAND;
+    }
+    
+    DistributedSystemConfigImpl impl =
+      new DistributedSystemConfigImpl(internal.getConfig(),
+                                      remoteCommand);
+    return impl;
+  }
+
+  /**
+   * Returns the distributed system for administrative monitoring and
+   * managing.  You must then call {@link
+   * AdminDistributedSystem#connect} before interacting with the
+   * actual system.
+   *
+   * @param config configuration definition of the system to administer
+   * @return administrative interface for a distributed system
+   */
+  public static AdminDistributedSystem getDistributedSystem(DistributedSystemConfig config) {
+    return new AdminDistributedSystemImpl((DistributedSystemConfigImpl)config);
+  }
+  
+  /**
+   * Returns a default GemFire LogWriterI18n for logging.  This LogWriterI18n will
+   * log to standard out.
+   *
+   * @return a GemFire LogWriterI18n for logging
+   */
+  public static LogWriterI18n getLogWriter() {
+    return new LocalLogWriter(DistributionConfig.DEFAULT_LOG_LEVEL);
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminException.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminException.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminException.java
new file mode 100755
index 0000000..0b5e41c
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminException.java
@@ -0,0 +1,89 @@
+/*
+ * 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.internal.admin.api;
+
+import org.apache.geode.GemFireCheckedException;
+
+/**
+ * An <code>AdminException</code> is thrown when administration or monitoring
+ * of GemFire fails. 
+ *
+ * @since GemFire     3.5
+ *
+ * @deprecated as of 7.0 use the <code><a href="{@docRoot}/org/apache/geode/management/package-summary.html">management</a></code> package instead
+ */
+public class AdminException extends GemFireCheckedException {
+private static final long serialVersionUID = 879398950879472021L;
+
+  /**
+   * Constructs a new exception with <code>null</code> as its detail message.
+   * The cause is not initialized, and may subsequently be initialized by a
+   * call to {@link Throwable#initCause}.
+   */
+  public AdminException() {
+    super();
+  }
+
+  /**
+   * Constructs a new exception with the specified detail message.  The
+   * cause is not initialized, and may subsequently be initialized by
+   * a call to {@link Throwable#initCause}.
+   *
+   * @param   message   the detail message. The detail message is saved for 
+   *          later retrieval by the {@link #getMessage()} method.
+   */
+  public AdminException(String message) {
+    super(message);
+  }
+
+  /**
+   * Constructs a new exception with the specified detail message and
+   * cause.  <p>Note that the detail message associated with
+   * <code>cause</code> is <i>not</i> automatically incorporated in
+   * this exception's detail message.
+   *
+   * @param  message the detail message (which is saved for later retrieval
+   *         by the {@link #getMessage()} method).
+   * @param  cause the cause (which is saved for later retrieval by the
+   *         {@link #getCause()} method).  (A <tt>null</tt> value is
+   *         permitted, and indicates that the cause is nonexistent or
+   *         unknown.)
+   */
+  public AdminException(String message, Throwable cause) {
+    super(message, cause);
+  }
+
+  /**
+   * Constructs a new exception with the specified cause.
+   * The detail
+   * message will be <tt>(cause==null ? null : cause.toString())</tt> (which
+   * typically contains the class and detail message of <tt>cause</tt>).
+   * This constructor is useful for exceptions that are little more than
+   * wrappers for other throwables (for example, {@link
+   * java.security.PrivilegedActionException}).
+   *
+   * @param  cause the cause (which is saved for later retrieval by the
+   *         {@link #getCause()} method).  (A <tt>null</tt> value is
+   *         permitted, and indicates that the cause is nonexistent or
+   *         unknown.)
+   */
+  public AdminException(Throwable cause) {
+    super(cause);
+  }
+    
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c0221bed/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminXmlException.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminXmlException.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminXmlException.java
new file mode 100644
index 0000000..41d7655
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/AdminXmlException.java
@@ -0,0 +1,47 @@
+/*
+ * 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.internal.admin.api;
+
+/**
+ * Thrown when a problem is encountered while working with
+ * admin-related XML data.
+ *
+ * @see DistributedSystemConfig#getEntityConfigXMLFile
+ *
+ * @since GemFire 4.0
+ * @deprecated as of 7.0 use the <code><a href="{@docRoot}/org/apache/geode/management/package-summary.html">management</a></code> package instead
+ */
+public class AdminXmlException extends RuntimeAdminException {
+  private static final long serialVersionUID = -6848726449157550169L;
+
+  /**
+   * Creates a new <code>AdminXmlException</code> with the given
+   * descriptive message.
+   */
+  public AdminXmlException(String s) {
+    super(s);
+  }
+
+  /**
+   * Creates a new <code>AdminXmlException</code> with the given
+   * descriptive message and cause.
+   */
+  public AdminXmlException(String s, Throwable cause) {
+    super(s, cause);
+  }
+
+}