如鵬網 大學生計算機學習社區

          CowNew開源團隊

          http://www.cownew.com 郵件請聯系 about521 at 163.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks

          public class DTODataChangeInterceptor implements MethodInterceptor, Serializable
          {
          ?private static final String SET = "set";
          ?private Set changedPropSet;
          ?
          ?public DTODataChangeInterceptor()
          ?{
          ??changedPropSet = new HashSet();
          ?}

          ?public Object intercept(Object obj, Method method, Object[] args,
          ???MethodProxy proxy) throws Throwable
          ?{
          ??String name = method.getName();

          ??if (name.startsWith(SET))
          ??{
          ???String s = name.substring(SET.length() - 1);
          ???String propName = StringUtils.firstLowerCase(s);
          ???changedPropSet.add(propName);
          ??}

          ??return proxy.invokeSuper(obj, args);
          ?}
          ?
          ?public Set getChangedPropSet()
          ?{
          ??return Collections.unmodifiableSet(changedPropSet);
          ?}
          ?
          ?public void reset()
          ?{
          ??changedPropSet.clear();
          ?}
          }

          然后如下調用來初始化javaBean

          ??Enhancer enhancer = new Enhancer();
          ??enhancer.setSuperclass(destClass);
          ??enhancer.setCallback(new DTODataChangeInterceptor());
          ??
          ??IValueObject newBean = (IValueObject) enhancer.create();

          ........初始化newBean

          ??DTODataChangeInterceptor interceptor = InterceptorUtils
          //????.getDTODataChangeInterceptor(newBean);
          ??interceptor.reset();

          然后就可以將newBean傳遞給其他層進行操作,操作完畢,調用:
          ?public static DTODataChangeInterceptor getDTODataChangeInterceptor(Object obj)
          ?{
          ??if(!(obj instanceof Factory))
          ??{
          ???return null;
          ??}
          ??Factory f = (Factory)obj;
          ??Callback[] callBacks = f.getCallbacks();
          ??for(int i=0,n=callBacks.length;i<n;i++)
          ??{
          ???Callback callBack = callBacks[i];
          ???if(callBack instanceof DTODataChangeInterceptor)
          ???{
          ????return (DTODataChangeInterceptor)callBack;
          ???}
          ??}
          ??return null;
          ?}
          既可以得到哪些字段變化了。

          ?

          posted on 2006-10-19 01:53 CowNew開源團隊 閱讀(956) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 沂水县| 昭苏县| 东辽县| 偃师市| 鱼台县| 平乡县| 商丘市| 浦东新区| 安乡县| 隆昌县| 平乐县| 汕尾市| 沁阳市| 龙泉市| 依安县| 嘉义县| 葵青区| 大英县| 新安县| 澜沧| 铜川市| 天门市| 双辽市| 营山县| 赣州市| 比如县| 瑞昌市| 资源县| 沽源县| 东平县| 丹寨县| 二连浩特市| 明水县| 莆田市| 株洲县| 民权县| 屏南县| 巨野县| 栖霞市| 泗水县| 忻州市|