Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Teacher client crashes when connecting to an activity that has sliders with non-constant constraints #10

Closed
lukas-shawford opened this issue Aug 13, 2011 · 1 comment

Comments

@lukas-shawford
Copy link
Contributor

This issue used to be called "Memory HubNet activity fails to start"

When an activity has a non-constant slider constraint, like "floor (count patches / 2)", it needs to be evaluated on the server before getting sent to the teacher client (the teacher client doesn't have access to a compiler).

This issue affects the Memory HubNet activity. The following errors show up in the Java console:

java.lang.NumberFormatException: For input string: "floor (count patches / 2)"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)
    at java.lang.Double.parseDouble(Double.java:510)
    at scala.collection.immutable.StringLike$class.toDouble(StringLike.scala:234)
    at scala.collection.immutable.StringOps.toDouble(StringOps.scala:31)
    at org.nlogo.hubnet.client.ClientPanel$$anon$1.<init>(ClientPanel.scala:119)
    at org.nlogo.hubnet.client.ClientPanel.handle(ClientPanel.scala:119)
    at org.nlogo.window.Events$AddSliderConstraintEvent.beHandledBy(Events.java:117)
    at org.nlogo.window.Event.doRaise(Event.java:196)
    at org.nlogo.window.Event.raise(Event.java:120)
    at org.nlogo.window.SliderWidget.updateConstraints(SliderWidget.scala:195)
    at org.nlogo.window.SliderWidget.handle(SliderWidget.scala:207)
    at org.nlogo.window.Events$AfterLoadEvent.beHandledBy(Events.java:128)
    at org.nlogo.window.Event.doRaise(Event.java:196)
    at org.nlogo.window.Event.raise(Event.java:120)
    at org.nlogo.hubnet.client.ClientPanel.completeLogin(ClientPanel.scala:248)
    at org.nlogo.hubnet.client.ClientPanel.handleProtocolMessage(ClientPanel.scala:262)
    at org.nlogo.hubnet.client.ClientPanel.receiveData(ClientPanel.scala:426)
    at org.nlogo.hubnet.client.ClientPanel.processEvent(ClientPanel.scala:392)
    at java.awt.Component.dispatchEventImpl(Component.java:4651)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4481)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
    at java.awt.EventQueue.access$000(EventQueue.java:84)
    at java.awt.EventQueue$1.run(EventQueue.java:602)
    at java.awt.EventQueue$1.run(EventQueue.java:600)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$2.run(EventQueue.java:616)
    at java.awt.EventQueue$2.run(EventQueue.java:614)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread "AWT-EventQueue-11" java.lang.NullPointerException
    at org.nlogo.render.VectorShapeDrawable.draw(TurtleShapeManager.java:148)
    at org.nlogo.render.AbstractTopologyRenderer.draw(AbstractTopologyRenderer.java:54)
    at org.nlogo.render.TorusRenderer.wrapDrawable(TorusRenderer.java:28)
    at org.nlogo.render.TurtleDrawer.drawTurtleShape(TurtleDrawer.java:34)
    at org.nlogo.render.TurtleDrawer.drawTurtle(TurtleDrawer.java:21)
    at org.nlogo.hubnet.client.ClientRenderer$$anonfun$paintTurtles$1.apply(ClientRenderer.scala:11)
    at org.nlogo.hubnet.client.ClientRenderer$$anonfun$paintTurtles$1.apply(ClientRenderer.scala:10)
    at scala.collection.Iterator$class.foreach(Iterator.scala:652)
    at org.nlogo.util.JCL$$anon$2$$anon$6.foreach(JCL.scala:11)
    at scala.collection.IterableLike$class.foreach(IterableLike.scala:73)
    at org.nlogo.util.JCL$$anon$2.foreach(JCL.scala:10)
    at org.nlogo.hubnet.client.ClientRenderer.paintTurtles(ClientRenderer.scala:10)
    at org.nlogo.render.AbstractRenderer.paint(AbstractRenderer.java:158)
    at org.nlogo.hubnet.client.ClientView.paintComponent(ClientView.scala:45)
    at javax.swing.JComponent.paint(JComponent.java:1029)
    at javax.swing.JComponent.paintChildren(JComponent.java:862)
    at javax.swing.JComponent.paint(JComponent.java:1038)
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:567)
    at javax.swing.JComponent.paintChildren(JComponent.java:862)
    at javax.swing.JComponent.paint(JComponent.java:1038)
    at javax.swing.JComponent.paintChildren(JComponent.java:862)
    at javax.swing.JComponent.paint(JComponent.java:1038)
    at javax.swing.JComponent.paintChildren(JComponent.java:862)
    at javax.swing.JComponent.paint(JComponent.java:1038)
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5124)
    at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:278)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1224)
    at javax.swing.JComponent._paintImmediately(JComponent.java:5072)
    at javax.swing.JComponent.paintImmediately(JComponent.java:4882)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:785)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
    at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
    at java.awt.EventQueue.access$000(EventQueue.java:84)
    at java.awt.EventQueue$1.run(EventQueue.java:602)
    at java.awt.EventQueue$1.run(EventQueue.java:600)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
@lukas-shawford
Copy link
Contributor Author

Fixed in this commit:
c222468

Based on these changes in the NetLogo repo:
https://www.assembla.com/code/nlogo/git/changesets/59ff28d859bd0418c5544ab79ae4a6b092a9d449

I'm making this as closed, but there's still the possibility we might need to reopen this issue. Currently, the slider constraint gets evaluated and sent to the teacher client via the server handshake message. However, if the value of the slider constraint changes while the activity is running, there's currently no way to communicate the new value to the teacher client. I don't think this affects the Memory HubNet activity, but it might become an issue later in a different model.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant