Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • B bjgf
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Issues 127
    • Issues 127
    • List
    • Boards
    • Service Desk
    • Milestones
  • Jira
    • Jira
  • Packages and registries
    • Packages and registries
    • Model experiments
  • Activity
  • Create a new issue
  • Issue Boards
Collapse sidebar
  • BlueJ
  • bjgf
  • Issues
  • #1597

[GREENFOOT-253] Rename and change superclass at the same time throws exception

If you rename a class in the editor and at the same time change the inheritance hierarchy by removing the "extends Actor" you will get an exception.

Steps to reproduce:

Create new project

  1. Create subclass of Actor (no image needed)
  2. Open editor for the new class
  3. Rename it to something else
  4. Delete "extends Actor"
  5. Hit Compile All
  • ConcurrentModificationException
  1. Hit Compile All
  • NullPointerException

Also, the entire class browser goes blank.

Stacktraces (from dev version): {noformat} Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793) at java.util.HashMap$ValueIterator.next(HashMap.java:822) at bluej.pkgmgr.Package.rebuild(Package.java:1233) at bluej.extensions.BPackage.compileAll(BPackage.java:296) at rmiextension.wrappers.RPackageImpl.compileAll(RPackageImpl.java:87) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:637) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142) at rmiextension.wrappers.RPackageImpl_Stub.compileAll(Unknown Source) at greenfoot.core.GPackage.compileAll(GPackage.java:120) at greenfoot.actions.CompileAllAction.actionPerformed(CompileAllAction.java:72) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6301) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:6066) at java.awt.Container.processEvent(Container.java:2085) at java.awt.Component.dispatchEventImpl(Component.java:4667) at java.awt.Container.dispatchEventImpl(Container.java:2143) at java.awt.Component.dispatchEvent(Component.java:4497) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4600) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4264) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4194) at java.awt.Container.dispatchEventImpl(Container.java:2129) at java.awt.Window.dispatchEventImpl(Window.java:2475) at java.awt.Component.dispatchEvent(Component.java:4497) at java.awt.EventQueue.dispatchEvent(EventQueue.java:635) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at greenfoot.gui.classbrowser.ClassBrowser.createClassHierarchyComponent(ClassBrowser.java:282) at greenfoot.gui.classbrowser.ClassBrowser.updateLayout(ClassBrowser.java:209) at greenfoot.gui.classbrowser.ClassBrowser.consolidateLayout(ClassBrowser.java:354) at greenfoot.gui.classbrowser.ClassView.updateSuperClass(ClassView.java:133) at greenfoot.gui.classbrowser.ClassView.update(ClassView.java:232) at greenfoot.gui.classbrowser.ClassView.updateView(ClassView.java:240) at greenfoot.core.GClass$2.run(GClass.java:550) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:633) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

{noformat}


Issue metadata

  • Issue type: Bug
  • Priority: Medium
  • Fix versions: 1.5.4
Assignee
Assign to
Time tracking