
org.glassfish.grizzly.http.server.util.ParameterMap Maven / Gradle / Ivy
The newest version!
/*
* Copyright (c) 2010, 2020 Oracle and/or its affiliates. All rights reserved.
* Copyright 2004 The Apache Software Foundation
*
* 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 org.glassfish.grizzly.http.server.util;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* Extended implementation of LinkedHashMap that includes a locked
property. This class
* can be used to safely expose Catalina internal parameter map objects to user classes without having to clone them in
* order to avoid modifications. When first created, a ParameterMap
instance is not locked.
*
* @author Craig R. McClanahan
* @version $Revision: 1.4 $ $Date: 2007/06/18 17:41:35 $
*/
public final class ParameterMap extends LinkedHashMap {
// ----------------------------------------------------------- Constructors
/**
* Construct a new, empty map with the default initial capacity and load factor.
*/
public ParameterMap() {
super();
}
/**
* Construct a new, empty map with the specified initial capacity and default load factor.
*
* @param initialCapacity The initial capacity of this map
*/
public ParameterMap(int initialCapacity) {
super(initialCapacity);
}
/**
* Construct a new, empty map with the specified initial capacity and load factor.
*
* @param initialCapacity The initial capacity of this map
* @param loadFactor The load factor of this map
*/
public ParameterMap(int initialCapacity, float loadFactor) {
super(initialCapacity, loadFactor);
}
/**
* Construct a new map with the same mappings as the given map.
*
* @param map Map whose contents are duplicated in the new map
*/
public ParameterMap(Map map) {
super(map);
}
// ------------------------------------------------------------- Properties
/**
* The current lock state of this parameter map.
*/
private boolean locked = false;
/**
* Return the locked state of this parameter map.
*/
public boolean isLocked() {
return this.locked;
}
/**
* Set the locked state of this parameter map.
*
* @param locked The new locked state
*/
public void setLocked(boolean locked) {
this.locked = locked;
}
// --------------------------------------------------------- Public Methods
/**
* Remove all mappings from this map.
*
* @exception IllegalStateException if this map is currently locked
*/
@Override
public void clear() {
if (locked) {
throw new IllegalStateException("Illegal attempt to modify ParameterMap while locked.");
}
super.clear();
}
/**
* Associate the specified value with the specified key in this map. If the map previously contained a mapping for this
* key, the old value is replaced.
*
* @param key Key with which the specified value is to be associated
* @param value Value to be associated with the specified key
*
* @return The previous value associated with the specified key, or null
if there was no mapping for key
*
* @exception IllegalStateException if this map is currently locked
*/
@Override
public String[] put(String key, String[] value) {
if (locked) {
throw new IllegalStateException("Illegal attempt to modify ParameterMap while locked.");
}
return super.put(key, value);
}
/**
* Copy all of the mappings from the specified map to this one. These mappings replace any mappings that this map had
* for any of the keys currently in the specified Map.
*
* @param map Mappings to be stored into this map
*
* @exception IllegalStateException if this map is currently locked
*/
@Override
@SuppressWarnings({ "unchecked" })
public void putAll(Map map) {
if (locked) {
throw new IllegalStateException("Illegal attempt to modify ParameterMap while locked.");
}
super.putAll(map);
}
/**
* Remove the mapping for this key from the map if present.
*
* @param key Key whose mapping is to be removed from the map
*
* @return The previous value associated with the specified key, or null
if there was no mapping for that
* key
*
* @exception IllegalStateException if this map is currently locked
*/
public Object remove(String key) {
if (locked) {
throw new IllegalStateException("Illegal attempt to modify ParameterMap while locked.");
}
return super.remove(key);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy