if (valueOf != null) {
try {
return CollectionValueOfExtractor.getInstance(
parameter, valueOf, parameterName, defaultValue);
} catch (Exception e) {
throw new ContainerException(ImplMessages.DEFAULT_COULD_NOT_PROCESS_METHOD(defaultValue, valueOf));
}
}
// Check for constructor with String parameter
Constructor constructor = ReflectionHelper.getStringConstructor(c);
if (constructor != null) {
try {
return CollectionStringConstructorExtractor.getInstance(
parameter, constructor, parameterName, defaultValue);
} catch (Exception e) {
throw new ContainerException(ImplMessages.DEFAULT_COULD_NOT_PROCESS_CONSTRUCTOR(defaultValue, constructor));
}
}
}
} else if (parameter == String.class) {
return new StringExtractor(parameterName, defaultValue);
} else if (parameter.isPrimitive()) {
// Convert primitive to wrapper class
parameter = PrimitiveMapper.primitiveToClassMap.get(parameter);
if (parameter == null) {
// Primitive type not supported
return null;
}
// Check for static valueOf(String )
Method valueOf = ReflectionHelper.getValueOfStringMethod(parameter);
if (valueOf != null) {
try {
Object defaultDefaultValue = PrimitiveMapper.primitiveToDefaultValueMap.get(parameter);
return new PrimitiveValueOfExtractor(valueOf, parameterName,
defaultValue, defaultDefaultValue);
} catch (Exception e) {
throw new ContainerException(ImplMessages.DEFAULT_COULD_NOT_PROCESS_METHOD(defaultValue, valueOf));
}
}
} else {
// Check for static valueOf(String )
Method valueOf = ReflectionHelper.getValueOfStringMethod(parameter);
if (valueOf != null) {
try {
return new ValueOfExtractor(valueOf, parameterName, defaultValue);
} catch (Exception e) {
throw new ContainerException(ImplMessages.DEFAULT_COULD_NOT_PROCESS_METHOD(defaultValue, valueOf));
}
}
// Check for constructor with String parameter
Constructor constructor = ReflectionHelper.getStringConstructor(parameter);
if (constructor != null) {
try {
return new StringConstructorExtractor(constructor, parameterName, defaultValue);
} catch (Exception e) {
throw new ContainerException(ImplMessages.DEFAULT_COULD_NOT_PROCESS_CONSTRUCTOR(defaultValue, constructor));
}
}
}
return null;