removed classes which are not used in 3.0 yet
This commit is contained in:
parent
a59d205b36
commit
5c1b0e6caf
|
|
@ -1,354 +0,0 @@
|
|||
/*
|
||||
* Copyright 2002-2009 the original author or authors.
|
||||
*
|
||||
* 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.springframework.util;
|
||||
|
||||
import java.util.AbstractSet;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Base class for map adapters whose keys are String values.
|
||||
* Concrete classes need only implement the abstract hook methods defined by this class.
|
||||
* @author Keith Donald
|
||||
*/
|
||||
public abstract class StringKeyedMapAdapter<V> implements Map<String, V> {
|
||||
|
||||
private Set<String> keySet;
|
||||
|
||||
private Collection<V> values;
|
||||
|
||||
private Set<Map.Entry<String, V>> entrySet;
|
||||
|
||||
|
||||
// implementing Map
|
||||
|
||||
public void clear() {
|
||||
for (Iterator<String> it = getAttributeNames(); it.hasNext();) {
|
||||
removeAttribute((String) it.next());
|
||||
}
|
||||
}
|
||||
|
||||
public boolean containsKey(Object key) {
|
||||
return getAttribute(key.toString()) != null;
|
||||
}
|
||||
|
||||
public boolean containsValue(Object value) {
|
||||
if (value == null) {
|
||||
return false;
|
||||
}
|
||||
for (Iterator<String> it = getAttributeNames(); it.hasNext();) {
|
||||
Object aValue = getAttribute((String) it.next());
|
||||
if (value.equals(aValue)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public Set<Map.Entry<String, V>> entrySet() {
|
||||
return (entrySet != null) ? entrySet : (entrySet = new EntrySet());
|
||||
}
|
||||
|
||||
public V get(Object key) {
|
||||
return getAttribute(key.toString());
|
||||
}
|
||||
|
||||
public boolean isEmpty() {
|
||||
return !getAttributeNames().hasNext();
|
||||
}
|
||||
|
||||
public Set<String> keySet() {
|
||||
return (keySet != null) ? keySet : (keySet = new KeySet());
|
||||
}
|
||||
|
||||
public V put(String key, V value) {
|
||||
String stringKey = String.valueOf(key);
|
||||
V previousValue = getAttribute(stringKey);
|
||||
setAttribute(stringKey, value);
|
||||
return previousValue;
|
||||
}
|
||||
|
||||
public void putAll(Map<? extends String, ? extends V> map) {
|
||||
for (Map.Entry<? extends String, ? extends V> entry : map.entrySet()) {
|
||||
setAttribute(entry.getKey().toString(), entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
public V remove(Object key) {
|
||||
String stringKey = key.toString();
|
||||
V retval = getAttribute(stringKey);
|
||||
removeAttribute(stringKey);
|
||||
return retval;
|
||||
}
|
||||
|
||||
public int size() {
|
||||
int size = 0;
|
||||
for (Iterator<String> it = getAttributeNames(); it.hasNext();) {
|
||||
size++;
|
||||
it.next();
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
public Collection<V> values() {
|
||||
return (values != null) ? values : (values = new Values());
|
||||
}
|
||||
|
||||
|
||||
// hook methods
|
||||
|
||||
/**
|
||||
* Hook method that needs to be implemented by concrete subclasses. Gets a value associated with a key.
|
||||
* @param key the key to lookup
|
||||
* @return the associated value, or null if none
|
||||
*/
|
||||
protected abstract V getAttribute(String key);
|
||||
|
||||
/**
|
||||
* Hook method that needs to be implemented by concrete subclasses. Puts a key-value pair in the map, overwriting
|
||||
* any possible earlier value associated with the same key.
|
||||
* @param key the key to associate the value with
|
||||
* @param value the value to associate with the key
|
||||
*/
|
||||
protected abstract void setAttribute(String key, V value);
|
||||
|
||||
/**
|
||||
* Hook method that needs to be implemented by concrete subclasses. Removes a key and its associated value from the
|
||||
* map.
|
||||
* @param key the key to remove
|
||||
*/
|
||||
protected abstract void removeAttribute(String key);
|
||||
|
||||
/**
|
||||
* Hook method that needs to be implemented by concrete subclasses. Returns an enumeration listing all keys known to
|
||||
* the map.
|
||||
* @return the key enumeration
|
||||
*/
|
||||
protected abstract Iterator<String> getAttributeNames();
|
||||
|
||||
|
||||
// internal helper classes
|
||||
|
||||
private class KeySet extends AbstractSet<String> {
|
||||
|
||||
public boolean isEmpty() {
|
||||
return StringKeyedMapAdapter.this.isEmpty();
|
||||
}
|
||||
|
||||
public int size() {
|
||||
return StringKeyedMapAdapter.this.size();
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
StringKeyedMapAdapter.this.clear();
|
||||
}
|
||||
|
||||
public Iterator<String> iterator() {
|
||||
return new KeyIterator();
|
||||
}
|
||||
|
||||
public boolean contains(Object o) {
|
||||
return StringKeyedMapAdapter.this.containsKey(o);
|
||||
}
|
||||
|
||||
public boolean remove(Object o) {
|
||||
return StringKeyedMapAdapter.this.remove(o) != null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private class KeyIterator implements Iterator<String> {
|
||||
|
||||
private final Iterator<String> it = getAttributeNames();
|
||||
|
||||
private String currentKey;
|
||||
|
||||
public boolean hasNext() {
|
||||
return it.hasNext();
|
||||
}
|
||||
|
||||
public String next() {
|
||||
return currentKey = it.next();
|
||||
}
|
||||
|
||||
public void remove() {
|
||||
if (currentKey == null) {
|
||||
throw new NoSuchElementException("You must call next() at least once");
|
||||
}
|
||||
StringKeyedMapAdapter.this.remove(currentKey);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private class Values extends AbstractSet<V> {
|
||||
|
||||
public boolean isEmpty() {
|
||||
return StringKeyedMapAdapter.this.isEmpty();
|
||||
}
|
||||
|
||||
public int size() {
|
||||
return StringKeyedMapAdapter.this.size();
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
StringKeyedMapAdapter.this.clear();
|
||||
}
|
||||
|
||||
public Iterator<V> iterator() {
|
||||
return new ValuesIterator();
|
||||
}
|
||||
|
||||
public boolean contains(Object o) {
|
||||
return StringKeyedMapAdapter.this.containsValue(o);
|
||||
}
|
||||
|
||||
public boolean remove(Object o) {
|
||||
if (o == null) {
|
||||
return false;
|
||||
}
|
||||
for (Iterator<V> it = iterator(); it.hasNext();) {
|
||||
if (o.equals(it.next())) {
|
||||
it.remove();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private class ValuesIterator implements Iterator<V> {
|
||||
|
||||
private final Iterator<String> it = getAttributeNames();
|
||||
|
||||
private String currentKey;
|
||||
|
||||
public boolean hasNext() {
|
||||
return it.hasNext();
|
||||
}
|
||||
|
||||
public V next() {
|
||||
currentKey = it.next();
|
||||
return StringKeyedMapAdapter.this.get(currentKey);
|
||||
}
|
||||
|
||||
public void remove() {
|
||||
if (currentKey == null) {
|
||||
throw new NoSuchElementException("You must call next() at least once");
|
||||
}
|
||||
StringKeyedMapAdapter.this.remove(currentKey);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private class EntrySet extends AbstractSet<Map.Entry<String, V>> {
|
||||
|
||||
public boolean isEmpty() {
|
||||
return StringKeyedMapAdapter.this.isEmpty();
|
||||
}
|
||||
|
||||
public int size() {
|
||||
return StringKeyedMapAdapter.this.size();
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
StringKeyedMapAdapter.this.clear();
|
||||
}
|
||||
|
||||
public Iterator<Map.Entry<String, V>> iterator() {
|
||||
return new EntryIterator();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public boolean contains(Object o) {
|
||||
if (!(o instanceof Entry)) {
|
||||
return false;
|
||||
}
|
||||
Entry entry = (Entry) o;
|
||||
Object key = entry.getKey();
|
||||
Object value = entry.getValue();
|
||||
if (key == null || value == null) {
|
||||
return false;
|
||||
}
|
||||
return value.equals(StringKeyedMapAdapter.this.get(key));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public boolean remove(Object o) {
|
||||
if (!(o instanceof Entry)) {
|
||||
return false;
|
||||
}
|
||||
Entry entry = (Entry) o;
|
||||
Object key = entry.getKey();
|
||||
Object value = entry.getValue();
|
||||
if (key == null || value == null || !value.equals(StringKeyedMapAdapter.this.get(key))) {
|
||||
return false;
|
||||
}
|
||||
return StringKeyedMapAdapter.this.remove(((Entry) o).getKey()) != null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private class EntryIterator implements Iterator<Map.Entry<String, V>> {
|
||||
|
||||
private final Iterator<String> it = getAttributeNames();
|
||||
|
||||
private String currentKey;
|
||||
|
||||
public boolean hasNext() {
|
||||
return it.hasNext();
|
||||
}
|
||||
|
||||
public Map.Entry<String, V> next() {
|
||||
currentKey = it.next();
|
||||
return new EntrySetEntry(currentKey);
|
||||
}
|
||||
|
||||
public void remove() {
|
||||
if (currentKey == null) {
|
||||
throw new NoSuchElementException("You must call next() at least once");
|
||||
}
|
||||
StringKeyedMapAdapter.this.remove(currentKey);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private class EntrySetEntry implements Entry<String, V> {
|
||||
|
||||
private final String currentKey;
|
||||
|
||||
public EntrySetEntry(String currentKey) {
|
||||
this.currentKey = currentKey;
|
||||
}
|
||||
|
||||
public String getKey() {
|
||||
return currentKey;
|
||||
}
|
||||
|
||||
public V getValue() {
|
||||
return StringKeyedMapAdapter.this.get(currentKey);
|
||||
}
|
||||
|
||||
public V setValue(V value) {
|
||||
return StringKeyedMapAdapter.this.put(currentKey, value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
package org.springframework.util;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Unit tests for {@link org.springframework.binding.collection.StringKeyedMapAdapter}.
|
||||
*/
|
||||
public class StringKeyedMapAdapterTests extends TestCase {
|
||||
|
||||
private Map contents = new HashMap();
|
||||
|
||||
private StringKeyedMapAdapter<Object> map = new StringKeyedMapAdapter<Object>() {
|
||||
|
||||
protected Object getAttribute(String key) {
|
||||
return contents.get(key);
|
||||
}
|
||||
|
||||
protected Iterator<String> getAttributeNames() {
|
||||
return contents.keySet().iterator();
|
||||
}
|
||||
|
||||
protected void removeAttribute(String key) {
|
||||
contents.remove(key);
|
||||
}
|
||||
|
||||
protected void setAttribute(String key, Object value) {
|
||||
contents.put(key, value);
|
||||
}
|
||||
};
|
||||
|
||||
public void testGetPutRemove() {
|
||||
assertTrue(map.size() == 0);
|
||||
assertTrue(map.isEmpty());
|
||||
assertNull(map.get("foo"));
|
||||
assertFalse(map.containsKey("foo"));
|
||||
map.put("foo", "bar");
|
||||
assertTrue(map.size() == 1);
|
||||
assertFalse(map.isEmpty());
|
||||
assertNotNull(map.get("foo"));
|
||||
assertTrue(map.containsKey("foo"));
|
||||
assertTrue(map.containsValue("bar"));
|
||||
assertEquals("bar", map.get("foo"));
|
||||
map.remove("foo");
|
||||
assertTrue(map.size() == 0);
|
||||
assertNull(map.get("foo"));
|
||||
}
|
||||
|
||||
public void testPutAll() {
|
||||
Map all = new HashMap();
|
||||
all.put("foo", "bar");
|
||||
all.put("bar", "baz");
|
||||
map.putAll(all);
|
||||
assertTrue(map.size() == 2);
|
||||
}
|
||||
|
||||
public void testEntrySet() {
|
||||
map.put("foo", "bar");
|
||||
map.put("bar", "baz");
|
||||
Set entrySet = map.entrySet();
|
||||
assertTrue(entrySet.size() == 2);
|
||||
}
|
||||
|
||||
public void testKeySet() {
|
||||
map.put("foo", "bar");
|
||||
map.put("bar", "baz");
|
||||
Set keySet = map.keySet();
|
||||
assertTrue(keySet.size() == 2);
|
||||
}
|
||||
|
||||
public void testValues() {
|
||||
map.put("foo", "bar");
|
||||
map.put("bar", "baz");
|
||||
Collection values = map.values();
|
||||
assertTrue(values.size() == 2);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,83 +0,0 @@
|
|||
/*
|
||||
* Copyright 2004-2009 the original author or authors.
|
||||
*
|
||||
* 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.springframework.web.context.request;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.CompositeIterator;
|
||||
import org.springframework.util.StringKeyedMapAdapter;
|
||||
import org.springframework.web.multipart.MultipartRequest;
|
||||
|
||||
/**
|
||||
* Map backed by a Web request parameter map for accessing request parameters.
|
||||
* Also provides support for multi-part requests, providing transparent access to the request "fileMap" as a request parameter entry.
|
||||
* @author Keith Donald
|
||||
* @since 3.0
|
||||
*/
|
||||
public class NativeWebRequestParameterMap extends StringKeyedMapAdapter<Object> {
|
||||
|
||||
/**
|
||||
* The wrapped native request.
|
||||
*/
|
||||
private NativeWebRequest request;
|
||||
|
||||
/**
|
||||
* Create a new map wrapping the parameters of given request.
|
||||
*/
|
||||
public NativeWebRequestParameterMap(NativeWebRequest request) {
|
||||
Assert.notNull(request, "The NativeWebRequest is required");
|
||||
this.request = request;
|
||||
}
|
||||
|
||||
protected Object getAttribute(String key) {
|
||||
if (request instanceof MultipartRequest) {
|
||||
MultipartRequest multipartRequest = (MultipartRequest) request;
|
||||
Object data = multipartRequest.getFileMap().get(key);
|
||||
if (data != null) {
|
||||
return data;
|
||||
}
|
||||
}
|
||||
String[] parameters = request.getParameterValues(key);
|
||||
if (parameters == null) {
|
||||
return null;
|
||||
} else if (parameters.length == 1) {
|
||||
return parameters[0];
|
||||
} else {
|
||||
return parameters;
|
||||
}
|
||||
}
|
||||
|
||||
protected void setAttribute(String key, Object value) {
|
||||
throw new UnsupportedOperationException("WebRequest parameter maps are immutable");
|
||||
}
|
||||
|
||||
protected void removeAttribute(String key) {
|
||||
throw new UnsupportedOperationException("WebRequest parameter maps are immutable");
|
||||
}
|
||||
|
||||
protected Iterator<String> getAttributeNames() {
|
||||
if (request instanceof MultipartRequest) {
|
||||
MultipartRequest multipartRequest = (MultipartRequest) request;
|
||||
CompositeIterator<String> iterator = new CompositeIterator<String>();
|
||||
iterator.add(multipartRequest.getFileMap().keySet().iterator());
|
||||
iterator.add(request.getParameterNames());
|
||||
return iterator;
|
||||
} else {
|
||||
return request.getParameterNames();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
package org.springframework.web.context.request;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.springframework.mock.web.MockHttpServletRequest;
|
||||
|
||||
/**
|
||||
* Unit test for the {@link HttpServletRequestParameterMap} class.
|
||||
*
|
||||
* @author Ulrik Sandberg
|
||||
*/
|
||||
public class NativeWebRequestParameterMapTests extends TestCase {
|
||||
|
||||
private NativeWebRequestParameterMap tested;
|
||||
|
||||
private MockHttpServletRequest request;
|
||||
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
request = new MockHttpServletRequest();
|
||||
tested = new NativeWebRequestParameterMap(new ServletWebRequest(request));
|
||||
}
|
||||
|
||||
protected void tearDown() throws Exception {
|
||||
super.tearDown();
|
||||
request = null;
|
||||
tested = null;
|
||||
}
|
||||
|
||||
public void testGetAttribute() {
|
||||
request.setParameter("Some param", "Some value");
|
||||
// perform test
|
||||
Object result = tested.getAttribute("Some param");
|
||||
assertEquals("Some value", result);
|
||||
}
|
||||
|
||||
public void testSetAttribute() {
|
||||
// perform test
|
||||
try {
|
||||
tested.setAttribute("Some key", "Some value");
|
||||
fail("UnsupportedOperationException expected");
|
||||
} catch (UnsupportedOperationException expected) {
|
||||
// expected
|
||||
}
|
||||
}
|
||||
|
||||
public void testRemoveAttribute() {
|
||||
request.setParameter("Some param", "Some value");
|
||||
// perform test
|
||||
try {
|
||||
tested.removeAttribute("Some param");
|
||||
fail("UnsupportedOperationException expected");
|
||||
} catch (UnsupportedOperationException expected) {
|
||||
// expected
|
||||
}
|
||||
}
|
||||
|
||||
public void testGetAttributeNames() {
|
||||
request.setParameter("Some param", "Some value");
|
||||
// perform test
|
||||
Iterator names = tested.getAttributeNames();
|
||||
assertNotNull("Null result unexpected", names);
|
||||
assertTrue("More elements", names.hasNext());
|
||||
String name = (String) names.next();
|
||||
assertEquals("Some param", name);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue