try {
return CollectionExtractor.getInstance(rawType, converter, parameterName, defaultValue);
} catch (ExtractorException e) {
throw e;
} catch (Exception e) {
throw new ProcessingException("Could not process parameter type " + rawType, e);
}
}
}
final ParamConverter<?> converter = paramConverterFactory.getConverter(rawType, type, annotations);
if (converter != null) {
try {
return new SingleValueExtractor(converter, parameterName, defaultValue);
} catch (ExtractorException e) {
throw e;
} catch (Exception e) {
throw new ProcessingException("Could not process parameter type " + rawType, e);
}
}
if (rawType == String.class) {
return new SingleStringValueExtractor(parameterName, defaultValue);
} else if (rawType.isPrimitive()) {
// Convert primitive to wrapper class
rawType = PrimitiveMapper.primitiveToClassMap.get(rawType);
if (rawType == null) {
// Primitive type not supported
return null;
}
// Check for static valueOf(String )
Method valueOf = AccessController.doPrivileged(ReflectionHelper.getValueOfStringMethodPA(rawType));
if (valueOf != null) {
try {
Object defaultDefaultValue = PrimitiveMapper.primitiveToDefaultValueMap.get(rawType);
return new PrimitiveValueOfExtractor(valueOf, parameterName, defaultValue, defaultDefaultValue);
} catch (Exception e) {
throw new ProcessingException(LocalizationMessages.DEFAULT_COULD_NOT_PROCESS_METHOD(defaultValue, valueOf));
}
}
}