Adding a child to a virtual document and getting error

vittalmareddy
vittalmareddy used Ask the Experts™
on
I tried to add a child XML based content to a XML based virtual content programatically and getting the following error. The child content and virtual content reside in the repository. Any idea why I am getting the following error.
thanks in advance

java.lang.ClassCastException: com.documentum.vdm.impl.AdaptiveNode.

sample code

public boolean checkoutVDM(String docId){
try {
IDfCheckoutOperation coOp = clientx.getCheckoutOperation();
//coOp.setDestinationDirectory("E://aaa/TempArea");
IDfDocument doc = (IDfDocument) session.getObject(new DfId(docId));
IDfCheckoutNode coNode;
if (doc.isVirtualDocument()){
IDfVirtualDocument vDoc = doc.asVirtualDocument( "CURRENT",false);
coNode = (IDfCheckoutNode)coOp.add(vDoc);
} else {
coNode = (IDfCheckoutNode)coOp.add(doc);
}

if (coOp.execute()) {
return true;
} else {
return false;
}
} catch(Exception ex){
ex.printStackTrace();
System.out.println("checkoutVDM Error: " + ex.getLocalizedMessage());
}
return false;

}

public boolean checkinVDM(String docId){
try {
IDfCheckinOperation cio = clientx.getCheckinOperation();
cio.setCheckinVersion(IDfCheckinOperation.NEXT_MAJOR);
cio.setVersionLabels("CURRENT");
IDfDocument doc = (IDfDocument) session.getObject(new DfId(docId));
if (doc.isVirtualDocument()){
IDfVirtualDocument vDoc = doc.asVirtualDocument( "CURRENT",false);
IDfCheckinNode node = (IDfCheckinNode) cio.add(vDoc);
} else{
IDfCheckinNode node = (IDfCheckinNode) cio.add(doc);
}
if (!cio.execute())
{
return false;
}
} catch(Exception ex){
ex.printStackTrace();
System.out.println("checkinVDM Error: " + ex.getLocalizedMessage());
}
return true;
}

public boolean createVDMNode(String parentIdString, String childIdString, String versionLabel, String siblingIdString){

try {
boolean bCheckoutSuccess = checkoutVDM(parentIdString);
if (bCheckoutSuccess) {

IDfVirtualDocument vDoc = null;
IDfId parentIdObject = clientx.getId(parentIdString);
IDfSysObject sysObj = (IDfSysObject) session.getObject(parentIdObject);
if (versionLabel.equals("")) versionLabel = null;
if (sysObj != null){
vDoc = sysObj.asVirtualDocument(null,false);
IDfVirtualDocumentNode root = vDoc.getRootNode();
IDfId childId = session.getIdByQualification("dm_sysobject where r_object_id='" + childIdString + "'");
IDfSysObject childObj = (IDfSysObject) session.getObject(childId);
IDfVirtualDocumentNode siblingNode = null;
if (!siblingIdString.equals(null) & !siblingIdString.equals("")){
IDfId siblingId = session.getIdByQualification("dm_sysobject where r_object_id='" + siblingIdString + "'");
IDfSysObject siblingObj = (IDfSysObject) session.getObject(siblingId);
String siblingChronId = siblingObj.getChronicleId().toString();
siblingNode = vDoc.find(root,siblingChronId,"i_chronicle_id",0);
}
IDfVirtualDocumentNode childVDNode = vDoc.addNode(root, siblingNode, childObj.getChronicleId(), null, false, false);
//vDoc.addNode(root, siblingNode, childObj.getChronicleId(), null, false, false);
boolean bCheckinSuccess = checkinVDM(parentIdString);
if (bCheckinSuccess) {
return true;
} else {
return false;
}
}
}
} catch(Exception ex){
ex.printStackTrace();
System.out.println("checkinVDM Error: " + ex.getLocalizedMessage());
}
return false;
}

Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®

Author

Commented:
Any idea on this issue
Rsulliv1principal solution architect

Commented:
Please post the full stack trace of the error. What line is causing the ClassCastException?

The reason is simply a Casting issue, but let's find out why it's occurring.
Rsulliv1principal solution architect

Commented:
Also, what version of Documentum are you using?
Expert Spotlight: Joe Anderson (DatabaseMX)

We’ve posted a new Expert Spotlight!  Joe Anderson (DatabaseMX) has been on Experts Exchange since 2006. Learn more about this database architect, guitar aficionado, and Microsoft MVP.

Author

Commented:
com.documentum.vdm.impl.AdaptiveNode
      at com.documentum.vdm.impl.VirtualDocument.addNode(VirtualDocument.java:122)
      at com.deloitte.da.cms.ems.utils.AmitTestCls.createVDMNode(AmitTestCls.java:323)
      at com.deloitte.da.cms.ems.utilss.TesTAmitPrj.testAbcd(TesTAmitPrj.java:18)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
      at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
      at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
      at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
      at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
      at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
      at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
      at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
      at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
      at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
      at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
      at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Rsulliv1principal solution architect

Commented:
Are you passing an uninstantiated  object into the insertAfterNode (i.e., siblingNode) parameter?

If you change this line:

IDfVirtualDocumentNode childVDNode = vDoc.addNode(root, siblingNode, childObj.getChronicleId(), null, false, false);

to:

IDfVirtualDocumentNode childVDNode = vDoc.addNode(root, null, childObj.getChronicleId(), null, false, false);

does that work?

Secondly, are you sure that the childObj is populated correctly?

Author

Commented:
Thanks for info, I already verified by pass valide sibilingNode and also null, both cases issue is same.
I also verified with pdf as virtual document and childs components are also pdf with same code it works fine.
my actual requirement is virtual document is xml and child component also xml, this case it is throwing exception as specified.
principal solution architect
Commented:
Are you using a XML Application for this VD? Is the childNode compatible with the chunking logic in that XML Application?

Author

Commented:
we are using xml applicaiton, but now i don't have enviroment to verify XML Application on disabling anverify.

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial