如鵬網(wǎng) 大學(xué)生計(jì)算機(jī)學(xué)習(xí)社區(qū)

          CowNew開源團(tuán)隊(duì)

          http://www.cownew.com 郵件請(qǐng)聯(lián)系 about521 at 163.com

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            363 隨筆 :: 2 文章 :: 808 評(píng)論 :: 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();
          ?}
          }

          然后如下調(diào)用來(lái)初始化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傳遞給其他層進(jìn)行操作,操作完畢,調(diào)用:
          ?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開源團(tuán)隊(duì) 閱讀(958) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 梁山县| 乌兰浩特市| 乌恰县| 许昌县| 遂溪县| 和林格尔县| 黄平县| 洛阳市| 城口县| 赣州市| 晋城| 石狮市| 甘谷县| 西安市| 松江区| 五大连池市| 兴化市| 东丰县| 枣强县| 烟台市| 全南县| 五大连池市| 涿鹿县| 藁城市| 青川县| 巩义市| 芮城县| 景洪市| 古丈县| 广平县| 札达县| 舞阳县| 阳原县| 措美县| 秭归县| 临夏市| 滨海县| 毕节市| 朔州市| 洮南市| 乐平市|