Digester RuleXML 작성법

황제낙엽 2009.01.20 11:43 조회 수 : 66 추천:66

sitelink1  
sitelink2  
sitelink3  
extra_vars4  
extra_vars5  
extra_vars6  


1. env.xml

<?xml version="1.0" encoding="UTF-8"?>  

<Console service-name="ajax-framework" port="8080">  

    <Admin id="admin" pass="test" />  

    <Project>  

        <name>AJAX-TEST</name>  

        <path>ajax-test/</path>  

        <index>main.html</index>  

    </Project>  

    <Resource>  

        <name>Flash</name>  

        <path>resource/flash</path>  

    </Resource>  

</Console>



2. EnvRule.xml

<?xml version="1.0"?>  

<digester-rules>  

       

    <object-create-rule pattern="Console" classname="console.config.ConsoleConfig" />  

       

    <set-properties-rule pattern="Console">  

        <alias attr-name="service-name" prop-name="serviceName" />  

        <alias attr-name="port" prop-name="port" />  

    </set-properties-rule>  

       

    <set-properties-rule pattern="Console/Admin">  

        <alias attr-name="id" prop-name="adminId" />  

        <alias attr-name="pass" prop-name="adminPass" />  

    </set-properties-rule>       

       

    <pattern value="Console/Project">  

        <object-create-rule classname="console.config.ConsoleProject" />  

        <call-method-rule pattern="name" methodname="setName" paramcount="0" />  

        <call-method-rule pattern="path" methodname="setPath" paramcount="0" />  

        <call-method-rule pattern="index" methodname="setIndex" paramcount="0" />  

        <set-next-rule methodname="addProject" />  

   </pattern>  

      

   <pattern value="Console/Resource">  

        <object-create-rule classname="console.config.ConsoleResource" />  

        <call-method-rule pattern="name" methodname="setName" paramcount="0" />  

        <call-method-rule pattern="path" methodname="setPath" paramcount="0" />  

        <set-next-rule methodname="addResource" />  

   </pattern>  

</digester-rules>



3. env.xml 따라가기

1) < console port="8080" service-name="ajax-framework" >
    이 태그를 만나면 먼저 console.config.ConsoleConfig 객체를 생성해야 한다. 
    => < object-create-rule classname="console.config.ConsoleConfig" pattern="Console" / >
    그리고 태그내의 service-name, port 속성값을 취하여 생성한 ConsoleConfig 객체에 셋팅해야 한다.
    => < set-properties-rule pattern="Console" >

2) < admin id=admin pass="test" / >
    이 태그를 만나면 태그내의 id 와 pass 속성값을 취하여 생성한 ConsoleConfig 객체에 셋팅해야 한다.
    => < set-properties-rule pattern="Console/Admin" >

3) < Project >
    이 태그를 만나면 console.config.ConsoleProject 객체를 생성한다.
    => < pattern value="Console/Project" >, < object-create-rule classname="console.config.ConsoleProject" / >
    child 레벨의 name, path, index 값을 취득하여 셋팅한다.
    => < call-method-rule pattern="name" methodname="setName" paramcount="0" / > ...

4) < Resource >
    3)번의 < Project > 와 마찬가지