Uploaded image for project: 'Clover'
  1. Clover
  2. CLOV-1370

Code refactoring in Eclipse fails when clover.jar is added in classpath

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Medium Medium
    • 3.2.0
    • 3.1.12
    • CEP Plugin
    • None
    • Eclipse versions:
      "Eclipse Platform 3.7.0.I20110613-1736 org.eclipse.platform.ide null" and "Eclipse Platform 4.3.0.I20130605-2000 org.eclipse.platform.ide null"

      Stack trace:

      java.lang.reflect.InvocationTargetException
      at org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:110)
      at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
      Caused by: Java Model Exception: Java Model Status [clover.org.apache.commons.lang.enum [in /usr/local/external/vendor/atlassian/clover-ant/3.1.11/lib/clover.jar] does not exist]
      at org.eclipse.jdt.internal.core.JavaElement.newJavaModelException(JavaElement.java:505)
      at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:246)
      at org.eclipse.jdt.internal.core.Openable.openAncestors(Openable.java:504)
      at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:240)
      at org.eclipse.jdt.internal.core.SourceRefElement.generateInfos(SourceRefElement.java:107)
      at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:518)
      at org.eclipse.jdt.internal.core.BinaryType.getElementInfo(BinaryType.java:286)
      at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:241)
      at org.eclipse.jdt.internal.core.BinaryType.isInterface(BinaryType.java:723)
      at org.eclipse.jdt.internal.corext.refactoring.rename.RippleMethodFinder2.findAllRippleMethods(RippleMethodFinder2.java:242)
      at org.eclipse.jdt.internal.corext.refactoring.rename.RippleMethodFinder2.getAllRippleMethods(RippleMethodFinder2.java:168)
      at org.eclipse.jdt.internal.corext.refactoring.rename.RippleMethodFinder2.getRelatedMethods(RippleMethodFinder2.java:161)
      at
      

      To reproduce this error:

      1. install Eclipse Clover plugin, create new Java project, enable Clover on the project

      2. add reference to clover.jar /lib/clover.jar (project properties > java build path > libraries > add external jars > /path/to/clover-ant/3.1.11/lib/clover.jar)

      3. add class:

      public class KeyValuePair {
      
      private String _key;
      private String _value;
      
      public KeyValuePair(String key, String value)
      { _key = key; _value = value; }
      
      public String getKey()
      { return _key; }
      
      public void setKey(String key)
      { _key = key; }
      
      public String getName()
      { return _value; }
      
      public void setValue(String value)
      { _value = value; }
      
      }
      

      4. Try to rename getName()

            [CLOV-1370] Code refactoring in Eclipse fails when clover.jar is added in classpath

            Owen made changes -
            Workflow Original: New Clover Workflow [ 897613 ] New: New Clover Workflow - Restricted [ 1474767 ]
            Piotr Swiecicki made changes -
            Workflow Original: Clover Workflow [ 895317 ] New: New Clover Workflow [ 897613 ]
            Piotr Swiecicki made changes -
            Workflow Original: reviewflow [ 559655 ] New: Clover Workflow [ 895317 ]
            Marek Parfianowicz made changes -
            Status Original: Resolved [ 5 ] New: Closed [ 6 ]
            Marek Parfianowicz made changes -
            Resolution New: Fixed [ 1 ]
            Status Original: To be reviewed [ 10026 ] New: Resolved [ 5 ]
            Marek Parfianowicz made changes -
            Status Original: Implemented [ 10025 ] New: To be reviewed [ 10026 ]
            Marek Parfianowicz made changes -
            Status Original: Open [ 1 ] New: Implemented [ 10025 ]

            It seems that during code refactoring Eclipse searches for possible references to the method being renamed.

            It fails to scan clover.jar or clover-runtime.jar. It fails to scan classes in a package named:

            clover.org.apache.commons.lang.enum

            Please note that 'enum' is a reserved Java keyword since JDK5. The commons-lang library has two packages having the same set of classes:

            • org.apache.commons.lang.enum -> it's deprecated
            • org.apache.commons.lang.enums

            When I have deleted the 'clover.org.apache.commons.lang.enum' package from clover.jar and clover-runtime.jar (Clover does not use these classes), the problem in Eclipse has disappeared.

            Marek Parfianowicz added a comment - It seems that during code refactoring Eclipse searches for possible references to the method being renamed. It fails to scan clover.jar or clover-runtime.jar. It fails to scan classes in a package named: clover.org.apache.commons.lang.enum Please note that 'enum' is a reserved Java keyword since JDK5. The commons-lang library has two packages having the same set of classes: org.apache.commons.lang.enum -> it's deprecated org.apache.commons.lang.enums When I have deleted the 'clover.org.apache.commons.lang.enum' package from clover.jar and clover-runtime.jar (Clover does not use these classes), the problem in Eclipse has disappeared.
            Marek Parfianowicz made changes -
            Priority Original: Critical [ 2 ] New: Major [ 3 ]
            Marek Parfianowicz created issue -

              mparfianowicz Marek Parfianowicz
              mparfianowicz Marek Parfianowicz
              Affected customers:
              0 This affects my team
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: