1 16 package org.springframework.binding.convert.support; 17 18 import org.springframework.binding.convert.ConversionContext; 19 import org.springframework.util.Assert; 20 import org.springframework.util.ClassUtils; 21 import org.springframework.util.StringUtils; 22 23 28 public class TextToClass extends ConversionServiceAwareConverter { 29 30 private static final String ALIAS_PREFIX = "type:"; 31 32 private static final String CLASS_PREFIX = "class:"; 33 34 public Class [] getSourceClasses() { 35 return new Class [] { String .class }; 36 } 37 38 public Class [] getTargetClasses() { 39 return new Class [] { Class .class }; 40 } 41 42 protected Object doConvert(Object source, Class targetClass, ConversionContext context) throws Exception { 43 String text = (String )source; 44 if (StringUtils.hasText(text)) { 45 String classNameOrAlias = text.trim(); 46 if (classNameOrAlias.startsWith(CLASS_PREFIX)) { 47 return ClassUtils.forName(text.substring(CLASS_PREFIX.length())); 48 } 49 else if (classNameOrAlias.startsWith(ALIAS_PREFIX)) { 50 Class clazz = getConversionService().getClassByAlias(text); 51 Assert.notNull(clazz, "No class found associated with type alias '" + classNameOrAlias + "'"); 52 return clazz; 53 } 54 else { 55 if (getConversionService() != null) { 57 Class aliasedClass = getConversionService().getClassByAlias(text); 58 if (aliasedClass != null) { 59 return aliasedClass; 60 } 61 } 62 return ClassUtils.forName(classNameOrAlias); 64 } 65 } 66 else { 67 return null; 68 } 69 } 70 } | Popular Tags |