You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xmlbeans.apache.org by "James Couball (JIRA)" <xm...@xml.apache.org> on 2005/09/13 04:28:32 UTC
[jira] Commented: (XMLBEANS-199) Make XmlObject.changeType Work For non-document Types
[ http://issues.apache.org/jira/browse/XMLBEANS-199?page=comments#action_12323304 ]
James Couball commented on XMLBEANS-199:
----------------------------------------
Here is the original email from the xml beans user list the prompted me to write this ticket:
Subject: RE: Problem Using changeType On execQuery Result
From: Yana Kadiyska <yk...@bea.com>
Date: Monday, September 12, 2005 18:31:11
To: user@xmlbeans.apache.org; James Couball <jc...@yahoo.com>
Hi James,
changeType only works successfully if AddressType is a document type. Currently, there is no way to type an XQuery result if the type of the element returned is not a document type. It's obviously a serious limitation and we're aware of it...you can open a bug in Jira for tracking purposes.
-----Original Message-----
From: James Couball [mailto:jcouball@yahoo.com]
Sent: Monday, September 12, 2005 5:38 PM
To: user@xmlbeans.apache.org
Subject: Problem Using changeType On execQuery Result
I am trying to read the result of an execQuery. My xml document (give at the end of this email) gives test data (namely what accounts are used for each test). I have written an xquery expression to figure out the account ids to use for each test.
Here is the code I am trying to get to work:
TestDataDocument testDataDocument = TestDataDocument.Factory.parse(new File("aws-test-data.xml"));
String queryExpression =
"declare namespace aws='http://test.aws.couball/data'; "+
"for $a in /aws:test-data/aws:tests/aws:test[@name='Test1']/aws:accountref/@name "+
"return /aws:test-data/aws:accounts/aws:account[@name=$a]";
XmlObject[] xmlObjects = (XmlObject[]) testDataDocument.execQuery(queryExpression);
log.debug("xmlObjects.length="+xmlObjects.length);
for (XmlObject xmlObject : xmlObjects) {
log.debug(xmlObject.getClass().getName());
AccountType account = (AccountType) xmlObject.changeType(AccountType.type);
log.debug(account.getClass().getName());
log.debug("account.getId()="+account.getId()+", account.getName()="+account.getName());
}
I believe that I am getting the right data selected in the xquery expression since I can use a cursor from each xmlObject and traverse to see all the nodes I expect. The problem is with utilizing changeType. The account object in my sample always returns null for getId() and getName(). AccountType is a generated xmlbeans object from my schema. Am I missing something here with .changeType? Or am I on the wrong track. Any advice would be appreciated.
Here is the log output I receive when running this snippet:
2005-09-12 17:30:35,785 [main] DEBUG couball.aws.test.CheckCategoriesTest -
xmlObjects.length=2
2005-09-12 17:30:35,785 [main] DEBUG couball.aws.test.CheckCategoriesTest -
xmlObject.getClass().getName()=org.apache.xmlbeans.impl.values.XmlAnyTypeImpl
2005-09-12 17:30:35,785 [main] DEBUG couball.aws.test.CheckCategoriesTest -
account.getClass().getName()=couball.aws.test.data.impl.AccountTypeImpl
2005-09-12 17:30:35,785 [main] DEBUG couball.aws.test.CheckCategoriesTest -
account.getId()=null, account.getName()=null
2005-09-12 17:30:35,785 [main] DEBUG couball.aws.test.CheckCategoriesTest -
xmlObject.getClass().getName()=org.apache.xmlbeans.impl.values.XmlAnyTypeImpl
2005-09-12 17:30:35,785 [main] DEBUG couball.aws.test.CheckCategoriesTest -
account.getClass().getName()=couball.aws.test.data.impl.AccountTypeImpl
2005-09-12 17:30:35,785 [main] DEBUG couball.aws.test.CheckCategoriesTest -
account.getId()=null, account.getName()=null
The XML:
<?xml version="1.0" encoding="UTF-8"?>
<tests>
<test name="Test1">
<accountref name="Account1"/>
<accountref name="Account2"/>
</test>
<test name="Test2">
<accountref name="Account2"/>
<accountref name="Account4"/>
</test>
<test name="Test4">
<accountref name="Account6"/>
<accountref name="Account7"/>
<accountref name="Account8"/>
<accountref name="Account9"/>
</test>
<test name="Test4"/>
<test name="Test5"/>
</tests>
<accounts>
<account name="Account1" id="19a2921138"/>
<account name="Account2" id="1142344365"/>
<account name="Account3" id="16r5y73980"/>
<account name="Account4" id="36fdf57a70"/>
<account name="Account5" id="1940594337"/>
<account name="Account6" id="387a77fda4"/>
<account name="Account7" id="02300s7168"/>
<account name="Account8" id="11k0131113"/>
<account name="Account9" id="252594ae50"/>
</accounts>
</test-data>
> Make XmlObject.changeType Work For non-document Types
> -----------------------------------------------------
>
> Key: XMLBEANS-199
> URL: http://issues.apache.org/jira/browse/XMLBEANS-199
> Project: XMLBeans
> Type: Bug
> Components: XmlObject
> Versions: Version 2
> Environment: N/A
> Reporter: James Couball
>
> Currently, XmlObject.changeType only works if the object it is performed on is a document type. Please make it work for non-document types too.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: dev-help@xmlbeans.apache.org