Custom Editor Example : IoC Factory Beans « Spring « Java






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;
    }
}

           
       








CustomEditorExample.zip( 1,477 k)

Related examples in the same category

1.Hierarchical Bean Factory Usage
2.Message Digest Example
3.Method Replacement Example
4.Property Editor Bean
5.Logging Bean Example
6.Accessing Factory Beans