Skip to content

NPE during applying refactoring #135

Closed
@RamSaw

Description

@RamSaw

How to reproduce: press refactor button for method which can't be moved like instance and must be converted to static, make it static in first dialog and then press cancel before actual refactoring applying. After that press refactor for this method again and you'll get this error.

Reason: method's signature can be changed during this conversion to static, MetricsReloaded is based on method's signatures and stores old signature of method before it became static. So MetricsReloaded cannot find this calculated metrics.

Solutions:

  1. Make "Cancel" button disabled.
  2. Submit logs only after closing refactorings results window. (the best, I think)
  3. Set special value for non existing metric: -1.

Error:
null java.lang.NullPointerException at org.jetbrains.research.groups.ml_methods.refactoring.logging.RefactoringFeatures.extractMetricsResultsFor(RefactoringFeatures.java:131) at org.jetbrains.research.groups.ml_methods.refactoring.logging.MoveMethodRefactoringFeatures.<init>(MoveMethodRefactoringFeatures.java:50) at org.jetbrains.research.groups.ml_methods.refactoring.logging.RefactoringFeatures$1.visit(RefactoringFeatures.java:98) at org.jetbrains.research.groups.ml_methods.refactoring.logging.RefactoringFeatures$1.visit(RefactoringFeatures.java:95) at org.jetbrains.research.groups.ml_methods.algorithm.refactoring.MoveMethodRefactoring.accept(MoveMethodRefactoring.java:73) at org.jetbrains.research.groups.ml_methods.refactoring.logging.RefactoringFeatures.extractFeatures(RefactoringFeatures.java:95) at org.jetbrains.research.groups.ml_methods.refactoring.logging.RefactoringSessionInfo.lambda$new$0(RefactoringSessionInfo.java:39) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) at org.jetbrains.research.groups.ml_methods.refactoring.logging.RefactoringSessionInfo.<init>(RefactoringSessionInfo.java:40) at org.jetbrains.research.groups.ml_methods.ui.ClassRefactoringPanel.refactorSelected(ClassRefactoringPanel.java:181) at org.jetbrains.research.groups.ml_methods.ui.ClassRefactoringPanel.lambda$createButtonsPanel$5(ClassRefactoringPanel.java:158) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6533) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6298) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4889) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:827) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:651) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:365) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions