in broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java [632:749]
static <X> AttributeValueConverter<X> getConverter(final Class<X> type, final Type returnType)
{
if(type == String.class)
{
return (AttributeValueConverter<X>) STRING_CONVERTER;
}
else if(type == Integer.class)
{
return (AttributeValueConverter<X>) INT_CONVERTER;
}
else if(type == Short.class)
{
return (AttributeValueConverter<X>) SHORT_CONVERTER;
}
else if(type == Long.class)
{
return (AttributeValueConverter<X>) LONG_CONVERTER;
}
else if(type == Double.class)
{
return (AttributeValueConverter<X>) DOUBLE_CONVERTER;
}
else if(type == Boolean.class)
{
return (AttributeValueConverter<X>) BOOLEAN_CONVERTER;
}
else if(type == Date.class)
{
return (AttributeValueConverter<X>) DATE_CONVERTER;
}
else if(type == UUID.class)
{
return (AttributeValueConverter<X>) UUID_CONVERTER;
}
else if(type == URI.class)
{
return (AttributeValueConverter<X>) URI_CONVERTER;
}
else if(type == byte[].class)
{
return (AttributeValueConverter<X>) BINARY_CONVERTER;
}
else if(Certificate.class.isAssignableFrom(type))
{
return (AttributeValueConverter<X>) CERTIFICATE_CONVERTER;
}
else if(Enum.class.isAssignableFrom(type))
{
return (AttributeValueConverter<X>) new EnumConverter((Class<? extends Enum>)type);
}
else if(List.class.isAssignableFrom(type))
{
if (returnType instanceof ParameterizedType)
{
Type parameterizedType = ((ParameterizedType) returnType).getActualTypeArguments()[0];
return (AttributeValueConverter<X>) new GenericListConverter(parameterizedType);
}
else
{
return (AttributeValueConverter<X>) LIST_CONVERTER;
}
}
else if(Set.class.isAssignableFrom(type))
{
if (returnType instanceof ParameterizedType)
{
Type parameterizedType = ((ParameterizedType) returnType).getActualTypeArguments()[0];
return (AttributeValueConverter<X>) new GenericSetConverter(parameterizedType);
}
else
{
return (AttributeValueConverter<X>) SET_CONVERTER;
}
}
else if(Map.class.isAssignableFrom(type))
{
if(returnType instanceof ParameterizedType)
{
Type keyType = ((ParameterizedType) returnType).getActualTypeArguments()[0];
Type valueType = ((ParameterizedType) returnType).getActualTypeArguments()[1];
return (AttributeValueConverter<X>) new GenericMapConverter(keyType,valueType);
}
else
{
return (AttributeValueConverter<X>) MAP_CONVERTER;
}
}
else if(Collection.class.isAssignableFrom(type))
{
if (returnType instanceof ParameterizedType)
{
Type parameterizedType = ((ParameterizedType) returnType).getActualTypeArguments()[0];
return (AttributeValueConverter<X>) new GenericCollectionConverter(parameterizedType);
}
else
{
return (AttributeValueConverter<X>) COLLECTION_CONVERTER;
}
}
else if(Principal.class.isAssignableFrom(type))
{
return (AttributeValueConverter<X>) PRINCIPAL_CONVERTER;
}
else if(ConfiguredObject.class.isAssignableFrom(type))
{
return (AttributeValueConverter<X>) new ConfiguredObjectConverter(type);
}
else if(ManagedAttributeValue.class.isAssignableFrom(type))
{
return (AttributeValueConverter<X>) new ManageableAttributeTypeConverter(type);
}
else if(Object.class == type)
{
return (AttributeValueConverter<X>) OBJECT_CONVERTER;
}
throw new IllegalArgumentException("Cannot create attribute converter of type " + type.getName());
}