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 173031 - action classes shouldn't be loaded at startup
Summary: action classes shouldn't be loaded at startup
Status: VERIFIED FIXED
Alias: None
Product: xml
Classification: Unclassified
Component: Code (show other bugs)
Version: 6.x
Hardware: All Windows XP
: P2 blocker (vote)
Assignee: _ alexpetrov
URL: http://wiki.netbeans.org/FitnessViaWh...
Keywords: PERFORMANCE, TEST
Depends on:
Blocks:
 
Reported: 2009-09-24 15:00 UTC by Oleg Khokhlov
Modified: 2010-03-22 07:07 UTC (History)
1 user (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments
stacktraces (45.68 KB, text/xml)
2009-09-24 15:01 UTC, Oleg Khokhlov
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Oleg Khokhlov 2009-09-24 15:00:43 UTC
Performance test reports that the following classes loaded during startup:

> org.netbeans.modules.xml.actions.CollectDTDAction$DTDAction
> org.netbeans.modules.xml.api.model.GrammarQueryManager
> org.netbeans.modules.xml.tools.actions.CheckDTDAction
> org.netbeans.modules.xml.tools.doclet.DocletAction
> org.netbeans.modules.xml.tools.generator.XMLGenerateAction
> org.netbeans.modules.xml.tools.generator.XMLGenerateAction$GenerateDTDAction
> org.netbeans.modules.xml.tools.java.actions.GenerateDOMScannerAction
> org.netbeans.modules.xml.tools.java.actions.GenerateDocumentHandlerAction
> org.netbeans.modules.xsl.actions.TransformAction

Comment from jtulach: "P2 for XML to register their actions in a declarative way."

Build 20090922

test: ant in ide.kit/tests/whitelist
Comment 1 Oleg Khokhlov 2009-09-24 15:01:08 UTC
Created attachment 88296 [details]
stacktraces
Comment 2 Sergey Lunegov 2009-09-24 15:04:35 UTC
Alex, please take a look.
Comment 3 _ alexpetrov 2009-11-11 12:08:01 UTC
Fixed in trunk: http://hg.netbeans.org/main/rev/599305ed8c3b

org.netbeans.modules.xml.api.model.GrammarQueryManager will still be loaded at startup due to an invocation of the provider method 
org.netbeans.modules.glassfish.javaee.ide.RegisteredDDCatalogImpl.registerEE6RunTimeDDCatalog(...):

<violator class="org.netbeans.modules.xml.api.model.GrammarQueryManager">
  <stacktrace instantiator="ModuleCL@e8ef4c[org.netbeans.modules.glassfish.javaee]">
  org.netbeans.test.ide.BlacklistedClassesHandlerSingleton.publish(BlacklistedClassesHandlerSingleton.java:365)
   java.util.logging.Logger.log(Logger.java:440)
   java.util.logging.Logger.doLog(Logger.java:462)
   java.util.logging.Logger.log(Logger.java:526)
   org.netbeans.ProxyClassLoader.loadClass(ProxyClassLoader.java:188)
   java.lang.ClassLoader.loadClass(ClassLoader.java:252)
   java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
   java.lang.ClassLoader.defineClass1(Native Method)
   java.lang.ClassLoader.defineClass(ClassLoader.java:621)
   org.netbeans.JarClassLoader.doLoadClass(JarClassLoader.java:246)
   org.netbeans.ProxyClassLoader.selfLoadClass(ProxyClassLoader.java:297)
   org.netbeans.ProxyClassLoader.loadClass(ProxyClassLoader.java:224)
   java.lang.ClassLoader.loadClass(ClassLoader.java:252)
   java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    org.netbeans.modules.glassfish.javaee.ide.RegisteredDDCatalogImpl.registerEE6RunTimeDDCatalog(RegisteredDDCatalogImpl.java:63

XML team is not responsible for implementation of org.netbeans.modules.glassfish.javaee.
Comment 4 _ alexpetrov 2009-11-11 14:22:26 UTC
Additional fix (to avoid NPE an attribute "displayName" is added to actions): http://hg.netbeans.org/main/rev/a5b2d652b9eb
Comment 5 Quality Engineering 2009-11-24 19:05:22 UTC
Integrated into 'main-golden', will be available in build *200911241400* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main/rev/c7be2e3fa280
User: Alex Petrov <alexpetrov@netbeans.org>
Log: Fix for issue [#177382]. IllegalStateException: multiple instances of shared class org.netbeans.modules.xml.actions.CollectXMLAction created (see issue [#173031]).
Comment 6 Jaroslav Tulach 2009-11-25 02:32:33 UTC
I have created bug 177562 to track the glassfish problem.

However I can still see following classes being loaded:

org.netbeans.modules.xml.tools.generator.XMLGenerateAction
org.netbeans.modules.xml.tools.generator.XMLGenerateAction$GenerateDTDAction
org.netbeans.modules.xsl.actions.TransformAction

when running the whitelist test 
http://wiki.netbeans.org/FitnessViaWhiteAndBlackList
as 
$ ant -f ide.kit/test/whitelist/build.xml test1

I am temporarily adding the classes to whitelist. Use hg backout aed4bea050c3
http://hg.netbeans.org/ergonomics/rev/aed4bea050c3
to remove them, when this bug is fixed.
Comment 7 Quality Engineering 2009-11-26 19:32:47 UTC
Integrated into 'main-golden', will be available in build *200911261400* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main/rev/aed4bea050c3
User: Jaroslav Tulach <jtulach@netbeans.org>
Log: #173031: The XML actions still seem to be loaded
Comment 8 Quality Engineering 2009-12-02 02:59:54 UTC
Integrated into 'main-golden', will be available in build *200912020200* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main/rev/13ffe760c712
User: Jaroslav Tulach <jtulach@netbeans.org>
Log: #173031: More XML related actions is loaded on start
Comment 9 Sergey Lunegov 2010-02-10 03:25:41 UTC
Alex, please make complete fix.
Comment 10 _ alexpetrov 2010-03-11 10:09:18 UTC
Fixed in trunk: http://hg.netbeans.org/main/rev/2c973e822d8a.

Output of the test "ide.kit/test/whitelist$ ant test1" doesn't contain classes related to XML actions.
Comment 11 _ alexpetrov 2010-03-11 10:09:19 UTC
Fixed in trunk: http://hg.netbeans.org/main/rev/2c973e822d8a.

Output of the test "ide.kit/test/whitelist$ ant test1" doesn't contain classes related to XML actions.
Comment 12 Jaroslav Tulach 2010-03-22 07:07:06 UTC
OK, that may help.

Btw. FolderLookup is deprecated and I can still see it in your code, better to use Lookups.forPath.