快速业务通道

使用CMP2和XML处理动态数值对象 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
for(int i = 0;i < properties.length;i++) { 取得属性读取方法。 Method propReadMethod = properties[i].getReadMethod(); 取得属性名称。 String propName = properties[i].getName(); 使用映射取得属性值。 Object prop = propReadMethod.invoke(local, null); 跳过保留属性。 if(RESERVED.indexOf(propName) >= 0) continue;    try { 尝试把属性强制转化为EJB局部引用。请注意你不能使用instanceof,因 为从容器到容器使用instanceof,实现可能有差异。 EJBLocalObject locProp = (EJBLocalObject)prop; 如果局部引用已经在连接引用的列表中可用或者当前的drilldown深度 已经大于设置的drilldown深度那么就跳出处理过程。 if(isCircularRef(locProp) || _currentDepth >= drillDownDepth) continue; 由属性创建一个元素。 Element child = doc.createElement(propName); populateElement(child, locProp); 把新创建的子元素添加到父元素中。 parent.appendChild(child);    }catch(ClassCastException ex1) {    如果抛出一个ClassCastException,就要试着把属性强制转换成Collection 局部引用类型。请注意你不能使用instanceof,因为从容器到容器使用 instanceof,实现可能有差异。 try {    Collection colProp = (Collection)prop;    如果当前的drilldown深度大于设置的drilldown深度,跳出处理。 if(_currentDepth >= drillDownDepth) continue; 创建一个压缩collection的子元素。 Element child = doc.createElement(propName); Iterator it = colProp.iterator();    while(it.hasNext()) {    得到collection中的每个局部引用。 EJBLocalObject locProp = (EJBLocalObject)it.next(); 如果局部引用已经在连接引用的列表中可用或者当前的drilldown深度 已经大于设置的drilldown深度那么就跳出处理过程。 if(isCircularRef(locProp)) continue; 创建一个能包含用于这个collection中当前的局部引用持久性与关系信 息的元素,然后把它添加到表现这个collection的元素中。 Element grandChild = doc.createElement(propName + "-child");    child.appendChild(grandChild);    populateElement(grandChild, locProp);    } parent.appendChild(child);    }catch(ClassCastException ex2) {    如果抛出一个ClassCastException的话,属性是一个持久性域并且要把它 的值添加为当前节点的值。 parent.setAttribute(propName, prop.toString()); }    }    } 从列表中移走当前的局部引用。 _circularRef.remove(local); 递减当前的drilldown深度。 _currentDepth--;    } 这是一个公用程序方法,用来检查一个引用是否已经在连接引用列表 中。 private boolean isCircularRef(EJBLocalObject local) {    Iterator it = _circularRef.iterator(); while(it.hasNext()) if(local.isIdentical((EJBLocalObject)it.next())) return true; return false;    }    }

使用CMP2和XML处理动态数值对象(3)

时间:2010-12-21

下面的代码片断演示如何使用这个类:

User local = userHome.findByPrimaryKey("1"); return new DOMGenerator("user", 4).getDOM(local); 下面演示的这段生成的DOM取决于你的实体模型∶ <?xml version="1.0" encoding="UTF-8"?> <user firstName="Wayne" id="1" lastName="Zheng">    <requests> quests-child description="Outlook not working" id="2" status="P"> <product description=

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号