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 247200 - Umbrella API Review of splitting NetBeans to non UI and UI modules
Summary: Umbrella API Review of splitting NetBeans to non UI and UI modules
Status: RESOLVED FIXED
Alias: None
Product: platform
Classification: Unclassified
Component: -- Other -- (show other bugs)
Version: 8.1
Hardware: All All
: P1 normal (vote)
Assignee: apireviews
URL:
Keywords: API, API_REVIEW
Depends on: 247159 247215 244308 244744 245014 247111 247161 247163 247404 247408 247435
Blocks:
  Show dependency tree
 
Reported: 2014-09-17 08:54 UTC by Tomas Zezula
Modified: 2014-10-18 05:12 UTC (History)
3 users (show)

See Also:
Issue Type: TASK
Exception Reporter:


Attachments
Compressed diff file (3.92 MB, application/octet-stream)
2014-09-17 09:42 UTC, Tomas Zezula
Details
AU CLI cleaned up from swing dep (7.88 KB, patch)
2014-09-23 13:34 UTC, Tomas Stupka
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Tomas Zezula 2014-09-17 08:54:28 UTC
This is an umbrella API review of a split of NetBeans Platform APIs, Project APIs, Parsing API and Java APIs to UI and Non UI part.
The individual parts are tracked as a sub issues of this issue.


The changes are available in server_split branch in http://hg.netbeans.org/jet-main (http://hg.netbeans.org/jet-main/rev/0afbfa1021d6).
Comment 1 Tomas Zezula 2014-09-17 09:29:16 UTC
The description of changes can be found on: http://wiki.netbeans.org/SwingDependenciesRemoval
Comment 2 Tomas Zezula 2014-09-17 09:42:31 UTC
Created attachment 149289 [details]
Compressed diff file

Complete gzipped server_split diff file.
Comment 3 Jaroslav Havlin 2014-09-17 15:27:49 UTC
I've added bug 245014 ("Provide base I/O APIs") into this umbrella review.
Comment 4 Jaroslav Tulach 2014-09-22 11:45:25 UTC
While the diff is huge, I don't think it is correct. For example there is line:

<change id="disable.fallback.cache">

which has been introduced by me and I don't see reason why you should modify it on the server_split branch!
Comment 5 Tomas Zezula 2014-09-22 14:29:03 UTC
API Review TCRs & TCAs:

TCR: editor.document: removal of Finder interface, rename getRow* to getLine* to get in line with JDEv terminology

TCR: Progress API - autoupdate does weird stuff in emulating JComponent. Check possible simplifications.

TCA: Progress API - move factory methods to ProgressHandle

TCR: commit_validation is failing in server_split

TCR: run all core tests
TCR: performance tests

TC?  binary test distribution to run against server_split branch - jirka Skrivanek
TCR: run sigtests with bytecode patching - Jarda

* run binary applications on top of NB platform against built distribution, not before merge. Approx 1 month.

TCR: FileSystem.Status
Comment 6 Tomas Stupka 2014-09-23 13:34:55 UTC
Created attachment 149465 [details]
AU CLI cleaned up from swing dep

> TCR: Progress API - autoupdate does weird stuff in emulating JComponent.
> Check possible simplifications.
currently AU listens on a Progress Component (JLabel) to intercept progress message from UC install/update and to propagate them to the CLI. 

for a swing-less alternative see attached patch 

