Re: [xsl] xalan-j2 D7: StreamSource cannot be kept?

Subject: Re: [xsl] xalan-j2 D7: StreamSource cannot be kept?
From: Scott_Boag@xxxxxxxxx
Date: Thu, 9 Aug 2001 16:43:50 -0400
> I assume that by doing it this way the StreamSource gets closed
> automatically?

Yes, if Xalan opens the stream, we will manage it.  In fact, if you pass in
a URL, we will create a new stream every time, and close it afterwards.

Myriam meant that, if you are creating a StreamSource by passing in a
java.io.InputStream, it's up to you to manage it.

So:

    // Create a transformer for the stylesheet.
    Transformer transformer = tfactory.newTransformer(xslSource);

    InputStream xmlIS = new BufferedInputStream(new
FileInputStream(sourceID));
    StreamSource xmlSource = new StreamSource(xmlIS);
    // Note that if we don't do this, relative URLs can not be resolved
correctly!
    xmlSource.setSystemId(sourceID);

    // Transform the source XML to System.out.
    transformer.transform( xmlSource, new StreamResult(System.out));

    try
    {
      xmlSource.getInputStream().reset();
    }
    catch(IOException ioe)
    {
      // Not all input streams can be reset, in which case the only choice
is to create a new one.
      xmlSource.setInputStream(new BufferedInputStream(new
FileInputStream(sourceID)));
    }
    transformer.transform( xmlSource, new StreamResult(System.out));

-scott




                                                                                                                                
                    "Robert Koberg"                                                                                             
                    <rob@xxxxxxxxxx>                  To:     <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>                                 
                    Sent by:                          cc:     (bcc: Scott Boag/CAM/Lotus)                                       
                    owner-xsl-list@xxxxxxxxxxxx       Subject:     Re: [xsl] xalan-j2 D7: StreamSource cannot be kept?          
                    rytech.com                                                                                                  
                                                                                                                                
                                                                                                                                
                    08/09/01 03:43 PM                                                                                           
                    Please respond to xsl-list                                                                                  
                                                                                                                                
                                                                                                                                




I am looking but I don't see how to close the StreamSource.  I am setting
it
to null but that does not help.  In the examples I always see something
like:

Templates templates = tfactory.newTemplates(new StreamSource(xslID));

I assume that by doing it this way the StreamSource gets closed
automatically?  How would I close the stream if I created the "new
StreamSource(xsl)" somewhere else?

thanks for the help,
-Rob



----- Original Message -----
From: <Myriam_Midy@xxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Thursday, August 09, 2001 12:03 PM
Subject: Re: [xsl] xalan-j2 D7: StreamSource cannot be kept?


>
> Robert,
> Users are responsible for closing streams in Xalan. I think that is what
> you need to do before reusing the stream. If you don't, the next time you
> try to read it, you will get an IO error. I don't think cloning will help
> you in this situation.
>
> Myriam
>
>
>
>                     "Robert Koberg"
>                     <rob@xxxxxxxxxx>                  To:
<xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
>                     Sent by:                          cc:     (bcc:
Myriam
Midy/CAM/Lotus)
>                     owner-xsl-list@xxxxxxxxxxxx       Subject:     Re:
[xsl] xalan-j2 D7:
>                     rytech.com                         StreamSource
cannot
be kept?
>
>
>                     08/09/01 02:18 PM
>                     Please respond to xsl-list
>
>
>
>
>
>
> Ahh... OK, is there some way to make a copy to preserve the original? I
> have
> tried to clone the object holding the StreamSource, like so:
>
> public Object clone() {
>       SiteManager site = null;
>       try {
>          site = (SiteManager) super.clone();
>       } catch (CloneNotSupportedException e) {}
>       return site;
>    }
>
> It works with a clone the first time, but fails to create any other
clones.
>
> Any ideas on how to workaround this?
>
>
> ----- Original Message -----
> From: "Michael Kay" <mhkay@xxxxxxxxxxxx>
> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> Sent: Thursday, August 09, 2001 10:13 AM
> Subject: RE: [xsl] xalan-j2 D7: StreamSource cannot be kept?
>
>
> > The JAXP 1.1 spec is rather remiss in that it doesn't say which kinds
of
> > Source object are consumed by supplying them to a transformation. But I
> > think it's reasonable to assume that a StreamSource or SAXSource can
only
> be
> > used once.
> >
> > Mike Kay
> > Software AG
> >
> > > -----Original Message-----
> > > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of
> > > Robert Koberg
> > > Sent: 09 August 2001 15:50
> > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > > Subject: [xsl] xalan-j2 D7: StreamSource cannot be kept?
> > >
> > >
> > > Hi, I was hoping someone could help me with this problem.
> > >
> > > I keep the XSL and XML StreamSource's for my webapp in a
> > > couple of java
> > > objects on a j2ee compliant servlet container. When I want to
> > > transform a
> > > page I request the appropriate combination of StreamSource's
> > > (see More info
> > > on the backend below).  Everything works fine THE FIRST TIME.
> > >  If I use the
> > > browser back button and perform the exact same action to get
> > > to the same
> > > page that origanlly worked, it produces a
> > > TransformerException saying that
> > > it cannot find the file specified (but it's already setup as
> > > a stream...).
> > > Nothing has changed. If I check the StreamSource's reference
> > > ID, it has not
> > > changed.  Has something changed the stream itself? Is there
> > > some way to see
> > > the stream?
> > >
> > > More info on the backend:
> > > -----------------------------------
> > > I was hoping (don't know if it is a good thing to do or
> > > not...?) to create a
> > > "database" of StreamSources - with an instance of a Page
> > > Object containing
> > > the StreamSource for an XML.  A Site Object contains the XSL
> > > StreamSource's.
> > > To get a page I access the appropriate instances and get the
> > > XSL and XML
> > > StreamSources. Can anybody help or give me some advice? Is this a
good
> > > strategy for producing a fast, dynamic site?
> > >
> > > Thanks,
> > > Rob
> > >
> > >
> > >  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> > >
> >
> >
> >  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> >
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
>
>
>
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list






 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread