public static <T extends Set<?>> Set<?> createNewSet(Class<T> destSetType, Collection<?> srcValue) { Set<Object> result = (Set<Object>) createNewSet(destSetType); if (srcValue != null) { result.addAll(srcValue); } return result; }
collectionIndex = CollectionUtils.getLengthOfCollection(collection);
private static Object getExistingValue(FieldMap fieldMap, Object destObj, Class<?> destFieldType) { // verify that the dest obj is not null if (destObj == null) { return null; } // call the getXX method to see if the field is already instantiated Object result = fieldMap.getDestValue(destObj); // When we are recursing through a list we need to make sure that we are not // in the list // by checking the destFieldType if (result != null) { if (CollectionUtils.isList(result.getClass()) || CollectionUtils.isArray(result.getClass()) || CollectionUtils.isSet(result.getClass()) || MappingUtils.isSupportedMap(result.getClass())) { if (!CollectionUtils.isList(destFieldType) && !CollectionUtils.isArray(destFieldType) && !CollectionUtils.isSet(destFieldType) && !MappingUtils.isSupportedMap(destFieldType)) { // this means the getXX field is a List but we are actually trying to // map one of its elements result = null; } } } return result; }
public static boolean isSupportedCollection(Class<?> aClass) { return CollectionUtils.isCollection(aClass) || CollectionUtils.isArray(aClass); }
static List<?> prepareDestinationList(Collection<?> srcCollectionValue, Object field) { if (field == null) { return new ArrayList<Object>(srcCollectionValue.size()); } else { if (CollectionUtils.isList(field.getClass())) { return (List<?>) field; } else if (CollectionUtils.isArray(field.getClass())) { return new ArrayList<Object>(Arrays.asList((Object[]) field)); } else { // assume it is neither - safest way is to create new List return new ArrayList<Object>(srcCollectionValue.size()); } } }
if (CollectionUtils.isArray(srcFieldType) && (CollectionUtils.isArray(destCollectionType))) { result = mapArrayToArray(srcObj, srcCollectionValue, fieldMap, destObj); } else if (CollectionUtils.isArray(srcFieldType) && (CollectionUtils.isList(destCollectionType))) { result = mapArrayToList(srcObj, srcCollectionValue, fieldMap, destObj); else if (CollectionUtils.isList(srcFieldType) && (CollectionUtils.isArray(destCollectionType))) { result = mapListToArray(srcObj, (List<?>) srcCollectionValue, fieldMap, destObj); else if (CollectionUtils.isSet(srcFieldType) && CollectionUtils.isArray(destCollectionType)) { result = mapSetToArray(srcObj, (Set<?>) srcCollectionValue, fieldMap, destObj); else if (CollectionUtils.isArray(srcFieldType) && CollectionUtils.isSet(destCollectionType)) { result = addToSet(srcObj, fieldMap, Arrays.asList((Object[]) srcCollectionValue), destObj); else if (CollectionUtils.isCollection(srcFieldType) && CollectionUtils.isSet(destCollectionType)) { result = addToSet(srcObj, fieldMap, (Collection<?>) srcCollectionValue, destObj); else if (CollectionUtils.isCollection(srcFieldType) && MappingUtils.isSupportedMap(destCollectionType)) { result = mapListToList(srcObj, (List<?>) srcCollectionValue, fieldMap, destObj); else if (CollectionUtils.isCollection(srcFieldType) && CollectionUtils.isList(destCollectionType)) { result = mapListToList(srcObj, (Collection<?>) srcCollectionValue, fieldMap, destObj);
private List<?> mapArrayToList(Object srcObj, Object srcCollectionValue, FieldMap fieldMap, Object destObj) { Class<?> destEntryType; if (fieldMap.getDestHintContainer() != null) { destEntryType = fieldMap.getDestHintContainer().getHint(); } else { destEntryType = srcCollectionValue.getClass().getComponentType(); } List<?> srcValueList; if (CollectionUtils.isPrimitiveArray(srcCollectionValue.getClass())) { srcValueList = CollectionUtils.convertPrimitiveArrayToList(srcCollectionValue); } else { srcValueList = Arrays.asList((Object[]) srcCollectionValue); } return addOrUpdateToList(srcObj, fieldMap, srcValueList, destObj, destEntryType); }
private Object mapArrayToArray(Object srcObj, Object srcCollectionValue, FieldMap fieldMap, Object destObj, Class<?> destEntryType, MappingContext context) { // Class destEntryType = fieldMap.getDestFieldType(destObj.getClass()).getComponentType(); int size = Array.getLength(srcCollectionValue); if (CollectionUtils.isPrimitiveArray(srcCollectionValue.getClass())) { return addToPrimitiveArray(srcObj, fieldMap, size, srcCollectionValue, destObj, destEntryType, context); } else { List<?> list = Arrays.asList((Object[]) srcCollectionValue); List<?> returnList; if (!BASE_CLASS.equals(destEntryType.getName())) { returnList = addOrUpdateToList(srcObj, fieldMap, list, destObj, destEntryType, context); } else { returnList = addOrUpdateToList(srcObj, fieldMap, list, destObj, null, context); } return CollectionUtils.convertListToArray(returnList, (Class) destEntryType); } }
private void mapFromIterateMethodFieldMap(Object srcObj, Object destObj, Object srcFieldValue, FieldMap fieldMapping) { // Iterate over the destFieldValue - iterating is fine unless we are mapping // in the other direction. // Verify that it is truly a collection if it is an iterator object turn it // into a List if (srcFieldValue instanceof Iterator) { srcFieldValue = IteratorUtils.toList((Iterator<?>) srcFieldValue); } if (srcFieldValue != null) { for (int i = 0; i < CollectionUtils.getLengthOfCollection(srcFieldValue); i++) { final Object value = CollectionUtils.getValueFromCollection(srcFieldValue, i); // map this value if (fieldMapping.getDestHintContainer() == null) { MappingUtils.throwMappingException("<field type=\"iterate\"> must have a source or destination type hint"); } Class<?> destinationHint = fieldMapping.getDestHintType(value.getClass()); Object result = mapOrRecurseObject(srcObj, value, destinationHint, fieldMapping, destObj); if (value != null) { writeDestinationValue(destObj, result, fieldMapping, srcObj); } } } if (log.isDebugEnabled()) { log.debug(logMsgFactory.createFieldMappingSuccessMsg(srcObj.getClass(), destObj.getClass(), fieldMapping.getSrcFieldName(), fieldMapping.getDestFieldName(), srcFieldValue, null, fieldMapping.getClassMap().getMapId())); } }
public static int getLengthOfCollection(Object value) { if (isArray(value.getClass())) { return Array.getLength(value); } else { return ((Collection<?>) value).size(); } }
private Object mapListToArray(Object srcObj, Collection<?> srcCollectionValue, FieldMap fieldMap, Object destObj) { Class destEntryType = fieldMap.getDestFieldType(destObj.getClass()).getComponentType(); List list; if (!destEntryType.getName().equals(BASE_CLASS)) { list = addOrUpdateToList(srcObj, fieldMap, srcCollectionValue, destObj, destEntryType); } else { list = addOrUpdateToList(srcObj, fieldMap, srcCollectionValue, destObj); } return CollectionUtils.convertListToArray(list, destEntryType); }
if (CollectionUtils.isArray(srcFieldType) && (CollectionUtils.isArray(destCollectionType))) { result = mapArrayToArray(srcObj, srcCollectionValue, fieldMap, destObj, destCollectionType.getComponentType(), context); } else if (CollectionUtils.isArray(srcFieldType) && (CollectionUtils.isList(destCollectionType))) { result = mapArrayToList(srcObj, srcCollectionValue, fieldMap, destObj, context); else if (CollectionUtils.isList(srcFieldType) && (CollectionUtils.isArray(destCollectionType))) { result = mapListToArray(srcObj, (List<?>) srcCollectionValue, fieldMap, destObj, context); } else if (CollectionUtils.isList(srcFieldType) && (CollectionUtils.isList(destCollectionType))) { result = mapListToList(srcObj, (List<?>) srcCollectionValue, fieldMap, destObj, context); else if (CollectionUtils.isSet(srcFieldType) && CollectionUtils.isArray(destCollectionType)) { result = mapSetToArray(srcObj, (Set<?>) srcCollectionValue, fieldMap, destObj, context); else if (CollectionUtils.isArray(srcFieldType) && CollectionUtils.isSet(destCollectionType)) { result = addToSet(srcObj, fieldMap, Arrays.asList((Object[]) srcCollectionValue), destObj, context); else if (CollectionUtils.isSet(srcFieldType) && CollectionUtils.isList(destCollectionType)) { result = mapListToList(srcObj, (Set<?>) srcCollectionValue, fieldMap, destObj, context); else if (CollectionUtils.isCollection(srcFieldType) && CollectionUtils.isSet(destCollectionType)) { result = addToSet(srcObj, fieldMap, (Collection<?>) srcCollectionValue, destObj, context); else if (CollectionUtils.isCollection(srcFieldType) && MappingUtils.isSupportedMap(destCollectionType)) { result = mapListToList(srcObj, (List<?>) srcCollectionValue, fieldMap, destObj, context);
static List<?> prepareDestinationList(Collection<?> srcCollectionValue, Object field) { if (field == null) { return new ArrayList<Object>(srcCollectionValue.size()); } else { if (CollectionUtils.isList(field.getClass())) { return (List<?>) field; } else if (CollectionUtils.isArray(field.getClass())) { return new ArrayList<Object>(Arrays.asList((Object[]) field)); } else { // assume it is neither - safest way is to create new List return new ArrayList<Object>(srcCollectionValue.size()); } } }
public static boolean isSupportedCollection(Class<?> aClass) { return CollectionUtils.isCollection(aClass) || CollectionUtils.isArray(aClass); }
private List<?> mapArrayToList(Object srcObj, Object srcCollectionValue, FieldMap fieldMap, Object destObj, MappingContext context) { Class<?> destEntryType; if (fieldMap.getDestHintContainer() != null) { destEntryType = fieldMap.getDestHintContainer().getHint(); } else { destEntryType = srcCollectionValue.getClass().getComponentType(); } List<?> srcValueList; if (CollectionUtils.isPrimitiveArray(srcCollectionValue.getClass())) { srcValueList = CollectionUtils.convertPrimitiveArrayToList(srcCollectionValue); } else { srcValueList = Arrays.asList((Object[]) srcCollectionValue); } return addOrUpdateToList(srcObj, fieldMap, srcValueList, destObj, destEntryType, context); }
private Object mapArrayToArray(Object srcObj, Object srcCollectionValue, FieldMap fieldMap, Object destObj, Class<?> destEntryType, MappingContext context) { // Class destEntryType = // fieldMap.getDestFieldType(destObj.getClass()).getComponentType(); int size = Array.getLength(srcCollectionValue); if (CollectionUtils.isPrimitiveArray(srcCollectionValue.getClass())) { return addToPrimitiveArray(srcObj, fieldMap, size, srcCollectionValue, destObj, destEntryType, context); } else { List<?> list = Arrays.asList((Object[]) srcCollectionValue); List<?> returnList; if (!BASE_CLASS.equals(destEntryType.getName())) { returnList = addOrUpdateToList(srcObj, fieldMap, list, destObj, destEntryType, context); } else { returnList = addOrUpdateToList(srcObj, fieldMap, list, destObj, null, context); } return CollectionUtils.convertListToArray(returnList, (Class) destEntryType); } }
for (int i = 0; i < CollectionUtils.getLengthOfCollection(srcFieldValue); i++) { Object value = CollectionUtils.getValueFromCollection(srcFieldValue, i);
public static int getLengthOfCollection(Object value) { if (isArray(value.getClass())) { return Array.getLength(value); } else { return ((Collection<?>) value).size(); } }
private Object mapListToArray(Object srcObj, Collection<?> srcCollectionValue, FieldMap fieldMap, Object destObj, MappingContext context) { Class destEntryType = fieldMap.getDestFieldType(destObj.getClass()).getComponentType(); List list; if (!destEntryType.getName().equals(BASE_CLASS)) { list = addOrUpdateToList(srcObj, fieldMap, srcCollectionValue, destObj, destEntryType, context); } else { list = addOrUpdateToList(srcObj, fieldMap, srcCollectionValue, destObj, context); } return CollectionUtils.convertListToArray(list, destEntryType); }
if (CollectionUtils.isArray(srcFieldType) && (CollectionUtils.isArray(destCollectionType))) { result = mapArrayToArray(srcObj, srcCollectionValue, } else if (CollectionUtils.isArray(srcFieldType) && (CollectionUtils.isList(destCollectionType))) { result = mapArrayToList(srcObj, srcCollectionValue, fieldMap, destObj, context); else if (CollectionUtils.isList(srcFieldType) && (CollectionUtils.isArray(destCollectionType))) { result = mapListToArray(srcObj, (List<?>) srcCollectionValue, fieldMap, destObj, context); } else if (CollectionUtils.isList(srcFieldType) && (CollectionUtils.isList(destCollectionType))) { result = mapListToList(srcObj, (List<?>) srcCollectionValue, fieldMap, destObj, context); else if (CollectionUtils.isSet(srcFieldType) && CollectionUtils.isArray(destCollectionType)) { result = mapSetToArray(srcObj, (Set<?>) srcCollectionValue, fieldMap, destObj, context); else if (CollectionUtils.isArray(srcFieldType) && CollectionUtils.isSet(destCollectionType)) { result = addToSet(srcObj, fieldMap, Arrays.asList((Object[]) srcCollectionValue), destObj, context); else if (CollectionUtils.isSet(srcFieldType) && CollectionUtils.isList(destCollectionType)) { result = mapListToList(srcObj, (Set<?>) srcCollectionValue, fieldMap, destObj, context); else if (CollectionUtils.isCollection(srcFieldType) && CollectionUtils.isSet(destCollectionType)) { result = addToSet(srcObj, fieldMap, (Collection<?>) srcCollectionValue, destObj, context); else if (CollectionUtils.isCollection(srcFieldType) && MappingUtils.isSupportedMap(destCollectionType)) { result = mapListToList(srcObj, (List<?>) srcCollectionValue, fieldMap, destObj, context);