You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by do...@apache.org on 2007/10/18 01:19:44 UTC
svn commit: r585752 - in
/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util: UtilHttp.java
collections/FlexibleServletAccessor.java collections/MapStack.java
collections/ResourceBundleMapWrapper.java
Author: doogie
Date: Wed Oct 17 16:19:44 2007
New Revision: 585752
URL: http://svn.apache.org/viewvc?rev=585752&view=rev
Log:
Java 1.5 markup.
Modified:
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilHttp.java
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/FlexibleServletAccessor.java
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/MapStack.java
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/ResourceBundleMapWrapper.java
Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilHttp.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilHttp.java?rev=585752&r1=585751&r2=585752&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilHttp.java (original)
+++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilHttp.java Wed Oct 17 16:19:44 2007
@@ -74,7 +74,7 @@
* Create a combined map from servlet context, session, attributes and parameters
* @return The resulting Map
*/
- public static Map getCombinedMap(HttpServletRequest request) {
+ public static Map<String, Object> getCombinedMap(HttpServletRequest request) {
return getCombinedMap(request, null);
}
@@ -83,8 +83,8 @@
* -- this method will only use the skip names for session and servlet context attributes
* @return The resulting Map
*/
- public static Map getCombinedMap(HttpServletRequest request, Set namesToSkip) {
- FastMap combinedMap = FastMap.newInstance();
+ public static Map<String, Object> getCombinedMap(HttpServletRequest request, Set<String> namesToSkip) {
+ FastMap<String, Object> combinedMap = FastMap.newInstance();
combinedMap.putAll(getServletContextMap(request, namesToSkip)); // bottom level application attributes
combinedMap.putAll(getSessionMap(request, namesToSkip)); // session overrides application
combinedMap.putAll(getParameterMap(request)); // parameters override session
@@ -97,7 +97,7 @@
* Create a map from a HttpServletRequest (parameters) object
* @return The resulting Map
*/
- public static Map getParameterMap(HttpServletRequest request) {
+ public static Map<String, Object> getParameterMap(HttpServletRequest request) {
return getParameterMap(request, null);
}
@@ -105,8 +105,8 @@
* Create a map from a HttpServletRequest (parameters) object
* @return The resulting Map
*/
- public static Map getParameterMap(HttpServletRequest request, Set<String> namesToSkip) {
- Map paramMap = FastMap.newInstance();
+ public static Map<String, Object> getParameterMap(HttpServletRequest request, Set<String> namesToSkip) {
+ Map<String, Object> paramMap = FastMap.newInstance();
// add all the actual HTTP request parameters
Enumeration e = request.getParameterNames();
@@ -146,9 +146,9 @@
String value = element.substring(element.indexOf('=') + 1);
Object curValue = paramMap.get(name);
if (curValue != null) {
- List paramList = null;
+ List<String> paramList = null;
if (curValue instanceof List) {
- paramList = (List) curValue;
+ paramList = UtilGenerics.checkList(curValue);
paramList.add(value);
} else {
String paramString = (String) curValue;
@@ -166,7 +166,7 @@
if (paramMap.size() == 0) {
// nothing found in the parameters; maybe we read the stream instead
- Map multiPartMap = (Map) request.getAttribute("multiPartMap");
+ Map<String, Object> multiPartMap = UtilGenerics.checkMap(request.getAttribute("multiPartMap"));
if (multiPartMap != null && multiPartMap.size() > 0) {
paramMap.putAll(multiPartMap);
}
@@ -184,7 +184,7 @@
* Create a map from a HttpRequest (attributes) object
* @return The resulting Map
*/
- public static Map getAttributeMap(HttpServletRequest request) {
+ public static Map<String, Object> getAttributeMap(HttpServletRequest request) {
return getAttributeMap(request, null);
}
@@ -192,8 +192,8 @@
* Create a map from a HttpRequest (attributes) object
* @return The resulting Map
*/
- public static Map getAttributeMap(HttpServletRequest request, Set<String> namesToSkip) {
- Map attributeMap = FastMap.newInstance();
+ public static Map<String, Object> getAttributeMap(HttpServletRequest request, Set<String> namesToSkip) {
+ Map<String, Object> attributeMap = FastMap.newInstance();
// look at all request attributes
Enumeration requestAttrNames = request.getAttributeNames();
@@ -218,7 +218,7 @@
* Create a map from a HttpSession object
* @return The resulting Map
*/
- public static Map getSessionMap(HttpServletRequest request) {
+ public static Map<String, Object> getSessionMap(HttpServletRequest request) {
return getSessionMap(request, null);
}
@@ -226,8 +226,8 @@
* Create a map from a HttpSession object
* @return The resulting Map
*/
- public static Map getSessionMap(HttpServletRequest request, Set<String> namesToSkip) {
- Map sessionMap = FastMap.newInstance();
+ public static Map<String, Object> getSessionMap(HttpServletRequest request, Set<String> namesToSkip) {
+ Map<String, Object> sessionMap = FastMap.newInstance();
HttpSession session = request.getSession();
// look at all the session attributes
@@ -253,7 +253,7 @@
* Create a map from a ServletContext object
* @return The resulting Map
*/
- public static Map getServletContextMap(HttpServletRequest request) {
+ public static Map<String, Object> getServletContextMap(HttpServletRequest request) {
return getServletContextMap(request, null);
}
@@ -261,8 +261,8 @@
* Create a map from a ServletContext object
* @return The resulting Map
*/
- public static Map getServletContextMap(HttpServletRequest request, Set<String> namesToSkip) {
- Map servletCtxMap = FastMap.newInstance();
+ public static Map<String, Object> getServletContextMap(HttpServletRequest request, Set<String> namesToSkip) {
+ Map<String, Object> servletCtxMap = FastMap.newInstance();
// look at all servlet context attributes
ServletContext servletContext = (ServletContext) request.getAttribute("servletContext");
@@ -284,12 +284,12 @@
return servletCtxMap;
}
- public static Map makeParamMapWithPrefix(HttpServletRequest request, String prefix, String suffix) {
+ public static Map<String, Object> makeParamMapWithPrefix(HttpServletRequest request, String prefix, String suffix) {
return makeParamMapWithPrefix(request, null, prefix, suffix);
}
- public static Map makeParamMapWithPrefix(HttpServletRequest request, Map additionalFields, String prefix, String suffix) {
- Map paramMap = new HashMap();
+ public static Map<String, Object> makeParamMapWithPrefix(HttpServletRequest request, Map<String, Object> additionalFields, String prefix, String suffix) {
+ Map<String, Object> paramMap = new HashMap<String, Object>();
Enumeration parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String parameterName = (String) parameterNames.nextElement();
@@ -308,14 +308,13 @@
}
}
if (additionalFields != null) {
- Iterator i = additionalFields.keySet().iterator();
- while (i.hasNext()) {
- String fieldName = (String) i.next();
+ for (Map.Entry<String, Object> entry: additionalFields.entrySet()) {
+ String fieldName = entry.getKey();
if (fieldName.startsWith(prefix)) {
if (suffix != null && suffix.length() > 0) {
if (fieldName.endsWith(suffix)) {
String key = fieldName.substring(prefix.length(), fieldName.length() - (suffix.length() - 1));
- Object value = additionalFields.get(fieldName);
+ Object value = entry.getValue();
paramMap.put(key, value);
// check for image upload data
@@ -341,7 +340,7 @@
}
} else {
String key = fieldName.substring(prefix.length());
- Object value = additionalFields.get(fieldName);
+ Object value = entry.getValue();
paramMap.put(key, value);
// check for image upload data
@@ -371,12 +370,12 @@
return paramMap;
}
- public static List makeParamListWithSuffix(HttpServletRequest request, String suffix, String prefix) {
+ public static List<Object> makeParamListWithSuffix(HttpServletRequest request, String suffix, String prefix) {
return makeParamListWithSuffix(request, null, suffix, prefix);
}
- public static List makeParamListWithSuffix(HttpServletRequest request, Map additionalFields, String suffix, String prefix) {
- List paramList = new ArrayList();
+ public static List<Object> makeParamListWithSuffix(HttpServletRequest request, Map<String, Object> additionalFields, String suffix, String prefix) {
+ List<Object> paramList = new ArrayList<Object>();
Enumeration parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String parameterName = (String) parameterNames.nextElement();
@@ -393,18 +392,15 @@
}
}
if (additionalFields != null) {
- Iterator i = additionalFields.keySet().iterator();
- while (i.hasNext()) {
- String fieldName = (String) i.next();
+ for (Map.Entry<String, Object> entry: additionalFields.entrySet()) {
+ String fieldName = entry.getKey();
if (fieldName.endsWith(suffix)) {
if (prefix != null && prefix.length() > 0) {
if (fieldName.startsWith(prefix)) {
- Object value = additionalFields.get(fieldName);
- paramList.add(value);
+ paramList.add(entry.getValue());
}
} else {
- Object value = additionalFields.get(fieldName);
- paramList.add(value);
+ paramList.add(entry.getValue());
}
}
}
@@ -629,18 +625,16 @@
}
/** URL Encodes a Map of arguements */
- public static String urlEncodeArgs(Map args) {
+ public static String urlEncodeArgs(Map<String, Object> args) {
return urlEncodeArgs(args, true);
}
/** URL Encodes a Map of arguements */
- public static String urlEncodeArgs(Map args, boolean useExpandedEntites) {
+ public static String urlEncodeArgs(Map<String, Object> args, boolean useExpandedEntites) {
StringBuilder buf = new StringBuilder();
if (args != null) {
- Iterator i = args.entrySet().iterator();
- while (i.hasNext()) {
- Map.Entry entry = (Map.Entry) i.next();
- String name = (String) entry.getKey();
+ for (Map.Entry<String, Object> entry: args.entrySet()) {
+ String name = entry.getKey();
Object value = entry.getValue();
String valueStr = null;
if (name != null && value != null) {
@@ -866,7 +860,7 @@
}
public static String stripViewParamsFromQueryString(String queryString) {
- Set paramNames = new HashSet();
+ Set<String> paramNames = new HashSet<String>();
paramNames.add("VIEW_INDEX");
paramNames.add("VIEW_SIZE");
paramNames.add("viewIndex");
@@ -874,7 +868,7 @@
return stripNamedParamsFromQueryString(queryString, paramNames);
}
- public static String stripNamedParamsFromQueryString(String queryString, Collection paramNames) {
+ public static String stripNamedParamsFromQueryString(String queryString, Collection<String> paramNames) {
String retStr = null;
if (UtilValidate.isNotEmpty(queryString)) {
StringTokenizer queryTokens = new StringTokenizer(queryString, "&");
@@ -908,14 +902,11 @@
* There is an additionaly key "row" for each Map that holds the
* index of the row.
*/
- public static Collection parseMultiFormData(Map parameters) {
- FastMap rows = new FastMap(); // stores the rows keyed by row number
+ public static Collection<Map<String, Object>> parseMultiFormData(Map<String, Object> parameters) {
+ FastMap<Integer, Map<String, Object>> rows = FastMap.newInstance(); // stores the rows keyed by row number
// first loop through all the keys and create a hashmap for each ${ROW_SUBMIT_PREFIX}${N} = Y
- Iterator keys = parameters.keySet().iterator();
- while (keys.hasNext()) {
- String key = (String) keys.next();
-
+ for (String key: parameters.keySet()) {
// skip everything that is not ${ROW_SUBMIT_PREFIX}N
if (key == null || key.length() <= ROW_SUBMIT_PREFIX_LENGTH) continue;
if (key.indexOf(MULTI_ROW_DELIMITER) <= 0) continue;
@@ -924,16 +915,13 @@
// decode the value of N and create a new map for it
Integer n = Integer.decode(key.substring(ROW_SUBMIT_PREFIX_LENGTH, key.length()));
- Map m = new FastMap();
+ Map<String, Object> m = FastMap.newInstance();
m.put("row", n); // special "row" = N tuple
rows.put(n, m); // key it to N
}
// next put all parameters with matching N in the right map
- keys = parameters.keySet().iterator();
- while (keys.hasNext()) {
- String key = (String) keys.next();
-
+ for (String key: parameters.keySet()) {
// skip keys without DELIMITER and skip ROW_SUBMIT_PREFIX
if (key == null) continue;
int index = key.indexOf(MULTI_ROW_DELIMITER);
@@ -942,7 +930,7 @@
// get the map with index N
Integer n = Integer.decode(key.substring(index + MULTI_ROW_DELIMITER_LENGTH, key.length())); // N from ${param}${DELIMITER}${N}
- Map map = (Map) rows.get(n);
+ Map<String, Object> map = rows.get(n);
if (map == null) continue;
// get the key without the <DELIMITER>N suffix and store it and its value
@@ -957,12 +945,9 @@
* Returns a new map containing all the parameters from the input map except for the
* multi form parameters (usually named according to the ${param}_o_N notation).
*/
- public static Map removeMultiFormParameters(Map parameters) {
- FastMap filteredParameters = new FastMap();
- Iterator keys = parameters.keySet().iterator();
- while (keys.hasNext()) {
- String key = (String) keys.next();
-
+ public static <V> Map<String, V> removeMultiFormParameters(Map<String, V> parameters) {
+ FastMap<String, V> filteredParameters = new FastMap<String, V>();
+ for (String key: parameters.keySet()) {
if (key != null && (key.indexOf(MULTI_ROW_DELIMITER) != -1 || key.indexOf("_useRowSubmit") != -1 || key.indexOf("_rowCount") != -1)) {
continue;
}
@@ -1010,7 +995,7 @@
if (compositeType == null || compositeType.length() == 0) return null;
// collect the composite fields into a map
- Map data = FastMap.newInstance();
+ Map<String, String> data = FastMap.newInstance();
for (Enumeration names = request.getParameterNames(); names.hasMoreElements(); ) {
String name = (String) names.nextElement();
if (!name.startsWith(prefix + COMPOSITE_DELIMITER)) continue;
@@ -1019,7 +1004,7 @@
String suffix = name.substring(name.indexOf(COMPOSITE_DELIMITER) + COMPOSITE_DELIMITER_LENGTH);
// and the value of this parameter
- Object value = request.getParameter(name);
+ String value = request.getParameter(name);
// key = suffix, value = parameter data
data.put(suffix, value);
@@ -1028,10 +1013,10 @@
// handle recomposition of data into the compositeType
if ("Timestamp".equals(compositeType)) {
- String date = (String) data.get("date");
- String hour = (String) data.get("hour");
- String minutes = (String) data.get("minutes");
- String ampm = (String) data.get("ampm");
+ String date = data.get("date");
+ String hour = data.get("hour");
+ String minutes = data.get("minutes");
+ String ampm = data.get("ampm");
if (date == null || date.length() < 10) return null;
if (hour == null || hour.length() == 0) return null;
if (minutes == null || minutes.length() == 0) return null;
@@ -1084,12 +1069,10 @@
}
}else{
String initialUserAgent = request.getHeader("User-Agent") != null ? request.getHeader("User-Agent") : "";
- List spiderList = StringUtil.split(UtilProperties.getPropertyValue("url", "link.remove_lsessionid.user_agent_list"), ",");
+ List<String> spiderList = StringUtil.split(UtilProperties.getPropertyValue("url", "link.remove_lsessionid.user_agent_list"), ",");
if (UtilValidate.isNotEmpty(spiderList)) {
- Iterator spiderListIter = spiderList.iterator();
- while (spiderListIter.hasNext()) {
- String spiderNameElement = (String) spiderListIter.next();
- Pattern p = Pattern.compile("^.*" + spiderNameElement + ".*$", Pattern.CASE_INSENSITIVE);
+ for (String spiderNameElement: spiderList) {
+ Pattern p = Pattern.compile("^.*" + spiderNameElement + ".*$", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(initialUserAgent);
if (m.find()){
request.setAttribute("_REQUEST_FROM_SPIDER_", "Y");
Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/FlexibleServletAccessor.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/FlexibleServletAccessor.java?rev=585752&r1=585751&r2=585752&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/FlexibleServletAccessor.java (original)
+++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/FlexibleServletAccessor.java Wed Oct 17 16:19:44 2007
@@ -25,6 +25,7 @@
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpSession;
+import org.ofbiz.base.util.UtilGenerics;
import org.ofbiz.base.util.string.FlexibleStringExpander;
/**
@@ -91,7 +92,7 @@
* @param expandContext the context to use for name expansion
* @return the object corresponding to this getter class
*/
- public Object get(ServletRequest request, Map expandContext) {
+ public Object get(ServletRequest request, Map<String, Object> expandContext) {
AttributeAccessor aa = new AttributeAccessor(name, expandContext, this.attributeName, this.fma, this.needsExpand);
return aa.get(request);
}
@@ -101,7 +102,7 @@
* @param expandContext
* @return
*/
- public Object get(HttpSession session, Map expandContext) {
+ public Object get(HttpSession session, Map<String, Object> expandContext) {
AttributeAccessor aa = new AttributeAccessor(name, expandContext, this.attributeName, this.fma, this.needsExpand);
return aa.get(session);
}
@@ -115,7 +116,7 @@
* @param value
* @param expandContext
*/
- public void put(ServletRequest request, Object value, Map expandContext) {
+ public void put(ServletRequest request, Object value, Map<String, Object> expandContext) {
AttributeAccessor aa = new AttributeAccessor(name, expandContext, this.attributeName, this.fma, this.needsExpand);
aa.put(request, value);
}
@@ -129,7 +130,7 @@
* @param value
* @param expandContext
*/
- public void put(HttpSession session, Object value, Map expandContext) {
+ public void put(HttpSession session, Object value, Map<String, Object> expandContext) {
AttributeAccessor aa = new AttributeAccessor(name, expandContext, this.attributeName, this.fma, this.needsExpand);
aa.put(session, value);
}
@@ -139,7 +140,7 @@
* @param expandContext
* @return
*/
- public Object remove(ServletRequest request, Map expandContext) {
+ public Object remove(ServletRequest request, Map<String, Object> expandContext) {
AttributeAccessor aa = new AttributeAccessor(name, expandContext, this.attributeName, this.fma, this.needsExpand);
return aa.remove(request);
}
@@ -149,7 +150,7 @@
* @param expandContext
* @return
*/
- public Object remove(HttpSession session, Map expandContext) {
+ public Object remove(HttpSession session, Map<String, Object> expandContext) {
AttributeAccessor aa = new AttributeAccessor(name, expandContext, this.attributeName, this.fma, this.needsExpand);
return aa.remove(session);
}
@@ -189,7 +190,7 @@
}
protected static class AttributeAccessor implements Serializable {
- protected Map expandContext;
+ protected Map<String, Object> expandContext;
protected String attributeName;
protected FlexibleMapAccessor fma;
protected boolean isListReference;
@@ -199,7 +200,7 @@
protected int openBrace;
protected int closeBrace;
- public AttributeAccessor(String origName, Map expandContext, String defAttributeName, FlexibleMapAccessor defFma, boolean needsExpand) {
+ public AttributeAccessor(String origName, Map<String, Object> expandContext, String defAttributeName, FlexibleMapAccessor defFma, boolean needsExpand) {
attributeName = defAttributeName;
fma = defFma;
@@ -273,7 +274,7 @@
}
}
- protected void putInList(List lst, Object value) {
+ protected <T> void putInList(List<T> lst, T value) {
//if brackets are empty, append to list
if (isAddAtEnd) {
lst.add(value);
@@ -286,10 +287,10 @@
}
}
- public void put(ServletRequest request, Object value) {
+ public <T> void put(ServletRequest request, T value) {
if (fma == null) {
if (isListReference) {
- List lst = (List) request.getAttribute(attributeName);
+ List<T> lst = UtilGenerics.checkList(request.getAttribute(attributeName));
putInList(lst, value);
} else {
request.setAttribute(attributeName, value);
@@ -297,18 +298,18 @@
} else {
Object theObj = request.getAttribute(attributeName);
if (isListReference) {
- List lst = (List) theObj;
- fma.put((Map) lst.get(listIndex), value);
+ List<T> lst = UtilGenerics.checkList(theObj);
+ fma.put(UtilGenerics.checkMap(lst.get(listIndex), String.class, Object.class), value);
} else {
- fma.put((Map) theObj, value);
+ fma.put(UtilGenerics.checkMap(theObj, String.class, Object.class), value);
}
}
}
- public void put(HttpSession session, Object value) {
+ public <T> void put(HttpSession session, T value) {
if (fma == null) {
if (isListReference) {
- List lst = (List) session.getAttribute(attributeName);
+ List<T> lst = UtilGenerics.checkList(session.getAttribute(attributeName));
putInList(lst, value);
} else {
session.setAttribute(attributeName, value);
@@ -316,10 +317,10 @@
} else {
Object theObj = session.getAttribute(attributeName);
if (isListReference) {
- List lst = (List) theObj;
- fma.put((Map) lst.get(listIndex), value);
+ List<T> lst = UtilGenerics.checkList(theObj);
+ fma.put(UtilGenerics.checkMap(lst.get(listIndex), String.class, Object.class), value);
} else {
- fma.put((Map) theObj, value);
+ fma.put(UtilGenerics.checkMap(theObj, String.class, Object.class), value);
}
}
}
@@ -328,14 +329,14 @@
if (fma != null) {
Object theObj = request.getAttribute(attributeName);
if (isListReference) {
- List lst = (List) theObj;
- return fma.remove((Map) lst.get(listIndex));
+ List<?> lst = UtilGenerics.checkList(theObj);
+ return fma.remove(UtilGenerics.checkMap(lst.get(listIndex), String.class, Object.class));
} else {
- return fma.remove((Map) theObj);
+ return fma.remove(UtilGenerics.checkMap(theObj, String.class, Object.class));
}
} else {
if (isListReference) {
- List lst = (List) request.getAttribute(attributeName);
+ List<?> lst = UtilGenerics.checkList(request.getAttribute(attributeName));
return lst.remove(listIndex);
} else {
Object theValue = request.getAttribute(attributeName);
@@ -349,14 +350,14 @@
if (fma != null) {
Object theObj = session.getAttribute(attributeName);
if (isListReference) {
- List lst = (List) theObj;
- return fma.remove((Map) lst.get(listIndex));
+ List<?> lst = UtilGenerics.checkList(theObj);
+ return fma.remove(UtilGenerics.checkMap(lst.get(listIndex), String.class, Object.class));
} else {
- return fma.remove((Map) theObj);
+ return fma.remove(UtilGenerics.checkMap(theObj, String.class, Object.class));
}
} else {
if (isListReference) {
- List lst = (List) session.getAttribute(attributeName);
+ List<?> lst = UtilGenerics.checkList(session.getAttribute(attributeName));
return lst.remove(listIndex);
} else {
Object theValue = session.getAttribute(attributeName);
Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/MapStack.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/MapStack.java?rev=585752&r1=585751&r2=585752&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/MapStack.java (original)
+++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/MapStack.java Wed Oct 17 16:19:44 2007
@@ -33,38 +33,43 @@
import javolution.util.FastSet;
import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilGenerics;
/**
* Map Stack
*
*/
-public class MapStack implements Map, Reusable, LocalizedMap {
+public class MapStack<K> implements Map<K, Object>, Reusable, LocalizedMap<Object> {
public static final String module = MapStack.class.getName();
- protected static final ObjectFactory mapStackFactory = new ObjectFactory() {
- protected Object create() {
+ protected static final ObjectFactory<MapStack<?>> mapStackFactory = new ObjectFactory<MapStack<?>>() {
+ protected MapStack<?> create() {
return new MapStack();
}
};
-
- public static MapStack create() {
- MapStack newValue = (MapStack) mapStackFactory.object();
+
+ protected static final <K> MapStack<K> getMapStack() {
+ return (MapStack<K>) UtilGenerics.<K, Object>checkMap(mapStackFactory.object());
+ }
+
+ public static <K> MapStack<K> create() {
+ MapStack<K> newValue = MapStack.getMapStack();
// initialize with a single entry
newValue.push();
return newValue;
}
- public static MapStack create(Map baseMap) {
- MapStack newValue = (MapStack) mapStackFactory.object();
+ public static <K> MapStack<K> create(Map<K, Object> baseMap) {
+ MapStack<K> newValue = MapStack.getMapStack();
newValue.stackList.add(0, baseMap);
return newValue;
}
/** Does a shallow copy of the internal stack of the passed MapStack; enables simultaneous stacks that share common parent Maps */
- public static MapStack create(MapStack source) {
- MapStack newValue = (MapStack) mapStackFactory.object();
+ public static <K> MapStack<K> create(MapStack<K> source) {
+ MapStack<K> newValue = MapStack.getMapStack();
newValue.stackList.addAll(source.stackList);
return newValue;
}
@@ -73,7 +78,7 @@
super();
}
- protected List stackList = FastList.newInstance();
+ protected List<Map<K, Object>> stackList = FastList.newInstance();
public void reset() {
stackList = FastList.newInstance();
@@ -81,11 +86,12 @@
/** Puts a new Map on the top of the stack */
public void push() {
- this.stackList.add(0, FastMap.newInstance());
+ Map<K, Object> newMap = FastMap.newInstance();
+ this.stackList.add(0,newMap);
}
/** Puts an existing Map on the top of the stack (top meaning will override lower layers on the stack) */
- public void push(Map existingMap) {
+ public void push(Map<K, Object> existingMap) {
if (existingMap == null) {
throw new IllegalArgumentException("Error: cannot push null existing Map onto a MapStack");
}
@@ -93,7 +99,7 @@
}
/** Puts an existing Map on the BOTTOM of the stack (bottom meaning will be overriden by lower layers on the stack, ie everything else already there) */
- public void addToBottom(Map existingMap) {
+ public void addToBottom(Map<K, Object> existingMap) {
if (existingMap == null) {
throw new IllegalArgumentException("Error: cannot add null existing Map to bottom of a MapStack");
}
@@ -101,10 +107,10 @@
}
/** Remove and returns the Map from the top of the stack; if there is only one Map on the stack it returns null and does not remove it */
- public Map pop() {
+ public Map<K, Object> pop() {
// always leave at least one Map in the List, ie never pop off the last Map
if (this.stackList.size() > 1) {
- return (Map) stackList.remove(0);
+ return stackList.remove(0);
} else {
return null;
}
@@ -116,8 +122,8 @@
* situation where a parent and child context are operating simultaneously
* using two different MapStack objects, but sharing the Maps in common
*/
- public MapStack standAloneStack() {
- MapStack standAlone = MapStack.create(this);
+ public MapStack<K> standAloneStack() {
+ MapStack<K> standAlone = MapStack.create(this);
return standAlone;
}
@@ -127,8 +133,8 @@
* situation where a parent and child context are operating simultaneously
* using two different MapStack objects, but sharing the Maps in common
*/
- public MapStack standAloneChildStack() {
- MapStack standAloneChild = MapStack.create(this);
+ public MapStack<K> standAloneChildStack() {
+ MapStack<K> standAloneChild = MapStack.create(this);
standAloneChild.push();
return standAloneChild;
}
@@ -139,7 +145,7 @@
public int size() {
// a little bit tricky; to represent the apparent size we need to aggregate all keys and get a count of unique keys
// this is a bit of a slow way, but gets the best number possible
- Set keys = this.keySet();
+ Set<K> keys = this.keySet();
return keys.size();
}
@@ -148,9 +154,7 @@
*/
public boolean isEmpty() {
// walk the stackList and if any is not empty, return false; otherwise return true
- Iterator stackIter = this.stackList.iterator();
- while (stackIter.hasNext()) {
- Map curMap = (Map) stackIter.next();
+ for (Map<K, Object> curMap: this.stackList) {
if (!curMap.isEmpty()) {
return false;
}
@@ -163,9 +167,7 @@
*/
public boolean containsKey(Object key) {
// walk the stackList and for the first place it is found return true; otherwise refurn false
- Iterator stackIter = this.stackList.iterator();
- while (stackIter.hasNext()) {
- Map curMap = (Map) stackIter.next();
+ for (Map<K, Object> curMap: this.stackList) {
if (curMap.containsKey(key)) {
return true;
}
@@ -178,13 +180,9 @@
*/
public boolean containsValue(Object value) {
// walk the stackList and the entries for each Map and if nothing is in for the current key, consider it an option, otherwise ignore
- Set resultKeySet = FastSet.newInstance();
- Iterator stackIter = this.stackList.iterator();
- while (stackIter.hasNext()) {
- Map curMap = (Map) stackIter.next();
- Iterator curEntrySetIter = curMap.entrySet().iterator();
- while (curEntrySetIter.hasNext()) {
- Map.Entry curEntry = (Map.Entry) curEntrySetIter.next();
+ Set<K> resultKeySet = FastSet.newInstance();
+ for (Map<K, Object> curMap: this.stackList) {
+ for (Map.Entry<K, Object> curEntry: curMap.entrySet()) {
if (!resultKeySet.contains(curEntry.getKey())) {
resultKeySet.add(curEntry.getKey());
if (value == null) {
@@ -211,9 +209,7 @@
}
// walk the stackList and for the first place it is found return true; otherwise refurn false
- Iterator stackIter = this.stackList.iterator();
- while (stackIter.hasNext()) {
- Map curMap = (Map) stackIter.next();
+ for (Map<K, Object> curMap: this.stackList) {
// only return if the curMap contains the key, rather than checking for null; this allows a null at a lower level to override a value at a higher level
if (curMap.containsKey(key)) {
return curMap.get(key);
@@ -231,9 +227,7 @@
}
// walk the stackList and for the first place it is found return true; otherwise refurn false
- Iterator stackIter = this.stackList.iterator();
- while (stackIter.hasNext()) {
- Map curMap = (Map) stackIter.next();
+ for (Map<K, Object> curMap: this.stackList) {
// only return if the curMap contains the key, rather than checking for null; this allows a null at a lower level to override a value at a higher level
if (curMap.containsKey(name)) {
if (curMap instanceof LocalizedMap) {
@@ -250,7 +244,7 @@
/* (non-Javadoc)
* @see java.util.Map#put(java.lang.Object, java.lang.Object)
*/
- public Object put(Object key, Object value) {
+ public Object put(K key, Object value) {
if ("context".equals(key)) {
if (value == null || this != value) {
Debug.logWarning("WARNING: Putting a value in a MapStack with key [context] that is not this MapStack, will be hidden by the current MapStack self-reference: " + value, module);
@@ -258,7 +252,7 @@
}
// all write operations are local: only put in the Map on the top of the stack
- Map currentMap = (Map) this.stackList.get(0);
+ Map<K, Object> currentMap = this.stackList.get(0);
return currentMap.put(key, value);
}
@@ -267,16 +261,16 @@
*/
public Object remove(Object key) {
// all write operations are local: only remove from the Map on the top of the stack
- Map currentMap = (Map) this.stackList.get(0);
+ Map<K, Object> currentMap = this.stackList.get(0);
return currentMap.remove(key);
}
/* (non-Javadoc)
* @see java.util.Map#putAll(java.util.Map)
*/
- public void putAll(Map arg0) {
+ public void putAll(Map<? extends K, ? extends Object> arg0) {
// all write operations are local: only put in the Map on the top of the stack
- Map currentMap = (Map) this.stackList.get(0);
+ Map<K, Object> currentMap = this.stackList.get(0);
currentMap.putAll(arg0);
}
@@ -292,12 +286,10 @@
/* (non-Javadoc)
* @see java.util.Map#keySet()
*/
- public Set keySet() {
+ public Set<K> keySet() {
// walk the stackList and aggregate all keys
- Set resultSet = FastSet.newInstance();
- Iterator stackIter = this.stackList.iterator();
- while (stackIter.hasNext()) {
- Map curMap = (Map) stackIter.next();
+ Set<K> resultSet = FastSet.newInstance();
+ for (Map<K, Object> curMap: this.stackList) {
resultSet.addAll(curMap.keySet());
}
return Collections.unmodifiableSet(resultSet);
@@ -306,16 +298,12 @@
/* (non-Javadoc)
* @see java.util.Map#values()
*/
- public Collection values() {
+ public Collection<Object> values() {
// walk the stackList and the entries for each Map and if nothing is in for the current key, put it in
- Set resultKeySet = FastSet.newInstance();
- List resultValues = FastList.newInstance();
- Iterator stackIter = this.stackList.iterator();
- while (stackIter.hasNext()) {
- Map curMap = (Map) stackIter.next();
- Iterator curEntrySetIter = curMap.entrySet().iterator();
- while (curEntrySetIter.hasNext()) {
- Map.Entry curEntry = (Map.Entry) curEntrySetIter.next();
+ Set<K> resultKeySet = FastSet.newInstance();
+ List<Object> resultValues = FastList.newInstance();
+ for (Map<K, Object> curMap: this.stackList) {
+ for (Map.Entry<K, Object> curEntry: curMap.entrySet()) {
if (!resultKeySet.contains(curEntry.getKey())) {
resultKeySet.add(curEntry.getKey());
resultValues.add(curEntry.getValue());
@@ -328,16 +316,12 @@
/* (non-Javadoc)
* @see java.util.Map#entrySet()
*/
- public Set entrySet() {
+ public Set<Map.Entry<K, Object>> entrySet() {
// walk the stackList and the entries for each Map and if nothing is in for the current key, put it in
- Set resultKeySet = FastSet.newInstance();
- Set resultEntrySet = FastSet.newInstance();
- Iterator stackIter = this.stackList.iterator();
- while (stackIter.hasNext()) {
- Map curMap = (Map) stackIter.next();
- Iterator curEntrySetIter = curMap.entrySet().iterator();
- while (curEntrySetIter.hasNext()) {
- Map.Entry curEntry = (Map.Entry) curEntrySetIter.next();
+ Set<K> resultKeySet = FastSet.newInstance();
+ Set<Map.Entry<K, Object>> resultEntrySet = FastSet.newInstance();
+ for (Map<K, Object> curMap: this.stackList) {
+ for (Map.Entry<K, Object> curEntry: curMap.entrySet()) {
if (!resultKeySet.contains(curEntry.getKey())) {
resultKeySet.add(curEntry.getKey());
resultEntrySet.add(curEntry);
@@ -350,13 +334,9 @@
public String toString() {
StringBuilder fullMapString = new StringBuilder();
int curLevel = 0;
- Iterator stackIter = this.stackList.iterator();
- while (stackIter.hasNext()) {
- Map curMap = (Map) stackIter.next();
+ for (Map<K, Object> curMap: this.stackList) {
fullMapString.append("============================== Start stack level " + curLevel + "\n");
- Iterator curEntrySetIter = curMap.entrySet().iterator();
- while (curEntrySetIter.hasNext()) {
- Map.Entry curEntry = (Map.Entry) curEntrySetIter.next();
+ for (Map.Entry<K, Object> curEntry: curMap.entrySet()) {
fullMapString.append("==>[");
fullMapString.append(curEntry.getKey());
Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/ResourceBundleMapWrapper.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/ResourceBundleMapWrapper.java?rev=585752&r1=585751&r2=585752&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/ResourceBundleMapWrapper.java (original)
+++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/ResourceBundleMapWrapper.java Wed Oct 17 16:19:44 2007
@@ -34,9 +34,9 @@
* Generic ResourceBundle Map Wrapper, given ResourceBundle allows it to be used as a Map
*
*/
-public class ResourceBundleMapWrapper implements Map, Serializable {
+public class ResourceBundleMapWrapper implements Map<String, Object>, Serializable {
- protected MapStack rbmwStack;
+ protected MapStack<String> rbmwStack;
protected ResourceBundle initialResourceBundle;
protected ResourceBundleMapWrapper() {
@@ -100,7 +100,7 @@
public boolean containsValue(Object arg0) {
return this.rbmwStack.containsValue(arg0);
}
- public Set entrySet() {
+ public Set<Map.Entry<String, Object>> entrySet() {
return this.rbmwStack.entrySet();
}
public Object get(Object arg0) {
@@ -113,13 +113,13 @@
public boolean isEmpty() {
return this.rbmwStack.isEmpty();
}
- public Set keySet() {
+ public Set<String> keySet() {
return this.keySet();
}
- public Object put(Object key, Object value) {
+ public Object put(String key, Object value) {
return this.rbmwStack.put(key, value);
}
- public void putAll(Map arg0) {
+ public void putAll(Map<? extends String, ? extends Object> arg0) {
this.rbmwStack.putAll(arg0);
}
public Object remove(Object arg0) {
@@ -128,25 +128,25 @@
public int size() {
return this.rbmwStack.size();
}
- public Collection values() {
+ public Collection<Object> values() {
return this.rbmwStack.values();
}
- public static class InternalRbmWrapper implements Map, Serializable {
+ public static class InternalRbmWrapper implements Map<String, Object>, Serializable {
protected ResourceBundle resourceBundle;
- protected Map topLevelMap;
+ protected Map<String, Object> topLevelMap;
public InternalRbmWrapper(ResourceBundle resourceBundle) {
if (resourceBundle == null) {
throw new IllegalArgumentException("Cannot create InternalRbmWrapper with a null ResourceBundle.");
}
this.resourceBundle = resourceBundle;
- topLevelMap = new HashMap();
+ topLevelMap = new HashMap<String, Object>();
// NOTE: this does NOT return all keys, ie keys from parent ResourceBundles, so we keep the resourceBundle object to look at when the main Map doesn't have a certain value
if (resourceBundle != null) {
- Enumeration keyNum = resourceBundle.getKeys();
+ Enumeration<String> keyNum = resourceBundle.getKeys();
while (keyNum.hasMoreElements()) {
- String key = (String) keyNum.nextElement();
+ String key = keyNum.nextElement();
//resourceBundleMap.put(key, bundle.getObject(key));
Object value = resourceBundle.getObject(key);
topLevelMap.put(key, value);
@@ -229,7 +229,7 @@
/* (non-Javadoc)
* @see java.util.Map#put(java.lang.Object, java.lang.Object)
*/
- public Object put(Object arg0, Object arg1) {
+ public Object put(String arg0, Object arg1) {
throw new RuntimeException("Not implemented/allowed for ResourceBundleMapWrapper");
}
@@ -257,21 +257,21 @@
/* (non-Javadoc)
* @see java.util.Map#keySet()
*/
- public Set keySet() {
+ public Set<String> keySet() {
return this.topLevelMap.keySet();
}
/* (non-Javadoc)
* @see java.util.Map#values()
*/
- public Collection values() {
+ public Collection<Object> values() {
return this.topLevelMap.values();
}
/* (non-Javadoc)
* @see java.util.Map#entrySet()
*/
- public Set entrySet() {
+ public Set<Map.Entry<String, Object>> entrySet() {
return this.topLevelMap.entrySet();
}