Log Message
Optimize lookup of implicit collection.
Modified Paths
Diff
Modified: trunk/xstream/src/java/com/thoughtworks/xstream/converters/reflection/AbstractReflectionConverter.java (2068 => 2069)
--- trunk/xstream/src/java/com/thoughtworks/xstream/converters/reflection/AbstractReflectionConverter.java 2013-06-04 23:56:37 UTC (rev 2068)
+++ trunk/xstream/src/java/com/thoughtworks/xstream/converters/reflection/AbstractReflectionConverter.java 2013-06-05 21:10:04 UTC (rev 2069)
@@ -404,7 +404,7 @@
}
} else {
// we have an implicit collection with defined names
- // implicitFieldName = implicitCollectionMapping.getItemFieldName();
+ implicitFieldName = implicitCollectionMapping.getFieldName();
type = implicitCollectionMapping.getItemType();
if (type == null) {
String classAttribute = HierarchicalStreams.readClassAttribute(
@@ -434,8 +434,11 @@
value != null ? value.getClass() : Mapper.Null.class,
originalNodeName);
}
- implicitCollectionsForCurrentObject = writeValueToImplicitCollection(value,
- implicitCollectionsForCurrentObject, result, implicitFieldName);
+ if (implicitCollectionsForCurrentObject == null) {
+ implicitCollectionsForCurrentObject = new HashMap();
+ }
+ writeValueToImplicitCollection(
+ value, implicitCollectionsForCurrentObject, result, implicitFieldName);
}
reader.moveUp();
@@ -482,10 +485,7 @@
throw new UnknownFieldException(resultType.getName(), fieldName);
}
- private Map writeValueToImplicitCollection(Object value, Map implicitCollections, Object result, String implicitFieldName) {
- if (implicitCollections == null) {
- implicitCollections = new HashMap(); // lazy instantiation
- }
+ private void writeValueToImplicitCollection(Object value, Map implicitCollections, Object result, String implicitFieldName) {
Collection collection = (Collection)implicitCollections.get(implicitFieldName);
if (collection == null) {
Class physicalFieldType = reflectionProvider.getFieldType(
@@ -521,7 +521,6 @@
implicitCollections.put(implicitFieldName, collection);
}
collection.add(value);
- return implicitCollections;
}
private Class readDeclaringClass(HierarchicalStreamReader reader) {
To unsubscribe from this list please visit:
