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:43 UTC
[21/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/SystemMemberCacheServer.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberCacheServer.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberCacheServer.java
new file mode 100755
index 0000000..c0162fe
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberCacheServer.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 {@link
+ * org.apache.geode.cache.server.CacheServer CacheServer} that
+ * serves the contents of a system member's cache to clients.
+ *
+ * @see SystemMemberCache#addCacheServer
+ *
+ * @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 interface SystemMemberCacheServer {
+
+ /**
+ * Returns the port on which this cache server listens for
+ * clients to connect.
+ */
+ public int getPort();
+
+ /**
+ * Sets the port on which this cache server listens for
+ * clients to connect.
+ *
+ * @throws AdminException
+ * If this cache server is running
+ */
+ public void setPort(int port) throws AdminException;
+
+ /**
+ * Starts this cache server. Once the server is running, its
+ * configuration cannot be changed.
+ *
+ * @throws AdminException
+ * If an error occurs while starting the cache server
+ */
+ public void start() throws AdminException;
+
+ /**
+ * Returns whether or not this cache server is running
+ */
+ public boolean isRunning();
+
+ /**
+ * Stops this cache server. Note that the
+ * <code>CacheServer</code> can be reconfigured and restarted if
+ * desired.
+ */
+ public void stop() throws AdminException;
+
+ /**
+ * Updates the information about this cache 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 cache 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 cache 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 cache server is running
+ * @since GemFire 5.7
+ */
+ public void setHostnameForClients(String name) throws AdminException;
+ /**
+ * Sets whether or not this cache 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 cache 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 cache server.
+ * @throws AdminException if this cache server is running
+ * @since GemFire 5.7
+ */
+ public void setNotifyBySubscription(boolean b) throws AdminException;
+
+ /**
+ * Answers whether or not this cache 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>CacheServer</code>. The default is 32768 bytes.
+ *
+ * @param socketBufferSize The size in bytes of the socket buffer
+ * @throws AdminException if this cache 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>CacheServer</code>. The default is 32768 bytes.
+ * @return the configured buffer size of the socket connection for this
+ * <code>CacheServer</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>CacheServer</code>'s clients. The default is 60000 ms.
+ *
+ * @param maximumTimeBetweenPings The maximum amount of time between client
+ * pings
+ * @throws AdminException if this cache 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>CacheServer</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 cache 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 cache 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 cache 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 cache server is running
+ * @since GemFire 5.7
+ */
+ public void setMessageTimeToLive(int messageTimeToLive) throws AdminException;
+ /**
+ * Sets the list of server groups this cache server will belong to.
+ * By default cache servers belong to the default global server group
+ * which all cache servers always belong to.
+ * @param groups possibly empty array of <code>String</code> where each string
+ * is a server groups that this cache server will be a member of.
+ * @throws AdminException if this cache server is running
+ * @since GemFire 5.7
+ */
+ public void setGroups(String[] groups) throws AdminException;
+ /**
+ * Returns the list of server groups that this cache 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 cache server belongs to.
+ * @since GemFire 5.7
+ */
+ public String[] getGroups();
+
+ /**
+ * Get a description of the load probe for this cache server.
+ * {@link ServerLoadProbe} for details on the load probe.
+ * @return the load probe used by this cache
+ * server.
+ * @since GemFire 5.7
+ */
+ public String getLoadProbe();
+
+ /**
+ * Set the load probe for this cache 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 cache server.
+ * @throws AdminException if the cache 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 cache
+ * 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 cache
+ * server
+ * @param loadPollInterval the frequency in milliseconds to poll
+ * the load probe. Must be greater than 0.
+ * @throws AdminException if the cache 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/SystemMemberRegion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberRegion.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberRegion.java
new file mode 100644
index 0000000..6a690a1
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberRegion.java
@@ -0,0 +1,321 @@
+/*
+ * 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.*;
+import java.io.File;
+
+/**
+ * Administrative interface that represent's the {@link
+ * SystemMember}'s view of one of its cache's {@link
+ * org.apache.geode.cache.Region}s. If the region in the remote
+ * system member is closed or destroyed, the methods of
+ * <code>SystemMemberRegion</code> will throw {@link
+ * RegionNotFoundException}.
+ *
+ * @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 SystemMemberRegion {
+ // attributes
+ /**
+ * Returns the name that identifies this region in its cache.
+ *
+ * @see org.apache.geode.cache.Region#getName
+ */
+ public String getName();
+
+ /**
+ * Returns the full path name that identifies this region in its
+ * cache.
+ *
+ * @see org.apache.geode.cache.Region#getFullPath
+ */
+ public String getFullPath();
+
+ /**
+ * Returns the names of all the subregions of this region.
+ */
+ public java.util.Set getSubregionNames();
+
+ /**
+ * Returns the full path of each of the subregions of this region.
+ * These paths are suitable for use with {@link
+ * SystemMemberCache#getRegion}.
+ */
+ public java.util.Set getSubregionFullPaths();
+
+ /**
+ * Returns a description of any user attribute associated with this
+ * region. The description includes the classname of the user
+ * attribute object as well as its <code>toString</code>
+ * representation.
+ */
+ public String getUserAttribute();
+
+ /**
+ * Returns a description of any CacheLoader associated with this region.
+ */
+ public String getCacheLoader();
+ /**
+ * Returns a description of any CacheWriter associated with this region.
+ */
+ public String getCacheWriter();
+
+ /**
+ * Returns the <code>EvictionAttributes</code> that configure how
+ * entries in the the region are evicted
+ */
+ public EvictionAttributes getEvictionAttributes();
+
+ /**
+ * Returns a description of the CacheListener in this region's attributes. If
+ * there is more than 1 CacheListener defined for a region this method will
+ * return the description of the 1st CacheListener returned from
+ * {@link #getCacheListeners}
+ *
+ * @deprecated as of 6.0 use getCacheListeners() instead
+ */
+ @Deprecated
+ public String getCacheListener();
+
+ /**
+ * This method will return an empty array if there are no CacheListeners
+ * defined on the region. If there are one or more than 1 CacheListeners
+ * defined, this method will return an array which has the names of all the
+ * CacheListeners
+ *
+ * @return String[] the region's <code>CacheListeners</code> as a String array
+ * @since GemFire 6.0
+ */
+ public String[] getCacheListeners();
+
+ /**
+ * Returns the KeyConstraint in this region's attributes.
+ */
+ public String getKeyConstraint();
+
+ /**
+ * Returns the ValueConstraint in this region's attributes.
+ */
+ public String getValueConstraint();
+
+ /**
+ * Returns the RegionTimeToLive time limit in this region's attributes.
+ */
+ public int getRegionTimeToLiveTimeLimit();
+
+ /**
+ * Returns the RegionTimeToLive action in this region's attributes.
+ */
+ public ExpirationAction getRegionTimeToLiveAction();
+
+ /**
+ * Returns the EntryTimeToLive time limit in this region's attributes.
+ */
+ public int getEntryTimeToLiveTimeLimit();
+
+ /**
+ * Returns the EntryTimeToLive action in this region's attributes.
+ */
+ public ExpirationAction getEntryTimeToLiveAction();
+
+ /**
+ * string describing the CustomExpiry for entry-time-to-live
+ * @return the CustomExpiry for entry-time-to-live
+ */
+ public String getCustomEntryTimeToLive();
+
+ /**
+ * Returns the RegionIdleTimeout time limit in this region's attributes.
+ */
+ public int getRegionIdleTimeoutTimeLimit();
+
+ /**
+ * Returns the RegionIdleTimeout action in this region's attributes.
+ */
+ public ExpirationAction getRegionIdleTimeoutAction();
+
+ /**
+ * Returns the EntryIdleTimeout time limit in this region's attributes.
+ */
+ public int getEntryIdleTimeoutTimeLimit();
+
+ /**
+ * Returns the EntryIdleTimeout action in this region's attributes.
+ */
+ public ExpirationAction getEntryIdleTimeoutAction();
+
+ /**
+ * string describing the CustomExpiry for entry-idle-timeout
+ * @return the CustomExpiry for entry-idle-timeout
+ */
+ public String getCustomEntryIdleTimeout();
+
+ /**
+ * Returns the MirrorType in this region's attributes.
+ * @deprecated as of 5.0, you should use getDataPolicy instead
+ */
+ @Deprecated
+ public MirrorType getMirrorType();
+
+ /**
+ * Returns the DataPolicy in this region's attributes.
+ */
+ public DataPolicy getDataPolicy();
+
+ /**
+
+ /**
+ * Returns the Scope in this region's attributes.
+ */
+ public Scope getScope();
+
+ /**
+ * Returns the InitialCapacity in this region's attributes.
+ */
+ public int getInitialCapacity();
+
+ /**
+ * Returns the LoadFactor in this region's attributes.
+ */
+ public float getLoadFactor();
+
+ /**
+ * Returns the ConcurrencyLevel in this region's attributes.
+ */
+ public int getConcurrencyLevel();
+
+ /**
+ * Returns whether or not conflicting concurrent operations on this region
+ * are prevented
+ */
+ public boolean getConcurrencyChecksEnabled();
+
+ /**
+ * Returns the StatisticsEnabled in this region's attributes.
+ */
+ public boolean getStatisticsEnabled();
+
+ /**
+ * Returns whether or not a persistent backup should be made of the
+ * region (as opposed to just writing the overflow data to disk).
+ */
+ public boolean getPersistBackup();
+
+ /**
+ * Returns the <code>DiskWriteAttributes</code> that configure how
+ * the region is written to disk.
+ */
+ public DiskWriteAttributes getDiskWriteAttributes();
+
+ /**
+ * Returns the directories to which the region's data are written. If
+ * multiple directories are used, GemFire will attempt to distribute the
+ * data evenly amongst them.
+ */
+ public File[] getDiskDirs();
+
+ /**
+ * Returns the number of entries currently in this region.
+ */
+ public int getEntryCount();
+
+ /**
+ * Returns the number of subregions currently in this region.
+ */
+ public int getSubregionCount();
+
+ /**
+ * Returns the LastModifiedTime obtained from this region's statistics.
+ */
+ public long getLastModifiedTime();
+
+ /**
+ * Returns the LastAccessedTime obtained from this region's statistics.
+ */
+ public long getLastAccessedTime();
+
+ /**
+ * Returns the HitCount obtained from this region's statistics.
+ */
+ public long getHitCount();
+
+ /**
+ * Returns the MissCount obtained from this region's statistics.
+ */
+ public long getMissCount();
+
+ /**
+ * Returns the HitRatio obtained from this region's statistics.
+ */
+ public float getHitRatio();
+
+ /**
+ * Returns whether or not acks are sent after an update is processed.
+ * @return False if acks are sent after updates are processed;
+ * true if acks are sent before updates are processed.
+ *
+ * @since GemFire 4.1
+ */
+ public boolean getEarlyAck();
+
+ // operations
+ /**
+ * Updates the state of this region instance. Note that once a cache
+ * instance is closed refresh will never change the state of its regions.
+ */
+ public void refresh();
+
+ /**
+ * Creates a subregion of this region.
+ *
+ * @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
+ */
+ public SystemMemberRegion createSubregion(String name,
+ RegionAttributes attrs)
+ throws AdminException;
+
+ /**
+ * Returns the <code>MembershipAttributes</code> that configure required
+ * roles for reliable access to the region.
+ * @deprecated this API is scheduled to be removed
+ */
+ public MembershipAttributes getMembershipAttributes();
+
+ /**
+ * Returns the <code>SubscriptionAttributes</code> for the region.
+ * @since GemFire 5.0
+ */
+ public SubscriptionAttributes getSubscriptionAttributes();
+
+ /**
+ * Returns the <code>PartitionAttributes</code> for the region.
+ * @since GemFire 5.7
+ */
+ public PartitionAttributes getPartitionAttributes();
+
+}
+
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberRegionEvent.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberRegionEvent.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberRegionEvent.java
new file mode 100644
index 0000000..cfcc81f
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberRegionEvent.java
@@ -0,0 +1,32 @@
+/*
+ * 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;
+
+/**
+ * An event that describes an operation on a region.
+ * Instances of this are delivered to a {@link SystemMemberCacheListener} when a
+ * a region comes or goes.
+ *
+ * @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 SystemMemberRegionEvent extends SystemMemberCacheEvent {
+ /**
+ * Returns the full path of the region the event was done on.
+ */
+ public String getRegionPath();
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberType.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberType.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberType.java
new file mode 100755
index 0000000..7ed7ac1
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMemberType.java
@@ -0,0 +1,145 @@
+/*
+ * 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.*;
+
+/**
+ * Type-safe definition for system members.
+ *
+ * @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 SystemMemberType implements java.io.Serializable {
+ private static final long serialVersionUID = 3284366994485749302L;
+
+ /** GemFire shared-memory manager connected to the distributed system */
+ public static final SystemMemberType MANAGER =
+ new SystemMemberType("GemFireManager");
+
+ /** Application connected to the distributed system */
+ public static final SystemMemberType APPLICATION =
+ new SystemMemberType("Application");
+
+ /** GemFire Cache VM connected to the distributed system */
+ public static final SystemMemberType CACHE_VM =
+ new SystemMemberType("CacheVm");
+
+ /** GemFire Cache Server connected to the distributed system
+ * @deprecated as of 5.7 use {@link #CACHE_VM} instead.
+ */
+ @Deprecated
+ public static final SystemMemberType CACHE_SERVER = CACHE_VM;
+
+
+ /** The display-friendly name of this system member type. */
+ private final transient String name;
+
+ // The 4 declarations below are necessary for serialization
+ /** int used as ordinal to represent this Scope */
+ public final int ordinal = nextOrdinal++;
+
+ private static int nextOrdinal = 0;
+
+ private static final SystemMemberType[] VALUES =
+ { MANAGER, APPLICATION, CACHE_VM };
+
+ private Object readResolve() throws java.io.ObjectStreamException {
+ return VALUES[ordinal]; // Canonicalize
+ }
+
+ /** Creates a new instance of SystemMemberType. */
+ private SystemMemberType(String name) {
+ this.name = name;
+ }
+
+ /** Return the SystemMemberType represented by specified ordinal */
+ public static SystemMemberType fromOrdinal(int ordinal) {
+ return VALUES[ordinal];
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ /** Return whether this is <code>MANAGER</code>. */
+ public boolean isManager() {
+ return this.equals(MANAGER);
+ }
+
+ /** Return whether this is <code>APPLICATION</code>. */
+ public boolean isApplication() {
+ return this.equals(APPLICATION);
+ }
+
+ /** Return whether this is <code>CACHE_SERVER</code>.
+ * @deprecated as of 5.7 use {@link #isCacheVm} instead.
+ */
+ @Deprecated
+ public boolean isCacheServer() {
+ return isCacheVm();
+ }
+ /** Return whether this is <code>CACHE_VM</code>.
+ */
+ public boolean isCacheVm() {
+ return this.equals(CACHE_VM);
+ }
+
+ /**
+ * Returns a string representation for this system member type.
+ *
+ * @return the name of this system member type
+ */
+ @Override
+ public String toString() {
+ return this.name;
+ }
+
+ /**
+ * Indicates whether some other object is "equal to" this one.
+ *
+ * @param other the reference object with which to compare.
+ * @return true if this object is the same as the obj argument;
+ * false otherwise.
+ */
+ @Override
+ public boolean equals(Object other) {
+ if (other == this) return true;
+ if (other == null) return false;
+ if (!(other instanceof SystemMemberType)) return false;
+ final SystemMemberType that = (SystemMemberType) other;
+ if (this.ordinal != that.ordinal) return false;
+ return true;
+ }
+
+ /**
+ * Returns a hash code for the object. This method is supported for the
+ * benefit of hashtables such as those provided by java.util.Hashtable.
+ *
+ * @return the integer 0 if description is null; otherwise a unique integer.
+ */
+ @Override
+ public int hashCode() {
+ int result = 17;
+ final int mult = 37;
+ result = mult * result + this.ordinal;
+ return result;
+ }
+
+}
+
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMembershipEvent.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMembershipEvent.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMembershipEvent.java
new file mode 100644
index 0000000..c9a4e09
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMembershipEvent.java
@@ -0,0 +1,40 @@
+/*
+ * 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;
+/**
+ * An event that describes the distributed member originated this event.
+ * Instances of this are delivered to a {@link SystemMembershipListener} when a
+ * member has joined or 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 interface SystemMembershipEvent {
+ /**
+ * Returns the distributed member as a String.
+ */
+ public String getMemberId();
+
+ /**
+ * Returns the {@link DistributedMember} that this event originated in.
+ * @return the member that performed the operation that originated this event.
+ * @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/SystemMembershipListener.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMembershipListener.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMembershipListener.java
new file mode 100644
index 0000000..1fd33db
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/SystemMembershipListener.java
@@ -0,0 +1,61 @@
+/*
+ * 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 listener whose callback methods are invoked when members join or
+ * leave the GemFire distributed system.
+ *
+ * @see AdminDistributedSystem#addMembershipListener
+ *
+ * @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 SystemMembershipListener {
+
+ /**
+ * Invoked when a member has joined the distributed system
+ */
+ public void memberJoined(SystemMembershipEvent event);
+
+ /**
+ * Invoked when a member has gracefully left the distributed system. This
+ * occurs when the member took action to remove itself from the distributed
+ * system.
+ */
+ public void memberLeft(SystemMembershipEvent event);
+
+ /**
+ * Invoked when a member has unexpectedly left the distributed
+ * system. This occurs when a member is forcibly removed from the
+ * distributed system by another process, such as from
+ * <a href=../distributed/DistributedSystem.html#member-timeout> failure detection</a>, or
+ * <a href=../distributed/DistributedSystem.html#enable-network-partition-detection>
+ * network partition detection</a> processing.
+ */
+ public void memberCrashed(SystemMembershipEvent event);
+
+// /**
+// * Invoked when a member broadcasts an informational message.
+// *
+// * @see org.apache.geode.distributed.DistributedSystem#fireInfoEvent
+// *
+// * @since GemFire 4.0
+// */
+// public void memberInfo(SystemMembershipEvent event);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/096b622d/geode-core/src/main/java/org/apache/geode/internal/admin/api/UnmodifiableConfigurationException.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/UnmodifiableConfigurationException.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/UnmodifiableConfigurationException.java
new file mode 100755
index 0000000..e60a8ce
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/UnmodifiableConfigurationException.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.geode.internal.admin.api;
+
+/**
+ * An <code>UnmodifiableConfigurationException</code> is thrown when an attempt
+ * is made to modify the value of an unmodifiable
+ * {@link ConfigurationParameter}.
+ *
+ * @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 UnmodifiableConfigurationException extends AdminException {
+private static final long serialVersionUID = -7653547392992060646L;
+
+ /**
+ * 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 UnmodifiableConfigurationException() {
+ 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 UnmodifiableConfigurationException(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 UnmodifiableConfigurationException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ /**
+ * Constructs a new exception with the specified cause and a detail
+ * message of <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 UnmodifiableConfigurationException(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/impl/AbstractHealthEvaluator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/impl/AbstractHealthEvaluator.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/impl/AbstractHealthEvaluator.java
new file mode 100644
index 0000000..cf9eb2b
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/impl/AbstractHealthEvaluator.java
@@ -0,0 +1,184 @@
+/*
+ * 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.impl;
+
+import java.util.List;
+
+import org.apache.logging.log4j.Logger;
+
+import org.apache.geode.internal.admin.api.GemFireHealth;
+import org.apache.geode.internal.admin.api.GemFireHealthConfig;
+import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.internal.i18n.LocalizedStrings;
+import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.internal.logging.log4j.LocalizedMessage;
+
+/**
+ * The abstract superclass of all GemFire health evaluators.
+ * Basically, this class specifies what the health evaluators need and
+ * what they should do.
+ *
+ * <P>
+ *
+ * Note that evaluators never reside in the administration VM, they
+ * only in member VMs. They are not <code>Serializable</code> and
+ * aren't meant to be.
+ *
+ *
+ * @since GemFire 3.5
+ * */
+public abstract class AbstractHealthEvaluator {
+
+ private static final Logger logger = LogService.getLogger();
+
+ /** The number of times this evaluator has been evaluated. Certain
+ * checks are not made the first time an evaluation occurs. */
+ private int numEvaluations;
+
+ ////////////////////// Constructors //////////////////////
+
+ /**
+ * Creates a new <code>AbstractHealthEvaluator</code> with the given
+ * <code>GemFireHealthConfig</code> and
+ * <code>DistributionManager</code>.
+ *
+ * Originally, this method took an
+ * <code>InternalDistributedSystem</code>, but we found there were
+ * race conditions during initialization. Namely, that a
+ * <code>DistributionMessage</code> can be processed before the
+ * <code>InternalDistributedSystem</code>'s
+ * <code>DistributionManager</code> is set.
+ */
+ protected AbstractHealthEvaluator(GemFireHealthConfig config,
+ DM dm)
+ {
+ this.numEvaluations = 0;
+ }
+
+ ///////////////////// Instance Methods /////////////////////
+
+ /**
+ * Evaluates the health of a component of a GemFire distributed
+ * system.
+ *
+ * @param status
+ * A list of {@link AbstractHealthEvaluator.HealthStatus
+ * HealthStatus} objects that is populated when ill health is
+ * detected.
+ */
+ public final void evaluate(List status) {
+ this.numEvaluations++;
+ check(status);
+ }
+
+ /**
+ * Checks the health of a component of a GemFire distributed
+ * system.
+ *
+ * @see #evaluate
+ */
+ protected abstract void check(List status);
+
+ /**
+ * Returns whether or not this is the first evaluation
+ */
+ protected final boolean isFirstEvaluation() {
+ return this.numEvaluations <= 1;
+ }
+
+ /**
+ * A factory method that creates a {@link
+ * AbstractHealthEvaluator.HealthStatus HealthStats} with
+ * {@linkplain GemFireHealth#OKAY_HEALTH okay} status.
+ */
+ protected HealthStatus okayHealth(String diagnosis) {
+ logger.info(LocalizedMessage.create(LocalizedStrings.AbstractHealthEvaluator_OKAY_HEALTH__0, diagnosis));
+ return new HealthStatus(GemFireHealth.OKAY_HEALTH, diagnosis);
+ }
+
+ /**
+ * A factory method that creates a {@link
+ * AbstractHealthEvaluator.HealthStatus HealthStats} with
+ * {@linkplain GemFireHealth#POOR_HEALTH poor} status.
+ */
+ protected HealthStatus poorHealth(String diagnosis) {
+ logger.info(LocalizedMessage.create(LocalizedStrings.AbstractHealthEvaluator_POOR_HEALTH__0, diagnosis));
+ return new HealthStatus(GemFireHealth.POOR_HEALTH, diagnosis);
+ }
+
+ /**
+ * Returns a <code>String</code> describing the component whose
+ * health is evaluated by this evaluator.
+ */
+ protected abstract String getDescription();
+
+ /**
+ * Closes this evaluator and releases all of its resources
+ */
+ abstract void close();
+
+ /////////////////////// Inner Classes //////////////////////
+
+ /**
+ * Represents the health of a GemFire component.
+ */
+ public class HealthStatus {
+ /** The health of a GemFire component */
+ private GemFireHealth.Health healthCode;
+
+ /** The diagnosis of the illness */
+ private String diagnosis;
+
+ ////////////////////// Constructors //////////////////////
+
+ /**
+ * Creates a new <code>HealthStatus</code> with the give
+ * <code>health</code> code and <code>dianosis</code> message.
+ *
+ * @see GemFireHealth#OKAY_HEALTH
+ * @see GemFireHealth#POOR_HEALTH
+ */
+ HealthStatus(GemFireHealth.Health healthCode, String diagnosis) {
+ this.healthCode = healthCode;
+ this.diagnosis =
+ "[" + AbstractHealthEvaluator.this.getDescription() + "] " +
+ diagnosis;
+ }
+
+ ///////////////////// Instance Methods /////////////////////
+
+ /**
+ * Returns the health code
+ *
+ * @see GemFireHealth#OKAY_HEALTH
+ * @see GemFireHealth#POOR_HEALTH
+ */
+ public GemFireHealth.Health getHealthCode() {
+ return this.healthCode;
+ }
+
+ /**
+ * Returns the diagnosis prepended with a description of the
+ * component that is ill.
+ */
+ public String getDiagnosis() {
+ return this.diagnosis;
+ }
+
+ }
+
+}