Custom Editor Example
/* Pro Spring By Rob Harrop Jan Machacek ISBN: 1-59059-461-4 Publisher: Apress */ /////////////////////////////////////////////////////////////////////////////////////// //File:custom.xml <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean name="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer"> <property name="customEditors"> <map> <entry key="java.util.regex.Pattern"> <bean class="PatternPropertyEditor"/> </entry> </map> </property> </bean> <bean id="exampleBean" class="CustomEditorExample"> <property name="searchPattern"> <value>(dog|fox)</value> </property> <property name="textToSearch"> <value>The quick brown fox jumped over the lazy dog.</value> </property> </bean> </beans> /////////////////////////////////////////////////////////////////////////////////////// import java.beans.PropertyEditorSupport; import java.util.regex.Pattern; public class PatternPropertyEditor extends PropertyEditorSupport { public void setAsText(String text) throws IllegalArgumentException { Pattern pattern = Pattern.compile(text); setValue(pattern); } } /////////////////////////////////////////////////////////////////////////////////////// import java.util.regex.Matcher; import java.util.regex.Pattern; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.config.CustomEditorConfigurer; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.FileSystemResource; public class CustomEditorExample { private Pattern searchPattern; private String textToSearch; public static void main(String[] args) { ConfigurableListableBeanFactory factory = new XmlBeanFactory( new FileSystemResource("build/custom.xml")); CustomEditorConfigurer config = (CustomEditorConfigurer) factory .getBean("customEditorConfigurer"); config.postProcessBeanFactory(factory); CustomEditorExample bean = (CustomEditorExample) factory .getBean("exampleBean"); System.out.println(bean.getMatchCount()); } public void setSearchPattern(Pattern searchPattern) { this.searchPattern = searchPattern; } public void setTextToSearch(String textToSearch) { this.textToSearch = textToSearch; } public int getMatchCount() { Matcher m = searchPattern.matcher(textToSearch); int count = 0; while (m.find()) { count++; } return count; } }