The Issues fixed in the Merak Release (3.4.1)

A total of 107 issues have been resolved in the NetBeans 3.4.1.
If you'd like, you may list them all using the
IssueZilla query.

Some of them were RFEs (requests for enchancement), but most were bugs,
either minor like documentation inconsistencies, or more annoying like
inability to browse through compilation errors from Ant script,
deadlocks in project switching or numerous uncancellable Nullpointer exceptions.

When NetBeans 3.4 release came to some final phase, Ant 1.5 was released, but
testing uncovered some severe bugs, that forbit to include it into 3.4, some
time after Ant 1.5.1 was released with all these bugs fixed, but NetBeans was
arleady released. The Ant 1.5.1 integration module was published to NetBeans
autoupdate server, thoroughly tested and 3.4.1 contains it by default.

This problem happens everytime when the compiler of Ant script is set
to "Ant Script Compilation". The problem is that Ant opens own Output
tab with its own name and that after the compilation is finished, the
Core opens the second output tab with name "Compiler" where the status
of compilation (successful or not is shown). The second tab is
activated and because all the errors were logged in the first tab, the
F12 does not work.

The task which is returned from TargetExecutor is
wrapper task. Unfortunatelly this wrapper task is never started,
therefore it cannot report that the wrapped task has already finished.

#25701:
Deserialization of AntProjectSupport with new project unreliable

AntProjectSupport deserializes itself by deser'ing a FileObject and a File.
The File is fine, I suppose.
However the FileObject checks the Repository for mounts.
If the mount has not been set up by the time the APS is deserialized,
apparently it can become invalid (fo==null, file==null) even though
if deser'd later it would be fine.

I think this is a regression. Under Ant 1.5.1,
error messages referring to build scripts do not
hyperlink, as they use URL syntax (e.g. file:)
which the Ant module does not recognize. Here is
an example: download maven source
(jakarta.apache.org) and run top-level
build-bootstrap.xml from 3.4.1 with no further
configuration and you get:

