使用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下面的代码片断演示如何使用这个类:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于使用CMP2和XML处理动态数值对象 - 编程入门网的所有评论