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/26 22:11:44 UTC

[22/42] incubator-geode git commit: GEODE-288: move admin package to internal

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/GemFireMemberStatus.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/GemFireMemberStatus.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/GemFireMemberStatus.java
new file mode 100755
index 0000000..5bd6600
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/GemFireMemberStatus.java
@@ -0,0 +1,698 @@
+/*
+ * 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.Cache;
+import org.apache.geode.cache.Region;
+import org.apache.geode.cache.client.PoolManager;
+import org.apache.geode.cache.server.CacheServer;
+import org.apache.geode.distributed.DistributedSystem;
+import org.apache.geode.distributed.Locator;
+import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
+import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
+import org.apache.geode.internal.net.SocketCreator;
+import org.apache.geode.internal.admin.ClientHealthMonitoringRegion;
+import org.apache.geode.internal.admin.remote.ClientHealthStats;
+import org.apache.geode.internal.cache.*;
+import org.apache.geode.internal.cache.tier.InternalClientMembership;
+import org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.net.InetAddress;
+import java.util.*;
+
+/**
+ * Class <code>GemFireMemberStatus</code> provides the status of a specific
+ * GemFire member VM. This VM can be a peer, a client, a server and/or a
+ * gateway.
+ * @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 GemFireMemberStatus implements Serializable {
+  private static final long serialVersionUID = 3389997790525991310L;
+
+  /**
+   * Notifies whether this member is a client to a cache server.
+   */
+  protected boolean _isClient;
+
+  /**
+   * Notifies whether this member is a cache server.
+   */
+  protected boolean _isServer;
+
+  /**
+   * Notifies whether this member is a hub for WAN gateways.
+   */
+  protected boolean _isGatewayHub;
+
+  /**
+   * Notifies whether this member is a locator.
+   */
+  protected boolean _isLocator;
+
+  protected boolean _isPrimaryGatewayHub;
+
+  protected Object/*GatewayHubStatus*/ _gatewayHubStatus;
+
+  protected boolean _isConnected;
+  protected Serializable _memberId;
+  protected Set _connectedPeers;
+  protected Set _connectedServers;
+  protected Set _unconnectedServers;
+  protected Set _connectedClients;
+  protected Map _connectedIncomingGateways;
+  protected Map _outgoingGateways;
+
+  protected Map _clientHostNames;
+  protected Map _clientQueueSizes;
+  protected Map _gatewayQueueSizes;
+  protected Map _regionStatuses;
+  protected Map _clientHealthStats;
+
+  protected String _memberName;
+  protected int _mcastPort;
+  protected int _serverPort;
+  protected InetAddress _mcastAddress;
+  protected String _bindAddress;
+  protected String _locators;
+  protected InetAddress _hostAddress;
+
+  protected long _maximumHeapSize;
+  protected long _freeHeapSize;
+  
+  protected long upTime = -1;
+
+  protected transient final Cache cache;
+  
+  public GemFireMemberStatus() {
+    this(null);
+  }
+
+  public GemFireMemberStatus(Cache cache) {
+    this.cache = cache;
+    DistributedSystem ds = null;
+    if (cache != null) {
+      ds = cache.getDistributedSystem();
+    }
+    initialize(ds);
+  }
+
+  public boolean getIsConnected() {
+    return this._isConnected;
+  }
+
+  protected void setIsConnected(boolean isConnected) {
+    this._isConnected = isConnected;
+  }
+
+  /**
+   * Returns whether this member is a client to a cache server
+   * @return whether this member is a client to a cache server
+   */
+  public boolean getIsClient() {
+    return this._isClient;
+  }
+
+  /**
+   * Sets whether this member is a client to a cache server
+   * @param isClient Boolean defining whether this member is a client to a
+   * cache server
+   */
+  protected void setIsClient(boolean isClient) {
+    this._isClient = isClient;
+  }
+
+  /**
+   * Returns whether this member is a cache server
+   * @return whether this member is a cache server
+   */
+  public boolean getIsServer() {
+    return this._isServer;
+  }
+
+  /**
+   * Sets whether this member is a cache server
+   * @param isServer Boolean defining whether this member is a cache server
+   */
+  protected void setIsServer(boolean isServer) {
+    this._isServer = isServer;
+  }
+
+  public int getServerPort() {
+	  return this._serverPort;
+  }
+  
+  protected void setServerPort(int port) {
+	  this._serverPort = port;
+  }
+  
+  /**
+   * Returns whether this member is a hub for WAN gateways
+   * @return whether this member is a hub for WAN gateways
+   */
+  public boolean getIsGatewayHub() {
+    return this._isGatewayHub;
+  }
+
+  /**
+   * Sets whether this member is a cache server
+   * @param isGatewayHub Boolean defining whether this member is a hub for
+   * WAN gateways
+   */
+  protected void setIsGatewayHub(boolean isGatewayHub) {
+    this._isGatewayHub = isGatewayHub;
+  }
+
+  public boolean getIsLocator() {
+    return this._isLocator;
+  }
+
+  protected void setIsLocator(boolean isLocator) {
+    this._isLocator = isLocator;
+  }
+
+  public boolean getIsPrimaryGatewayHub() {
+    return this._isPrimaryGatewayHub;
+  }
+
+  protected void setIsPrimaryGatewayHub(boolean isPrimaryGatewayHub) {
+    this._isPrimaryGatewayHub = isPrimaryGatewayHub;
+  }
+
+  /**
+   * For internal use only
+   * @return status of the gateway hub
+   */
+  public Object/*GatewayHubStatus*/ getGatewayHubStatus() {
+    return this._gatewayHubStatus;
+  }
+
+//  protected void setGatewayHubStatus(GatewayHubStatus gatewayHubStatus) {
+//    this._gatewayHubStatus = gatewayHubStatus;
+//  }
+
+  public boolean getIsSecondaryGatewayHub() {
+    return !this._isPrimaryGatewayHub;
+  }
+
+  public Set getConnectedPeers() {
+    return this._connectedPeers;
+  }
+
+  protected void setConnectedPeers(Set connectedPeers) {
+    this._connectedPeers = connectedPeers;
+  }
+
+  public Set getConnectedServers() {
+    return this._connectedServers;
+  }
+
+  protected void setConnectedServers(Set connectedServers) {
+    this._connectedServers = connectedServers;
+  }
+
+  protected void addConnectedServer(String connectedServer) {
+    this._connectedServers.add(connectedServer);
+  }
+
+  public Set getUnconnectedServers() {
+    return this._unconnectedServers;
+  }
+
+  protected void setUnconnectedServers(Set unconnectedServers) {
+    this._unconnectedServers = unconnectedServers;
+  }
+
+  protected void addUnconnectedServer(String unconnectedServer) {
+    this._unconnectedServers.add(unconnectedServer);
+  }
+
+  public Set getConnectedClients() {
+    return this._connectedClients;
+  }
+
+  protected void addConnectedClient(String connectedClient) {
+    this._connectedClients.add(connectedClient);
+  }
+
+  public Map getOutgoingGateways() {
+	    return this._outgoingGateways;
+  }
+
+  public Map getConnectedIncomingGateways() {
+    return this._connectedIncomingGateways;
+  }
+
+  protected void setConnectedIncomingGateways(Map connectedIncomingGateways) {
+    this._connectedIncomingGateways = connectedIncomingGateways;
+  }
+
+  public Map getClientQueueSizes() {
+    return this._clientQueueSizes;
+  }
+
+  protected void setClientQueueSizes(Map clientQueueSizes) {
+    this._clientQueueSizes = clientQueueSizes;
+  }
+
+  public int getClientQueueSize(String clientMemberId) {
+    Integer clientQueueSize = (Integer) getClientQueueSizes().get(clientMemberId);
+    return clientQueueSize == null ? 0 : clientQueueSize.intValue();
+  }
+
+  protected void putClientQueueSize(String clientMemberId, int size) {
+    getClientQueueSizes().put(clientMemberId, Integer.valueOf(size));
+  }
+
+  public Map getClientHealthStats() {
+    return this._clientHealthStats;
+  }
+  
+  protected void setClientHealthStats(Map stats) {
+    this._clientHealthStats = stats;
+  }
+  
+  /**
+   * For internal use only
+   * @param clientID client for health
+   * @return the client's health
+   */
+  public Object/*ClientHealthStats*/ getClientHealthStats(String clientID) {
+    return this._clientHealthStats.get(clientID);
+  }
+  
+  protected void setClientHealthStats(String clientID, ClientHealthStats stats) {
+    this._clientHealthStats.put(clientID, stats);
+  }
+  
+  protected void putClientHostName(String clientId, String hostName) {
+    this._clientHostNames.put(clientId, hostName);
+  }
+  
+  public String getClientHostName(String clientId) {
+    return (String)this._clientHostNames.get(clientId);
+  }
+  
+  public Map getRegionStatuses() {
+    return this._regionStatuses;
+  }
+
+  /**
+   * For internal use only
+   * @param fullRegionPath region path
+   * @return status for the region
+   */
+  public Object/*RegionStatus*/ getRegionStatus(String fullRegionPath) {
+    return getRegionStatuses().get(fullRegionPath);
+  }
+
+  protected void putRegionStatus(String fullRegionPath, RegionStatus status) {
+    getRegionStatuses().put(fullRegionPath, status);
+  }
+
+  public Serializable getMemberId() {
+    return this._memberId;
+  }
+
+  protected void setMemberId(Serializable memberId) {
+    this._memberId = memberId;
+  }
+
+  public String getMemberName() {
+    return this._memberName;
+  }
+
+  protected void setMemberName(String memberName) {
+    this._memberName = memberName;
+  }
+
+  public int getMcastPort() {
+    return this._mcastPort;
+  }
+
+  protected void setMcastPort(int mcastPort) {
+    this._mcastPort = mcastPort;
+  }
+
+  public InetAddress getMcastAddress() {
+    return this._mcastAddress;
+  }
+
+  protected void setMcastAddress(InetAddress mcastAddress) {
+    this._mcastAddress = mcastAddress;
+  }
+
+  public InetAddress getHostAddress() {
+    return this._hostAddress;
+  }
+
+  protected void setHostAddress(InetAddress hostAddress) {
+    this._hostAddress = hostAddress;
+  }
+
+  public String getBindAddress() {
+    return this._bindAddress;
+  }
+
+  protected void setBindAddress(String bindAddress) {
+    this._bindAddress = bindAddress;
+  }
+
+  public String getLocators() {
+    return this._locators;
+  }
+
+  protected void setLocators(String locators) {
+    this._locators = locators;
+  }
+
+  public long getMaximumHeapSize() {
+    return this._maximumHeapSize;
+  }
+
+  protected void setMaximumHeapSize(long size) {
+    this._maximumHeapSize = size;
+  }
+
+  public long getFreeHeapSize() {
+    return this._freeHeapSize;
+  }
+
+  protected void setFreeHeapSize(long size) {
+    this._freeHeapSize = size;
+  }
+
+  public long getUsedHeapSize() {
+    return getMaximumHeapSize() - getFreeHeapSize();
+  }
+  
+  public long getUpTime() {
+    return upTime;
+  }
+  
+  public void setUpTime(long upTime) {
+    this.upTime = upTime;
+  }
+
+  @Override
+  public String toString() {
+    StringBuffer buffer = new StringBuffer();
+    buffer
+      .append("GemFireMemberStatus[")
+      .append("isConnected=")
+      .append(this._isConnected)
+      .append("; memberName=")
+      .append(this._memberName)
+      .append("; memberId=")
+      .append(this._memberId)
+      .append("; hostAddress=")
+      .append(this._hostAddress)
+      .append("; mcastPort=")
+      .append(this._mcastPort)
+      .append("; mcastAddress=")
+      .append(this._mcastAddress)
+      .append("; bindAddress=")
+      .append(this._bindAddress)
+      .append("; serverPort=")
+      .append(this._serverPort)
+      .append("; locators=")
+      .append(this._locators)
+      .append("; isClient=")
+      .append(this._isClient)
+      .append("; isServer=")
+      .append(this._isServer)
+      .append("; isGatewayHub=")
+      .append(this._isGatewayHub)
+      .append("; isLocator=")
+      .append(this._isLocator)
+      .append("; isPrimaryGatewayHub=")
+      .append(this._isPrimaryGatewayHub)
+      .append("; gatewayHubStatus=")
+      .append(this._gatewayHubStatus)
+      .append("; connectedPeers=")
+      .append(this._connectedPeers)
+      .append("; connectedServers=")
+      .append(this._connectedServers)
+      .append("; unconnectedServers=")
+      .append(this._unconnectedServers)
+      .append("; connectedClients=")
+      .append(this._connectedClients)
+      .append("; clientHostNames=")
+      .append(this._clientHostNames)
+      .append("; clientQueueSizes=")
+      .append(this._clientQueueSizes)
+      .append("; clientHealthStats=")
+      .append(this._clientHealthStats)
+      .append("; gatewayQueueSizes=")
+      .append(this._gatewayQueueSizes)
+      .append("; regionStatuses=")
+      .append(this._regionStatuses)
+      .append("; maximumHeapSize=")
+      .append(this._maximumHeapSize)
+      .append("; freeHeapSize=")
+      .append(this._freeHeapSize)
+      .append("; upTime=")
+      .append(this.upTime)
+      .append("]");
+    return buffer.toString();
+  }
+  
+  protected void initialize(DistributedSystem distributedSystem) {
+    // Initialize instance variables
+    initializeInstanceVariables();
+
+    // If the cache is set, initialize the status.
+    // If the cache is not set, then this is most
+    // likely an unconnected status.
+    if (cache != null) {
+      // Initialize server
+      initializeServer();
+
+      // Initialize client
+      initializeClient();
+
+      // Initialize region sizes
+      initializeRegionSizes();
+    }
+
+    if (distributedSystem != null) {
+      // Initialize all
+      initializeAll(distributedSystem);
+    }
+
+    // If this is a locator, initialize the locator status
+    if (Locator.getLocators().size() > 0) {
+      setIsLocator(true);
+    }
+  }
+
+  protected void initializeInstanceVariables() {
+    // Variables for servers
+    this._connectedClients = new HashSet();
+    this._clientQueueSizes = new HashMap();
+    this._clientHealthStats = new HashMap();
+    this._clientHostNames = new HashMap();
+
+    // Variables for gateway hubs
+    this._outgoingGateways = new HashMap();
+    //this._connectedOutgoingGateways = new HashSet();
+    //this._unconnectedOutgoingGateways = new HashSet();
+    this._connectedIncomingGateways = new HashMap();
+    this._gatewayQueueSizes = new HashMap();
+
+    // Variables for clients
+    this._connectedServers = new HashSet();
+    this._unconnectedServers = new HashSet();
+
+    // Variables for all
+    this._connectedPeers = new HashSet();
+    this._regionStatuses = new HashMap();
+  }
+
+  protected void initializeServer() {
+    Collection servers = cache.getCacheServers();
+    if (servers.size() == 0) {
+      setIsServer(false);
+    } else {
+      setIsServer(true);
+
+      // Get connected clients.
+      // The following method returns a map of client member id to a cache
+      // client info. For now, keep track of the member ids in the set of
+      // _connectedClients.
+      Map allConnectedClients = InternalClientMembership.getStatusForAllClientsIgnoreSubscriptionStatus();
+      Iterator allConnectedClientsIterator = allConnectedClients.values().iterator();
+      while (allConnectedClientsIterator.hasNext()) {
+        CacheClientStatus ccs = (CacheClientStatus) allConnectedClientsIterator.next();
+        addConnectedClient(ccs.getMemberId());
+        // host address is available directly by id, hence CacheClientStatus need not be populated
+        putClientHostName(ccs.getMemberId(), ccs.getHostAddress());  
+      }
+
+      // Get client queue sizes
+      Map clientQueueSize = getClientIDMap(InternalClientMembership.getClientQueueSizes());
+      setClientQueueSizes(clientQueueSize);
+      
+      // Set server acceptor port (set it based on the first CacheServer)
+      CacheServer server = (CacheServer) servers.toArray()[0];
+      setServerPort(server.getPort());
+      
+      // Get Client Health Stats
+//      Assert.assertTrue(cache != null); (cannot be null)
+      Region clientHealthMonitoringRegion = ClientHealthMonitoringRegion.getInstance(
+          (GemFireCacheImpl)cache);
+      if(clientHealthMonitoringRegion != null) {
+        String [] clients = (String[])clientHealthMonitoringRegion.keySet().toArray(new String[0]);
+        for (int i = 0; i < clients.length; i++) {
+          String clientId = clients[i];
+          ClientHealthStats stats = (ClientHealthStats)clientHealthMonitoringRegion.get(clientId);
+          setClientHealthStats(clientId, stats);
+        } 
+      }
+    }
+  }
+  
+	/**
+	 * returning  Map of client queue size against client Id
+	 *  
+	 * param clientMap is a  Map of client queue size against ClientProxyMembershipID
+	 */
+	private Map getClientIDMap(Map ClientProxyMembershipIDMap) {
+	   Map clientIdMap = new HashMap();
+	   Set entrySet = ClientProxyMembershipIDMap.entrySet();
+	   Iterator entries = entrySet.iterator();
+	   while (entries.hasNext()) {
+             Map.Entry entry = (Map.Entry)entries.next();
+             ClientProxyMembershipID key = (ClientProxyMembershipID)entry.getKey();
+             Integer size = (Integer)entry.getValue();
+             clientIdMap.put(key.getDSMembership(), size);
+	   }
+           return clientIdMap;
+	  }
+
+  protected void initializeClient() {
+    Map poolMap = PoolManager.getAll();
+    if (poolMap.size() == 0) {
+      setIsClient(false);
+    } else {
+      setIsClient(true);
+
+      // Get connected servers.
+      // The following method returns a map of server name to a count of logical
+      // connections. A logical connection will be made for each region that
+      // references the live server. If the client is not connected to the server,
+      // the logical connections for that server will be 0. For now, keep track
+      // of the keys (server names) of this map in the sets of _connectedServers
+      // and _unconnectedServers.
+      Map connectedServers = InternalClientMembership.getConnectedServers();
+      if (!connectedServers.isEmpty()) {
+        Iterator connected = connectedServers.entrySet().iterator();
+        while (connected.hasNext()) {
+          Map.Entry entry = (Map.Entry) connected.next();
+          String server = (String) entry.getKey();
+//          Integer connections = (Integer) entry.getValue();
+//          if (connections.intValue()==0) {
+//            addUnconnectedServer(server);
+//          } else {
+            addConnectedServer(server);
+//          }
+          //System.out.println(connections.size() + " logical connnections to server " + server);
+        }
+      }
+    }
+  }
+
+  protected void initializeAll(DistributedSystem distributedSystem) {
+    // Initialize isConnected
+    setIsConnected(true);
+
+    // Initialize distributed system status
+    initializeDistributedSystem(distributedSystem);
+
+    // Initialize peers
+    initializePeers(distributedSystem);
+
+    // Initialize memory
+    initializeMemory();
+  }
+
+  protected void initializeDistributedSystem(DistributedSystem distributedSystem) {
+    InternalDistributedSystem ids = (InternalDistributedSystem) distributedSystem;
+    setMemberId(ids.getMemberId());
+    DistributionConfig config = ids.getConfig();
+    setMemberName(config.getName());
+    setMcastPort(config.getMcastPort());
+    setMcastAddress(config.getMcastAddress());
+    String bindAddress = config.getBindAddress();
+    setBindAddress(bindAddress);
+    setLocators(config.getLocators());
+    setUpTime(System.currentTimeMillis() - ids.getStartTime());
+    try {
+      setHostAddress((bindAddress != null && bindAddress.length() > 0)
+        ? InetAddress.getByName(bindAddress)
+        : SocketCreator.getLocalHost());
+    } catch (IOException e) {/*ignore - leave null host address*/}
+  }
+
+  protected void initializePeers(DistributedSystem distributedSystem) {
+    InternalDistributedSystem ids = (InternalDistributedSystem) distributedSystem;
+    DM dm = ids.getDistributionManager();
+    Set connections = dm.getOtherNormalDistributionManagerIds();
+    Set connectionsIDs = new HashSet(connections.size());
+    for (Iterator iter=connections.iterator(); iter.hasNext() ; ) {
+      InternalDistributedMember idm = (InternalDistributedMember)iter.next();
+      connectionsIDs.add(idm.getId());
+    }
+    setConnectedPeers(connectionsIDs);
+  }
+
+  protected void initializeMemory() {
+    //InternalDistributedSystem system = (InternalDistributedSystem) region.getCache().getDistributedSystem();
+    //GemFireStatSampler sampler = system.getStatSampler();
+    //VMStatsContract statsContract = sampler.getVMStats();
+
+    Runtime rt = Runtime.getRuntime();
+    setMaximumHeapSize(rt.maxMemory());
+    setFreeHeapSize(rt.freeMemory());
+  }
+
+  protected void initializeRegionSizes() {
+    Iterator rootRegions = cache.rootRegions().iterator();
+
+    while (rootRegions.hasNext()) {
+      LocalRegion rootRegion = (LocalRegion) rootRegions.next();
+      if (!(rootRegion instanceof HARegion)) {
+        RegionStatus rootRegionStatus = rootRegion instanceof PartitionedRegion
+          ? new PartitionedRegionStatus((PartitionedRegion) rootRegion)
+          : new RegionStatus(rootRegion);
+        putRegionStatus(rootRegion.getFullPath(), rootRegionStatus);
+        Iterator subRegions = rootRegion.subregions(true).iterator();
+        while (subRegions.hasNext()) {
+          LocalRegion subRegion = (LocalRegion) subRegions.next();
+          RegionStatus subRegionStatus = subRegion instanceof PartitionedRegion
+            ? new PartitionedRegionStatus((PartitionedRegion) subRegion)
+            : new RegionStatus(subRegion);
+          putRegionStatus(subRegion.getFullPath(), subRegionStatus);
+        }
+      }
+    }
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/ManagedEntity.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/ManagedEntity.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/ManagedEntity.java
new file mode 100644
index 0000000..f80d7f9
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/ManagedEntity.java
@@ -0,0 +1,124 @@
+/*
+ * 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;
+
+/**
+ * A entity that can be managed with the GemFire administration API.
+ *
+ * @see ManagedEntityConfig
+ *
+ * @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 interface ManagedEntity {
+
+  /**
+   * Starts this managed entity.  Note that this method may return
+   * before the managed entity is actually started.
+   *
+   * @throws AdminException
+   *         If a problem is encountered while starting this managed
+   *         entity. 
+   * @throws IllegalStateException
+   *         If this managed entity resides on a remote machine and a
+   *         <code>null</code> or empty (<code>""</code>) {@linkplain
+   *         ManagedEntityConfig#getRemoteCommand remote command} has
+   *         been specified.
+   *
+   * @see #waitToStart
+   */
+  public void start() throws AdminException;
+
+  /**
+   * Stops this managed entity.  Note that this method may return
+   * before the managed entity is actually stopped.
+   *
+   * @throws AdminException
+   *         If a problem is encountered while stopping this managed
+   *         entity. 
+   * @throws IllegalStateException
+   *         If this managed entity resides on a remote machine and a
+   *         <code>null</code> or empty (<code>""</code>) {@linkplain
+   *         ManagedEntityConfig#getRemoteCommand remote command} has
+   *         been specified.
+   *
+   * @see #waitToStop
+   */
+  public void stop() throws AdminException;
+
+  /**
+   * Waits for up to a given number of milliseconds for this managed
+   * entity to {@linkplain #start start}.
+   *
+   * @param timeout
+   *        The number of milliseconds to wait for this managed entity
+   *        to start.
+   *
+   * @return Whether or not the entity has started.
+   *         <code>false</code>, if the method times out.
+   *
+   * @throws InterruptedException
+   *         If the thread invoking this method is interrupted while
+   *         waiting. 
+   */
+  public boolean waitToStart(long timeout)
+    throws InterruptedException;
+
+  /**
+   * Waits for up to a given number of milliseconds for this managed
+   * entity to {@linkplain #stop stop}.
+   *
+   * @param timeout
+   *        The number of milliseconds to wait for this managed entity
+   *        to stop.
+   *
+   * @return Whether or not the entity has stopped.
+   *         <code>false</code>, if the method times out.
+   *
+   * @throws InterruptedException
+   *         If the thread invoking this method is interrupted while
+   *         waiting. 
+   */
+  public boolean waitToStop(long timeout)
+    throws InterruptedException;
+
+  /**
+   * Returns whether or not this managed entity is running.  Note that
+   * this operation may attempt to contact the managed entity.
+   *
+   * @throws IllegalStateException
+   *         If this managed entity resides on a remote machine and a
+   *         <code>null</code> or empty (<code>""</code>) {@linkplain
+   *         ManagedEntityConfig#getRemoteCommand remote command} has
+   *         been specified.
+   */
+  public boolean isRunning();
+
+  /**
+   * Returns the tail of this manage entity's log file.  Note that not
+   * all managed entities implement this functionality.
+   *
+   * @throws AdminException
+   *         If a problem is encountered while getting the log of this
+   *         managed entity.
+   * @throws UnsupportedOperationException
+   *         If this managed entity does not support retrieving its
+   *         log.
+   */
+  public String getLog() throws AdminException;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/ManagedEntityConfig.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/ManagedEntityConfig.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/ManagedEntityConfig.java
new file mode 100644
index 0000000..db38269
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/ManagedEntityConfig.java
@@ -0,0 +1,99 @@
+/*
+ * 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;
+
+/**
+ * Common configuration for all entities that can be managed using the
+ * GemFire administration API.  Note that once a managed entity has
+ * been {@linkplain ManagedEntity#start started}, attempts to modify
+ * its configuration will cause an {@link IllegalStateException} to be
+ * thrown.
+ *
+ * @see ManagedEntity
+ *
+ * @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 interface ManagedEntityConfig extends Cloneable {
+
+  /**
+   * Returns the name of the host on which the managed entity runs or
+   * will run.
+   */
+  public String getHost();
+
+  /**
+   * Sets the name of the host on which the managed entity will run.
+   */
+  public void setHost(String host);
+
+  /**
+   * Returns the name of the working directory in which the managed
+   * entity runs or will run.
+   */
+  public String getWorkingDirectory();
+
+  /**
+   * Sets the name of the working directory in which the managed
+   * entity will run.
+   */
+  public void setWorkingDirectory(String dir);
+
+  /**
+   * Returns the name of the GemFire product directory to use when
+   * administering the managed entity.
+   */
+  public String getProductDirectory();
+
+  /**
+   * Sets the name of the GemFire product directory to use when
+   * administering the managed entity.
+   */
+  public void setProductDirectory(String dir);
+
+  /**
+   * Returns the command prefix used to administer a managed entity
+   * that is hosted on a remote machine.  If the remote command is
+   * <code>null</code> (the default value), then the remote command
+   * associated with the {@linkplain
+   * AdminDistributedSystem#getRemoteCommand() distributed system}
+   * will be used.
+   */
+  public String getRemoteCommand();
+
+  /**
+   * Sets the command prefix used to administer a managed entity that
+   * is hosted on a remote machine.
+   */
+  public void setRemoteCommand(String remoteCommand);
+
+  /**
+   * Validates this configuration.
+   *
+   * @throws IllegalStateException
+   *         If a managed entity cannot be administered using this
+   *         configuration 
+   */
+  public void validate();
+
+  /**
+   * Returns a new <code>ManagedEntityConfig</code> with the same
+   * configuration as this <code>ManagedEntityConfig</code>.
+   */
+  public Object clone() throws CloneNotSupportedException; 
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/MemberHealthConfig.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/MemberHealthConfig.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/MemberHealthConfig.java
new file mode 100644
index 0000000..3d4bfe6
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/MemberHealthConfig.java
@@ -0,0 +1,141 @@
+/*
+ * 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;
+
+/**
+ * Provides configuration information relating to the health of a
+ * member of a GemFire distributed system.
+ *
+ * <P>
+ *
+ * If any of the following criteria is true, then a member is
+ * considered to be in {@link GemFireHealth#OKAY_HEALTH OKAY_HEALTH}.
+ *
+ * <UL>
+ *
+ * <LI>The size of the {@linkplain #getMaxVMProcessSize VM process} is
+ * too large.</LI>
+ *
+ * <LI>There are too many {@linkplain #getMaxMessageQueueSize enqueued}
+ * incoming/outgoing messages.</LI>
+ *
+ * <LI>Too many message sends {@link #getMaxReplyTimeouts timeout}
+ * while waiting for a reply.</LI>
+ *
+ * </UL>
+ *
+ * If any of the following criteria is true, then a member is
+ * considered to be in {@link GemFireHealth#POOR_HEALTH POOR_HEALTH}.
+ *
+ * <UL>
+ *
+ * </UL>
+ *
+ *
+ * @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 MemberHealthConfig {
+
+  /** The default maximum VM process size (in megabytes) of a health
+   * member of the distributed system. The default value is 1000. */
+  public static final long DEFAULT_MAX_VM_PROCESS_SIZE = 1000;
+
+  /** The default maximum number of enqueued incoming or outgoing
+   * messages that a healthy member of a distributed system can have.
+   * The default value is 1000. */
+  public static final long DEFAULT_MAX_MESSAGE_QUEUE_SIZE = 1000;
+
+  /** The default maximum number of message reply timeouts that can
+   * occur in a given health monitoring interval. The default value
+   * is zero. */
+  public static final long DEFAULT_MAX_REPLY_TIMEOUTS = 0;
+
+  /** The default maximum multicast retransmission ratio.  The default
+   * value is 0.20 (twenty percent of messages retransmitted)
+   */
+  public static final double DEFAULT_MAX_RETRANSMISSION_RATIO = 0.20;
+  
+  ///////////////////////  Instance Methods  ///////////////////////
+
+  /**
+   * Returns the maximum VM process size (in megabytes) of a healthy
+   * member of the distributed system.
+   *
+   * @see #DEFAULT_MAX_VM_PROCESS_SIZE
+   */
+  public long getMaxVMProcessSize();
+
+  /**
+   * Sets the maximum VM process size (in megabytes) of a healthy
+   * member of the distributed system.
+   *
+   * @see #getMaxVMProcessSize
+   */
+  public void setMaxVMProcessSize(long size);
+  
+  /**
+   * Returns the maximum number of enqueued incoming or outgoing
+   * messages that a healthy member of a distributed system can have.
+   *
+   * @see #DEFAULT_MAX_MESSAGE_QUEUE_SIZE
+   */
+  public long getMaxMessageQueueSize();
+
+  /**
+   * Sets the maximum number of enqueued incoming or outgoing
+   * messages that a healthy member of a distributed system can have.
+   *
+   * @see #getMaxMessageQueueSize
+   */
+  public void setMaxMessageQueueSize(long maxMessageQueueSize);
+
+  /**
+   * Returns the maximum number message replies that can timeout in a
+   * healthy member.
+   *
+   * @see #DEFAULT_MAX_REPLY_TIMEOUTS
+   */
+  public long getMaxReplyTimeouts();
+
+  /**
+   * Sets the maximum number message replies that can timeout in a
+   * healthy member.
+   *
+   * @see #getMaxReplyTimeouts
+   */
+  public void setMaxReplyTimeouts(long maxReplyTimeouts);
+
+  /**
+   * Returns the maximum ratio of multicast retransmissions / total multicast
+   * messages.  Retransmissions are requestor-specific (i.e., unicast), so
+   * a single lost message may result in multiple retransmissions.<p>
+   * A high retransmission ratio may indicate
+   * poor network conditions requiring reduced flow-control settings,
+   * a udp-fragment-size setting that is too high.
+   * @see #DEFAULT_MAX_RETRANSMISSION_RATIO
+   */
+  public double getMaxRetransmissionRatio();
+  
+  /**
+   * Sets the maximum ratio of multicast retransmissions / total multicast
+   * messages.
+   * @see #getMaxRetransmissionRatio
+   */
+  public void setMaxRetransmissionRatio(double ratio);
+   
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/OperationCancelledException.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/OperationCancelledException.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/OperationCancelledException.java
new file mode 100644
index 0000000..2875b9a
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/OperationCancelledException.java
@@ -0,0 +1,48 @@
+/*
+ * 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.GemFireException;
+
+/**
+ * Thrown when an administration operation that accesses information
+ * in a remote system member is cancelled.  The cancelation may occur
+ * because the system member has left the distributed system.
+ *
+ * @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 OperationCancelledException extends RuntimeAdminException {
+   private static final long serialVersionUID = 5474068770227602546L;
+    
+    public OperationCancelledException() {
+      super();
+    }
+    
+    public OperationCancelledException( String message ) {
+        super( message );
+    }
+    
+    public OperationCancelledException( Throwable cause ){
+      super(cause);
+    }
+    
+    public OperationCancelledException( String message, Throwable cause ) {
+      super(message, cause);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/RegionNotFoundException.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/RegionNotFoundException.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/RegionNotFoundException.java
new file mode 100644
index 0000000..faa10c8
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/RegionNotFoundException.java
@@ -0,0 +1,39 @@
+/*
+ * 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.CacheException;
+import org.apache.geode.cache.CacheRuntimeException;
+
+/**
+ * Thrown by the administration API when the region administered by a
+ * {@link SystemMemberRegion} has been closed or destroyed in system
+ * member. 
+ * <P>Also thrown by {@link org.apache.geode.DataSerializer#readRegion(java.io.DataInput)}
+ * if the named region no longer exists.
+ *
+ * @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 RegionNotFoundException extends CacheRuntimeException {
+private static final long serialVersionUID = 1758668137691463909L;
+
+  public RegionNotFoundException(String message) {
+    super(message);
+  }
+  
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/RegionSubRegionSnapshot.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/RegionSubRegionSnapshot.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/RegionSubRegionSnapshot.java
new file mode 100644
index 0000000..447527a
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/RegionSubRegionSnapshot.java
@@ -0,0 +1,192 @@
+/*
+ * 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 java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.apache.geode.DataSerializable;
+import org.apache.geode.DataSerializer;
+import org.apache.geode.cache.Region;
+import org.apache.geode.i18n.LogWriterI18n;
+import org.apache.geode.internal.cache.PartitionedRegion;
+
+/**
+ * Class <code>RegionSubRegionSnapshot</code> provides information about
+ * <code>Region</code>s. This also provides the information about sub regions
+ * This class is used by the monitoring tool.
+ * 
+ * 
+ * @since GemFire 5.7
+ * @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 RegionSubRegionSnapshot implements DataSerializable {
+  private static final long serialVersionUID = -8052137675270041871L;
+  public RegionSubRegionSnapshot() {
+    this.parent = null;
+    this.subRegionSnapshots = new HashSet();
+  }
+
+  public RegionSubRegionSnapshot(Region reg) {
+    this();
+    this.name = reg.getName();
+    if (reg instanceof PartitionedRegion) {
+      PartitionedRegion p_reg = (PartitionedRegion)reg;
+      this.entryCount = p_reg.entryCount(true);
+    }
+    else {
+      this.entryCount = reg.entrySet().size();
+    }
+    final LogWriterI18n logger = reg.getCache().getLoggerI18n();
+    if((logger != null) && logger.fineEnabled()) {
+      logger.fine(
+        "RegionSubRegionSnapshot Region entry count =" + this.entryCount
+        + " for region =" + this.name);
+    }
+  }
+
+  /**
+   * add the snapshot of sub region
+   * 
+   * @param snap
+   *                snapshot of sub region
+   * @return true if operation is successful
+   */
+  public boolean addSubRegion(RegionSubRegionSnapshot snap) {
+    if (subRegionSnapshots.contains(snap)) {
+      return true;
+    }
+
+    if (subRegionSnapshots.add(snap)) {
+      snap.setParent(this);
+      return true;
+    }
+
+    return false;
+  }
+
+  /**
+   * @return get entry count of region
+   */
+  public final int getEntryCount() {
+    return entryCount;
+  }
+
+  /**
+   * @param entryCount
+   *                entry count of region
+   */
+  public final void setEntryCount(int entryCount) {
+    this.entryCount = entryCount;
+  }
+
+  /**
+   * @return name of region
+   */
+  public final String getName() {
+    return name;
+  }
+
+  /**
+   * @param name
+   *                name of region
+   */
+  public final void setName(String name) {
+    this.name = name;
+  }
+
+  /**
+   * @return subRegionSnapshots of all the sub regions
+   */
+  public final Set getSubRegionSnapshots() {
+    return subRegionSnapshots;
+  }
+
+  /**
+   * @param subRegionSnapshots
+   *                subRegionSnapshots of all the sub regions
+   */
+  public final void setSubRegionSnapshots(Set subRegionSnapshots) {
+    this.subRegionSnapshots = subRegionSnapshots;
+  }
+
+  /**
+   * @return snapshot of parent region
+   */
+  public final RegionSubRegionSnapshot getParent() {
+    return parent;
+  }
+
+  /**
+   * @param parent
+   *                snapshot of parent region
+   */
+  public final void setParent(RegionSubRegionSnapshot parent) {
+    this.parent = parent;
+  }
+
+  /**
+   * 
+   * @return full path of region
+   */
+  public String getFullPath() {
+    return (getParent() == null ? "/" : getParent().getFullPath()) + getName()
+        + "/";
+  }
+
+  public void toData(DataOutput out) throws IOException {
+    DataSerializer.writeString(this.name, out);
+    out.writeInt(this.entryCount);
+    DataSerializer.writeHashSet((HashSet)this.subRegionSnapshots, out);
+  }
+
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+    this.name = DataSerializer.readString(in);
+    this.entryCount = in.readInt();
+    this.subRegionSnapshots = DataSerializer.readHashSet(in);
+    for (Iterator iter = this.subRegionSnapshots.iterator(); iter.hasNext();) {
+      ((RegionSubRegionSnapshot)iter.next()).setParent(this);
+    }
+  }
+
+  @Override
+  public String toString() {
+    String toStr = "RegionSnapshot [" + "path=" + this.getFullPath()
+        + ",parent=" + (this.parent == null ? "null" : this.parent.name)
+        + ", entryCount=" + this.entryCount + ", subRegionCount="
+        + this.subRegionSnapshots.size() + "<<";
+
+    for (Iterator iter = subRegionSnapshots.iterator(); iter.hasNext();) {
+      toStr = toStr + ((RegionSubRegionSnapshot)iter.next()).getName() + ", ";
+    }
+
+    toStr = toStr + ">>" + "]";
+    return toStr;
+  }
+
+  protected String name;
+
+  protected int entryCount;
+
+  protected RegionSubRegionSnapshot parent;
+
+  protected Set subRegionSnapshots;
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/RuntimeAdminException.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/RuntimeAdminException.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/RuntimeAdminException.java
new file mode 100755
index 0000000..894be08
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/RuntimeAdminException.java
@@ -0,0 +1,49 @@
+/*
+ * 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;
+
+/**
+ * A <code>RuntimeAdminException</code> is thrown when a runtime errors occurs
+ * during administration or monitoring of GemFire. 
+ *
+ * @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 RuntimeAdminException 
+extends org.apache.geode.GemFireException {
+
+  private static final long serialVersionUID = -7512771113818634005L;
+
+  public RuntimeAdminException() {
+    super();
+  }
+
+  public RuntimeAdminException(String message) {
+    super(message);
+  }
+
+  public RuntimeAdminException(String message, Throwable cause) {
+    super(message, cause);
+  }
+
+  public RuntimeAdminException(Throwable cause) {
+    super(cause);
+  }
+    
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/Statistic.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/Statistic.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/Statistic.java
new file mode 100755
index 0000000..49e597b
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/Statistic.java
@@ -0,0 +1,65 @@
+/*
+ * 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;
+
+/**
+ * Interface to represent a single statistic of a <code>StatisticResource</code>
+ *
+ * @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 Statistic extends java.io.Serializable {
+    
+  /**
+   * Gets the identifying name of this statistic.
+   *
+   * @return the identifying name of this statistic 
+   */
+  public String getName();
+    
+  /**
+   * Gets the value of this statistic as a <code>java.lang.Number</code>.
+   *
+   * @return the value of this statistic
+   */
+  public Number getValue();
+  
+  /**
+   * Gets the unit of measurement (if any) this statistic represents.
+   *
+   * @return the unit of measurement (if any) this statistic represents
+   */
+  public String getUnits();
+  
+  /**
+   * Returns true if this statistic represents a numeric value which always 
+   * increases.
+   *
+   * @return true if this statistic represents a value which always increases
+   */
+  public boolean isCounter();
+  
+  /**
+   * Gets the full description of this statistic.
+   *
+   * @return the full description of this statistic
+   */
+  public String getDescription();
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/StatisticResource.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/StatisticResource.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/StatisticResource.java
new file mode 100755
index 0000000..d259ccd
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/StatisticResource.java
@@ -0,0 +1,85 @@
+/*
+ * 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;
+
+/**
+ * Adminitrative interface for monitoring a statistic resource in a GemFire
+ * system member.  A resource is comprised of one or many 
+ * <code>Statistics</code>.
+ *
+ * @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 StatisticResource {
+  
+  /**
+   * Gets the identifying name of this resource.
+   *
+   * @return the identifying name of this resource
+   */
+  public String getName();
+
+  /**
+   * Gets the full description of this resource.
+   *
+   * @return the full description of this resource
+   */
+  public String getDescription();
+  
+  /**
+   * Gets the classification type of this resource.
+   *
+   * @return the classification type of this resource
+   * @since GemFire 5.0
+   */
+  public String getType();
+  
+  /**
+   * Returns a display string of the {@link SystemMember} owning this 
+   * resource.
+   *
+   * @return a display string of the owning {@link SystemMember}
+   */
+  public String getOwner();
+  
+  /**
+   * Returns an ID that uniquely identifies the resource within the
+   * {@link SystemMember} it belongs to.
+   *
+   * @return unique id within the owning {@link SystemMember}
+   */
+  public long getUniqueId();
+  
+  /**
+   * Returns a read-only array of every {@link Statistic} in this resource.
+   *
+   * @return read-only array of every {@link Statistic} in this resource
+   */
+  public Statistic[] getStatistics();
+  
+  /**
+   * Refreshes the values of every {@link Statistic} in this resource by
+   * retrieving them from the member's VM.
+   *
+   * @throws AdminException
+   *         if unable to refresh statistic values
+   */
+  public void refresh() throws AdminException;
+  
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMember.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMember.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMember.java
new file mode 100755
index 0000000..810184a
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMember.java
@@ -0,0 +1,147 @@
+/*
+ * 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.distributed.DistributedMember;
+
+import java.net.InetAddress;
+
+/**
+ * Administrative interface for monitoring a GemFire system member.
+ *
+ * @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 SystemMember {
+  
+  /** Gets the {@link AdminDistributedSystem} this member belongs to. */
+  public AdminDistributedSystem getDistributedSystem();
+  
+  /** 
+   * Gets identifying name of this member.
+   * For applications this is the string form of {@link #getDistributedMember}.
+   * For cache servers it is a unique cache server string.
+   */
+  public String getId();
+  
+  /** 
+   * Retrieves display friendly name for this member.  If this member defined 
+   * an optional name for its connection to the distributed system, that name 
+   * will be returned.  Otherwise the returned value will be {@link
+   * SystemMember#getId}.
+   *
+   * @see org.apache.geode.distributed.DistributedSystem#connect
+   * @see org.apache.geode.distributed.DistributedSystem#getName
+   */
+  public String getName();
+  
+  /** Gets the type of {@link SystemMemberType} this member is. */
+  public SystemMemberType getType();
+  
+  /** Gets host name of the machine this member resides on. */
+  public String getHost();
+
+  /** Gets the host of this member as an <code>java.net.InetAddress<code>. */
+  public InetAddress getHostAddress();
+  
+  /** Retrieves the log for this member. */
+  public String getLog();
+
+  /**
+   * Returns the GemFire license this member is using.
+   *
+   * @deprecated Removed licensing in 8.0.
+   */
+   @Deprecated
+   public java.util.Properties getLicense();
+
+  /** Returns this member's GemFire version information. */
+  public String getVersion();
+  
+  /** 
+   * Gets the configuration parameters for this member.
+   */
+  public ConfigurationParameter[] getConfiguration();
+  
+  /**
+   * Sets the configuration of this member.  The argument is an array of any
+   * and all configuration parameters that are to be updated in the member.
+   * <p>
+   * The entire array of configuration parameters is then returned.
+   *
+   * @param parms subset of the configuration parameters to be changed
+   * @return all configuration parameters including those that were changed
+   * @throws AdminException
+   *         if this fails to make the configuration changes
+   */
+  public ConfigurationParameter[] setConfiguration(ConfigurationParameter[] parms) throws AdminException;
+  
+  /** Refreshes this member's configuration from the member or it's properties */
+  public void refreshConfig() throws AdminException;
+  
+  /** 
+   * Retrieves this members statistic resources. If the member is not running 
+   * then an empty array is returned. 
+   *
+   *@param statisticsTypeName String ame of the Statistics Type
+   * @return array of runtime statistic resources owned by this member
+   * @since GemFire 5.7
+   */
+  public StatisticResource[] getStat(String statisticsTypeName) throws AdminException;
+  
+  /** 
+   * Retrieves this members statistic resources. If the member is not running 
+   * then an empty array is returned. All Stats are returned
+   *
+   * @return array of runtime statistic resources owned by this member
+   */
+  public StatisticResource[] getStats() throws AdminException;
+  
+  /**
+   * Returns whether or not this system member hosts a GemFire {@link
+   * org.apache.geode.cache.Cache Cache}.
+   *
+   * @see #getCache
+   */
+  public boolean hasCache()
+    throws AdminException;
+
+  /**
+   * Returns an object that provides admin access to this member's cache.
+   * If the member currently has no cache then <code>null</code> is returned.
+   */
+  public SystemMemberCache getCache() throws AdminException;
+  
+  /**
+   * Returns the names of the membership roles filled by this member.
+   *
+   * @return array of string membership role names
+   * @since GemFire 5.0
+   */
+  public String[] getRoles();
+  
+  /**
+   * Returns the {@link org.apache.geode.distributed.DistributedMember}
+   * that represents this system member.
+   *
+   * @return DistributedMember instance representing this system member
+   * @since GemFire 5.0
+   */
+  public DistributedMember getDistributedMember();
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberBridgeServer.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberBridgeServer.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberBridgeServer.java
new file mode 100644
index 0000000..be6f7d9
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberBridgeServer.java
@@ -0,0 +1,308 @@
+/*
+ * 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.server.ServerLoadProbe;
+
+/**
+ * Administrative interface that represents a CacheServer that
+ * serves the contents of a system member's cache. 
+ *
+ * @see SystemMemberCache#addCacheServer
+ *
+ * @since GemFire 4.0
+ * @deprecated as of 5.7 use {@link SystemMemberCacheServer} instead.
+ */
+@Deprecated
+public interface SystemMemberBridgeServer {
+
+  /** 
+   * Returns the port on which this bridge server listens for bridge
+   * clients to connect.
+   */
+  public int getPort();
+
+  /**
+   * Sets the port on which this bridge server listens for bridge
+   * clients to connect.
+   *
+   * @throws AdminException
+   *         If this bridge server is running
+   */
+  public void setPort(int port) throws AdminException;
+
+  /**
+   * Starts this bridge server.  Once the server is running, its
+   * configuration cannot be changed.
+   *
+   * @throws AdminException
+   *         If an error occurs while starting the bridge server
+   */
+  public void start() throws AdminException;
+
+  /** 
+   * Returns whether or not this bridge server is running
+   */
+  public boolean isRunning();
+
+  /**
+   * Stops this bridge server.  Note that the
+   * <code>BridgeServer</code> can be reconfigured and restarted if
+   * desired.
+   */
+  public void stop() throws AdminException;
+
+  /**
+   * Updates the information about this bridge server.
+   */
+  public void refresh();
+
+  /**
+   * Returns a string representing the ip address or host name that this server
+   * will listen on.
+   * @return the ip address or host name that this server is to listen on
+   * @since GemFire 5.7
+   */
+  public String getBindAddress();
+  /**
+   * Sets the ip address or host name that this server is to listen on for
+   * client connections.
+   * <p>Setting a specific bind address will cause the bridge server to always
+   * use this address and ignore any address specified by "server-bind-address"
+   * or "bind-address" in the <code>gemfire.properties</code> file
+   * (see {@link org.apache.geode.distributed.DistributedSystem}
+   * for a description of these properties).
+   * <p> A <code>null</code> value will be treated the same as the default "".
+   * <p> The default value does not override the gemfire.properties. If you wish to
+   * override the properties and want to have your server bind to all local
+   * addresses then use this string <code>"0.0.0.0"</code>.
+   * @param address the ip address or host name that this server is to listen on
+   * @throws AdminException if this bridge server is running
+   * @since GemFire 5.7
+   */
+  public void setBindAddress(String address) throws AdminException;
+  /**
+   * Returns a string representing the ip address or host name that server locators
+   * will tell clients that this server is listening on.
+   * @return the ip address or host name to give to clients so they can connect
+   *         to this server
+   * @since GemFire 5.7
+   */
+  public String getHostnameForClients();
+  /**
+   * Sets the ip address or host name that this server is to listen on for
+   * client connections.
+   * <p>Setting a specific hostname-for-clients will cause server locators
+   * to use this value when telling clients how to connect to this server.
+   * <p> The default value causes the bind-address to be given to clients
+   * <p> A <code>null</code> value will be treated the same as the default "".
+   * @param name the ip address or host name that will be given to clients
+   *   so they can connect to this server
+   * @throws AdminException if this bridge server is running
+   * @since GemFire 5.7
+   */
+  public void setHostnameForClients(String name) throws AdminException;
+  /**
+   * Sets whether or not this bridge server should notify clients based on
+   * key subscription.
+   *
+   * If false, then an update to any key on the server causes an update to
+   * be sent to all clients. This update does not push the actual data to the
+   * clients. Instead, it causes the client to locally invalidate or destroy
+   * the corresponding entry. The next time the client requests the key, it
+   * goes to the bridge server for the value.
+   *
+   * If true, then an update to any key on the server causes an update to be
+   * sent to only those clients who have registered interest in that key. Other
+   * clients are not notified of the change. In addition, the actual value is
+   * pushed to the client. The client does not need to request the new value
+   * from the bridge server.
+   * @throws AdminException if this bridge server is running
+   * @since GemFire 5.7
+   */
+  public void setNotifyBySubscription(boolean b) throws AdminException;
+
+  /**
+   * Answers whether or not this bridge server should notify clients based on
+   * key subscription.
+   * @since GemFire 5.7
+   */
+  public boolean getNotifyBySubscription();
+
+  /**
+   * Sets the buffer size in bytes of the socket connection for this
+   * <code>BridgeServer</code>. The default is 32768 bytes.
+   *
+   * @param socketBufferSize The size in bytes of the socket buffer
+   * @throws AdminException if this bridge server is running
+   * @since GemFire 5.7
+   */
+  public void setSocketBufferSize(int socketBufferSize) throws AdminException;
+
+  /**
+   * Returns the configured buffer size of the socket connection for this
+   * <code>BridgeServer</code>. The default is 32768 bytes.
+   * @return the configured buffer size of the socket connection for this
+   * <code>BridgeServer</code>
+   * @since GemFire 5.7
+   */
+  public int getSocketBufferSize();
+
+  /**
+   * Sets the maximum amount of time between client pings. This value is
+   * used by the <code>ClientHealthMonitor</code> to determine the health
+   * of this <code>BridgeServer</code>'s clients. The default is 60000 ms.
+   *
+   * @param maximumTimeBetweenPings The maximum amount of time between client
+   * pings
+   * @throws AdminException if this bridge server is running
+   * @since GemFire 5.7
+   */
+  public void setMaximumTimeBetweenPings(int maximumTimeBetweenPings) throws AdminException;
+
+  /**
+   * Returns the maximum amount of time between client pings. This value is
+   * used by the <code>ClientHealthMonitor</code> to determine the health
+   * of this <code>BridgeServer</code>'s clients. The default is 60000 ms.
+   * @return the maximum amount of time between client pings.
+   * @since GemFire 5.7
+   */
+  public int getMaximumTimeBetweenPings();
+
+  /** 
+   *  Returns the maximum allowed client connections
+   * @since GemFire 5.7
+   */
+  public int getMaxConnections();
+
+  /**
+   * Sets the maxium number of client connections allowed.
+   * When the maximum is reached the server will stop accepting
+   * connections.
+   * @throws AdminException if this bridge server is running
+   * @since GemFire 5.7
+   */
+  public void setMaxConnections(int maxCons) throws AdminException;
+
+  /** 
+   * Returns the maxium number of threads allowed in this server to service
+   * client requests.
+   * The default of <code>0</code> causes the server to dedicate a thread for
+   * every client connection.
+   * @since GemFire 5.7
+   */
+  public int getMaxThreads();
+
+  /**
+   * Sets the maxium number of threads allowed in this server to service
+   * client requests.
+   * The default of <code>0</code> causes the server to dedicate a thread for
+   * every client connection.
+   * @throws AdminException if this bridge server is running
+   * @since GemFire 5.7
+   */
+  public void setMaxThreads(int maxThreads) throws AdminException;
+
+  /**
+   * Returns the maximum number of messages that can be enqueued in a
+   * client-queue.
+   * @since GemFire 5.7
+   */
+  public int getMaximumMessageCount();
+
+  /**
+   * Sets maximum number of messages that can be enqueued in a client-queue.
+   * @throws AdminException if this bridge server is running
+   * @since GemFire 5.7
+   */
+  public void setMaximumMessageCount(int maxMessageCount) throws AdminException;
+  
+  /**
+   * Returns the time (in seconds ) after which a message in the client queue
+   * will expire.
+   * @since GemFire 5.7
+   */
+  public int getMessageTimeToLive();
+
+  /**
+   * Sets the time (in seconds ) after which a message in the client queue
+   * will expire.
+   * @throws AdminException if this bridge server is running
+   * @since GemFire 5.7
+   */
+  public void setMessageTimeToLive(int messageTimeToLive) throws AdminException;
+  /**
+   * Sets the list of server groups this bridge server will belong to.
+   * By default bridge servers belong to the default global server group
+   * which all bridge servers always belong to.
+   * @param groups possibly empty array of <code>String</code> where each string
+   * is a server groups that this bridge server will be a member of.
+   * @throws AdminException if this bridge server is running
+   * @since GemFire 5.7
+   */
+  public void setGroups(String[] groups) throws AdminException;
+  /**
+   * Returns the list of server groups that this bridge server belongs to.
+   * @return a possibly empty array of <code>String</code>s where
+   * each string is a server group. Modifying this array will not change the
+   * server groups that this bridge server belongs to.
+   * @since GemFire 5.7
+   */
+  public String[] getGroups();
+  
+  /**
+   * Get a description of the load probe for this bridge server.
+   * {@link ServerLoadProbe} for details on the load probe.
+   * @return the load probe used by this bridge
+   * server.
+   * @since GemFire 5.7
+   */
+  public String getLoadProbe();
+
+  /**
+   * Set the load probe for this bridge server. See
+   * {@link ServerLoadProbe} for details on how to implement
+   * a load probe.
+   * 
+   * The load probe should implement DataSerializable if 
+   * it is used with this interface, because it will be sent to the remote
+   * VM.
+   * @param loadProbe the load probe to use for
+   * this bridge server.
+   * @throws AdminException  if the bridge server is running
+   * @since GemFire 5.7
+   */
+  public void setLoadProbe(ServerLoadProbe loadProbe) throws AdminException;
+
+  /**
+   * Get the frequency in milliseconds to poll the load probe on this bridge
+   * server.
+   * 
+   * @return the frequency in milliseconds that we will poll the load probe.
+   */
+  public long getLoadPollInterval();
+
+  /**
+   * Set the frequency in milliseconds to poll the load probe on this bridge
+   * server
+   * @param loadPollInterval the frequency in milliseconds to poll
+   * the load probe. Must be greater than 0.
+   * @throws AdminException if the bridge server is running
+   */
+  public void setLoadPollInterval(long loadPollInterval) throws AdminException;
+  
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberCache.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberCache.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberCache.java
new file mode 100644
index 0000000..da8f8ae
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberCache.java
@@ -0,0 +1,204 @@
+/*
+ * 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.RegionAttributes;
+
+/**
+ * Administrative interface that represent's the {@link SystemMember}'s view
+ * of its {@link org.apache.geode.cache.Cache}.
+ *
+ * @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 SystemMemberCache {
+  // attributes
+  /**
+   * The name of the cache.
+   */
+  public String getName();
+  /**
+   * Value that uniquely identifies an instance of a cache for a given member.
+   */
+  public int getId();
+  /**
+   * Indicates if this cache has been closed.
+   * @return true, if this cache is closed; false, otherwise
+   */
+  public boolean isClosed();
+  /**
+   * Gets the number of seconds a cache operation will wait to obtain
+   * a distributed lock lease.
+   */
+  public int getLockTimeout();
+  /**
+   * Sets the number of seconds a cache operation may wait to obtain a
+   * distributed lock lease before timing out.
+   *
+   * @throws AdminException
+   *         If a problem is encountered while setting the lock
+   *         timeout 
+   *
+   * @see org.apache.geode.cache.Cache#setLockTimeout
+   */
+  public void setLockTimeout(int seconds) throws AdminException;
+  
+  /**
+   * Gets the length, in seconds, of distributed lock leases obtained
+   * by this cache.
+   */
+  public int getLockLease();
+  /**
+   * Sets the length, in seconds, of distributed lock leases obtained
+   * by this cache.
+   *
+   * @throws AdminException
+   *         If a problem is encountered while setting the lock
+   *         lease
+   *
+   * @see org.apache.geode.cache.Cache#setLockLease
+   */
+  public void setLockLease(int seconds) throws AdminException;
+  
+  /**
+   * Gets the number of seconds a cache
+   * {@link org.apache.geode.cache.Region#get(Object) get} operation
+   * can spend searching for a value before it times out.
+   * The search includes any time spent loading the object.
+   * When the search times out it causes the get to fail by throwing
+   * an exception.
+   */
+  public int getSearchTimeout();
+  /**
+   * Sets the number of seconds a cache get operation can spend searching
+   * for a value.
+   *
+   * @throws AdminException
+   *         If a problem is encountered while setting the search
+   *         timeout 
+   *
+   * @see org.apache.geode.cache.Cache#setSearchTimeout
+   */
+  public void setSearchTimeout(int seconds) throws AdminException;
+  /**
+   * Returns number of seconds since this member's cache has been created.
+   * Returns <code>-1</code> if this member does not have a cache or its cache
+   * has been closed.
+   */
+  public int getUpTime();
+
+  /**
+   * Returns the names of all the root regions currently in this cache.
+   */
+  public java.util.Set getRootRegionNames();
+
+  // operations
+
+  /**
+   * Returns statistics related to this cache's performance.
+   */
+  public Statistic[] getStatistics();
+
+  /**
+   * Return the existing region (or subregion) with the specified
+   * path that already exists in the cache.
+   * Whether or not the path starts with a forward slash it is interpreted as a
+   * full path starting at a root.
+   *
+   * @param path the path to the region
+   * @return the Region or null if not found
+   * @throws IllegalArgumentException if path is null, the empty string, or "/"
+   */
+  public SystemMemberRegion getRegion(String path) throws AdminException;
+
+  /**
+   * Creates a VM root <code>Region</code> in this cache.
+   *
+   * @param name
+   *        The name of the region to create
+   * @param attrs
+   *        The attributes of the root region
+   *
+   * @throws AdminException
+   *         If the region cannot be created
+   *
+   * @since GemFire 4.0
+   * @deprecated as of GemFire 5.0, use {@link #createRegion} instead
+   */
+  @Deprecated
+  public SystemMemberRegion createVMRegion(String name,
+                                           RegionAttributes attrs)
+    throws AdminException;
+
+  /**
+   * Creates a root <code>Region</code> in this cache.
+   *
+   * @param name
+   *        The name of the region to create
+   * @param attrs
+   *        The attributes of the root region
+   *
+   * @throws AdminException
+   *         If the region cannot be created
+   *
+   * @since GemFire 5.0
+   */
+  public SystemMemberRegion createRegion(String name,
+                                         RegionAttributes attrs)
+    throws AdminException;
+
+  /**
+   * Updates the state of this cache instance. Note that once a cache
+   * instance is closed refresh will never change the state of that instance.
+   */
+  public void refresh();
+
+  /**
+   * Adds a new, unstarted cache server that will serve the contents
+   * of this cache to clients.
+   *
+   * @see org.apache.geode.cache.Cache#addCacheServer
+   *
+   * @since GemFire 5.7
+   */
+  public SystemMemberCacheServer addCacheServer()
+    throws AdminException;
+
+  /**
+   * Returns the cache servers that run in this member's VM.  Note
+   * that this list will not be updated until {@link #refresh} is
+   * called.
+   *
+   * @see org.apache.geode.cache.Cache#getCacheServers
+   *
+   * @since GemFire 5.7
+   */
+  public SystemMemberCacheServer[] getCacheServers()
+    throws AdminException;
+
+  /**
+   * Returns whether or not this cache acts as a server.  This method
+   * will always return <code>true</code> for the
+   * <code>SystemMemberCache</code> obtained from a {@link
+   * CacheServer}.  Note that this value will not be updated until
+   * {@link #refresh} is invoked.
+   *
+   * @since GemFire 4.0
+   */
+  public boolean isServer() throws AdminException;
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberCacheEvent.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberCacheEvent.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberCacheEvent.java
new file mode 100644
index 0000000..798c232
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberCacheEvent.java
@@ -0,0 +1,33 @@
+/*
+ * 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.Operation;
+/**
+ * An event that describes an operation on a cache.
+ * Instances of this are delivered to a {@link SystemMemberCacheListener} when a
+ * a cache is created or closed.
+ *
+ * @since GemFire 5.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 interface SystemMemberCacheEvent extends SystemMembershipEvent {
+  /**
+   * Returns the actual operation that caused this event.
+   */
+  public Operation getOperation();
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberCacheListener.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberCacheListener.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberCacheListener.java
new file mode 100644
index 0000000..e9ac024
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberCacheListener.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.internal.admin.api;
+
+import org.apache.geode.cache.*;
+
+/**
+ * A listener whose callback methods can be used to track the lifecycle of
+ * {@link Cache caches} and {@link Region regions} in the GemFire distributed system.
+ *
+ * @see AdminDistributedSystem#addCacheListener
+ * @see AdminDistributedSystem#removeCacheListener
+ *
+ * @since GemFire 5.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 interface SystemMemberCacheListener {
+
+  /**
+   * Invoked after a region is created in any node of distributed system.
+   * @param event describes the region that was created.
+   * @see CacheFactory#create
+   * @see Cache#createRegion
+   * @see Region#createSubregion
+   */
+  public void afterRegionCreate(SystemMemberRegionEvent event);
+
+  /**
+   * Invoked when a region is destroyed or closed in any node of distributed system.
+   * @param event describes the region that was lost. The operation on this event
+   * can be used to determine the actual operation that caused the loss. Note that
+   * {@link Cache#close()} invokes this callback with <code>Operation.CACHE_CLOSE</code>
+   * for each region in the closed cache and it invokes {@link #afterCacheClose}.
+   
+   * @see Cache#close()
+   * @see Region#close
+   * @see Region#localDestroyRegion()
+   * @see Region#destroyRegion()
+   */
+  public void afterRegionLoss(SystemMemberRegionEvent event);
+
+  /**
+   * Invoked after a cache is created in any node of a distributed system.
+   * Note that this callback will be done before any regions are created in the
+   * cache.
+   * @param event describes the member that created the cache.
+   * @see CacheFactory#create
+   */
+  public void afterCacheCreate(SystemMemberCacheEvent event);
+  /**
+   * Invoked after a cache is closed in any node of a distributed system.
+   * This callback is done after those done for each region in the cache.
+   * This callback is not done if the distributed member that has a cache crashes.
+   * @param event describes the member that closed its cache.
+   * @see Cache#close()
+   */
+  public void afterCacheClose(SystemMemberCacheEvent event);
+}