Author: doogie
Date: Sat Aug 2 19:59:30 2008 New Revision: 682096 URL: http://svn.apache.org/viewvc?rev=682096&view=rev Log: Final set of generics markup for base; base no longer has any 'unchecked' warnings. Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/FlexibleMapAccessor.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/MapComparator.java ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/FlexibleMapAccessor.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/FlexibleMapAccessor.java?rev=682096&r1=682095&r2=682096&view=diff ============================================================================== --- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/FlexibleMapAccessor.java (original) +++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/FlexibleMapAccessor.java Sat Aug 2 19:59:30 2008 @@ -27,6 +27,10 @@ import javolution.util.FastMap; import org.ofbiz.base.util.Debug; +import org.ofbiz.base.util.UtilGenerics; +import static org.ofbiz.base.util.UtilGenerics.cast; +import static org.ofbiz.base.util.UtilGenerics.checkList; +import static org.ofbiz.base.util.UtilGenerics.checkMap; import org.ofbiz.base.util.UtilMisc; /** @@ -35,7 +39,7 @@ * list elements. See individual Map operations for more information. * */ -public class FlexibleMapAccessor implements Serializable { +public class FlexibleMapAccessor<T> implements Serializable { public static final String module = FlexibleMapAccessor.class.getName(); protected String original; @@ -111,7 +115,7 @@ * @param base * @return */ - public Object get(Map base) { + public T get(Map<String, ? extends Object> base) { return get(base, null); } @@ -122,16 +126,16 @@ * @param locale Optional locale parameter, if null will see if the base Map contains a "locale" key * @return */ - public Object get(Map base, Locale locale) { + public T get(Map<String, ? extends Object> base, Locale locale) { if (base == null) { return null; } // so we can keep the passed context - Map newBase = null; + Map<String, ? extends Object> newBase = null; if (this.subMapAccessor != null) { try { - newBase = this.subMapAccessor.getSubMap(base, false); + newBase = this.subMapAccessor.getSubMap(base); } catch (Exception e) { String errMsg = "Error getting map accessor sub-map [" + this.subMapAccessor.extName + "] as part of [" + this.original + "]: " + e.toString(); Debug.logError(e, errMsg, module); @@ -143,9 +147,9 @@ } try { - Object ret = null; + T ret = null; if (this.isListReference) { - List lst = (List) newBase.get(this.extName); + List<T> lst = checkList(newBase.get(this.extName)); if (lst == null) { return null; } @@ -170,12 +174,12 @@ } } - protected Object getByLocale(String name, Map base, Map sub, Locale locale) { + protected T getByLocale(String name, Map<String, ? extends Object> base, Map<String, ? extends Object> sub, Locale locale) { if (sub == null) { return null; } if (sub instanceof LocalizedMap) { - LocalizedMap locMap = (LocalizedMap) sub; + LocalizedMap<T> locMap = cast(sub); if (locale != null) { return locMap.get(name, locale); } else if (base.containsKey("locale")) { @@ -184,7 +188,7 @@ return locMap.get(name, Locale.getDefault()); } } else { - Object getReturn = sub.get(name); + T getReturn = UtilGenerics.<T>cast(sub.get(name)); return getReturn; } } @@ -197,19 +201,19 @@ * @param base * @param value */ - public void put(Map base, Object value) { + public void put(Map<String, Object> base, T value) { if (base == null) { throw new IllegalArgumentException("Cannot put a value in a null base Map"); } if (this.subMapAccessor != null) { - Map subBase = this.subMapAccessor.getSubMap(base, true); + Map<String, Object> subBase = this.subMapAccessor.getOrCreateSubMap(base); if (subBase == null) { return; } base = subBase; } if (this.isListReference) { - List lst = (List) base.get(this.extName); + List<Object> lst = checkList(base.get(this.extName)); if (lst == null) { lst = FastList.newInstance(); base.put(this.extName, lst); @@ -236,15 +240,16 @@ * @param base the Map to remove from * @return the object removed */ - public Object remove(Map base) { + public T remove(Map<String, ? extends Object> base) { if (this.subMapAccessor != null) { - base = this.subMapAccessor.getSubMap(base, false); + base = this.subMapAccessor.getSubMap(base); } + if (base == null) return null; if (this.isListReference) { - List lst = (List) base.get(this.extName); - return lst.remove(this.listIndex); + List<Object> lst = checkList(base.get(this.extName)); + return UtilGenerics.<T>cast(lst.remove(this.listIndex)); } else { - return base.remove(this.extName); + return UtilGenerics.<T>cast(base.remove(this.extName)); } } @@ -295,35 +300,62 @@ } } - public Map getSubMap(Map base, boolean forPut) { + public <V> Map<String, V> getSubMap(Map<String, V> base) { if (base == null) return null; if (this.extName == null) return null; if (this.subMapAccessor != null) { - base = this.subMapAccessor.getSubMap(base, forPut); + base = this.subMapAccessor.getSubMap(base); + } + if (base == null) return null; + Object namedObj = base.get(this.extName); + if (this.isListReference && (namedObj == null || namedObj instanceof List)) { + List<? extends Object> lst = checkList(namedObj); + if (lst == null) return null; + + Map<String, V> extMap = null; + if (lst.size() > this.listIndex) { + extMap = checkMap(lst.get(this.listIndex)); + } + if (extMap == null) return null; + + return extMap; + } else if (namedObj instanceof Map) { + Map<String, V> extMap = checkMap(namedObj); + return extMap; + } else { + return null; + } + } + + public Map<String, Object> getOrCreateSubMap(Map<String, Object> base) { + if (base == null) return null; + if (this.extName == null) return null; + if (this.subMapAccessor != null) { + base = this.subMapAccessor.getOrCreateSubMap(base); } Object namedObj = base.get(this.extName); if (this.isListReference && (namedObj == null || namedObj instanceof List)) { - List lst = (List) base.get(this.extName); + List<Object> lst = checkList(namedObj); if (lst == null) { lst = FastList.newInstance(); base.put(this.extName, lst); } - Map extMap = null; + Map<String, Object> extMap = null; if (lst.size() > this.listIndex) { - extMap = (Map) lst.get(this.listIndex); + extMap = checkMap(lst.get(this.listIndex)); } - if (forPut && extMap == null) { + if (extMap == null) { extMap = FastMap.newInstance(); lst.add(this.listIndex, extMap); } return extMap; } else if (namedObj == null || namedObj instanceof Map) { - Map extMap = (Map) namedObj; + Map<String, Object> extMap = checkMap(namedObj); // this code creates a new Map if none is missing, but for a get or remove this is a bad idea... - if (forPut && extMap == null) { + if (extMap == null) { extMap = FastMap.newInstance(); base.put(this.extName, extMap); } 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=682096&r1=682095&r2=682096&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 Sat Aug 2 19:59:30 2008 @@ -34,11 +34,11 @@ * list elements. See individual Map operations for more information. * */ -public class FlexibleServletAccessor implements Serializable { +public class FlexibleServletAccessor<T> implements Serializable { protected String name; protected String attributeName; - protected FlexibleMapAccessor fma; + protected FlexibleMapAccessor<T> fma; protected boolean needsExpand; protected boolean empty; @@ -59,7 +59,7 @@ if (name == null || name.length() == 0) { empty = true; needsExpand = false; - fma = new FlexibleMapAccessor(name); + fma = new FlexibleMapAccessor<T>(name); attributeName = name; } else { empty = false; @@ -72,7 +72,7 @@ int dotIndex = name.indexOf('.'); if (dotIndex != -1) { attributeName = name.substring(0, dotIndex); - fma = new FlexibleMapAccessor(name.substring(dotIndex+1)); + fma = new FlexibleMapAccessor<T>(name.substring(dotIndex+1)); } else { attributeName = name; fma = null; @@ -92,8 +92,8 @@ * @param expandContext the context to use for name expansion * @return the object corresponding to this getter class */ - public Object get(ServletRequest request, Map<String, Object> expandContext) { - AttributeAccessor aa = new AttributeAccessor(name, expandContext, this.attributeName, this.fma, this.needsExpand); + public T get(ServletRequest request, Map<String, Object> expandContext) { + AttributeAccessor<T> aa = new AttributeAccessor<T>(name, expandContext, this.attributeName, this.fma, this.needsExpand); return aa.get(request); } @@ -102,8 +102,8 @@ * @param expandContext * @return */ - public Object get(HttpSession session, Map<String, Object> expandContext) { - AttributeAccessor aa = new AttributeAccessor(name, expandContext, this.attributeName, this.fma, this.needsExpand); + public T get(HttpSession session, Map<String, Object> expandContext) { + AttributeAccessor<T> aa = new AttributeAccessor<T>(name, expandContext, this.attributeName, this.fma, this.needsExpand); return aa.get(session); } @@ -116,8 +116,8 @@ * @param value * @param expandContext */ - public void put(ServletRequest request, Object value, Map<String, Object> expandContext) { - AttributeAccessor aa = new AttributeAccessor(name, expandContext, this.attributeName, this.fma, this.needsExpand); + public void put(ServletRequest request, T value, Map<String, Object> expandContext) { + AttributeAccessor<T> aa = new AttributeAccessor<T>(name, expandContext, this.attributeName, this.fma, this.needsExpand); aa.put(request, value); } @@ -130,8 +130,8 @@ * @param value * @param expandContext */ - public void put(HttpSession session, Object value, Map<String, Object> expandContext) { - AttributeAccessor aa = new AttributeAccessor(name, expandContext, this.attributeName, this.fma, this.needsExpand); + public void put(HttpSession session, T value, Map<String, Object> expandContext) { + AttributeAccessor<T> aa = new AttributeAccessor<T>(name, expandContext, this.attributeName, this.fma, this.needsExpand); aa.put(session, value); } @@ -140,8 +140,8 @@ * @param expandContext * @return */ - public Object remove(ServletRequest request, Map<String, Object> expandContext) { - AttributeAccessor aa = new AttributeAccessor(name, expandContext, this.attributeName, this.fma, this.needsExpand); + public T remove(ServletRequest request, Map<String, Object> expandContext) { + AttributeAccessor<T> aa = new AttributeAccessor<T>(name, expandContext, this.attributeName, this.fma, this.needsExpand); return aa.remove(request); } @@ -150,8 +150,8 @@ * @param expandContext * @return */ - public Object remove(HttpSession session, Map<String, Object> expandContext) { - AttributeAccessor aa = new AttributeAccessor(name, expandContext, this.attributeName, this.fma, this.needsExpand); + public T remove(HttpSession session, Map<String, Object> expandContext) { + AttributeAccessor<T> aa = new AttributeAccessor<T>(name, expandContext, this.attributeName, this.fma, this.needsExpand); return aa.remove(session); } @@ -189,10 +189,10 @@ return this.name; } - protected static class AttributeAccessor implements Serializable { + protected static class AttributeAccessor<T> implements Serializable { protected Map<String, Object> expandContext; protected String attributeName; - protected FlexibleMapAccessor fma; + protected FlexibleMapAccessor<T> fma; protected boolean isListReference; protected boolean isAddAtIndex; protected boolean isAddAtEnd; @@ -200,7 +200,7 @@ protected int openBrace; protected int closeBrace; - public AttributeAccessor(String origName, Map<String, Object> expandContext, String defAttributeName, FlexibleMapAccessor defFma, boolean needsExpand) { + public AttributeAccessor(String origName, Map<String, Object> expandContext, String defAttributeName, FlexibleMapAccessor<T> defFma, boolean needsExpand) { attributeName = defAttributeName; fma = defFma; @@ -209,7 +209,7 @@ int dotIndex = name.indexOf('.'); if (dotIndex != -1) { attributeName = name.substring(0, dotIndex); - fma = new FlexibleMapAccessor(name.substring(dotIndex+1)); + fma = new FlexibleMapAccessor<T>(name.substring(dotIndex+1)); } else { attributeName = name; fma = null; @@ -242,7 +242,7 @@ } - public Object get(ServletRequest request) { + public T get(ServletRequest request) { Object theValue = null; if (isListReference) { List lst = (List) request.getAttribute(attributeName); @@ -252,13 +252,13 @@ } if (fma != null) { - return fma.get((Map) theValue); + return fma.get(UtilGenerics.<String, Object>checkMap(theValue)); } else { - return theValue; + return UtilGenerics.<T>cast(theValue); } } - public Object get(HttpSession session) { + public T get(HttpSession session) { Object theValue = null; if (isListReference) { List lst = (List) session.getAttribute(attributeName); @@ -268,13 +268,13 @@ } if (fma != null) { - return fma.get((Map) theValue); + return fma.get(UtilGenerics.<String, Object>checkMap(theValue)); } else { - return theValue; + return UtilGenerics.<T>cast(theValue); } } - protected <T> void putInList(List<T> lst, T value) { + protected void putInList(List<T> lst, T value) { //if brackets are empty, append to list if (isAddAtEnd) { lst.add(value); @@ -287,7 +287,7 @@ } } - public <T> void put(ServletRequest request, T value) { + public void put(ServletRequest request, T value) { if (fma == null) { if (isListReference) { List<T> lst = UtilGenerics.checkList(request.getAttribute(attributeName)); @@ -306,7 +306,7 @@ } } - public <T> void put(HttpSession session, T value) { + public void put(HttpSession session, T value) { if (fma == null) { if (isListReference) { List<T> lst = UtilGenerics.checkList(session.getAttribute(attributeName)); @@ -325,44 +325,44 @@ } } - public Object remove(ServletRequest request) { + public T remove(ServletRequest request) { if (fma != null) { Object theObj = request.getAttribute(attributeName); if (isListReference) { - List<?> lst = UtilGenerics.checkList(theObj); + List<Object> lst = UtilGenerics.checkList(theObj); return fma.remove(UtilGenerics.checkMap(lst.get(listIndex), String.class, Object.class)); } else { return fma.remove(UtilGenerics.checkMap(theObj, String.class, Object.class)); } } else { if (isListReference) { - List<?> lst = UtilGenerics.checkList(request.getAttribute(attributeName)); - return lst.remove(listIndex); + List<Object> lst = UtilGenerics.checkList(request.getAttribute(attributeName)); + return UtilGenerics.<T>cast(lst.remove(listIndex)); } else { Object theValue = request.getAttribute(attributeName); request.removeAttribute(attributeName); - return theValue; + return UtilGenerics.<T>cast(theValue); } } } - public Object remove(HttpSession session) { + public T remove(HttpSession session) { if (fma != null) { Object theObj = session.getAttribute(attributeName); if (isListReference) { - List<?> lst = UtilGenerics.checkList(theObj); + List<Object> lst = UtilGenerics.checkList(theObj); return fma.remove(UtilGenerics.checkMap(lst.get(listIndex), String.class, Object.class)); } else { return fma.remove(UtilGenerics.checkMap(theObj, String.class, Object.class)); } } else { if (isListReference) { - List<?> lst = UtilGenerics.checkList(session.getAttribute(attributeName)); - return lst.remove(listIndex); + List<Object> lst = UtilGenerics.checkList(session.getAttribute(attributeName)); + return UtilGenerics.<T>cast(lst.remove(listIndex)); } else { Object theValue = session.getAttribute(attributeName); session.removeAttribute(attributeName); - return theValue; + return UtilGenerics.<T>cast(theValue); } } } Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/MapComparator.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/MapComparator.java?rev=682096&r1=682095&r2=682096&view=diff ============================================================================== --- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/MapComparator.java (original) +++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/MapComparator.java Sat Aug 2 19:59:30 2008 @@ -68,13 +68,13 @@ Object o2 = null; if (key instanceof FlexibleMapAccessor) { - FlexibleMapAccessor fmaKey = (FlexibleMapAccessor) key; + FlexibleMapAccessor<Object> fmaKey = UtilGenerics.cast(key); ascending = fmaKey.getIsAscending(); //Debug.logInfo("Doing compare with a FlexibleMapAccessor [" + fmaKey.getOriginalName() + "] ascending [" + ascending + "]", module); - o1 = fmaKey.get((Map) map1); - o2 = fmaKey.get((Map) map2); + o1 = fmaKey.get(UtilGenerics.<String, Object>checkMap(map1)); + o2 = fmaKey.get(UtilGenerics.<String, Object>checkMap(map2)); } else { if (key instanceof String) { String keyStr = (String) key; Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java?rev=682096&r1=682095&r2=682096&view=diff ============================================================================== --- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java (original) +++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java Sat Aug 2 19:59:30 2008 @@ -298,10 +298,10 @@ } } public static class VariableElement implements StringElement { - protected FlexibleMapAccessor fma; + protected FlexibleMapAccessor<Object> fma; public VariableElement(String valueName) { - this.fma = new FlexibleMapAccessor(valueName); + this.fma = new FlexibleMapAccessor<Object>(valueName); } public void appendElement(StringBuilder buffer, Map<String, ? extends Object> context, Locale locale) { @@ -384,7 +384,7 @@ envName = envName.substring(0, currencyPos); } - FlexibleMapAccessor fma = new FlexibleMapAccessor(envName); + FlexibleMapAccessor<Object> fma = new FlexibleMapAccessor<Object>(envName); Object envVal = fma.get(context, locale); if (envVal != null) { if (localizeCurrency) { |
Free forum by Nabble | Edit this page |