Link to home
Start Free TrialLog in
Avatar of vittalmareddy
vittalmareddy

asked on

Adding a child to a virtual document and getting error

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;
}

Avatar of vittalmareddy
vittalmareddy

ASKER

Any idea on this issue
Avatar of Rsulliv1
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.
Also, what version of Documentum are you using?
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)
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?
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.
ASKER CERTIFIED SOLUTION
Avatar of Rsulliv1
Rsulliv1
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
we are using xml applicaiton, but now i don't have enviroment to verify XML Application on disabling anverify.