When an autoload module is installed via
AutoUpdate, the module's XML file will be written
like this:
... prolog ...
<module name="org.brianlsmith.smn.mdr">
...
<param name="jar">oad/smnmdr.jar</param>
</module>
Notice that the "jar" parameter has an "oad/"
prefix. The problem is that the code is doing this:
if (jarName.startsWith("autoload")) {
autoload = true;
jarName = jarName.substring("eager"); // <false</param>
<param name="jar">/smnmdr.jar</param>
<param name="origin">user/eager</param>
...
where the "jar" parameter has an extra slash.
Another problem is that if your module's jarfile
is prefixed with "eager" or "autoload" without a
slash ("eagertoplease.jar", "autoloadtest.jar"),
they will be incorrectly configured: in the first
case, it will be treated as an eager module file
named "toplease.jar" and in the latter case it
will be treated as an autoload module file named
"test.jar". To fix this you need to include the
slash in the test (e.g. jarFile.startsWith("eager/"))

Create a New Unicast Event Source.
Generate event firing methods and pass event as a parameter.
Try it for java.awt.event.ActionListener.
It will generate "private void fireActionListenerActionPerformed (ActionEvent event)
{"
but it is not compilable.
Please generate FQN (java.awt.event.ActionEvent) instead of simple name.

#26726,
#27557,
#27759
are all marked as duplicate and then would be also resolved by the fix of this
issue.

The openide.jar contains file
"org/openide/awt/$Toolbar$Patch$.class". The IDE
(better said: java module) does not behave
correctly when accessing this class.

When you mount openide.jar, automatic
complation database update is performed. The first
attached exception
("dollar_in_classname_exc_1_update.txt") is thrown
on console.

When expanding package with this file
(org.openide.awt), the second attached exception
is thrown ("dollar_in_classname_exc_2.txt", show
in exception dialog).

When an attempt to "open" the class, the third
exception is thrown
("dollar_in_classname_exc_3.txt") many times. The
MDI frame is not completely re-drawn, when
clicking into the IDE, the exception is thrown
again. The only thing that stops the exception
from throwing is to close the explorer. In sum,
probably the only way to completely resume IDE
work is to kill the IDE and restart it.

no more welcome node in options window
...because it is useless with this module enabled.
New welcome doesn't use this option. It is node of old welcome panel.
It was discussed that old one will be alive and will be displayed
in case some of module puts its entry there. However, when this node
is empty and there is no option to put there entries it is is really
useless. In each case I think it is work for core because of old
welcome panel.

not reproducible
It is triggered when I have a custom CloneableTopComponent sitting in its own,
newly created Mode, not residing in the IDE, running MDI.
If I go to Windows menu, but don't click anywhere, and then click on the CTC,
and back a few times, it will be triggered.

default
acceleratorFont is Dialog Plain 10 whereas default
font is Dialog Bold 12. If you consider the base
font size in Swing to be 12 by default, and we set
-fontsize to e.g. 11, what should acceleratorFont
be set to? D.P.10 seems right with -fontsize 11.
It seems wrong with -fontsize 18. Should it be
some proportion? Rounded how? Etc.
Themes (issue #25472) would provide a more
coherent solution than -fontsize I think, since
you could select particular font sizes for each usage.

I am seeing a FSException regarding a jar that
was deleted outside of the ide on startup. The
full log and exception info are attached. The
issue can be resolved by going into the
explorer customize dialog and removing the
obsolete link. Should this just be done
automatically, possibly after a warning dialog?

#26191:
ZIPException's during module system startup can cause main thread to halt

The exception is caught and rethrown, but the
rethrown exception is missing the module name. A
catch clause a bit further down is expecting to
know what the module was and when it doesn't find
it, it chokes. Easy fix. Improves robustness if
some module JARs are corrupted etc.

With 3.4 RC1, I'm seeing frequent
"[WinSys] null" messages printed to the console
and I don't know why.
org.netbeans.core.windows.PersistenceManager &
WorkspaceImpl both implement something like:
ErrorManager.getDefault().log(ErrorManager.WARNIN
G, "[WinSys] " + ioe.getMessage());
so apparently the exception's message is null.
There's no more info in ide.log than this, but I
can attach it if you want.
---
Now in case there is a null message, it is not dumped.
(Will find out later why there are provided such exceptions).

A bit late, but I think Rochelle was right here -
older modules that declared a package dependency
on javax.help (e.g. apisupport, apparently TP?)
should have been automatically given a dep on
org.netbeans.modules.javahelp/1 in 3.4, to let
them continue to use the package.
org.netbeans.core.modules.NbInstaller permits this
kind of thing. Better late than never, right?

if a new version of a module is released that newly declares that its object
type should be above/below some other in the list, the pool should be
resorted accordingly. Probably not a very important bug; at least it took
this long for it to be reported, though it was probably always broken.

Sealed JARs apparently caused problems for modules in pre-4.0 versions;
a third-party module developer reported exceptions thrown.
Looking at the code, it is clearly wrong (a typo).
Does not affect any netbeans.org modules that I know of,
but could be a blocker for other module authors.

apply patch action doesn't support the unified diff format which is produced
by the cvs diff -u <name> for example.

Well, it's a missing functionality rather than a bug in existent functionality.
But I agree, that from the users point of view
this may be considered more like a bug.

#26146:
The graphical diff does not handle not reported line differences

When the diff algorithm does not report empty lines as differences, the graphical diff is corrupted.
The graphical diff should use a heuristic to detect, that a missing or added empty line was not reported as a difference.
Keep balance of corresponding lines even when there were unreported
missing or added lines.

The document's file is changed on the disc but old
version remains in the Source Editor. When you
edit the document and save it, patch's changes are
lost.
Properly close the streams after FileUtil.copy()!
Also refresh the FileObject after successfull application of the patch.

It seems, that the only problem is the "*/", that is for some reason
added at the end of the merged patch. I'll explore that.
The bug is in the parsing algorithm of the context diff. The same
patch in standard UNIX diff format was applied correctly.

The NPE was caused by the empty line at the end of the patch file.
This NPE was caused by the editing of
the diff in an editor (this is apparent from the ^M at the end of the
diff). This introduced the last empty line, which does not occur if
you redirect cvs diff into a file (this is why I didn't discover the
bug earlier).

I was editing a text using code completion. Once,
I write quite fast, and
IndexOutOfBoundsException/s occured (the second of
the exceptions was repeated approx. 4-5 times).
IndexOutOfBoundsException while editing (code completion)

I am marking this bug as RANDOM, because it is unreproducible. I
have not seen it from time I reported this, so I suppose the fix was
succesfull. Reopen anybody is able to reproduce this problem. Current
build is 200210170100.

#26063:
Editor should attempt to focus the last activated editor window after Alt+Shift+I

The focus just stays on the main window because
it's parent of the FastImport dialog. The Find
dialog for example uses Utilities.returnFocus() to
attempt to return the focus.

if you select, e.g.: "Remote Exception " with a space as the last char
(which will always
happen if you use word selection with crtl + right arrow)
and use the Fast Import function, it will
not work.
If you remove the last space all works as expected.
I greatly appreciate the Fast
Import function and think this small adjustment would improve its "ease of use".

#29749,
is marked as duplicate and then would be also resolved by the fix of this
issue.

When adding a menu to an applet all works fine and
the menu appears. I then compile it and work on
it, at this stage the menu is 'hanging' off the
JApplet node in the form editor. When I then close
it to work on something else and the re-open it,
the menu is no longer visible in the form editor
(and when the applet is run), at this point the
menu is seen to be 'hanging' off the Other
Components node.

Installer doesn't import folders like
{$userdir}/modules, lib, etc. from 3.3.2 userdir
(in contrast to Setting Import Wizard).
It is problem of all 3.3.2 XML users because XML
wasn't in standard 3.3.2 distribution and is
available via AutoUpdate.
Steps to reproduce:

run 3.3.2 with empty userdir

install all XML modules via Update Center

exit 3.3.2

run Nb 3.4 installer

slelect Import Settings from: NetBeans IDE v3.3.x

finish instalation

IDE starts and displays 18 Warnind Dialogs and a
lot of exceptions (see ide.log) and it will happen
at every start.

The exception was caused by running Java parser from
another Java parser. This is not supported. Fix makes sure that
referenced files are saved only for internal compilation and do not
saved for the source parsing.

If I select Compile All from the build menu I get a
NullPointerException with a request to report this bug.
I had the "Use JavaMake" property set to true. When I
reset it back to false Compile All does not throw any
exceptions. The problem is reproducable because if I set
it back to true I get the same exception. I also tried to
delete the entire project and recreate it. Same thing.

When I mounted ten filesystems (in the NetBeans
Explorer) and ran command "Update Code
Completions..." on some of them, NetBeans became
crazy, displayed several exception windows and
printed a lot of exceptions to the console and/or
to 'ide.log'. It also started installing and
uninstalling various sets of modules.
Some of the exception messages written into
'ide.log' end with "(Too many open files)".

If using "Ignore whitespace" and "Ignore blank spaces";
maybe one of those features is broken leading to the spaces we see!

Run the update -p command for each revision compared. This is necessary for the
graphical diff to have the correct revision texts. The diff can be given
arguments to ignore some changes (spaces, empty lines, etc.) If the cvs diff
ignores some changes it's not possible to construct the second file from
the first one and the list of differences.

#27271:
If isIgnoreLocallyExistingFiles(), pass a null file agrument only to
sendEntryAndModifiedRequests().

Well, the problem is in
org.netbeans.lib.cvsclient.command.remove.RemoveCommand.sendEntryAndModifiedRequests()
method. When isIgnoreLocallyExistingFiles() is true, the file is set
to null, which will cause the NPE.

In versioning filesystem's attributes do NOT look for corresponding FileObject,
because this can cause deadlock.
In NbJavaCvsFileSystem getVcsAttributes() method added to be able to
access attributes directly.

When creating a cvs filesystem, the default value
for the "User Interface Mode" property is "Only
Default Switches".

When first executing a cvs command on that
filesystem, a dialog comes up to let you know that
more advanced options are available, but does not
provide a way to cancel the command.

Why is this bad? If you have been working on a
local versions of files, they can get merged when
you first do an update from netbeans without any
way to stop it short of killing the application
before closing the dialog. Bad, bad netbeans.

It's fine that we got rid of the JavaDoc tab in
Explorer. But how do I access JavaDoc now? I
should be able to browse and possibly open JavaDoc
without running a search tool.
One idea: When you mount JavaDoc, it should offer
to add the main index file to the current project.
One issue with that idea (already filed an
enhancement on this): You could end up with a
bunch of files in your project called "Index."
The right solution is to parse out a reasonable
name (such as using the <TITLE> tags from the
index) and use that for the shortcut that gets
added to the project.

In the installer for 3.4.1 RC1 build the NetBeans
3.4 is displayed everywhere.

Rudolf Balada:
I've got mixed feeling if it's an error or not, but it's certain, that
I'm responsible for that as an idea author and implementator.
Installer build *shell* script takes the product key from userdir
value specified in runide_defaults.sh I will try to arrange special
installer build tomorrow to provide good installers for 3.4.1 RC2
(build #200301032341). I guess 3.4.1 is not going to change userdir so
the change is upto me.

#25590:
A number of OpenIDE classes (e.g. SplittedPanel) get colors from java.awt.SystemColor, not UIManager

I've been playing with theme support and noticed a
bunch of borders that did not seem to respond to
UIDefaults changes.
The reason is that they get their colors from
java.awt.SystemColor rather than using
javax.swing.UIManager.getColor().

Properties window of filesystems, archive files
etc. has wrong caption. It says something like:
"Properties of D:\For [Properties of D:\Forte for
Java\User\3.4\sampledir]" in case of default local
filesystem or "Properties of jemmy. [Properties of
jemmy.jar]" in case of JAR file. It looks like only
6 characters are taken into account, doesn't it ?
I would love to assing it as P2 but I am sure you
would downgrade it immediatelly. However can this
remain in FCS ? ;-)

#25963:
[Explorer DnD] After cancel drop in Explorer popup menu and short cuts don't work there

I did about the following steps:
look at files in editing workspace
mount src.zip -- probably unrelated
unmount src.zip -- probably unrelated
open ImageViewer.java (opens Form Editor on GUI
Editing workspace)
delete GUI workspace
now there is a blank tab in the editor for what
should have been
the showing file. Other tabs in the editor look
OK. Hitting
the X on the tab to delete it and opening it again
fixes the
problem.

#26228:
Each time selection of module node in Tools | Options arise new Properties Window

Steps to reproduce:

run IDE

invoke Options (Tools | Options)

try to select some node under IDE Configuration
| System | Modules,

if folder is selected -> itself expanded
if module is selected -> new properties window
arise

where in isModuleEnabled->getModuleInfo() is code
to create/parse an instance:
String module = new SettingsInstance(null).getSettings(true).getCodeNameBase();
and the parsed instance is immediatelly forgotten and created again from above mentioned
instance = createInstance(null);
and is parsed again later (on demand).

It is possible to keep the parsed instance,
which will significantly speed up the FolderLookup initialization.

I found a VERY serious bug in localized Netbeans:
When I translate, e.g. "&File" menu name into Russian, I have "&<SOME
RUSSIAN SYMBOL>...",
but then the key combination Alt+<SOME RUSSIAN SYMBOL> doesn't work!
All other menus and submenus, buttons, etc. are also affected.
And I do not like the way, used by Localizators of Mozilla (which also has
the same bug), who just translated the menu name, but left the English key
combination.
So "&File" menu would look like
"<RUSSIAN TRANSLATION> (&F)" - this is not very attractive anyway.

The new semantics of this method are better,
but some 3.3- modules with actions might have been harmed by the change.
#26887 restores compatibility for them
(with a suitable warning to console about how to upgrade).
SystemAction.iconResource relative path compat fix.

I'm running Netbeans 3.4 under the Sun JDK 1.4.0 using the
Windows L&F. I had a number of files open in the editor,
and closed them all by clicking the "X" button in the menu
bar (not the one in the title bar, which would have quit
the application). The editor window did close, but I also
got a dialog box with the following exception: ...

#27025:
Nodes for DataObjects can disappear from the tree even there is no change
in the DataObjects

I have noticed issue 26192 and find out that it is
caused by fix of issue 20699.
Good to know, because I had to workaround this
behaviour during
implementation of issue 23356, I did not know why,
but sometimes nodes
that I obtained as children from FolderChildren
were not present in
the tree when I tried to do
ExplorerManager.setSelectedNodes.
This is bad behaviour. So it implies that the fix
of the bug 20699 is not good. I am creating this
bug and I will try to write a test case to
show, what is wrong and will attach it here.

#27966:
IllegalArgumentException in ExplorerManager when trying to use the Projects module with the Platform

I downloaded the 3.4 platform release dated
9/27/2002, and while in the process of adding
the modules I need, I ran into a problem with
the Projects module--I tried both versions 1.8
and 1.9, and I get a fatal exception "cannot
have null root context". As I understand, it,
this is the platform release based on NB3.4,
so this projects module should work, because
it came from my NB3.4 IDE installation. I'll
attach the IDE log.

you use a bad zip unpacking SW
your SW deletes empty dirs from the IDE_INSTALLATIN.zip
check for example, if the "ide_installation_dir\tomcat404
\common\classes" exists (this folder is empty)
if not, change or reoption your SW

In the modules listing of options and setup
wizard, the word Welcome Screen is not localizable
due to its value not being in an OpenIDE key
in bundle file of welcome.jar.
Also, there is not a description in the setup
wizard's description field for it.

In welcome window, not all labels/text come
from html or bundle files within welcome.jar
Richard mentioned that the third column is from
gifs instead, but for ffj localization, this
information would need to be in bundle or html
files.
Also, some of the links under help do not show
fully when pseudo translated - that is, their
window does not resize to fit; user should not
need
to resize in other locale if the window shows
fully
in C locale.

#27630:
I18N-Impossible to set different font for "Next" button in Welcome

I've set the external CVS properties to make sure
that the Refresh occurs when the directory is
opened, but the files are not being refreshed
properly. If a direcotry is opened that contains
sub-directories as well as source files, the
source files in that directory don't get
refreshed. The refresh occurs if I manually
refresh those files, however. Also, the folders
themselves always
show "Local" instead of the CVS version
information unless a checkout is done on that folder.
---
CacheDir.addChildNames() added so that the directory can be initialized
from the disk cache when necessary.
A new property local added to CacheFile.PersistentData.
VcsCache.lookupCacheDir() added to find an already read directory.
Ability to read just cache file names from the disk cache added to
VcsCacheDir & VcsCacheFile.
Exclusive locking for cache files implemented to prevent concurrent
access to the file content and mutual rewritings.

#25978:
Variables are not expanded in status bar and name of commands.

Runtime variables substitution is not done in
status bar of IDE and command names stored in
history of ran commands. It concerns commands like
"VSS|Set Password" or "CVS|Login".
---
We store the filesystem variables in the VcsCommandWrapper so that they can
be easily used for expansion of command display name in reports.
Also VcsRuntimeCommands expands the display name with current variables.

After restarting 3.4RC1, I saw the following in
the console:
-----------
Serializable class
org.openide.util.actions.SystemAction does not
declare serialVersionUID field. Encountered while
storing: ...
I skimmed that bug and its friends and didn't
follow it all, but assume you want this fixed or
you wouldn't be printing out the message.
Feel free to close this if it's not really a bug.
Please store names of SystemAction classes, not the instances
themselves which are not really designed to be serializable.
---
Prevent serialization of VcsActionSupporter with the filesystem.
Also do not serialize swing objects in GeneralCommandAction.

When deciding whether to create backup file or not, check for
the importantness at last.
Due to a safety change in DefaultAttributes, .nbattrs~ is saved and later
renamed .nbattrs~ to .nbattrs.
This has caused, that 'isIDESettingsFile()' returns false always
and a deadlock could happen when calling isImportant().

#26614,
#29295,
#29298:
Show the VCS revisions instead of the internal used revisions.

Some VCS implementations, (VSS, CMS for OpenVMS, etc.) do
not use a ".n" format revision number. That is, revision
numbers are positive integers only.
When writing a RevisionListGetter class for a generic VCS
module, it is necessary to add a ".0" to the revision if
the VCS only uses integers. If this is not done, the
Versioning Explorer does not work properly (expanding a node has no
effect).
Having a ".0" following all revisions in the Versioning
Explorer causes confusion for users of that VCS and doesn't
look very good.

I took todays build and started it with clear userdir.
I mounted 1 JavaCVSFS,
invoked Update Wizard and updating few modelus....
during this
I executed one class which automaticaly mounts
various FSs to set my CLASSPATH, etc.
After it and also Update Wizards finished I found
in console
stacktraces of InvocationTargetException and
ConcurrentModificationException
which are attached in one file
---
The access to the list of CacheHandlerEvent listeners is synchronized.

Description:
This is quite interesting bug. Users can't create
basic variables to CVS or PVCS filesystems or at
least they are not visible in the customizer. The
most strange is that it seems like VSS was not
affected. Looks like regression ?

Steps to reproduce:

Invoke "Versioning|Mount Version Control|Generic VCS".

Select CVS profile and push "Next >" button.

Click "Edit Variables..." and right click "Basic" node.

Choose "Add Variable", type "Name" and click "OK".

Push "Finish" and invoke the customizer after
the filesystem is mounted into explorer.

There is no "Name:" textfield in it.

---
Construct the configuration input descriptor only if the
descriptor string representation is non-empty.
This prevents from creating and empty panel from the empty input descripor.

Description:
There is a special workflow that gets PVCS filesystem into unusable state
because of never ending loop of exceptions.
The only workaround is to restart IDE. Take a look at the attachment
for details or read below.

I tried to run graphical diff (directly from
context menu) an then I switched to to text diff
using combo on top of the form. The textual diff
contained just information about lines where the
change was made.
Text diff from context menu is OK, so the problem
occurs only when switching from graphical diff to
text diff.
Add the text of the differences also into the data output of this command.
This is necessary for the parser so that the text will be included in
the Difference objects.

It would be nice to have also "CVS|Remove" command
chained with "Commit" so that it can be done in
one step as with "Add" command. I mean the
checkbox like "Proceed With Commit If Remove
Succeeds".
---
There is a possibility now to do commit right after remove command.

"Refresh Time For Local Files [ms]" filesystem
property is reset to its default value (15000)
when IDE is restarted. User must always set it
manually, if new IDE session is started.
The new refresh time property defined (PROP_VCS_REFRESH_TIME).
This property is fired when the refresh time is changed.

Description:
There is no way how to setup Unix shell
interpreter in PVCS profiles. Although, there is a
lot of workarounds they are not easy to find. This
is serious regression in functionality and I would
recommend it for 3.4.1.

Here is the NPE stack trace - I'm having a hell of a time
trying to get NetBeans integrated with PVCS. I either get
constant NP exceptions or the PCLI commands fail.
---
Initialize the refresher after FS deserialization.
Optimalize the class loader retrieval when loading action classes for commands.
Check for null variable values to be more robust.

#26620:
NB3.4 does not recognize JSP files if the freestyle browser is installed

1. Created a new web module.
2. Added three JSPs to the web module.
3. From the Update Center, installed the Free Style Browser module
(it's either Alpha or Beta, don't remember which).
4. After the IDE restarted, my JSPs had null icons.
5. From the Options window, I disabled the Free Style Browser module.
6. After either restarting the IDE or remounting the web module, the
JSP nodes are back to normal.