You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xmlbeans.apache.org by "Yana Kadiyska (JIRA)" <xm...@xml.apache.org> on 2005/02/10 23:46:15 UTC
[jira] Resolved: (XMLBEANS-84) Cannot run XmlObject.selectPath using Jaxen in multi threaded environment
[ http://issues.apache.org/jira/browse/XMLBEANS-84?page=history ]
Yana Kadiyska resolved XMLBEANS-84:
-----------------------------------
Resolution: Fixed
Fix Version: Version 2 Beta 1
Issue is resolved in V2...Fix will made to V1(likely an involved bug) unless there is a user request to do so...
> Cannot run XmlObject.selectPath using Jaxen in multi threaded environment
> -------------------------------------------------------------------------
>
> Key: XMLBEANS-84
> URL: http://issues.apache.org/jira/browse/XMLBEANS-84
> Project: XMLBeans
> Type: Bug
> Components: XPath
> Versions: Version 1.0.3
> Environment: Win2k, JDK 1.4.2_06
> Reporter: Venkat Sonnathi
> Assignee: Yana Kadiyska
> Priority: Minor
> Fix For: Version 2 Beta 1
> Attachments: XmlObjectTest.java, resultItem.xml
>
> Whe using complex XPATH which fires Jaxen under the covers is causing problems in Multithreaded environment. The following stack trace:
> C:\j2sdk1.4.2\bin\java -Didea.launcher.port=7543 -Didea.launcher.library=C:\IntelliJ-EAP\bin\breakgen.dll -Dfile.encoding=windows-1252 -classpath C:\j2sdk1.4.2\jre\lib\charsets.jar;C:\j2sdk1.4.2\jre\lib\jce.jar;C:\j2sdk1.4.2\jre\lib\jsse.jar;C:\j2sdk1.4.2\jre\lib\plugin.jar;C:\j2sdk1.4.2\jre\lib\rt.jar;C:\j2sdk1.4.2\jre\lib\sunrsasign.jar;C:\j2sdk1.4.2\jre\lib\ext\dnsns.jar;C:\j2sdk1.4.2\jre\lib\ext\ldapsec.jar;C:\j2sdk1.4.2\jre\lib\ext\localedata.jar;C:\j2sdk1.4.2\jre\lib\ext\sunjce_provider.jar;D:\GOLD\test\application\classes;D:\GOLD\application\classes;C:\src\IdeaProjects\GOLD\extlib\sun\jars\mail-1.3.1.jar;C:\src\IdeaProjects\GOLD\extlib\sun\jars\activation-1.0.2.jar;D:\GOLD\common\classes;C:\src\IdeaProjects\GOLD\extlib\commons-beanutils\jars\commons-beanutils-1.6.jar;C:\src\IdeaProjects\GOLD\extlib\commons-collections\jars\commons-collections-2.1.jar;C:\src\IdeaProjects\GOLD\extlib\commons-lang\jars\commons-lang-2.0.jar;C:\src\IdeaProjects\GOLD\extlib\ehcache\jars\ehcache-0.7.jar;C:\src\IdeaProjects\GOLD\extlib\GOLD\jars\abc-clio-1.0-SNAPSHOT.jar;C:\src\IdeaProjects\GOLD\extlib\GOLD\jars\helpxmlbeans-1.0-SNAPSHOT.jar;C:\src\IdeaProjects\GOLD\extlib\GOLD\jars\hitsxmlbeans-1.0-SNAPSHOT.jar;C:\src\IdeaProjects\GOLD\extlib\GOLD\jars\pregoldxmlbeans-1.0-SNAPSHOT.jar;C:\src\IdeaProjects\GOLD\extlib\GOLD\jars\productconfig-1.0-SNAPSHOT.jar;C:\src\IdeaProjects\GOLD\extlib\jfig\jars\jfig-1.2.jar;C:\src\IdeaProjects\GOLD\extlib\junit\jars\junit-3.8.1.jar;C:\src\IdeaProjects\GOLD\extlib\log4j\jars\log4j-1.2.8.jar;C:\src\IdeaProjects\GOLD\extlib\mockobjects\jars\mockobjects-0.9.1.jar;C:\src\IdeaProjects\GOLD\extlib\mockobjects\jars\mockobjects-jdk1.3-j2ee1.3-0.09.jar;C:\src\IdeaProjects\GOLD\extlib\xerces\jars\xercesImpl-2.5.jar;C:\src\IdeaProjects\GOLD\extlib\xerces\jars\xmlParserAPIs-2.2.jar;C:\src\IdeaProjects\GOLD\extlib\commons-logging\jars\commons-logging-1.0.3.jar;C:\src\IdeaProjects\GOLD\extlib\sybase\jars\jconn2-5.5.jar;C:\src\IdeaProjects\GOLD\extlib\xml-beans\jars\xbean-1.0.3.jar;C:\src\IdeaProjects\GOLD\extlib\xml-beans\jars\xbean_xpath-1.0.3.jar;C:\src\jaxen\target\jaxen-1.1-beta-4.jar;C:\apps\googleapi\googleapi.jar;C:\Ice-1.5.1\lib\Ice.jar;C:\tomcat-5.0.27\common\lib\commons-dbcp-1.2.1.jar;C:\tomcat-5.0.27\common\lib\commons-pool-1.2.jar;C:\IntelliJ-EAP\lib\idea_rt.jar com.intellij.rt.execution.application.AppMain com.XmlObjectTest
> Thread:Thread: [0]
> java.lang.IllegalStateException: Cursor has been disposed
> at org.apache.xmlbeans.impl.store.Cursor.checkDisposed(Cursor.java:116)
> at org.apache.xmlbeans.impl.store.Cursor.checkDisposed(Cursor.java:110)
> at org.apache.xmlbeans.impl.store.Cursor.toBookmark(Cursor.java:255)
> at org.apache.xmlbeans.XmlCursor$XmlBookmark.toBookmark(XmlCursor.java:1312)
> at org.apache.xmlbeans.impl.xpath.jaxen.XBeansNavigator.getChildAxisIterator(XBeansNavigator.java:387)
> at org.jaxen.expr.iter.IterableChildAxis.iterator(IterableChildAxis.java:79)
> at org.jaxen.expr.DefaultStep.axisIterator(DefaultStep.java:137)
> at org.jaxen.expr.DefaultNameStep.evaluate(DefaultNameStep.java:201)
> at org.jaxen.expr.DefaultLocationPath.evaluate(DefaultLocationPath.java:151)
> at org.jaxen.expr.DefaultXPathExpr.asList(DefaultXPathExpr.java:107)
> at org.jaxen.BaseXPath.selectNodesForContext(BaseXPath.java:715)
> at org.jaxen.BaseXPath.selectNodes(BaseXPath.java:244)
> at org.apache.xmlbeans.impl.xpath.jaxen.XBeansXPathAdv.selectNodes(XBeansXPathAdv.java:76)
> at org.apache.xmlbeans.impl.xpath.jaxen.XBeansXPathAdv.selectPath(XBeansXPathAdv.java:83)
> at org.apache.xmlbeans.impl.store.Path$JaxenPathImpl$JaxenPathEngine.next(Path.java:536)
> at org.apache.xmlbeans.impl.store.Cursor$Selections.setCursor(Cursor.java:3260)
> at org.apache.xmlbeans.impl.store.Cursor.selectPath(Cursor.java:2903)
> at org.apache.xmlbeans.impl.values.XmlObjectBase.selectPath(XmlObjectBase.java:396)
> at org.apache.xmlbeans.impl.values.XmlObjectBase.selectPath(XmlObjectBase.java:380)
> at com.XmlObjectTest.fetchDocumentTypeFromCitation(XmlObjectTest.java:101)
> at com.XmlObjectTest.runTest(XmlObjectTest.java:90)
> at com.XmlObjectTest.access$000(XmlObjectTest.java:37)
> at com.XmlObjectTest$TestThread.run(XmlObjectTest.java:76)
> Thread: [1] => documentType = Article
> Thread: [0] => documentType = null
> Process finished with exit code 0
> Test program:
> /**
> * XmlObjectTest.java
> * Version : GOLD 0.1
> *
> * Copyright 2004,
> * by The Gale Group
> * 27500 Drake Rd.
> * Farmington Hills, MI 48331-3535
> * Telephone (248) 699-4253
> *
> * This code is the sole property of The Gale Group and is protected by
> * copyright under the laws of the United States. This program is
> * confidential, proprietary, and a trade secret, not to be disclosed
> * without written authorization from The Gale Group. Any use,
> * duplication, or disclosure of this program by other than
> * The Gale Group and its assigned licensees is strictly forbidden by law.
> *
> * All rights reserved.
> */
> package com;
> import org.apache.xmlbeans.XmlObject;
> import org.apache.xmlbeans.XmlException;
> import org.apache.xmlbeans.impl.values.XmlObjectBase;
> import java.io.FileReader;
> import java.io.File;
> import java.io.FileNotFoundException;
> import java.io.IOException;
> /**
> * The <code>XmlObjectTest </code>
> *
> * @author Venkat Ramana Sonnathi (HTC Global Svc. Inc.)
> * @version 1.0
> */
> public class XmlObjectTest {
> public static void main(String[] args) throws XmlException, IOException, InterruptedException {
> for(int i=0 ; i < 2 ; ++i) {
> TestThread mythread = new TestThread("Thread: [" + i + "]");
> mythread.start();
> }
> }
> public static class TestThread extends Thread {
> /**
> * Allocates a new <code>Thread</code> object. This constructor has
> * the same effect as <code>Thread(null, null, name)</code>.
> *
> * @param name the name of the new thread.
> * @see Thread#Thread(ThreadGroup,
> * Runnable, String)
> */
> public TestThread(String name) {
> super(name);
> }
> /**
> * If this thread was constructed using a separate
> * <code>Runnable</code> run object, then that
> * <code>Runnable</code> object's <code>run</code> method is called;
> * otherwise, this method does nothing and returns.
> * <p/>
> * Subclasses of <code>Thread</code> should override this method.
> *
> * @see Thread#start()
> * @see Thread#stop()
> * @see Thread#Thread(ThreadGroup,
> * Runnable, String)
> * @see Runnable#run()
> */
> public void run() {
> XmlObjectTest.runTest(getName());
> }
> }
> private static void runTest(String name) {
> XmlObject result = null;
> try {
> result = XmlObject.Factory.parse(new FileReader(new File("resultItem.xml")));
> } catch (XmlException e) {
> e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
> } catch (IOException e) {
> e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
> }
> String documentType = fetchDocumentTypeFromCitation(result, "FIELD[@NAME='DT']");
> System.out.println(name + " => documentType = " + documentType);
> //To change body of created methods use File | Settings | File Templates.
> }
> private static String fetchDocumentTypeFromCitation(XmlObject xmlObject, String xpathForDocType) {
> try {
> XmlObject[] docTypeArr = null;
> if (xpathForDocType != null) {
> docTypeArr = xmlObject.selectPath("CB/CD/" + xpathForDocType);
> if (docTypeArr.length > 0) {
> return ((XmlObjectBase) docTypeArr[0]).getStringValue();
> }
> }
> docTypeArr = xmlObject.selectPath("CB/CD/RECTYPE");
> String docType = (docTypeArr.length > 0) ? ((XmlObjectBase) docTypeArr[0]).getStringValue() : null;
> return docType;
> } catch (Exception e) {
> System.out.println("Thread:"+ Thread.currentThread().getName());
> e.printStackTrace();
> }
> return null;
> }
> }
> Sample xml file:
> <?xml version="1.0" encoding="UTF-8"?>
> <CB>
> <CI>1</CI>
> <CM>N</CM>
> <CV>N</CV>
> <CFT>N</CFT>
> <CEFT>N</CEFT>
> <CFA>N</CFA>
> <CFI>N</CFI>
> <CFEI>N</CFEI>
> <CEMAIL>N</CEMAIL>
> <L2H>B</L2H>
> <CFN>N</CFN>
> <CJ>7010</CJ>
> <CN>CX3411000020</CN>
> <RT>46</RT>
> <CP>X</CP>
> <CD>
> <RECTYPE>EBKS</RECTYPE>
> <VERSION>FMT BUILD G_1_00_00_006 10/30/2004</VERSION>
> <TABLE>gold_cita_ebks.fmt 09-Oct-2004</TABLE>
> <FIELD NAME="AL">Middle School</FIELD>
> <FIELD NAME="BA">0PHX</FIELD>
> <FIELD NAME="BE">Baker, Lawrence W.</FIELD>
> <FIELD NAME="BE">Hillstrom, Kevin</FIELD>
> <FIELD NAME="BE">Hillstrom, Laurie Collier</FIELD>
> <FIELD NAME="BE">Carnagie, Julie L.</FIELD>
> <FIELD NAME="BU">Lawrence W. Baker</FIELD>
> <FIELD NAME="BU">Kevin Hillstrom</FIELD>
> <FIELD NAME="BU">Laurie Collier Hillstrom</FIELD>
> <FIELD NAME="BU">Julie L. Carnagie</FIELD>
> <FIELD NAME="CB">French and Indian War</FIELD>
> <FIELD NAME="CG">
> <I>French and Indian War</I>
> . Lawrence W. Baker, Kevin Hillstrom, Laurie Collier Hillstrom, and Julie L. Carnagie, eds. Vol. 1. Detroit: U*X*L, 2003.
> </FIELD>
> <FIELD NAME="DT">Article</FIELD>
> <FIELD NAME="EB">0-7876-9158-5</FIELD>
> <FIELD NAME="EI">0787691585</FIELD>
> <FIELD NAME="FL">fiw_01_00020.xml</FIELD>
> <FIELD NAME="IB">0-7876-6560-6</FIELD>
> <FIELD NAME="IL">Yes</FIELD>
> <FIELD NAME="IP">00119</FIELD>
> <FIELD NAME="IX">UXL</FIELD>
> <FIELD NAME="LA">English</FIELD>
> <FIELD NAME="LP">Detroit</FIELD>
> <FIELD NAME="MG">bookitem</FIELD>
> <FIELD NAME="PB">U*X*L</FIELD>
> <FIELD NAME="PC">
> <b>King George II</b>
> . .
> </FIELD>
> <FIELD NAME="PC">
> <b>John Stuart, third earl of Bute</b>
> .
> <i>Reproduced by permission of</i>
> .
> </FIELD>
> <FIELD NAME="PC">
> <b>Lieutenant Colonel George Croghan</b>
> .
> <i>Reproduced by permission of</i>
> .
> </FIELD>
> <FIELD NAME="PF">Jan 1, 2003</FIELD>
> <FIELD NAME="SC">
> <I>French and Indian War</I>
> . Vol. 1. U*X*L, 2003.
> </FIELD>
> <FIELD NAME="SH">History</FIELD>
> <FIELD NAME="SO">French and Indian War</FIELD>
> <FIELD NAME="SV">0001</FIELD>
> <FIELD NAME="TB">French and Indian War |9999|2003|0787691585</FIELD>
> <FIELD NAME="TD">1760-62: The War Continues in Europe</FIELD>
> <FIELD NAME="TE">1760-62: The War Continues in Europe</FIELD>
> <FIELD NAME="TG">9</FIELD>
> <FIELD NAME="TY">Topic Overview</FIELD>
> <FIELD NAME="UZ">FIW</FIELD>
> <FIELD NAME="XZ">1760-62: The War Continues in Europe</FIELD>
> <FIELD NAME="YC">2003</FIELD>
> <FIELD NAME="ZA">fiw_01_00119-p.pdf</FIELD>
> <FIELD NAME="ZB">fiw_01_00127-p.pdf</FIELD>
> <FIELD NAME="ZZ">CX3411000020</FIELD>
> <FIELD NAME="GI">Yes</FIELD>
> </CD>
> </CB>
--
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
-
If you want more information on JIRA, or have a bug to report 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