/* * Copyright (C) 2007 The Android Open Source Project * * Licensed 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 com.appsimobile.util; /** * Very simple base class that implements a flag to control the mutability * of instances. This class just provides the flag and a utility to check * and throw the right exception, but it is up to subclasses to place calls * to the checker in all the right places. */ public class MutabilityControl { /** * whether this instance is mutable */ private boolean mutable; /** * Constructs an instance. It is initially mutable. */ public MutabilityControl() { mutable = true; } /** * Constructs an instance, explicitly indicating the mutability. * * @param mutable {@code true} iff this instance is mutable */ public MutabilityControl(boolean mutable) { this.mutable = mutable; } /** * Makes this instance immutable. */ public void setImmutable() { mutable = false; } /** * Checks to see whether or not this instance is immutable. This is the * same as calling {@code !isMutable()}. * * @return {@code true} iff this instance is immutable */ public final boolean isImmutable() { return !mutable; } /** * Checks to see whether or not this instance is mutable. * * @return {@code true} iff this instance is mutable */ public final boolean isMutable() { return mutable; } /** * Throws {@link MutabilityException} if this instance is * immutable. */ public final void throwIfImmutable() { if (!mutable) { throw new MutabilityException("immutable instance"); } } /** * Throws {@link MutabilityException} if this instance is mutable. */ public final void throwIfMutable() { if (mutable) { throw new MutabilityException("mutable instance"); } } }