You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by "Mark Brouwer (JIRA)" <ji...@apache.org> on 2008/04/05 10:59:24 UTC

[jira] Resolved: (RIVER-78) ClassDep generates duplicate output lines

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

Mark Brouwer resolved RIVER-78.
-------------------------------

    Resolution: Fixed

> ClassDep generates duplicate output lines
> -----------------------------------------
>
>                 Key: RIVER-78
>                 URL: https://issues.apache.org/jira/browse/RIVER-78
>             Project: River
>          Issue Type: Bug
>          Components: com_sun_jini_tool
>    Affects Versions: jtsk_2.1
>            Reporter: Frank Barnaby
>            Assignee: Mark Brouwer
>            Priority: Minor
>             Fix For: AR2
>
>
> Bugtraq ID [6392596|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6392596]
> The classdep utility generates duplicate output lines when run under Java5.  In particular, this is seen for enum classes and for inner classes named on the command line.
> Consider a java source file (in {{src/foo/Bar.java}}):
> {code}
> package foo;
> public class Bar {
>     private static enum Contents { RECORDS, TASKS }
>     public class Inner { }
> }
> {code}
> Run:
> {code}
> rm -rf classes
> mkdir classes
> javac -d classes src/foo/Bar.java
> java -cp /vob/jive/lib/tools.jar:$JAVA_HOME/lib/tools.jar \
>     com.sun.jini.tool.ClassDep \
>     -cp classes -files -in foo foo.Bar foo.Bar\$Inner
> {code}
> Result:
> {code}
> foo/Bar.class
> foo/Bar$Contents.class
> foo/Bar$Contents.class
> foo/Bar$Inner.class
> foo/Bar$Inner.class
> {code}
> Note the two duplicate lines.
> Using jdk1.5.0_06.
> *Evaluation*
> For reasons not yet clear to me, sometimes {{BinaryConstantPool.getDependencies}} returns {{ClassDeclarations}} with a name that is an Identifier for an array type ({{LFoo$Bar;}}) and so the class name embedded in it is a binary (mangled) name, and {{ClassDep.process}} does {{Identifier.lookup}} on that mangled name, which doesn't transform back to the expected canonical "{{Foo. Bar}}" syntax, so the "seen" table ends up with not-equal Identifiers for both "{{Foo$Bar}}" and "{{Foo. Bar}}", when there should just be "{{Foo. Bar}}".

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.