Fenriswolf 程式筆記

奮利斯狼的地盤,小綿羊勿入

XDoclet 程式產生器 – 自訂 xdt tag

xdoclet tags 分為兩大類

  1. Block Tags : 處理迴圈、判斷式,或更改 tag body 的內容
  2. Content Tags : 輸出資訊


回到上一個例子,產生自定的 spring xml 有兩個問題
1. 為了取得 classes 之間的相依性所以讀取 XXXImpl.java,但是 spring bean names 希望去掉 Impl 字元並把第一個字改小寫,可用 content tag 改變 output
2. DaoImpl 繼承 HibernateDaoSupport ,class 本身並沒有 sessionFactory 屬性可供 xdoclet 判斷是否加入 inject sessionFactory,用 block tag 判斷

接下來就是實作的部分了
1. 寫 tag handler

public class SpringClassTagsHandler extends ClassTagsHandler
{
    public String springBeanName() throws XDocletException
    {
        String beanName = className().replaceAll("Impl", "");
        return Character.toLowerCase(beanName.charAt(0)) + beanName.substring(1);
    }
    
    public void ifIsDao(String template) throws XDocletException
    {
        if (className().indexOf("Dao") >= 0)
        {
            generate(template);
        }
    }
}

為了讀取 class 的資訊故此 tag handler 繼承 ClassTagsHandler
springBeanName() : 輸出自定的格式
ifIsDao(String template) : 判斷式,傳入的 template 是包在 tag 的內容,可自行決定是否輸出

2. 註冊 tag handler
編輯 xdoclet.xml 並加上以下資訊

<taghandler
        namespace="SpringClass"
        class="com.fw.xdoclet.SpringClassTagsHandler" />

namespace : 在 xdt 檔案用到的名稱
class : 上面寫的 tag handler class

3. 建立 xdt template
使用自定 tag 的格式為 XDtnamespace:methodName
XDt 前置字元後面接的是 tag handler 的 namespace,: 後面則為 method name
結果如上一篇所顯示
 
 
執行環境
JDK 1.6.0_03
XDoclet 1.2.3

參考資料
XDoclet
Template Language(xdt)

程式下載
spring_xml.xdt
SpringClassTagsHandler.java
xdoclet.xml
build.xml

廣告

2012/03/19 - Posted by | Java Tool |

仍無迴響。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

%d 位部落客按了讚: