Bug 8772 - project.setProperty(getName(), project.getProperty(someStuff)) can result in Nullpointer exceptions
Summary: project.setProperty(getName(), project.getProperty(someStuff)) can result in ...
Status: RESOLVED INVALID
Alias: None
Product: Ant
Classification: Unclassified
Component: Core (show other bugs)
Version: 1.5
Hardware: PC All
: P3 normal (vote)
Target Milestone: ---
Assignee: Ant Notifications List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2002-05-03 12:03 UTC by Sascha Ernst
Modified: 2008-02-22 12:18 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sascha Ernst 2002-05-03 12:03:04 UTC
I had the following situation:

I wanted to access a property indirecly (another property hold the name
of the property I wanted to access) => something like ${${someProperty}}

I coded project.setProperty(getName(), project.getProperty(someProperty))

By a fault in my buildscript, content of someProperty was ' element'
instead of 'element' (and  ' element' was not a used property)

the result of this was the followin exception (evalProperty is the task 
containing the code above):

BUILD FAILED
java.lang.NullPointerException
        at java.util.Hashtable.put(Hashtable.java:375)
        at org.apache.tools.ant.Project.setProperty(Project.java:433)
        at EvalProperty.execute(EvalProperty.java:51)
        at org.apache.tools.ant.Task.perform(Task.java:313)
        at org.apache.tools.ant.Target.execute(Target.java:309)
        at org.apache.tools.ant.Target.performTasks(Target.java:334)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1216)
        at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:357)
        at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:144)
        at ForEach_2.execute(ForEach_2.java:144)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:171)
        at org.apache.tools.ant.Task.perform(Task.java:313)
        at org.apache.tools.ant.Target.execute(Target.java:309)
        at org.apache.tools.ant.Target.performTasks(Target.java:334)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1216)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1160)
        at org.apache.tools.ant.Main.runBuild(Main.java:605)
        at org.apache.tools.ant.Main.start(Main.java:195)
        at org.apache.tools.ant.Main.main(Main.java:234)

Total time: 1 second
java.lang.NullPointerException
        at java.util.Hashtable.put(Hashtable.java:375)
        at org.apache.tools.ant.Project.setProperty(Project.java:433)
        at EvalProperty.execute(EvalProperty.java:51)
        at org.apache.tools.ant.Task.perform(Task.java:313)
        at org.apache.tools.ant.Target.execute(Target.java:309)
        at org.apache.tools.ant.Target.performTasks(Target.java:334)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1216)
        at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:357)
        at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:144)
        at ForEach_2.execute(ForEach_2.java:144)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:171)
        at org.apache.tools.ant.Task.perform(Task.java:313)
        at org.apache.tools.ant.Target.execute(Target.java:309)
        at org.apache.tools.ant.Target.performTasks(Target.java:334)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1216)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1160)
        at org.apache.tools.ant.Main.runBuild(Main.java:605)
        at org.apache.tools.ant.Main.start(Main.java:195)
        at org.apache.tools.ant.Main.main(Main.java:234)
C:\ProjekteAufgaben\AntTasks>
Comment 1 Conor MacNeill 2002-05-03 12:17:20 UTC
Agreed ... but you can easily handle it. After all, lots of other things also
could cause NPEs. If this were caused by something in a build file, rather than
code, that would be another matter.

How about this?

String value = project.getProperty(someProperty);
if (value != null) {
    project.setProperty(getName(), value);
}
Comment 2 Sascha Ernst 2002-05-03 12:20:33 UTC
OK, I can life with it (and I'll throw a corresponding buildexception)

thanks for your advice