diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/CollectionConverter.java b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/CollectionConverter.java index 19c2cc5bb..1f4e0af80 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/CollectionConverter.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/CollectionConverter.java @@ -89,9 +89,9 @@ public class CollectionConverter extends DefaultTypeConverter { result = new TreeSet(); } else { if (size > 0) { - result = new XWorkList(objectFactory, memberType, size); + result = new XWorkList(memberType, size); } else { - result = new XWorkList(objectFactory, memberType); + result = new XWorkList(memberType); } } diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/XWorkList.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/XWorkList.java index e4b4142ef..a5ddb7d69 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/XWorkList.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/XWorkList.java @@ -42,17 +42,13 @@ public class XWorkList extends ArrayList { private Class clazz; - private ObjectFactory objectFactory; - - public XWorkList(ObjectFactory fac, Class clazz) { + public XWorkList(Class clazz) { this.clazz = clazz; - this.objectFactory = fac; } - public XWorkList(ObjectFactory fac, Class clazz, int initialCapacity) { + public XWorkList(Class clazz, int initialCapacity) { super(initialCapacity); this.clazz = clazz; - this.objectFactory = fac; } /** @@ -169,8 +165,7 @@ public class XWorkList extends ArrayList { public synchronized Object get(int index) { while (index >= this.size()) { try { - //todo - this.add(objectFactory.buildBean(clazz, null)); //ActionContext.getContext().getContextMap())); + this.add(getObjectFactory().buildBean(clazz, ActionContext.getContext().getContextMap())); } catch (Exception e) { throw new XWorkException(e); } @@ -179,6 +174,10 @@ public class XWorkList extends ArrayList { return super.get(index); } + private ObjectFactory getObjectFactory() { + return ActionContext.getContext().getInstance(ObjectFactory.class); + } + /** * Replaces the element at the specified position in this list with the specified element. *
@@ -207,7 +206,7 @@ public class XWorkList extends ArrayList { if (LOG.isDebugEnabled()) { LOG.debug("Converting from " + element.getClass().getName() + " to " + clazz.getName()); } - TypeConverter conv = objectFactory.buildConverter(XWorkConverter.class); + TypeConverter conv = getObjectFactory().buildConverter(XWorkConverter.class); Map