java.fedora.server.journal.JournalOperatingMode Maven / Gradle / Ivy
Show all versions of fcrepo-client Show documentation
/*
* -----------------------------------------------------------------------------
*
* License and Copyright: The contents of this file are subject to 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.fedora-commons.org/licenses.
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
*
* The entire file consists of original code.
* Copyright © 2008 Fedora Commons, Inc.
*
Copyright © 2002-2007 The Rector and Visitors of the University of
* Virginia and Cornell University
* All rights reserved.
*
* -----------------------------------------------------------------------------
*/
package fedora.server.journal;
import fedora.server.errors.InvalidStateException;
import fedora.server.errors.ServerException;
import fedora.server.journal.entry.CreatorJournalEntry;
/**
*
* Title: JournalOperatingMode.java
*
*
* Description: A mechanism for kicking a server from normal
* (Journal-Creating) mode, to disabled (Read-Only) mode. Any
* {@link CreatorJournalEntry} must call
* {@link JournalOperatingMode#enforceCurrentMode} before performing an
* operation that might modify the repository.
*
*
* @author jblake
* @version $Id: JournalOperatingMode.java,v 1.3 2007/06/01 17:21:31 jblake Exp $
*/
public enum JournalOperatingMode {
NORMAL, READ_ONLY;
private static JournalOperatingMode currentMode = NORMAL;
/**
* Set the current mode.
*/
public static void setMode(JournalOperatingMode mode) {
if (mode == null) {
throw new IllegalArgumentException("Journal operating mode may not be null");
}
JournalOperatingMode.currentMode = mode;
}
/**
* Get the current mode.
*/
public static Object getMode() {
return currentMode;
}
/**
* If a modifying operation is attempted while we are in Read-Only mode,
* throw an exception to prevent it. In Normal mode, do nothing.
*
* @throws ServerException
* to prevent a modifying operation in Read-Only mode.
*/
public static void enforceCurrentMode() throws ServerException {
switch (currentMode) {
case READ_ONLY:
throw new InvalidStateException("Server is in Read-Only mode, pursuant to a Journalling error.");
default:
}
}
}