This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 29614

Summary: IDE locks up running certain XSL transforms
Product: xml Reporter: hlavac <hlavac>
Component: XSLAssignee: issues@xml <issues>
Status: VERIFIED FIXED    
Severity: blocker CC: cledantec, johnjullion, pkeegan
Priority: P3 Keywords: PERFORMANCE, UI
Version: 3.x   
Hardware: PC   
OS: Windows ME/2000   
Issue Type: DEFECT Exception Reporter:
Bug Depends on: 27403    
Bug Blocks:    
Attachments: XSL stylesheet
source data to transform
partial result after crash
correct result (created by built-in transform in Enterprise Architect)

Description hlavac 2002-12-18 04:37:10 UTC
Running attached (admittably nasty ;) XSL
transform upon provided data locks up IDE totally.

This stylesheet creates SQL from XMI UML model.
It uses recursion to arrange tables to create/drop
in correct order for referential integrity
constraints.

I'm able to run this transform fine in Architag
XRay XML editor.

Similar lockup occured to me before when i had
infinite recursion by mistake, but now it should
be OK?
Comment 1 hlavac 2002-12-18 04:38:14 UTC
Created attachment 8361 [details]
XSL stylesheet
Comment 2 hlavac 2002-12-18 04:39:35 UTC
Created attachment 8362 [details]
source data to transform
Comment 3 hlavac 2002-12-18 04:41:52 UTC
Created attachment 8363 [details]
partial result after crash
Comment 4 hlavac 2002-12-18 04:43:31 UTC
Created attachment 8364 [details]
correct result (created by built-in transform in Enterprise Architect)
Comment 5 _ pkuzel 2003-01-09 14:18:58 UTC
It looks like bundled Xalan XSLT processor problem. However NetBeans
should not execute it from GUI thread.

org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:638)
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1088)
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1066)
org.netbeans.modules.xsl.utils.TransformUtil.transform(TransformUtil.java:242)
org.netbeans.modules.xsl.transform.TransformPerformer$AbstractPerformer.fileOutput(TransformPerformer.java:285)
org.netbeans.modules.xsl.transform.TransformPerformer$AbstractPerformer.actionPerformed(TransformPerformer.java:337)
org.netbeans.core.NbPresenter$ButtonListener.actionPerformed(NbPresenter.java:938)


TransformUtil must post transformation to another thread and provide
feedback UI (a progress bar).

If time permits someone should also investigate on Saxon and possibly
write HOWTO-document about pluging it in instead of default Xalan.

5 minutes passed and transformation is still running on my PIII@800....
Comment 6 _ pkuzel 2003-01-29 11:17:17 UTC
I tried Saxon 6.5.2 and it performs well.
http://prdownloads.sourceforge.net/saxon/saxon6_5_2.zip?use_mirror=cesnet

Simply extract saxon.zip and put saxon.jar into your jre/lib/ext to
try it.
Comment 7 _ pkuzel 2003-01-29 11:21:47 UTC
Chris do you remember latest progress feedback UI recommendation?

Issue #27403 promised to address it but I'm not sure about its status.
(I do not want to code/design my private UI if there will be shared one).
Comment 8 Chris Ledantec 2003-01-29 14:01:36 UTC
progress feedback work has been on hold for a while. i'm not sure
where it fits into future plans either. sorry, not much of an update.

if all you are looking for is a mouse cursor change some work has gone
into providing a way to do that. talk to David Simonek for more
details on how to use it.

Comment 9 _ pkuzel 2003-02-20 14:57:07 UTC
XSLT is processed in background thread. Until there will be a UI to
cancel it you must wait... or close whole IDE.

XSLT Transform action is disabled while a background transformation
runs to avoid JVM overload.

Possibly RELNOTE candidate.
Comment 10 _ pkuzel 2003-02-20 15:00:39 UTC
RELNOTE should mention Saxon as alternative to default Xalan.
Comment 11 Patrick Keegan 2003-04-02 15:51:27 UTC
Proposed relnote (Petr, could you please verify?):

Sometimes it takes a long time for the IDE to process XSL 
transformations. To prevent JVM overload, the XSLT 
Transform command is disabled when another transformation 
is being done.

Note: XSL transformations might finish more quickly if you 
use an alternate to the default XALAN library. One such 
library, Saxon, is available at 
http://prdownloads.sourceforge.net/saxon/. After 
unpacking  the saxon.zip file, place saxon.jar in your 
jre/lib/ext directory.
Comment 12 _ pkuzel 2003-04-02 15:55:01 UTC
Nice. However I would not inline How to plug Saxon replacing it by a
link to WWW <http://xml.netbeans.org/xsl/user/faq.html>.
Comment 13 Patrick Keegan 2003-04-02 16:15:20 UTC
Good point. However, I'm hesitant to link to docs that 
might move. So perhaps I'll just say, "Once you download 
Saxon, follow its standard installation instructions to 
get it working with your JRE."
Comment 14 _ pkuzel 2003-04-02 16:38:24 UTC
My point is that I would not hardcode SAXON info into the readme.
SAXON is not holy grail XSLT processor. It may be better for some kind
of transormations, worse for others. There are tens of XSLT processor
implementations.
Comment 15 Patrick Keegan 2003-04-03 14:38:41 UTC
Actually, I'd prefer to not even specifically identify a 
third-party processor. I'd rather focus on the possibility 
of plugging in different parsers and *maybe* give Saxon as 
an example. How about?:

"Description: Sometimes it takes a long time for the IDE 
to process XSL transformations. To prevent JVM overload, 
the XSLT Transform command is disabled when another 
transformation is being done.

Note: Many different XSLT parsers are available. By 
default, the IDE uses the XALAN parser, but you may find 
that another parser performs better for the 
transformations you regularly perform. If you want to use 
a different parser, place that parser's JAR file in your 
jre/lib/ext directory."
Comment 16 _ pkuzel 2003-04-03 14:49:27 UTC
Note: Many different XSLT parsers are available. By 
default, the IDE uses the XALAN parser, but you may find  that another
parser performs better for the 
transformations you regularly perform. If you want to use a different
parser consult JAXP 1.1 specification or module FAQs.  

Comment 17 Patrick Keegan 2003-04-03 15:02:31 UTC
For the module FAQs, can I point to this page?: 
http://xml.netbeans.org/user/faq.html
Comment 18 _ pkuzel 2003-04-03 15:28:40 UTC
Yes, you can, it's stable location. Even better is
http://xml.netbeans.org/.

Comment 19 Martin Schovanek 2003-10-10 06:53:31 UTC
VERIFIED 
Comment 20 Patrick Keegan 2004-03-03 23:21:56 UTC
removing RELNOTE keyword