Gene Smith created MANTRUN-204:
----------------------------------

             Summary: antrun loops the backing map of java.util.Properties 
withouth checking type safety
                 Key: MANTRUN-204
                 URL: https://issues.apache.org/jira/browse/MANTRUN-204
             Project: Maven Antrun Plugin
          Issue Type: Bug
    Affects Versions: 1.8
         Environment: seen in maven 3.3.3, maven 3.3.9
            Reporter: Gene Smith


In AntRunMojo's copyProperties method, visible at either of these:
    
http://svn.apache.org/viewvc/maven/plugins/tags/maven-antrun-plugin-1.8/src/main/java/org/apache/maven/plugin/antrun/AntRunMojo.java?view=markup#l401
    
http://grepcode.com/file/repo1.maven.org/maven2/org.apache.maven.plugins/maven-antrun-plugin/1.8/org/apache/maven/plugin/antrun/AntRunMojo.java#AntRunMojo
This loop does not check the type of objects in the Properties object it is 
looping:
                Properties mavenProps = mavenProject.getProperties();
                for ( Map.Entry<?, ?> entry : mavenProps.entrySet() )
                {
                    antProject.setProperty( (String) entry.getKey(), (String) 
entry.getValue() );
                }

Antrun 1.7 used an iterator and java.util.Properties' getters and setters (so 
the conversion was done for it).

The Properties object itself allows access to the backing map but strongly 
discourages using it.  For type safety, if you loop the entryset you need to 
check types (or check null and call "toString" instead of casting).  Maven does 
NOT enforce the type of objects put into that map, so
some plugins put non String objects in it.  (In my use case, 
"org.eclipse.rcptt:rcptt-maven-plugin" stores a boolean in it.)

....

As a work around I antrun 1.7 in this usecase.




--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to