Reorganize how configuration is loaded, add UUID/String Converters.

This commit is contained in:
Jon Brisbin
2012-05-07 10:26:27 -05:00
parent 61170d8b43
commit e44506c4e0
13 changed files with 341 additions and 238 deletions

View File

@@ -0,0 +1,71 @@
package org.springframework.data.rest.core.convert;
import java.util.Stack;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.ConverterNotFoundException;
import org.springframework.core.convert.TypeDescriptor;
/**
* @author Jon Brisbin <jbrisbin@vmware.com>
*/
public class DelegatingConversionService implements ConversionService {
private Stack<ConversionService> conversionServices = new Stack<ConversionService>();
public DelegatingConversionService() {
}
public DelegatingConversionService(ConversionService... svcs) {
addConversionServices(svcs);
}
public DelegatingConversionService addConversionServices(ConversionService... svcs) {
for (ConversionService svc : svcs) {
conversionServices.add(svc);
}
return this;
}
public DelegatingConversionService addConversionService(int atIndex, ConversionService svc) {
conversionServices.add(atIndex, svc);
return this;
}
@Override public boolean canConvert(Class<?> from, Class<?> to) {
for (ConversionService svc : conversionServices) {
if (svc.canConvert(from, to)) {
return true;
}
}
return false;
}
@Override public boolean canConvert(TypeDescriptor from, TypeDescriptor to) {
for (ConversionService svc : conversionServices) {
if (svc.canConvert(from, to)) {
return true;
}
}
return false;
}
@Override public <T> T convert(Object o, Class<T> type) {
for (ConversionService svc : conversionServices) {
if (svc.canConvert(o.getClass(), type)) {
return svc.convert(o, type);
}
}
throw new ConverterNotFoundException(TypeDescriptor.forObject(o), TypeDescriptor.valueOf(type));
}
@Override public Object convert(Object o, TypeDescriptor from, TypeDescriptor to) {
for (ConversionService svc : conversionServices) {
if (svc.canConvert(from, to)) {
return svc.convert(o, from, to);
}
}
throw new ConverterNotFoundException(from, to);
}
}

View File

@@ -0,0 +1,14 @@
package org.springframework.data.rest.core.convert;
import java.util.UUID;
import org.springframework.core.convert.converter.Converter;
/**
* @author Jon Brisbin <jbrisbin@vmware.com>
*/
public class StringToUUIDConverter implements Converter<String, UUID> {
@Override public UUID convert(String s) {
return (null != s ? UUID.fromString(s) : null);
}
}

View File

@@ -0,0 +1,14 @@
package org.springframework.data.rest.core.convert;
import java.util.UUID;
import org.springframework.core.convert.converter.Converter;
/**
* @author Jon Brisbin <jbrisbin@vmware.com>
*/
public class UUIDToStringConverter implements Converter<UUID, String> {
@Override public String convert(UUID uuid) {
return (null != uuid ? uuid.toString() : null);
}
}