[ 
https://issues.apache.org/jira/browse/MSHARED-545?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jonathan Haber updated MSHARED-545:
-----------------------------------
    Description: The maven-dependency-analyzer was updated to parse the 
constant pool on each class file so that it can discover method references and 
constant references, but the ConstantPoolParser is missing two critical lines 
that cause it to throw an exception on any class file containing a constant 
long or constant double field. According to the 
[Javadoc|https://github.com/apache/maven-shared/blob/ca1f714442eb49439a1f184ba8177e7795158b75/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java#L34],
 the class was adapted from [this|http://stackoverflow.com/a/32278587/23691] 
stack overflow answer. If you look inside the switch statement at the cases for 
longs and doubles, it increments the index. But the ConstantPoolParser is 
[missing|https://github.com/apache/maven-shared/blob/ca1f714442eb49439a1f184ba8177e7795158b75/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java#L118-L123]
 this increment. This causes it to land 
[here|https://github.com/apache/maven-shared/blob/ca1f714442eb49439a1f184ba8177e7795158b75/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java#L95-L96]
 and throw an exception on all but the most trivial codebases. In 
[this|https://github.com/apache/maven-shared/pull/10] pull request I fixed the 
bug and updated one of the test classes to have a constant long field to 
prevent regressions.  (was: The maven-dependency-analyzer was updated to parse 
the constant pool on each class file so that it can discover method references 
and constant references, but the ConstantPoolParser is missing two critical 
lines that cause it to throw an exception on any class file containing a 
constant long or constant double field. According to the 
[Javadoc|https://github.com/apache/maven-shared/blob/ca1f714442eb49439a1f184ba8177e7795158b75/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java#L34]
 the class was adapted from [this|http://stackoverflow.com/a/32278587/23691] 
stack overflow answer. If you look inside the switch statement at the cases for 
longs and doubles, it increments the index. But the ConstantPoolParser is 
[missing|https://github.com/apache/maven-shared/blob/ca1f714442eb49439a1f184ba8177e7795158b75/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java#L118-L123]
 this increment. This causes it to land 
[here|https://github.com/apache/maven-shared/blob/ca1f714442eb49439a1f184ba8177e7795158b75/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java#L95-L96]
 and throw an exception on all but the most trivial codebases. In 
[this|https://github.com/apache/maven-shared/pull/10] pull request I fixed the 
bug and updated one of the test classes to have a constant long field to 
prevent regressions.)

> maven-dependency-analyzer fails on classes containing constant long or double
> -----------------------------------------------------------------------------
>
>                 Key: MSHARED-545
>                 URL: https://issues.apache.org/jira/browse/MSHARED-545
>             Project: Maven Shared Components
>          Issue Type: Bug
>    Affects Versions: maven-dependency-analyzer-1.7
>            Reporter: Jonathan Haber
>            Priority: Blocker
>
> The maven-dependency-analyzer was updated to parse the constant pool on each 
> class file so that it can discover method references and constant references, 
> but the ConstantPoolParser is missing two critical lines that cause it to 
> throw an exception on any class file containing a constant long or constant 
> double field. According to the 
> [Javadoc|https://github.com/apache/maven-shared/blob/ca1f714442eb49439a1f184ba8177e7795158b75/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java#L34],
>  the class was adapted from [this|http://stackoverflow.com/a/32278587/23691] 
> stack overflow answer. If you look inside the switch statement at the cases 
> for longs and doubles, it increments the index. But the ConstantPoolParser is 
> [missing|https://github.com/apache/maven-shared/blob/ca1f714442eb49439a1f184ba8177e7795158b75/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java#L118-L123]
>  this increment. This causes it to land 
> [here|https://github.com/apache/maven-shared/blob/ca1f714442eb49439a1f184ba8177e7795158b75/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java#L95-L96]
>  and throw an exception on all but the most trivial codebases. In 
> [this|https://github.com/apache/maven-shared/pull/10] pull request I fixed 
> the bug and updated one of the test classes to have a constant long field to 
> prevent regressions.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to