Hello all,

I'm experiencing a weird issue in trying to load documents in XMLBeans.
I'm working with a NetBeans platform application and we use XMLBeans
extensively throughout the application.  This issue is a "first" for me and
I'm not sure how to proceed.

I have an object that stores XML data as a String.  So, elsewhere in my
application, I have something like this:

MyDocument doc = MyDocument.Factory.newInstance();
... // populate stuff here.
String myText = doc.xmlText();

Elsewhere in my application, I want to validate that the String I'm
receiving is indeed a valid instance of that document:

// Shortened for brevity's sake.
public boolean isValid(final String input) {
    try {
        MyDocument.Factory.Parse(input);
        return true;
    } catch (Exception ex) {
    }

    return false;
}

I get this perplexing error:

java.lang.ClassCastException: myPackage.impl.MyDocumentImpl cannot be cast
to myPackage.MyDocument

So, I put the whole thing in a unit test.  I made a document, wrote it to a
String, then parsed it again.  It works in a unit test.  So there must be
something going wrong with the environment in my application.
Unfortunately, I don't know what that is, nor how to troubleshoot.  Here's
what I know:

- The XMLBeans data is in a single module.  There should be no duplicate
classes.
- I checked the ClassLoader of the MyDocument and MyDocumentImpl classes.
They're the same.
- I load/edit/save other XMLBeans documents throughout the application
without issue.
- The string data is stored as child text in another XML element.  This may
be relevant:

String xmlText = myDocument.xmlText();
myOtherElement.setStringValue(xmlText);
...
String textToValidate = myOtherElement.getStringValue();
MyDocument.Factory.Parse(textToValidate);

Could this be mangling the structure?  It looks fine when I log the value.

Anyway, further suggestions would be great.

Michael

Reply via email to