You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by ap...@apache.org on 2010/04/18 22:18:26 UTC
svn commit: r935400 [1/2] - in /tiles/sandbox/trunk/tiles-request:
tiles-request-api/src/main/java/org/apache/tiles/request/collection/
tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/
tiles-request-api/src/main/java/org/a...
Author: apetrelli
Date: Sun Apr 18 20:18:25 2010
New Revision: 935400
URL: http://svn.apache.org/viewvc?rev=935400&view=rev
Log:
TILESSB-31
Refactored Servlet request support.
Added:
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/AbstractEnumerationMap.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/AddableParameterMap.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/HeaderValuesMap.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/KeySet.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ParameterMap.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/RemovableKeySet.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ScopeMap.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/AttributeExtractor.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasAddableKeys.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasKeys.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasRemovableKeys.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HeaderExtractor.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/RequestUtil.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ApplicationScopeExtractor.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/InitParameterExtractor.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ParameterExtractor.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/RequestScopeExtractor.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ServletHeaderExtractor.java (with props)
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/SessionScopeExtractor.java (with props)
Removed:
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletApplicationScopeMap.java
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletHeaderMap.java
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletHeaderValuesMap.java
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletInitParamMap.java
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletParamMap.java
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletParamValuesMap.java
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletRequestScopeMap.java
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletSessionScopeMap.java
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/test/java/org/apache/tiles/request/servlet/ServletSessionScopeMapTest.java
Modified:
tiles/sandbox/trunk/tiles-request/tiles-request-servlet-wildcard/src/main/java/org/apache/tiles/request/servlet/wildcard/WildcardServletApplicationContext.java
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletApplicationContext.java
tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletRequest.java
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/AbstractEnumerationMap.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/AbstractEnumerationMap.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/AbstractEnumerationMap.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/AbstractEnumerationMap.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,45 @@
+package org.apache.tiles.request.collection;
+
+import java.util.Enumeration;
+import java.util.Map;
+
+import org.apache.tiles.request.collection.extractor.HasKeys;
+
+public abstract class AbstractEnumerationMap<V> implements Map<String, V>{
+
+ protected HasKeys<V> request;
+
+ public AbstractEnumerationMap(HasKeys<V> request) {
+ this.request = request;
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean equals(Object o) {
+ HasKeys<V> otherRequest = ((AbstractEnumerationMap<V>) o).request;
+ boolean retValue = true;
+ for (Enumeration<String> attribs = request.getKeys(); attribs
+ .hasMoreElements()
+ && retValue;) {
+ String parameterName = attribs.nextElement();
+ retValue = request.getValue(parameterName).equals(
+ otherRequest.getValue(parameterName));
+ }
+
+ return retValue;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public int hashCode() {
+ int retValue = 0;
+ for (Enumeration<String> attribs = request.getKeys(); attribs
+ .hasMoreElements();) {
+ String parameterName = attribs.nextElement();
+ V value = request.getValue(parameterName);
+ retValue += parameterName.hashCode() ^ (value == null ? 0 : value.hashCode());
+ }
+ return retValue;
+ }
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/AbstractEnumerationMap.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/AbstractEnumerationMap.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/AddableParameterMap.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/AddableParameterMap.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/AddableParameterMap.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/AddableParameterMap.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,110 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.tiles.request.collection;
+
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.tiles.request.collection.extractor.HeaderExtractor;
+
+/**
+ * <p>Private implementation of <code>Map</code> for servlet request
+ * name-value.</p>
+ *
+ * @version $Rev$ $Date$
+ */
+
+public class AddableParameterMap extends ParameterMap {
+
+ private HeaderExtractor request;
+
+ /**
+ * Constructor.
+ *
+ * @param request The request object to use.
+ * @param response The response object to use.
+ * @since 2.2.0
+ */
+ public AddableParameterMap(HeaderExtractor request) {
+ super(request);
+ this.request = request;
+ }
+
+ /** {@inheritDoc} */
+ public Set<Map.Entry<String, String>> entrySet() {
+ return new HeaderEntrySet();
+ }
+
+
+ /** {@inheritDoc} */
+ @Override
+ public boolean equals(Object o) {
+ HeaderExtractor otherRequest = ((AddableParameterMap) o).request;
+ boolean retValue = true;
+ synchronized (request) {
+ for (Enumeration<String> attribs = request.getKeys(); attribs
+ .hasMoreElements()
+ && retValue;) {
+ String parameterName = attribs.nextElement();
+ retValue = request.getValue(parameterName).equals(
+ otherRequest.getValue(parameterName));
+ }
+ }
+
+ return retValue;
+ }
+
+ /** {@inheritDoc} */
+ public String put(String key, String value) {
+ request.setValue(key, value);
+ return value;
+ }
+
+
+ /** {@inheritDoc} */
+ public void putAll(Map<? extends String, ? extends String> map) {
+ for (Map.Entry<? extends String, ? extends String> entry : map
+ .entrySet()) {
+ request.setValue(entry.getKey(), entry.getValue());
+ }
+ }
+
+
+ private class HeaderEntrySet extends ParameterMap.HeaderEntrySet {
+
+ @Override
+ public boolean add(java.util.Map.Entry<String, String> e) {
+ request.setValue(e.getKey(), e.getValue());
+ return true;
+ }
+
+ @Override
+ public boolean addAll(
+ Collection<? extends java.util.Map.Entry<String, String>> c) {
+ for (Map.Entry<String, String> entry : c) {
+ request.setValue(entry.getKey(), entry.getValue());
+ }
+ return true;
+ }
+ }
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/AddableParameterMap.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/AddableParameterMap.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/HeaderValuesMap.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/HeaderValuesMap.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/HeaderValuesMap.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/HeaderValuesMap.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,463 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.tiles.request.collection;
+
+import static org.apache.tiles.request.util.RequestUtil.*;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.tiles.request.collection.extractor.HeaderExtractor;
+import org.apache.tiles.request.util.MapEntry;
+
+
+/**
+ * <p>Private implementation of <code>Map</code> for servlet request
+ * name-values[].</p>
+ *
+ * @version $Rev$ $Date$
+ */
+
+public class HeaderValuesMap implements Map<String, String[]> {
+
+ private HeaderExtractor request;
+
+ /**
+ * Constructor.
+ *
+ * @param request The request object to use.
+ */
+ public HeaderValuesMap(HeaderExtractor request) {
+ this.request = request;
+ }
+
+
+ /** {@inheritDoc} */
+ public void clear() {
+ throw new UnsupportedOperationException();
+ }
+
+
+ /** {@inheritDoc} */
+ public boolean containsKey(Object key) {
+ return (request.getValue(key(key)) != null);
+ }
+
+
+ /** {@inheritDoc} */
+ public boolean containsValue(Object value) {
+ if (!(value instanceof String[])) {
+ return (false);
+ }
+ String[] test = (String[]) value;
+ Enumeration<String> names = request.getKeys();
+ while (names.hasMoreElements()) {
+ String name = names.nextElement();
+ if (compareHeaders(name, array2set(test))) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ /** {@inheritDoc} */
+ public Set<Map.Entry<String, String[]>> entrySet() {
+ return new HeadersEntrySet();
+ }
+
+
+ /** {@inheritDoc} */
+ @Override
+ public boolean equals(Object o) {
+ HeaderExtractor otherRequest = ((HeaderValuesMap) o).request;
+ boolean retValue = true;
+ for (Enumeration<String> attribs = request.getKeys(); attribs
+ .hasMoreElements()
+ && retValue;) {
+ String parameterName = attribs.nextElement();
+ Set<String> valueSet = enumeration2set(otherRequest.getValues(parameterName));
+ retValue = compareHeaders(parameterName, valueSet);
+ }
+
+ return retValue;
+ }
+
+
+ /** {@inheritDoc} */
+ public String[] get(Object key) {
+ return getHeaderValues(key(key));
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public int hashCode() {
+ int retValue = 0;
+ for (Enumeration<String> attribs = request.getKeys(); attribs
+ .hasMoreElements();) {
+ String parameterName = attribs.nextElement();
+ Enumeration<String> values = request.getValues(parameterName);
+ int valueHash = 0;
+ while (values.hasMoreElements()) {
+ valueHash += values.nextElement().hashCode();
+ }
+ retValue += parameterName.hashCode() ^ valueHash;
+ }
+ return retValue;
+ }
+
+
+ /** {@inheritDoc} */
+ public boolean isEmpty() {
+ return !request.getKeys().hasMoreElements();
+ }
+
+
+ /** {@inheritDoc} */
+ public Set<String> keySet() {
+ return new KeySet(request);
+ }
+
+
+ /** {@inheritDoc} */
+ public String[] put(String key, String[] value) {
+ throw new UnsupportedOperationException();
+ }
+
+
+ /** {@inheritDoc} */
+ public void putAll(Map<? extends String, ? extends String[]> map) {
+ throw new UnsupportedOperationException();
+ }
+
+
+ /** {@inheritDoc} */
+ public String[] remove(Object key) {
+ throw new UnsupportedOperationException();
+ }
+
+
+
+ /** {@inheritDoc} */
+ public int size() {
+ return enumerationSize(request.getKeys());
+ }
+
+
+ /** {@inheritDoc} */
+ public Collection<String[]> values() {
+ return new HeaderValuesCollection();
+ }
+
+ private String[] getHeaderValues(String key) {
+ List<String> list = new ArrayList<String>();
+ Enumeration<String> values = request.getValues(key);
+ while (values.hasMoreElements()) {
+ list.add(values.nextElement());
+ }
+ String[] retValue = list.toArray(new String[list.size()]);
+ return retValue;
+ }
+
+ /**
+ * Converts the content of a string enumeration to an array of strings.
+ *
+ * @param enumeration The enumeration to convert.
+ * @return The corresponding array.
+ */
+ private String[] enumeration2array(Enumeration<String> enumeration) {
+ List<String> list1 = new ArrayList<String>();
+ while (enumeration.hasMoreElements()) {
+ list1.add(enumeration.nextElement());
+ }
+
+ return list1.toArray(new String[list1.size()]);
+ }
+
+ /**
+ * Converts the content of a string enumeration to an array of strings.
+ *
+ * @param enumeration The enumeration to convert.
+ * @return The corresponding array.
+ */
+ private Set<String> enumeration2set(Enumeration<String> enumeration) {
+ Set<String> retValue = new HashSet<String>();
+ while (enumeration.hasMoreElements()) {
+ retValue.add(enumeration.nextElement());
+ }
+ return retValue;
+ }
+
+ private Set<String> array2set(String[] valueArray) {
+ Set<String> values = new HashSet<String>();
+ for (int i = 0; i < valueArray.length; i++) {
+ values.add(valueArray[i]);
+ }
+ return values;
+ }
+
+ private boolean compareHeaders(String name, Set<String> testSet) {
+ Enumeration<String> values = request.getValues(name);
+ boolean matched = true;
+ while (values.hasMoreElements() && matched) {
+ String currentValue = values.nextElement();
+ matched = testSet.remove(currentValue);
+ }
+ matched = matched && testSet.isEmpty();
+ return matched;
+ }
+
+ private class HeadersEntrySet implements Set<Map.Entry<String, String[]>> {
+
+ @Override
+ public boolean add(java.util.Map.Entry<String, String[]> e) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean addAll(
+ Collection<? extends java.util.Map.Entry<String, String[]>> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void clear() {
+ throw new UnsupportedOperationException();
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean contains(Object o) {
+ return containsEntry((java.util.Map.Entry<String, String[]>) o);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ Collection<Map.Entry<String, String[]>> realCollection =
+ (Collection<Map.Entry<String, String[]>>) c;
+ for (Map.Entry<String, String[]> entry : realCollection) {
+ if (!containsEntry(entry)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return HeaderValuesMap.this.isEmpty();
+ }
+
+ @Override
+ public Iterator<java.util.Map.Entry<String, String[]>> iterator() {
+ return new HeadersEntrySetIterator();
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int size() {
+ return HeaderValuesMap.this.size();
+ }
+
+ @Override
+ public Object[] toArray() {
+ return toList().toArray();
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return toList().toArray(a);
+ }
+
+ private boolean containsEntry(Map.Entry<String, String[]> entry) {
+ Enumeration<String> entryValues = request.getValues(key(entry.getKey()));
+ String[] valueArray = entry.getValue();
+ Set<String> values = array2set(valueArray);
+ while (entryValues.hasMoreElements()) {
+ if (!values.remove(entryValues.nextElement())) {
+ return false;
+ }
+ }
+ return values.isEmpty();
+ }
+
+ private List<Map.Entry<String, String[]>> toList() {
+ List<Map.Entry<String, String[]>> entries = new ArrayList<Map.Entry<String,String[]>>();
+ Enumeration<String> names = request.getKeys();
+ while (names.hasMoreElements()) {
+ entries.add(extractNextEntry(names));
+ }
+ return entries;
+ }
+
+ private MapEntry<String, String[]> extractNextEntry(
+ Enumeration<String> names) {
+ String name = names.nextElement();
+ return new MapEntry<String, String[]>(name, getHeaderValues(name), false);
+ }
+
+ private class HeadersEntrySetIterator implements Iterator<Map.Entry<String, String[]>> {
+
+ private Enumeration<String> namesEnumeration = request.getKeys();
+
+ @Override
+ public boolean hasNext() {
+ return namesEnumeration.hasMoreElements();
+ }
+
+ @Override
+ public Map.Entry<String, String[]> next() {
+ return extractNextEntry(namesEnumeration);
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+
+ }
+ }
+
+ private class HeaderValuesCollection implements Collection<String[]> {
+
+ @Override
+ public boolean add(String[] e) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends String[]> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void clear() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return containsValue(o);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ Collection<String[]> realCollection = (Collection<String[]>) c;
+ for (String[] value : realCollection) {
+ if (!containsValue(value)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return HeaderValuesMap.this.isEmpty();
+ }
+
+ @Override
+ public Iterator<String[]> iterator() {
+ return new HeaderValuesCollectionIterator();
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int size() {
+ return HeaderValuesMap.this.size();
+ }
+
+ @Override
+ public Object[] toArray() {
+ return toList().toArray();
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return toList().toArray(a);
+ }
+
+ private List<String[]> toList() {
+ List<String[]> entries = new ArrayList<String[]>();
+ Enumeration<String> names = request.getKeys();
+ while (names.hasMoreElements()) {
+ entries.add(enumeration2array(request.getValues(names.nextElement())));
+ }
+ return entries;
+ }
+
+ private class HeaderValuesCollectionIterator implements Iterator<String[]> {
+
+ private Enumeration<String> namesEnumeration = request.getKeys();
+
+ @Override
+ public boolean hasNext() {
+ return namesEnumeration.hasMoreElements();
+ }
+
+ @Override
+ public String[] next() {
+ return enumeration2array(request.getValues(namesEnumeration.nextElement()));
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+ }
+ }
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/HeaderValuesMap.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/HeaderValuesMap.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/KeySet.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/KeySet.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/KeySet.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/KeySet.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,122 @@
+package org.apache.tiles.request.collection;
+
+import static org.apache.tiles.request.util.RequestUtil.*;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.tiles.request.collection.extractor.HasKeys;
+
+public class KeySet implements Set<String> {
+
+ private HasKeys<?> request;
+
+ public KeySet(HasKeys<?> request) {
+ this.request = request;
+ }
+
+ @Override
+ public boolean add(String e) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends String> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void clear() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return request.getValue(key(o)) != null;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ Collection<String> realCollection = (Collection<String>) c;
+ for (String key : realCollection) {
+ if (request.getValue(key(key)) == null) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return !request.getKeys().hasMoreElements();
+ }
+
+ @Override
+ public Iterator<String> iterator() {
+ return new ServletHeaderKeySetIterator();
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int size() {
+ return enumerationSize(request.getKeys());
+ }
+
+ @Override
+ public Object[] toArray() {
+ return toList().toArray();
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return toList().toArray(a);
+ }
+
+ private List<String> toList() {
+ List<String> entries = new ArrayList<String>();
+ Enumeration<String> names = request.getKeys();
+ while (names.hasMoreElements()) {
+ entries.add(names.nextElement());
+ }
+ return entries;
+ }
+
+ private class ServletHeaderKeySetIterator implements Iterator<String> {
+
+ private Enumeration<String> namesEnumeration = request.getKeys();
+
+ @Override
+ public boolean hasNext() {
+ return namesEnumeration.hasMoreElements();
+ }
+
+ @Override
+ public String next() {
+ return namesEnumeration.nextElement();
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+ }
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/KeySet.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/KeySet.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ParameterMap.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ParameterMap.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ParameterMap.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ParameterMap.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,358 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.tiles.request.collection;
+
+import static org.apache.tiles.request.util.RequestUtil.*;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.tiles.request.collection.extractor.HasKeys;
+import org.apache.tiles.request.util.MapEntry;
+
+/**
+ * <p>Private implementation of <code>Map</code> for servlet request
+ * name-value.</p>
+ *
+ * @version $Rev$ $Date$
+ */
+
+public class ParameterMap extends AbstractEnumerationMap<String> {
+
+ /**
+ * Constructor.
+ *
+ * @param request The request object to use.
+ * @param response The response object to use.
+ * @since 2.2.0
+ */
+ public ParameterMap(HasKeys<String> request) {
+ super(request);
+ }
+
+ /** {@inheritDoc} */
+ public void clear() {
+ throw new UnsupportedOperationException();
+ }
+
+
+ /** {@inheritDoc} */
+ public boolean containsKey(Object key) {
+ return (request.getValue(key(key)) != null);
+ }
+
+
+ /** {@inheritDoc} */
+ public boolean containsValue(Object value) {
+ Iterator<String> values = values().iterator();
+ while (values.hasNext()) {
+ if (value.equals(values.next())) {
+ return (true);
+ }
+ }
+ return (false);
+ }
+
+
+ /** {@inheritDoc} */
+ public Set<Map.Entry<String, String>> entrySet() {
+ return new HeaderEntrySet();
+ }
+
+
+ /** {@inheritDoc} */
+ public String get(Object key) {
+ return (request.getValue(key(key)));
+ }
+
+
+ /** {@inheritDoc} */
+ public boolean isEmpty() {
+ return !request.getKeys().hasMoreElements();
+ }
+
+
+ /** {@inheritDoc} */
+ public Set<String> keySet() {
+ return new KeySet(request);
+ }
+
+
+ /** {@inheritDoc} */
+ public String put(String key, String value) {
+ throw new UnsupportedOperationException();
+ }
+
+
+ /** {@inheritDoc} */
+ public void putAll(Map<? extends String, ? extends String> map) {
+ throw new UnsupportedOperationException();
+ }
+
+
+ /** {@inheritDoc} */
+ public String remove(Object key) {
+ throw new UnsupportedOperationException();
+ }
+
+
+ /** {@inheritDoc} */
+ public int size() {
+ return enumerationSize(request.getKeys());
+ }
+
+
+ /** {@inheritDoc} */
+ public Collection<String> values() {
+ return new HeaderValuesCollection();
+ }
+
+
+ class HeaderEntrySet implements Set<Map.Entry<String, String>> {
+
+ @Override
+ public boolean add(java.util.Map.Entry<String, String> e) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean addAll(
+ Collection<? extends java.util.Map.Entry<String, String>> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void clear() {
+ throw new UnsupportedOperationException();
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean contains(Object o) {
+ return containsEntry((java.util.Map.Entry<String, String>) o);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ Collection<Map.Entry<String, String>> realCollection =
+ (Collection<Map.Entry<String, String>>) c;
+ for (Map.Entry<String, String> entry : realCollection) {
+ if (!containsEntry(entry)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return ParameterMap.this.isEmpty();
+ }
+
+ @Override
+ public Iterator<java.util.Map.Entry<String, String>> iterator() {
+ return new HeaderEntrySetIterator();
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int size() {
+ return ParameterMap.this.size();
+ }
+
+ @Override
+ public Object[] toArray() {
+ return toList().toArray();
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return toList().toArray(a);
+ }
+
+ private boolean containsEntry(Map.Entry<String, String> entry) {
+ String storedValue = request.getValue(key(entry.getKey()));
+ return storedValue != null && storedValue.equals(entry.getValue());
+ }
+
+ private List<Map.Entry<String, String>> toList() {
+ List<Map.Entry<String, String>> entries = new ArrayList<Map.Entry<String,String>>();
+ Enumeration<String> names = request.getKeys();
+ while (names.hasMoreElements()) {
+ entries.add(extractNextEntry(names));
+ }
+ return entries;
+ }
+
+ private MapEntry<String, String> extractNextEntry(
+ Enumeration<String> names) {
+ String name = names.nextElement();
+ return new MapEntry<String, String>(name, request.getValue(name),
+ false);
+ }
+
+ private class HeaderEntrySetIterator implements Iterator<Map.Entry<String, String>> {
+
+ private Enumeration<String> namesEnumeration = request.getKeys();
+
+ @Override
+ public boolean hasNext() {
+ return namesEnumeration.hasMoreElements();
+ }
+
+ @Override
+ public java.util.Map.Entry<String, String> next() {
+ return extractNextEntry(namesEnumeration);
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+
+ }
+ }
+
+ private class HeaderValuesCollection implements Collection<String> {
+
+ @Override
+ public boolean add(String e) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends String> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void clear() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return containsValue(o);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ Collection<String> realCollection = (Collection<String>) c;
+ for (String value : realCollection) {
+ if (!containsValue(value)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return ParameterMap.this.isEmpty();
+ }
+
+ @Override
+ public Iterator<String> iterator() {
+ return new HeaderValuesCollectionIterator();
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int size() {
+ return ParameterMap.this.size();
+ }
+
+ @Override
+ public Object[] toArray() {
+ return toList().toArray();
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return toList().toArray(a);
+ }
+
+ private List<String> toList() {
+ List<String> entries = new ArrayList<String>();
+ Enumeration<String> names = request.getKeys();
+ while (names.hasMoreElements()) {
+ entries.add(request.getValue(names.nextElement()));
+ }
+ return entries;
+ }
+
+
+ private class HeaderValuesCollectionIterator implements Iterator<String> {
+
+ private Enumeration<String> namesEnumeration = request.getKeys();
+
+ @Override
+ public boolean hasNext() {
+ return namesEnumeration.hasMoreElements();
+ }
+
+ @Override
+ public String next() {
+ return request.getValue(namesEnumeration.nextElement());
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+ }
+ }
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ParameterMap.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ParameterMap.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/RemovableKeySet.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/RemovableKeySet.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/RemovableKeySet.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/RemovableKeySet.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,52 @@
+package org.apache.tiles.request.collection;
+
+import static org.apache.tiles.request.util.RequestUtil.*;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.apache.tiles.request.collection.extractor.HasRemovableKeys;
+
+public class RemovableKeySet extends KeySet {
+
+ private HasRemovableKeys<?> request;
+
+ public RemovableKeySet(HasRemovableKeys<?> request) {
+ super(request);
+ this.request = request;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ String skey = key(o);
+ Object previous = request.getValue(skey);
+ if (previous != null) {
+ request.removeValue(skey);
+ return true;
+ }
+ return false;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ Collection<Map.Entry<String, Object>> realCollection = (Collection<java.util.Map.Entry<String, Object>>) c;
+ boolean retValue = false;
+ for (Map.Entry<String, Object> entry : realCollection) {
+ retValue |= remove(entry);
+ }
+ return retValue;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ Collection<String> realCollection = (Collection<String>) c;
+ boolean retValue = false;
+ for (String key : realCollection) {
+ retValue |= remove(key);
+ }
+ return retValue;
+ }
+
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/RemovableKeySet.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/RemovableKeySet.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ScopeMap.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ScopeMap.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ScopeMap.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ScopeMap.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,405 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.tiles.request.collection;
+
+import static org.apache.tiles.request.util.RequestUtil.*;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.tiles.request.collection.extractor.AttributeExtractor;
+import org.apache.tiles.request.util.MapEntry;
+
+/**
+ * <p>Private implementation of <code>Map</code> for servlet context
+ * attributes.</p>
+ *
+ * @version $Rev$ $Date$
+ */
+
+public class ScopeMap extends AbstractEnumerationMap<Object> {
+
+ private AttributeExtractor context;
+
+ /**
+ * Constructor.
+ *
+ * @param context The servlet context to use.
+ */
+ public ScopeMap(AttributeExtractor context) {
+ super(context);
+ this.context = context;
+ }
+
+
+ /** {@inheritDoc} */
+ public void clear() {
+ Enumeration<String> keys = context.getKeys();
+ while (keys.hasMoreElements()) {
+ context.removeValue(keys.nextElement());
+ }
+ }
+
+
+ /** {@inheritDoc} */
+ public boolean containsKey(Object key) {
+ return context.getValue(key(key)) != null;
+ }
+
+
+ /** {@inheritDoc} */
+ public boolean containsValue(Object value) {
+ if (value == null) {
+ return (false);
+ }
+ Enumeration<String> keys = context.getKeys();
+ while (keys.hasMoreElements()) {
+ Object next = context.getValue(keys.nextElement());
+ if (next == value) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ /** {@inheritDoc} */
+ public Set<Map.Entry<String, Object>> entrySet() {
+ return new ServletApplicationScopeEntrySet();
+ }
+
+
+
+ /** {@inheritDoc} */
+ public Object get(Object key) {
+ return context.getValue(key(key));
+ }
+
+ /** {@inheritDoc} */
+ public boolean isEmpty() {
+ return !context.getKeys().hasMoreElements();
+ }
+
+
+ /** {@inheritDoc} */
+ public Set<String> keySet() {
+ return new RemovableKeySet(context);
+ }
+
+
+ /** {@inheritDoc} */
+ public Object put(String key, Object value) {
+ if (value == null) {
+ return remove(key);
+ }
+ String skey = key(key);
+ Object previous = context.getValue(skey);
+ context.setValue(skey, value);
+ return previous;
+ }
+
+
+ /** {@inheritDoc} */
+ public void putAll(Map<? extends String, ? extends Object> map) {
+ Iterator<? extends String> keys = map.keySet().iterator();
+ while (keys.hasNext()) {
+ String key = keys.next();
+ context.setValue(key, map.get(key));
+ }
+ }
+
+
+ /** {@inheritDoc} */
+ public Object remove(Object key) {
+ String skey = key(key);
+ Object previous = context.getValue(skey);
+ context.removeValue(skey);
+ return (previous);
+ }
+
+
+ /** {@inheritDoc} */
+ public int size() {
+ return enumerationSize(context.getKeys());
+ }
+
+
+ /** {@inheritDoc} */
+ public Collection<Object> values() {
+ return new ServletApplicationScopeValuesCollection();
+ }
+
+ private class ServletApplicationScopeEntrySet implements Set<Map.Entry<String, Object>> {
+
+ @Override
+ public boolean add(java.util.Map.Entry<String, Object> e) {
+ Object oldValue = get(e.getKey());
+ put(e.getKey(), e.getValue());
+ return oldValue == null || !oldValue.equals(e.getValue());
+ }
+
+ @Override
+ public boolean addAll(
+ Collection<? extends java.util.Map.Entry<String, Object>> c) {
+ boolean retValue = false;
+ for (Map.Entry<String, Object> entry : c) {
+ retValue |= add(entry);
+ }
+ return retValue;
+ }
+
+ @Override
+ public void clear() {
+ ScopeMap.this.clear();
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean contains(Object o) {
+ return containsEntry((java.util.Map.Entry<String, Object>) o);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ Collection<Map.Entry<String, Object>> realCollection =
+ (Collection<Map.Entry<String, Object>>) c;
+ for (Map.Entry<String, Object> entry : realCollection) {
+ if (!containsEntry(entry)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return ScopeMap.this.isEmpty();
+ }
+
+ @Override
+ public Iterator<java.util.Map.Entry<String, Object>> iterator() {
+ return new ServletApplicationScopeEntrySetIterator();
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean remove(Object o) {
+ Map.Entry<String, Object> entry = (java.util.Map.Entry<String, Object>) o;
+ Object currentValue = get(entry.getKey());
+ if (currentValue != null && currentValue.equals(entry.getValue())) {
+ context.removeValue(entry.getKey());
+ return true;
+ }
+ return false;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ Collection<Map.Entry<String, Object>> realCollection = (Collection<java.util.Map.Entry<String, Object>>) c;
+ boolean retValue = false;
+ for (Map.Entry<String, Object> entry : realCollection) {
+ retValue |= remove(entry);
+ }
+ return retValue;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ Collection<Map.Entry<String, Object>> realCollection = (Collection<java.util.Map.Entry<String, Object>>) c;
+ boolean retValue = false;
+ for (Map.Entry<String, Object> entry : realCollection) {
+ if (containsEntry(entry)) {
+ retValue |= remove(entry);
+ }
+ }
+ return retValue;
+ }
+
+ @Override
+ public int size() {
+ return ScopeMap.this.size();
+ }
+
+ @Override
+ public Object[] toArray() {
+ return toList().toArray();
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return toList().toArray(a);
+ }
+
+ private boolean containsEntry(Map.Entry<String, Object> entry) {
+ Object storedValue = context.getValue(key(entry.getKey()));
+ return storedValue != null && storedValue.equals(entry.getValue());
+ }
+
+ private List<Map.Entry<String, Object>> toList() {
+ List<Map.Entry<String, Object>> entries = new ArrayList<Map.Entry<String,Object>>();
+ Enumeration<String> names = context.getKeys();
+ while (names.hasMoreElements()) {
+ entries.add(extractNextEntry(names));
+ }
+ return entries;
+ }
+
+ private MapEntry<String, Object> extractNextEntry(
+ Enumeration<String> names) {
+ String name = names.nextElement();
+ return new MapEntry<String, Object>(name, context.getValue(name),
+ false);
+ }
+
+ private class ServletApplicationScopeEntrySetIterator implements Iterator<Map.Entry<String, Object>> {
+
+ private Enumeration<String> namesEnumeration = context.getKeys();
+
+ @Override
+ public boolean hasNext() {
+ return namesEnumeration.hasMoreElements();
+ }
+
+ @Override
+ public java.util.Map.Entry<String, Object> next() {
+ return extractNextEntry(namesEnumeration);
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+
+ }
+ }
+
+ private class ServletApplicationScopeValuesCollection implements Collection<Object> {
+
+ @Override
+ public boolean add(Object e) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends Object> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void clear() {
+ ScopeMap.this.clear();
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return containsValue(o);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ Collection<String> realCollection = (Collection<String>) c;
+ for (String value : realCollection) {
+ if (!containsValue(value)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return ScopeMap.this.isEmpty();
+ }
+
+ @Override
+ public Iterator<Object> iterator() {
+ return new ServletApplicationScopeValuesCollectionIterator();
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int size() {
+ return ScopeMap.this.size();
+ }
+
+ @Override
+ public Object[] toArray() {
+ return toList().toArray();
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return toList().toArray(a);
+ }
+
+ private List<Object> toList() {
+ List<Object> entries = new ArrayList<Object>();
+ Enumeration<String> names = context.getKeys();
+ while (names.hasMoreElements()) {
+ entries.add(context.getValue(names.nextElement()));
+ }
+ return entries;
+ }
+
+ private class ServletApplicationScopeValuesCollectionIterator implements Iterator<Object> {
+
+ private Enumeration<String> namesEnumeration = context.getKeys();
+
+ @Override
+ public boolean hasNext() {
+ return namesEnumeration.hasMoreElements();
+ }
+
+ @Override
+ public Object next() {
+ return context.getValue(namesEnumeration.nextElement());
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+ }
+ }
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ScopeMap.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ScopeMap.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/AttributeExtractor.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/AttributeExtractor.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/AttributeExtractor.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/AttributeExtractor.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,4 @@
+package org.apache.tiles.request.collection.extractor;
+
+public interface AttributeExtractor extends HasRemovableKeys<Object>, HasAddableKeys<Object> {
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/AttributeExtractor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/AttributeExtractor.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasAddableKeys.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasAddableKeys.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasAddableKeys.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasAddableKeys.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,5 @@
+package org.apache.tiles.request.collection.extractor;
+
+public interface HasAddableKeys<V> extends HasKeys<V> {
+ void setValue(String key, V value);
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasAddableKeys.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasAddableKeys.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasKeys.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasKeys.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasKeys.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasKeys.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,10 @@
+package org.apache.tiles.request.collection.extractor;
+
+import java.util.Enumeration;
+
+public interface HasKeys<V> {
+
+ Enumeration<String> getKeys();
+
+ V getValue(String key);
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasKeys.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasKeys.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasRemovableKeys.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasRemovableKeys.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasRemovableKeys.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasRemovableKeys.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,5 @@
+package org.apache.tiles.request.collection.extractor;
+
+public interface HasRemovableKeys<V> extends HasKeys<V> {
+ void removeValue(String name);
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasRemovableKeys.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HasRemovableKeys.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HeaderExtractor.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HeaderExtractor.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HeaderExtractor.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HeaderExtractor.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,8 @@
+package org.apache.tiles.request.collection.extractor;
+
+import java.util.Enumeration;
+
+public interface HeaderExtractor extends HasAddableKeys<String> {
+
+ Enumeration<String> getValues(String key);
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HeaderExtractor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/extractor/HeaderExtractor.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/RequestUtil.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/RequestUtil.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/RequestUtil.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/RequestUtil.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,36 @@
+package org.apache.tiles.request.util;
+
+import java.util.Enumeration;
+
+public class RequestUtil {
+
+ private RequestUtil() {
+
+ }
+
+ /**
+ * Returns the string representation of the key.
+ *
+ * @param key The key.
+ * @return The string representation of the key.
+ * @throws IllegalArgumentException If the key is <code>null</code>.
+ */
+ public static String key(Object key) {
+ if (key == null) {
+ throw new IllegalArgumentException();
+ } else if (key instanceof String) {
+ return ((String) key);
+ } else {
+ return (key.toString());
+ }
+ }
+
+ public static int enumerationSize(Enumeration<?> keys) {
+ int n = 0;
+ while (keys.hasMoreElements()) {
+ keys.nextElement();
+ n++;
+ }
+ return n;
+ }
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/RequestUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/RequestUtil.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: tiles/sandbox/trunk/tiles-request/tiles-request-servlet-wildcard/src/main/java/org/apache/tiles/request/servlet/wildcard/WildcardServletApplicationContext.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-servlet-wildcard/src/main/java/org/apache/tiles/request/servlet/wildcard/WildcardServletApplicationContext.java?rev=935400&r1=935399&r2=935400&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-servlet-wildcard/src/main/java/org/apache/tiles/request/servlet/wildcard/WildcardServletApplicationContext.java (original)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-servlet-wildcard/src/main/java/org/apache/tiles/request/servlet/wildcard/WildcardServletApplicationContext.java Sun Apr 18 20:18:25 2010
@@ -58,14 +58,7 @@ public class WildcardServletApplicationC
*/
public WildcardServletApplicationContext(ServletContext servletContext) {
super(servletContext);
- }
-
- /** {@inheritDoc} */
- @Override
- public void initialize(ServletContext context) {
- super.initialize(context);
-
- resolver = new ServletContextResourcePatternResolver(context);
+ resolver = new ServletContextResourcePatternResolver(servletContext);
}
/** {@inheritDoc} */
Modified: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletApplicationContext.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletApplicationContext.java?rev=935400&r1=935399&r2=935400&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletApplicationContext.java (original)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletApplicationContext.java Sun Apr 18 20:18:25 2010
@@ -29,6 +29,10 @@ import java.util.Set;
import javax.servlet.ServletContext;
import org.apache.tiles.request.ApplicationContext;
+import org.apache.tiles.request.collection.ParameterMap;
+import org.apache.tiles.request.collection.ScopeMap;
+import org.apache.tiles.request.servlet.extractor.ApplicationScopeExtractor;
+import org.apache.tiles.request.servlet.extractor.InitParameterExtractor;
/**
* Servlet-based implementation of the TilesApplicationContext interface.
@@ -63,7 +67,7 @@ public class ServletApplicationContext i
* @param servletContext The servlet context to use.
*/
public ServletApplicationContext(ServletContext servletContext) {
- initialize(servletContext);
+ this.servletContext = servletContext;
}
/** {@inheritDoc} */
@@ -75,7 +79,7 @@ public class ServletApplicationContext i
public Map<String, Object> getApplicationScope() {
if ((applicationScope == null) && (servletContext != null)) {
- applicationScope = new ServletApplicationScopeMap(servletContext);
+ applicationScope = new ScopeMap(new ApplicationScopeExtractor(servletContext));
}
return (applicationScope);
@@ -86,7 +90,7 @@ public class ServletApplicationContext i
public Map<String, String> getInitParams() {
if ((initParam == null) && (servletContext != null)) {
- initParam = new ServletInitParamMap(servletContext);
+ initParam = new ParameterMap(new InitParameterExtractor(servletContext));
}
return (initParam);
@@ -103,35 +107,4 @@ public class ServletApplicationContext i
urls.add(getResource(path));
return urls;
}
-
- /**
- * <p>Initialize (or reinitialize) this {@link ApplicationContext} instance
- * for the specified Servlet API objects.</p>
- *
- * @param context The <code>ServletContext</code> for this web application
- */
- public void initialize(ServletContext context) {
- // Save the specified Servlet API object references
- this.servletContext = context;
-
- // Perform other setup as needed
- }
-
-
- /**
- * <p>Release references to allocated resources acquired in
- * <code>initialize()</code> of via subsequent processing. After this
- * method is called, subsequent calls to any other method than
- * <code>initialize()</code> will return undefined results.</p>
- */
- public void release() {
-
- // Release references to allocated collections
- applicationScope = null;
- initParam = null;
-
- // Release references to Servlet API objects
- servletContext = null;
-
- }
}
Modified: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletRequest.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletRequest.java?rev=935400&r1=935399&r2=935400&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletRequest.java (original)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletRequest.java Sun Apr 18 20:18:25 2010
@@ -34,6 +34,14 @@ import javax.servlet.http.HttpServletRes
import org.apache.tiles.request.AbstractClientRequest;
import org.apache.tiles.request.ApplicationContext;
+import org.apache.tiles.request.collection.AddableParameterMap;
+import org.apache.tiles.request.collection.HeaderValuesMap;
+import org.apache.tiles.request.collection.ParameterMap;
+import org.apache.tiles.request.collection.ScopeMap;
+import org.apache.tiles.request.servlet.extractor.ParameterExtractor;
+import org.apache.tiles.request.servlet.extractor.RequestScopeExtractor;
+import org.apache.tiles.request.servlet.extractor.ServletHeaderExtractor;
+import org.apache.tiles.request.servlet.extractor.SessionScopeExtractor;
/**
* Servlet-based implementation of the TilesApplicationContext interface.
@@ -91,12 +99,6 @@ public class ServletRequest extends Abst
/**
- * <p>The lazily instantiated <code>Map</code> of request
- * parameter name-values.</p>
- */
- private Map<String, String[]> paramValues = null;
-
- /**
* <p>The lazily instantiated <code>Map</code> of request scope
* attributes.</p>
*/
@@ -121,14 +123,15 @@ public class ServletRequest extends Abst
ApplicationContext applicationContext,
HttpServletRequest request, HttpServletResponse response) {
super(applicationContext);
- initialize(request, response);
+ this.request = request;
+ this.response = response;
}
/** {@inheritDoc} */
public Map<String, String> getHeader() {
if ((header == null) && (request != null)) {
- header = new ServletHeaderMap(request, response);
+ header = new AddableParameterMap(new ServletHeaderExtractor(request, response));
}
return (header);
@@ -139,7 +142,7 @@ public class ServletRequest extends Abst
public Map<String, String[]> getHeaderValues() {
if ((headerValues == null) && (request != null)) {
- headerValues = new ServletHeaderValuesMap(request);
+ headerValues = new HeaderValuesMap(new ServletHeaderExtractor(request, response));
}
return (headerValues);
@@ -150,7 +153,7 @@ public class ServletRequest extends Abst
public Map<String, String> getParam() {
if ((param == null) && (request != null)) {
- param = new ServletParamMap(request);
+ param = new ParameterMap(new ParameterExtractor(request));
}
return (param);
@@ -158,13 +161,9 @@ public class ServletRequest extends Abst
/** {@inheritDoc} */
+ @SuppressWarnings("unchecked")
public Map<String, String[]> getParamValues() {
-
- if ((paramValues == null) && (request != null)) {
- paramValues = new ServletParamValuesMap(request);
- }
- return (paramValues);
-
+ return request.getParameterMap();
}
@@ -172,7 +171,7 @@ public class ServletRequest extends Abst
public Map<String, Object> getRequestScope() {
if ((requestScope == null) && (request != null)) {
- requestScope = new ServletRequestScopeMap(request);
+ requestScope = new ScopeMap(new RequestScopeExtractor(request));
}
return (requestScope);
@@ -183,7 +182,7 @@ public class ServletRequest extends Abst
public Map<String, Object> getSessionScope() {
if ((sessionScope == null) && (request != null)) {
- sessionScope = new ServletSessionScopeMap(request);
+ sessionScope = new ScopeMap(new SessionScopeExtractor(request));
}
return (sessionScope);
@@ -299,44 +298,6 @@ public class ServletRequest extends Abst
return response;
}
- /**
- * <p>Initialize (or reinitialize) this {@link ServletRequest} instance
- * for the specified Servlet API objects.</p>
- *
- * @param request The <code>HttpServletRequest</code> for this request
- * @param response The <code>HttpServletResponse</code> for this request
- */
- public void initialize(HttpServletRequest request,
- HttpServletResponse response) {
-
- // Save the specified Servlet API object references
- this.request = request;
- this.response = response;
- // Perform other setup as needed
- }
-
-
- /**
- * <p>Release references to allocated resources acquired in
- * <code>initialize()</code> of via subsequent processing. After this
- * method is called, subsequent calls to any other method than
- * <code>initialize()</code> will return undefined results.</p>
- */
- public void release() {
- // Release references to allocated collections
- header = null;
- headerValues = null;
- param = null;
- paramValues = null;
- requestScope = null;
- sessionScope = null;
-
- // Release references to Servlet API objects
- request = null;
- response = null;
- }
-
-
/** {@inheritDoc} */
public boolean isUserInRole(String role) {
return request.isUserInRole(role);
Added: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ApplicationScopeExtractor.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ApplicationScopeExtractor.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ApplicationScopeExtractor.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ApplicationScopeExtractor.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,37 @@
+package org.apache.tiles.request.servlet.extractor;
+
+import java.util.Enumeration;
+
+import javax.servlet.ServletContext;
+
+import org.apache.tiles.request.collection.extractor.AttributeExtractor;
+
+public class ApplicationScopeExtractor implements AttributeExtractor {
+
+ private ServletContext context;
+
+ public ApplicationScopeExtractor(ServletContext context) {
+ this.context = context;
+ }
+
+ @Override
+ public void setValue(String name, Object value) {
+ context.setAttribute(name, value);
+ }
+
+ @Override
+ public void removeValue(String name) {
+ context.removeAttribute(name);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Enumeration<String> getKeys() {
+ return context.getAttributeNames();
+ }
+
+ @Override
+ public Object getValue(String key) {
+ return context.getAttribute(key);
+ }
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ApplicationScopeExtractor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ApplicationScopeExtractor.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/InitParameterExtractor.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/InitParameterExtractor.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/InitParameterExtractor.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/InitParameterExtractor.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,28 @@
+package org.apache.tiles.request.servlet.extractor;
+
+import java.util.Enumeration;
+
+import javax.servlet.ServletContext;
+
+import org.apache.tiles.request.collection.extractor.HasKeys;
+
+public class InitParameterExtractor implements HasKeys<String> {
+
+ private ServletContext context;
+
+ public InitParameterExtractor(ServletContext context) {
+ this.context = context;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Enumeration<String> getKeys() {
+ return context.getInitParameterNames();
+ }
+
+ @Override
+ public String getValue(String key) {
+ return context.getInitParameter(key);
+ }
+
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/InitParameterExtractor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/InitParameterExtractor.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ParameterExtractor.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ParameterExtractor.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ParameterExtractor.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ParameterExtractor.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,27 @@
+package org.apache.tiles.request.servlet.extractor;
+
+import java.util.Enumeration;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.tiles.request.collection.extractor.HasKeys;
+
+public class ParameterExtractor implements HasKeys<String> {
+
+ private HttpServletRequest request;
+
+ public ParameterExtractor(HttpServletRequest request) {
+ this.request = request;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Enumeration<String> getKeys() {
+ return request.getParameterNames();
+ }
+
+ @Override
+ public String getValue(String key) {
+ return request.getParameter(key);
+ }
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ParameterExtractor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ParameterExtractor.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/RequestScopeExtractor.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/RequestScopeExtractor.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/RequestScopeExtractor.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/RequestScopeExtractor.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,37 @@
+package org.apache.tiles.request.servlet.extractor;
+
+import java.util.Enumeration;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.tiles.request.collection.extractor.AttributeExtractor;
+
+public class RequestScopeExtractor implements AttributeExtractor {
+
+ private HttpServletRequest request;
+
+ public RequestScopeExtractor(HttpServletRequest request) {
+ this.request = request;
+ }
+
+ @Override
+ public void setValue(String name, Object value) {
+ request.setAttribute(name, value);
+ }
+
+ @Override
+ public void removeValue(String name) {
+ request.removeAttribute(name);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Enumeration<String> getKeys() {
+ return request.getAttributeNames();
+ }
+
+ @Override
+ public Object getValue(String key) {
+ return request.getAttribute(key);
+ }
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/RequestScopeExtractor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/RequestScopeExtractor.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ServletHeaderExtractor.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ServletHeaderExtractor.java?rev=935400&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ServletHeaderExtractor.java (added)
+++ tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ServletHeaderExtractor.java Sun Apr 18 20:18:25 2010
@@ -0,0 +1,43 @@
+package org.apache.tiles.request.servlet.extractor;
+
+import java.util.Enumeration;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.tiles.request.collection.extractor.HeaderExtractor;
+
+public class ServletHeaderExtractor implements HeaderExtractor {
+
+ private HttpServletRequest request;
+
+ private HttpServletResponse response;
+
+ public ServletHeaderExtractor(HttpServletRequest request,
+ HttpServletResponse response) {
+ this.request = request;
+ this.response = response;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Enumeration<String> getKeys() {
+ return request.getHeaderNames();
+ }
+
+ @Override
+ public String getValue(String key) {
+ return request.getHeader(key);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Enumeration<String> getValues(String key) {
+ return request.getHeaders(key);
+ }
+
+ @Override
+ public void setValue(String key, String value) {
+ response.setHeader(key, value);
+ }
+}
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ServletHeaderExtractor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/extractor/ServletHeaderExtractor.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL