/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
 */
package org.hibernate.cache.spi.access;

import java.util.Locale;

The types of access strategies available.
Author:Steve Ebersole
/** * The types of access strategies available. * * @author Steve Ebersole */
public enum AccessType {
Read-only access. Data may be added and removed, but not mutated.
/** * Read-only access. Data may be added and removed, but not mutated. */
READ_ONLY( "read-only" ),
Read and write access (strict). Data may be added, removed and mutated.
/** * Read and write access (strict). Data may be added, removed and mutated. */
READ_WRITE( "read-write" ),
Read and write access (non-strict). Data may be added, removed and mutated. The non-strictness comes from the fact that locks are not maintained as tightly as in READ_WRITE, which leads to better throughput but may also lead to inconsistencies.
/** * Read and write access (non-strict). Data may be added, removed and mutated. The non-strictness comes from * the fact that locks are not maintained as tightly as in {@link #READ_WRITE}, which leads to better throughput * but may also lead to inconsistencies. */
NONSTRICT_READ_WRITE( "nonstrict-read-write" ),
A read and write strategy where isolation/locking is maintained in conjunction with a JTA transaction.
/** * A read and write strategy where isolation/locking is maintained in conjunction with a JTA transaction. */
TRANSACTIONAL( "transactional" ); private final String externalName; private AccessType(String externalName) { this.externalName = externalName; }
Get the corresponding externalized name for this value.
Returns:The corresponding externalized name.
/** * Get the corresponding externalized name for this value. * * @return The corresponding externalized name. */
public String getExternalName() { return externalName; } @Override public String toString() { return "AccessType[" + externalName + "]"; }
Resolve an AccessType from its external name.
Params:
  • externalName – The external representation to resolve
Throws:
See Also:
Returns:The access type.
/** * Resolve an AccessType from its external name. * * @param externalName The external representation to resolve * * @return The access type. * * @throws UnknownAccessTypeException If the externalName was not recognized. * * @see #getExternalName() */
public static AccessType fromExternalName(String externalName) { if ( externalName == null ) { return null; } for ( AccessType accessType : AccessType.values() ) { if ( accessType.getExternalName().equals( externalName ) ) { return accessType; } } // Check to see if making upper-case matches an enum name. try { return AccessType.valueOf( externalName.toUpperCase( Locale.ROOT) ); } catch ( IllegalArgumentException e ) { throw new UnknownAccessTypeException( externalName ); } } }