in case no objection is raised, will push to split_server in a day or two ...
Comment 7 Jaroslav Tulach 2014-09-23 13:59:19 UTC
Y01 The AutoUpdate CLI change reveals one surprising thing. ProgressHandle is subclassable! Why? It is an API class. We should not mix API and SPI. If we do so, we can expect that somebody will create class like CLIProgressHandle. That only diffuses proper API usage. Consider making ProgressHandle final again and add InternalHandle.getProgressHandle() to make this functionality available but only for the SPI users.
Comment 8 Svata Dedic 2014-09-23 19:04:29 UTC
Re. Y01 - how do you suggest to split off UI part of ProgressHandle so that client can still pass around a ProgressHandle instance, and use the same instance to access JComponent services ? In the current patch version, ProgressHandle is subclassable since there's ProgressUIHandle which adds Swing-related APIs on top of the base.
Comment 9 Miloslav Metelka 2014-09-26 09:10:01 UTC
Implemented TCR editor.document: removal of Finder and AdjustFinder interfaces, rename getRow* to getLine* in LineDocumentUtilities.
http://hg.netbeans.org/jet-main/rev/3dbbe872abdf
Comment 10 Svata Dedic 2014-09-26 20:47:16 UTC
(In reply to Tomas Stupka from comment #6)
> 
> in case no objection is raised, will push to split_server in a day or two ...

Based on offline discussion, I slightly adapted your patch and committed as jet-main#fbc3397de290
Comment 11 Tomas Zezula 2014-09-27 11:13:36 UTC
Fixed all module-auto-deps in jet-main.
Comment 12 Tomas Zezula 2014-09-30 15:52:30 UTC
Commit-validation test violations are fixed and tests are passing.
Comment 13 Tomas Zezula 2014-10-01 19:59:11 UTC
>TC?  binary test distribution to run against server_split branch - jirka Skrivanek
I doubt it's possible. The NetBeans tests are not prepared for dynamic injection of services. When a new service is needed the test has to be changed.

An example of such a test is
org.openide.explorer.ExplorerPanelTest which sets a Lookup by:
System.setProperty ("org.openide.util.Lookup", "org.openide.explorer.ExplorerPanelTest$Lkp");

and the Lookup content is hardened to:
ic.add (new Clb ("Testing clipboard"));
ic.add (new YesDialogDisplayer());

so such a test needs to be fixed as seen at: http://hg.netbeans.org/jet-main/rev/33ec6766e2e2

So it's probably enough to fix the server_split stable tests distribution.
Comment 14 Svata Dedic 2014-10-02 14:32:16 UTC
TCR on FileSystem.Status hacked in as  http://hg.netbeans.org/jet-main/rev/57447e2c930a
Comment 15 Tomas Zezula 2014-10-04 17:41:44 UTC
All core builder tests are passing.

ant.freeform,\
api.java,\
api.java.classpath,\
api.progress,\
api.visual,\
apisupport.ant,\
apisupport.crudsample,\
apisupport.feedreader,\
apisupport.harness,\
apisupport.osgidemo,\
apisupport.paintapp,\
apisupport.project,\
apisupport.refactoring,\
apisupport.wizards,\
autoupdate.services,\
autoupdate.ui,\
core.execution,\
core.ide,\
core.kit,\
core.multiview,\
core.netigso,\
core.osgi,\
core.output2,\
core.startup,\
core.ui,\
core.windows,\
debugger.jpda.js,\
editor.mimelookup,\
editor.mimelookup.impl,\
extexecution,\
favorites,\
hudson,\
hudson.git,\
hudson.maven,\
hudson.mercurial,\
hudson.subversion,\
hudson.tasklist,\
ide.branding,\
java.api.common,\
java.freeform,\
java.j2seplatform,\
java.j2seproject,\
java.platform,\
java.project,\
javahelp,\
keyring.impl,\
masterfs,\
maven,\
maven.apisupport,\
maven.embedder,\
maven.hints,\
maven.indexer,\
maven.junit,\
maven.model,\
maven.osgi,\
nbjunit,\
nbbrwsr,\
netbinox,\
o.apache.tools.ant.module,\
o.n.bootstrap,\
o.n.core,\
o.n.insane,\
o.n.swing.tabcontrol,\
openide.actions,\
openide.awt,\
openide.compat,\
openide.dialogs,\
openide.execution,\
openide.explorer,\
openide.filesystems,\
openide.loaders,\
openide.modules,\
openide.nodes,\
openide.options,\
openide.text,\
openide.util,\
openide.util.enumerations,\
openide.util.lookup,\
openide.windows,\
options.api,\
options.keymap,\
progress.ui,\
project.ant,\
project.libraries,\
projectapi,\
projectimport.eclipse.core,\
projectui,\
projectuiapi,\
queries,\
sendopts,\
settings,\
spi.navigator,\
spi.quicksearch,\
tasklist.todo,\
tasklist.ui,\
uihandler,\
versioning,\
versioning.masterfs
Comment 16 Tomas Zezula 2014-10-08 13:27:36 UTC
The performance test result from Jirka Skrivanek:

Tested build was labeled by an artificial build numbers 201488880001 and 201488880002. In fact it was build from server_split branche #881eb115f249.

Startup time
-------------

No significant increase at startup time observed in 3 most important tests:

ComplexJavaProjectStartup.Startup Time with 10 opened java files
ComplexNBProjectStartup.Startup Time with opened NB project
OutOfTheBoxStartup.Startup Time

Ergonomics
-----------

Some increase only on Windows8 but only up to 5%.

Scanning
---------

Scanning time decreased in "ScanProjectPerfTest.JEdit initial binary scan" and in contrary increased in "ScanProjectPerfTest.JEdit initial source scan". It is possibly cause by fix of #245912 (Preindexed sym files are not generated for rt.jar) in trunk. Otherwise measured values are in bounderies for trunk results.

Java, Java EE, Scripting, Web
-----------------------------

- significantly decreased time for project creation.
- increased time of
 - Source Packages expansion
 - Help window opening
 - java completion in editor
 - Tools/Palette menu



Thanks Jirko!
Comment 17 Tomas Zezula 2014-10-08 13:30:59 UTC
We plan to integrate the branch to default tomorrow.
Comment 18 Svata Dedic 2014-10-09 15:16:29 UTC
Merged in as changesets:
jet-main#347cf076247
jet-main#a7e9b4eb3b8d (last-minute bugfixes, commit-validation fails)
Comment 19 Tomas Zezula 2014-10-09 17:16:02 UTC
Thanks Svato.
Closing as fixed.
Comment 20 Quality Engineering 2014-10-18 05:12:12 UTC
Integrated into 'main-silver', will be available in build *201410180001* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)

Changeset: http://hg.netbeans.org/main-silver/rev/3dbbe872abdf
User: Miloslav Metelka <mmetelka@netbeans.org>
Log: #247200 - Umbrella API Review of splitting NetBeans to non UI and UI modules - TCR editor.document: removal of Finder and AdjustFinder interfaces, rename getRow* to getLine* in LineDocumentUtilities.