You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Filippo Diotalevi (JIRA)" <ji...@apache.org> on 2009/06/17 11:58:07 UTC
[jira] Updated: (FELIX-1235) NullPointerException due to
misconfigured watched dir
[ https://issues.apache.org/jira/browse/FELIX-1235?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Filippo Diotalevi updated FELIX-1235:
-------------------------------------
Attachment: FELIX-1235.txt
Patch attached.
To summarize:
1) if FileInstall starts watching a non-existent directory, the directory is already created automatically (check DirectoryWatcher, lines 93-94). No issue here
2) if FileInstall is incorrectly configure to watch a file (instead of a directory), it goes in an infinite loop writing:
"In main loop, we have serious trouble: java.lang.NullPointerException"
The attached patch solves 2)
> NullPointerException due to misconfigured watched dir
> -----------------------------------------------------
>
> Key: FELIX-1235
> URL: https://issues.apache.org/jira/browse/FELIX-1235
> Project: Felix
> Issue Type: Bug
> Components: File Install
> Affects Versions: fileinstall-1.0.0
> Environment: Windows [Vista|XP]
> Reporter: Guido Spadotto
> Fix For: fileinstall-1.2.0
>
> Attachments: FELIX-1235.txt
>
> Original Estimate: 1.5h
> Remaining Estimate: 1.5h
>
> The "traverse" method of the DirectoryWatcher class will raise a NPE if the provided "jardir" parameter does not point to a directory.
> The for loop inside that method should read:
> for (int i = 0; (list!=null) && (i < list.length); i++){...}
> To avoid hiding the configuration problem, the constructor of the DirectoryWatcher class could be amended like this:
> ...
> this.watchedDirectory = new File(dir);
>
> if (!this.watchedDirectory.exists()){
> if (!this.watchedDirectory.mkdirs()) { throw new RuntimeException("Failed to create directory " + this.watchedDirectory.getAbsolutePath());}
> }else{
> if (this.watchedDirectory.isDirectory()){
> log(this.watchedDirectory.getAbsolutePath() + " already existing", null);
> }else{
> log(this.watchedDirectory.getAbsolutePath() + " exists, but is not a directory", null);
> throw new RuntimeException(this.watchedDirectory.getAbsolutePath()+" exists, but is not a directory");
> }
> }
> Object value = properties.get(START_NEW_BUNDLES);
> ...
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.