United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
JDK-5019622 : unmarshaller closes the inputstream it doesn't own

Details
Type:
Enhancement
Submit Date:
2004-03-24
Status:
Closed
Updated Date:
2012-04-25
Project Name:
JDK
Resolved Date:
2004-06-06
Component:
xml
OS:
windows_2000
Sub-Component:
org.xml.sax
CPU:
x86
Priority:
P4
Resolution:
Not an Issue
Affected Versions:
1.0.2
Fixed Versions:

Related Reports

Sub Tasks

Description
Name: gm110360			Date: 03/24/2004


FULL PRODUCT VERSION :


A DESCRIPTION OF THE PROBLEM :
When asking to unmarshal on a given inputstream, the stream gets a call to close(). This should not happen since the unmarshaller did not open the stream
(symetry reason).

For example:

If you open a zipinputstream, and one zipentry is the xml you want to parse,
you have to pass the zipinputstream, but since it gets close(), you can't continue to read other  zip entries.

REPRODUCIBILITY :
This bug can be reproduced always.
(Incident Review ID: 237540) 
======================================================================

                                    

Comments
EVALUATION

This is not a bug.
See the class javadoc of http://www.saxproject.org/apidoc/org/xml/sax/InputSource.html

An XML parser is responsible for closing the stream. Since JAXB uses a parser underneath,
I think the behavior you are seeing is the correct behavior.

The workaround would be to use a FilterInputStream that ignores the close method, as you have
already found.
###@###.### 2004-03-24


As per the request from the submitter, I'm re-opening this and forwarding it to the JAXP team.
Also, since the current behavior is compliant to the specification of SAX, and
the submitter is requesting for a change in the spec, I changed this from a bug to an RFE.
###@###.### 2004-03-26

the latest version of the SAX specification for InputSource states:

"An InputSource object belongs to the application: the SAX parser shall never modify it in any way (it may modify a copy if necessary). However, standard processing of both byte and character streams is to close them on as part of end-of-parse cleanup, so applications should not attempt to re-use such streams after they have been handed to a parser."

if this behavior needs to be changed, it must go through the SAX community:

    http://www.saxproject.org/

as JAXP uses SAX as is in standard form, this bug is being closed.
any modifications made to SAX will be picked up by JAXP.
###@###.### 2004-06-06
                                     
2004-06-06



Hardware and Software, Engineered to Work Together