/*
* 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.cache;
import org.apache.geode.internal.i18n.LocalizedStrings;
import java.io.*;
import java.util.*;
/**
* Specifies how the region is affected by resumption of reliability when one or more missing
* required roles return to the distributed membership. The <code>ResumptionAction</code> is
* specified when configuring a region's {@link org.apache.geode.cache.MembershipAttributes}.
*
* @deprecated this API is scheduled to be removed
*/
public class ResumptionAction implements java.io.Serializable {
private static final long serialVersionUID = 6632254151314915610L;
/** No special action takes place when reliability resumes. */
public static final ResumptionAction NONE = new ResumptionAction("NONE");
/**
* Resumption of reliability causes the region to be cleared of all data and
* {@link DataPolicy#withReplication replicated} regions will do a new getInitialImage operation
* to repopulate the region. Any existing references to this region become unusable in that any
* subsequent methods invoked on those references will throw a
* {@link RegionReinitializedException}.
*/
public static final ResumptionAction REINITIALIZE = new ResumptionAction("REINITIALIZE");
/** The name of this mirror type. */
private final transient String name;
// The 4 declarations below are necessary for serialization
/** byte used as ordinal to represent this Scope */
public final byte ordinal = nextOrdinal++;
private static byte nextOrdinal = 0;
private static final ResumptionAction[] PRIVATE_VALUES = {NONE, REINITIALIZE};
/** List of all ResumptionAction values */
public static final List VALUES = Collections.unmodifiableList(Arrays.asList(PRIVATE_VALUES));
private Object readResolve() throws ObjectStreamException {
return PRIVATE_VALUES[ordinal]; // Canonicalize
}
/** Creates a new instance of ResumptionAction. */
private ResumptionAction(String name) {
this.name = name;
}
/** Return the ResumptionAction represented by specified ordinal */
public static ResumptionAction fromOrdinal(byte ordinal) {
return PRIVATE_VALUES[ordinal];
}
/** Return the ResumptionAction specified by name */
public static ResumptionAction fromName(String name) {
if (name == null || name.length() == 0) {
throw new IllegalArgumentException(
LocalizedStrings.ResumptionAction_INVALID_RESUMPTIONACTION_NAME_0
.toLocalizedString(name));
}
for (int i = 0; i < PRIVATE_VALUES.length; i++) {
if (name.equals(PRIVATE_VALUES[i].name)) {
return PRIVATE_VALUES[i];
}
}
throw new IllegalArgumentException(
LocalizedStrings.ResumptionAction_INVALID_RESUMPTIONACTION_NAME_0.toLocalizedString(name));
}
/** Returns true if this is <code>NONE</code>. */
public boolean isNone() {
return this == NONE;
}
/** Returns true if this is <code>REINITIALIZE</code>. */
public boolean isReinitialize() {
return this == REINITIALIZE;
}
/**
* Returns a string representation for this resumption action.
*
* @return the name of this resumption action
*/
@Override
public String toString() {
return this.name;
}
}