Code Monkey home page Code Monkey logo

openrocket's Introduction

OpenRocket πŸš€

OpenRocket is a free, fully featured model rocket simulator that allows you to design and simulate your rockets before actually building and flying them.

Build Status License: GPL v3 GitHub release Github Releases (by release)

snap release Chocolatey release Join our Discord server!


πŸ› οΈ Design, Visualize, and Analyze

  1. Design your rockets using a rich selection of built-in components: Three-stage rocket - 2D

  2. Visualize your masterpiece in 3D: Three-stage rocket - 3D

  3. Plot & Analyze your simulation results for precision and improvements: Three-stage rocket - Simulation plot

🌟 Features

  • Six-degree-of-freedom flight simulation
  • Automatic design optimization
  • Realtime simulated altitude, velocity, and acceleration display
  • Staging and clustering support
  • Export to other simulation programs (RockSim, RASAero II)
  • Export component(s) to OBJ file for 3D printing
  • Cross-platform (Java-based)

... plus many more

πŸ“– Read more on our website or the OpenRocket Wiki.

πŸ’Ύ Installers

You can find the OpenRocket installers here.

πŸ“ Release Notes

Release notes are available on each release's page or on our website.

πŸš€ Getting started

The easiest way to get started is to open one of our in-program example designs:

Get started with the example designs

Dive into the essentials: adjust component dimensions, plot a simulation, swap out motors, ... Explore the impact of your changes and, most importantly, enjoy the process! 😊

πŸ’ͺ Contribute

Help us soar higher! Whether it's implementing features, writing documentation, or creating design examples, every contribution matters. Interested? Check out how to get involved and the practicalities of contributing.

✨ Contributors

You can view the full list of contributors here.

🌍Translators

  • Tripoli France
  • Tripoli Spain
  • Stefan Lobas / ERIG
  • Mauro Biasutti
  • Sky Dart Team / Ruslan V. Uss
  • Vladimir Beran
  • Polish Rocketry Society / Łukasz & Alex Kazanski
  • Sibo Van Gool
  • Mohamed Amin Elkebsi

πŸ“œ License

OpenRocket is proudly open-source under the GNU GPL license. Feel free to use, study, and extend.


⭐ Please give us a star if you find OpenRocket useful, and spread the word! ⭐

Star History Chart

openrocket's People

Contributors

alexkarezin avatar bdureau avatar bigsonlvrocha avatar bkuker avatar celeron533 avatar chrismickelson avatar dkingsley avatar dneelyep avatar enderw88 avatar hcraigmiller avatar itshanney avatar joepfeiffer avatar kruland2607 avatar maync10 avatar neilbalch avatar neilweinstock avatar plaa avatar ptsongalis avatar raynichc avatar rdgraham avatar remingtonholder avatar rodinia814 avatar rsammelson avatar sibovg avatar soupwizard avatar teyrana avatar thzero avatar unclerus avatar wcravens avatar wolsen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openrocket's Issues

Optimization bug

net.sf.openrocket.util.BugException: BUG: Selected simulation is null: item count=0
at net.sf.openrocket.gui.dialogs.optimization.GeneralOptimizationDialog.getSelectedSimulation(GeneralOptimizationDialog.java:1282)
at net.sf.openrocket.gui.dialogs.optimization.GeneralOptimizationDialog.access$1900(GeneralOptimizationDialog.java:105)
at net.sf.openrocket.gui.dialogs.optimization.GeneralOptimizationDialog$18.optimizationStepTaken(GeneralOptimizationDialog.java:813)
at net.sf.openrocket.gui.dialogs.optimization.OptimizationWorker.processQueue(OptimizationWorker.java:205)
at net.sf.openrocket.gui.dialogs.optimization.OptimizationWorker.access$100(OptimizationWorker.java:35)
at net.sf.openrocket.gui.dialogs.optimization.OptimizationWorker$2.run(OptimizationWorker.java:177)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Too many digits in units

In 12.09 there are too many decimal digits shown in various places which are zero. Attached is an example from the motor selection dialog.
unit-bug

Bugs in Optimization process

Reported Automatically:

Three sets of fins on dual stage rocket, tried to optimize position on all 3 and ntohing changed, removed
one and ran optimize. Then clicked on the bottom of the two remaining in the top left list of current parameters.
That click returned the error.

net.sf.openrocket.util.BugException: BUG: setValueAt with invalid row: value=0.0 row=2 column=2 selectedModifiers.size=2 selectedModifiers=[GenericModifier[modifiedClass=net.sf.openrocket.rocketcomponent.FreeformFinSet, methodName=PositionValue, multiplier=1.0], GenericModifier[modifiedClass=net.sf.openrocket.rocketcomponent.FreeformFinSet, methodName=PositionValue, multiplier=1.0]] selectedModifierTable.getRowCount=2
at net.sf.openrocket.gui.dialogs.optimization.GeneralOptimizationDialog$ParameterSelectionTableModel.setValueAt(GeneralOptimizationDialog.java:1412)
at javax.swing.JTable.setValueAt(Unknown Source)
at javax.swing.JTable.editingStopped(Unknown Source)
at javax.swing.AbstractCellEditor.fireEditingStopped(Unknown Source)
at javax.swing.AbstractCellEditor.stopCellEditing(Unknown Source)
at net.sf.openrocket.gui.components.DoubleCellEditor.stopCellEditing(DoubleCellEditor.java:45)

16 JUnit test failures when junit is run in eclipse but not ant

There are 16 junit test failures (when junit is run inside Eclipse) caused by Application.java using DebugTranslator.java for translation. The failures are all similar to this one:

org.junit.ComparisonFailure: expected:<[TubeCustom]> but was:<[[material:TubeCustom]]>

The debug translator appends "material:" to the name, and surrounds it with [ ].

If you do "ant unittest" then the unit tests all pass. There seems to be no way to get Eclipse to not do this, and Application.java should not be defaulting to using DebugTranslator as it's BaseTranslator, so I'm going to use some code I found in the GuiceStartup that checks the locale - if it's "xx" then it will use the debug translator, otherwise it uses ResourceBundleTranslator.

Gentler errors for missing decals

Change this kind of error into a popup warning (so we don't get a bug for it).

Also, ensure that when saving, the ork file can be created with warnings if some decals are not found.

net.sf.openrocket.util.BugException: BUG: /home/user/Desktop/BodyStripe.png (No such file or directory)
at net.sf.openrocket.document.DecalRegistry$DecalImageImpl.exportImage(DecalRegistry.java:174)
at net.sf.openrocket.gui.ExportDecalDialog.export(ExportDecalDialog.java:103)
at net.sf.openrocket.gui.ExportDecalDialog.access$300(ExportDecalDialog.java:28)

Edited decal reset when changing edge mode

Open a model with decals.
Select a decal for edit (which creates temporary file), then modify the decal.
The display will change to show the edited decal.
Change the edge mode to something different like repeat.

The decal used will be the old decal, not the edited one.

2 JUnit failures comparing components

rocketcomponent.ComponentCompareTest.testComponentEquality()

java.lang.AssertionError: Comparing result of method getStageSeparationConfiguration expected:net.sf.openrocket.rocketcomponent.FlightConfigurationImpl@46b29c9d but was:net.sf.openrocket.rocketcomponent.FlightConfigurationImpl@78482bad
at org.junit.Assert.fail(Assert.java:91)
at org.junit.Assert.failNotEquals(Assert.java:645)
at org.junit.Assert.assertEquals(Assert.java:126)
at net.sf.openrocket.rocketcomponent.ComponentCompare.assertSimilarity(ComponentCompare.java:145)
at net.sf.openrocket.rocketcomponent.ComponentCompare.assertSimilarity(ComponentCompare.java:87)
at net.sf.openrocket.rocketcomponent.ComponentCompare.assertEquality(ComponentCompare.java:40)
at net.sf.openrocket.rocketcomponent.ComponentCompareTest.testComponentEquality(ComponentCompareTest.java:34)

rocketcomponent.ComponentCompareTest.testComponentSimilarity()

java.lang.AssertionError: Comparing result of method getMotorConfiguration expected:net.sf.openrocket.rocketcomponent.MotorFlightConfigurationImpl@4a2ba88c but was:net.sf.openrocket.rocketcomponent.MotorFlightConfigurationImpl@7846a55e
at org.junit.Assert.fail(Assert.java:91)
at org.junit.Assert.failNotEquals(Assert.java:645)
at org.junit.Assert.assertEquals(Assert.java:126)
at net.sf.openrocket.rocketcomponent.ComponentCompare.assertSimilarity(ComponentCompare.java:145)
at net.sf.openrocket.rocketcomponent.ComponentCompare.assertDeepSimilarity(ComponentCompare.java:63)
at net.sf.openrocket.rocketcomponent.ComponentCompareTest.testComponentSimilarity(ComponentCompareTest.java:118)

Normalization error rendering fin with two points too close together.

Never underestimate users' creativity.

http://www.rocketryforum.com/showthread.php?53254-OpenRocket-13-04-public-beta&p=524329#post524329

The Black Brant and Saturn IB models have a pretty interesting workaround for fins not following transitions. He puts the start and end point of a freeform fin 0.002 away from each other on a zero-length body tube at the small end of the transition and then is able to follow the transition and other tube sections along the root of the fin.

This wreaks total havoc with the work I did to give fins a slightly nicer cross section and show round and airfoil edges.

image
image

java.lang.IllegalStateException: Cannot normalize zero coordinate
        at net.sf.openrocket.util.Coordinate.normalize(Coordinate.java:261)
        at net.sf.openrocket.gui.figure3d.geometry.FinRenderer.edgeStrip(FinRenderer.java:78)
        at net.sf.openrocket.gui.figure3d.geometry.FinRenderer.renderFinSet(FinRenderer.java:204)
        at net.sf.openrocket.gui.figure3d.geometry.ComponentRenderer.renderGeometry(ComponentRenderer.java:103)
        at net.sf.openrocket.gui.figure3d.geometry.DisplayListComponentRenderer.renderGeometry(DisplayListComponentRenderer.java:34)
        at net.sf.openrocket.gui.figure3d.geometry.ComponentRenderer$1.render(ComponentRenderer.java:61)
        at net.sf.openrocket.gui.figure3d.FigureRenderer.renderComponent(FigureRenderer.java:123)
        at net.sf.openrocket.gui.figure3d.RocketRenderer.render(RocketRenderer.java:141)
        at net.sf.openrocket.gui.figure3d.RocketFigure3d.display(RocketFigure3d.java:300)

OpenRocket crashes on startup unless 3D is disabled

Problem:

Start OpenRocket 12.09.1, splash screen is displayed for a few seconds, then it crashes. If 3D is disabled by -Dopenrocket.3d.disable=true then app starts normally.

OS:

Linux version 3.1.0-1-amd64 (Debian 3.1.8-2) (ben@...) (gcc version 4.6.2 (Debian 4.6.2-11) )

Hardware:

root@...# lspci

00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub (rev 07)
00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)
00:02.1 Display controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)
00:1a.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 03)
00:1a.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 03)
00:1a.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 03)
00:1a.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 03)
00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 03)
00:1c.1 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 2 (rev 03)
00:1c.2 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 3 (rev 03)
00:1c.3 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 4 (rev 03)
00:1c.4 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 5 (rev 03)
00:1c.5 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 6 (rev 03)
00:1d.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:1d.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:1d.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:1d.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 93)
00:1f.0 ISA bridge: Intel Corporation ICH9M LPC Interface Controller (rev 03)
00:1f.2 SATA controller: Intel Corporation 82801IBM/IEM (ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode](rev 03)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 03)
08:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)
0e:00.0 Network controller: Intel Corporation WiFi Link 5100
1a:00.0 FireWire (IEEE 1394): O2 Micro, Inc. 1394 OHCI Compliant Host Controller (rev 01)
1a:00.1 SD Host controller: O2 Micro, Inc. Integrated MMC/SD Controller (rev 01)
1a:00.2 Mass storage controller: O2 Micro, Inc. Integrated MS/MSPRO/xD Controller (rev 01)

JUnit FinSetTest.testFreeformConvert throws NPE

JUnit FinSetTest.testFreeformConvert throws null pointer exception:

Stack Trace:

java.lang.NullPointerException
at net.sf.openrocket.rocketcomponent.RocketComponent.setAppearance(RocketComponent.java:429)
at net.sf.openrocket.rocketcomponent.FreeformFinSet.convertFinSet(FreeformFinSet.java:103)
at net.sf.openrocket.rocketcomponent.FinSetTest.testFreeformConvert(FinSetTest.java:205)
at net.sf.openrocket.rocketcomponent.FinSetTest.testFreeformConvert(FinSetTest.java:172)
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 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

java.lang.IllegalArgumentException: Requires xLow < xHigh.

Reported automatically:

java.lang.IllegalArgumentException: Requires xLow < xHigh.
at org.jfree.chart.renderer.RendererUtilities.findLiveItemsLowerBound(RendererUtilities.java:76)
at org.jfree.chart.renderer.RendererUtilities.findLiveItems(RendererUtilities.java:261)
at org.jfree.chart.plot.XYPlot.render(XYPlot.java:3819)
at org.jfree.chart.plot.XYPlot.draw(XYPlot.java:3389)
at org.jfree.chart.JFreeChart.draw(JFreeChart.java:1237)
at org.jfree.chart.ChartPanel.paintComponent(ChartPanel.java:1672)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
at javax.swing.BufferStrategyPaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.access$700(Unknown Source)
at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.WaitDispatchSupport$2.run(Unknown Source)
at java.awt.WaitDispatchSupport$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(Unknown Source)
at java.awt.Dialog.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at java.awt.Dialog.setVisible(Unknown Source)
at net.sf.openrocket.gui.plot.SimulationPlotDialog.showPlot(SimulationPlotDialog.java:163)
at net.sf.openrocket.gui.plot.SimulationPlotPanel$7.actionPerformed(SimulationPlotPanel.java:310)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.WaitDispatchSupport$2.run(Unknown Source)
at java.awt.WaitDispatchSupport$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(Unknown Source)
at java.awt.Dialog.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at java.awt.Dialog.setVisible(Unknown Source)
at net.sf.openrocket.gui.main.SimulationPanel.openDialog(SimulationPanel.java:519)
at net.sf.openrocket.gui.main.SimulationPanel.access$300(SimulationPanel.java:49)
at net.sf.openrocket.gui.main.SimulationPanel$5.actionPerformed(SimulationPanel.java:218)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Optimization bug

Reported automatically:

java.lang.IllegalStateException: Point[0.0, 0.005208333333333389, 0.3333333333333333] is not in function cache. functionCache={} futureMap={Point[0.0, 0.005208333333333389, 0.8333333333333333]=java.util.concurrent.FutureTask@dc3b9e, Point[0.0, 0.005208333333333389, 0.3333333333333333]=java.util.concurrent.FutureTask@ce33c0, Point[0.5, 0.005208333333333389, 0.3333333333333333]=java.util.concurrent.FutureTask@1a78fff, Point[0.0, 0.5052083333333334, 0.3333333333333333]=java.util.concurrent.FutureTask@1dedb4e}
at net.sf.openrocket.optimization.general.ParallelExecutorCache.getValue(ParallelExecutorCache.java:237)
at net.sf.openrocket.optimization.general.multidim.MultidirectionalSearchOptimizer.optimize(MultidirectionalSearchOptimizer.java:218)
at net.sf.openrocket.gui.dialogs.optimization.OptimizationWorker.run(OptimizationWorker.java:112)

Undo/Redo error: addUndoPosition called while storedDescription=Modify Shock cord description=Modify Body tube

Reported automatically:

net.sf.openrocket.gui.main.SwingExceptionHandler$InternalException: Undo/Redo error: addUndoPosition called while storedDescription=Modify Shock cord description=Modify Body tube
at net.sf.openrocket.gui.main.SwingExceptionHandler.handleErrorCondition(SwingExceptionHandler.java:101)
at net.sf.openrocket.document.OpenRocketDocument.logUndoError(OpenRocketDocument.java:561)
at net.sf.openrocket.document.OpenRocketDocument.addUndoPosition(OpenRocketDocument.java:321)
at net.sf.openrocket.gui.configdialog.ComponentConfigDialog.showDialog(ComponentConfigDialog.java:193)
at net.sf.openrocket.gui.scalefigure.RocketPanel.handleComponentClick(RocketPanel.java:577)
at net.sf.openrocket.gui.scalefigure.RocketPanel.handleMouseClick(RocketPanel.java:535)
at net.sf.openrocket.gui.scalefigure.RocketPanel.access$100(RocketPanel.java:90)
at net.sf.openrocket.gui.scalefigure.RocketPanel$2.mouseClicked(RocketPanel.java:204)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

java.lang.IllegalArgumentException: This dataset already contains a series with the key Sustainer: Position parallel to wind (ft)

Reported automatically:

java.lang.IllegalArgumentException: This dataset already contains a series with the key Sustainer: Position parallel to wind (ft)
at org.jfree.data.xy.XYSeriesCollection.addSeries(XYSeriesCollection.java:153)
at net.sf.openrocket.gui.plot.SimulationPlot.(SimulationPlot.java:174)
at net.sf.openrocket.gui.plot.SimulationPlotDialog.(SimulationPlotDialog.java:47)
at net.sf.openrocket.gui.plot.SimulationPlotDialog.showPlot(SimulationPlotDialog.java:163)
at net.sf.openrocket.gui.plot.SimulationPlotPanel$7.actionPerformed(SimulationPlotPanel.java:310)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

This problem is because the version of JFreeChart we use requires each series name to be unique.

JUnit UpdateInfoTest.testRandomInputData() fails with negative array size

This test uses random sized data, which itself is bad practice since unit tests need to be consistently reproducible (otherwise the test may fail or succeed randomly). I happened to get a failure on this run because the code to generate a random value to declare an array size has a bug that can return a negative number.

The fix here is to not generate random sizes, but instead to pick a set of static good test values for the input data.

java.lang.NegativeArraySizeException
at net.sf.openrocket.communication.UpdateInfoTest.testRandomInputData(UpdateInfoTest.java:200)
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 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Illegal multiplier value, mul=1001.33

Reported automatically:

net.sf.openrocket.gui.main.SwingExceptionHandler$InternalException: Illegal multiplier value, mul=1001.33
at net.sf.openrocket.gui.main.SwingExceptionHandler.handleErrorCondition(SwingExceptionHandler.java:101)
at net.sf.openrocket.gui.dialogs.ScaleDialog.doScale(ScaleDialog.java:431)
at net.sf.openrocket.gui.dialogs.ScaleDialog.access$600(ScaleDialog.java:65)
at net.sf.openrocket.gui.dialogs.ScaleDialog$4.actionPerformed(ScaleDialog.java:406)
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:6414)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
at java.awt.Component.processEvent(Component.java:6179)
at java.awt.Container.processEvent(Container.java:2083)
at java.awt.Component.dispatchEventImpl(Component.java:4776)

TF: Use of DebugTranslator.java in Application.java breaks 16 junit tests

I'm looking at the 17 junit test failures, and 16 of them are caused by Application.java using DebugTranslator.java for translation. The failures are all similar to this one:

org.junit.ComparisonFailure: expected:<[TubeCustom]> but was:<[[material:TubeCustom]]>

The debug translator appends "material:" to the name, and surrounds it with [ ]. Should the application.java be using the DebugTranslator all the time, or only if some property (useDebugTranslator, for example) is set?

java.lang.IllegalStateException: Cannot normalize zero coordinate

java.lang.IllegalStateException: Cannot normalize zero coordinate
at net.sf.openrocket.util.Coordinate.normalize(Coordinate.java:261)
at net.sf.openrocket.gui.figure3d.geometry.FinRenderer.edgeStrip(FinRenderer.java:78)
at net.sf.openrocket.gui.figure3d.geometry.FinRenderer.renderFinSet(FinRenderer.java:204)
at net.sf.openrocket.gui.figure3d.geometry.ComponentRenderer.renderGeometry(ComponentRenderer.java:103)
at net.sf.openrocket.gui.figure3d.geometry.DisplayListComponentRenderer.renderGeometry(DisplayListComponentRenderer.java:34)
at net.sf.openrocket.gui.figure3d.geometry.ComponentRenderer$1.render(ComponentRenderer.java:61)
at net.sf.openrocket.gui.figure3d.RealisticRenderer.render(RealisticRenderer.java:127)
at net.sf.openrocket.gui.figure3d.RealisticRenderer.renderComponent(RealisticRenderer.java:105)
at net.sf.openrocket.gui.figure3d.RocketRenderer.render(RocketRenderer.java:141)
at net.sf.openrocket.gui.figure3d.RocketFigure3d.display(RocketFigure3d.java:300)
at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:373)
at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:358)
at javax.media.opengl.awt.GLCanvas$7.run(GLCanvas.java:983)
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:655)
at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:594)
at javax.media.opengl.awt.GLCanvas$8.run(GLCanvas.java:996)
at javax.media.opengl.Threading.invoke(Threading.java:193)
at javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:449)
at javax.media.opengl.awt.GLCanvas.paint(GLCanvas.java:499)
at sun.awt.RepaintArea.paintComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

NPE net.sf.openrocket.gui.figure3d.RocketFigure3d$2.mouseDragged(RocketFigure3d.java:241)

Reported automatically:

java.lang.NullPointerException
at net.sf.openrocket.gui.figure3d.RocketFigure3d$2.mouseDragged(RocketFigure3d.java:241)
at java.awt.Component.processMouseMotionEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Fin marking guide broken

Reported on TRF. under some circumstances, the fin marking lines might be drawn outside the guide.

JUnit RocksimDocumentDTOTest.testRoundTrip() throws NPE during loadRocksimRocket3

JUnit RocksimDocumentDTOTest.testRoundTrip() throws null pointer exception during loadRocksimRocket3 call. (Application.injector is null)

Stack Trace:

java.lang.NullPointerException
at net.sf.openrocket.startup.Application.getWatchService(Application.java:73)
at net.sf.openrocket.document.DecalRegistry.(DecalRegistry.java:36)
at net.sf.openrocket.document.OpenRocketDocument.(OpenRocketDocument.java:99)
at net.sf.openrocket.document.OpenRocketDocumentFactory.createEmptyRocket(OpenRocketDocumentFactory.java:30)
at net.sf.openrocket.file.rocksim.importt.RocksimLoaderTest.loadRocksimRocket3(RocksimLoaderTest.java:166)
at net.sf.openrocket.file.rocksim.export.RocksimDocumentDTOTest.testRoundTrip(RocksimDocumentDTOTest.java:55)
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 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

NPE at net.sf.openrocket.gui.figure3d.RocketFigure3d.setType(RocketFigure3d.java:668)

Reported automatically:

java.lang.NullPointerException
at net.sf.openrocket.gui.figure3d.RocketFigure3d.setType(RocketFigure3d.java:668)
at net.sf.openrocket.gui.scalefigure.RocketPanel$6.setSelectedItem(RocketPanel.java:296)
at javax.swing.JComboBox.setSelectedItem(JComboBox.java:557)
at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:603)
at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:817)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
at java.awt.Component.processMouseEvent(Component.java:6348)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
at com.apple.laf.AquaComboBoxPopup$1.processMouseEvent(AquaComboBoxPopup.java:129)
at java.awt.Component.processEvent(Component.java:6113)
at java.awt.Container.processEvent(Container.java:2085)
at java.awt.Component.dispatchEventImpl(Component.java:4714)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
at java.awt.Container.dispatchEventImpl(Container.java:2129)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4544)
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)

The CP & CG markers appear in the 2d rear view.

Regression bug. The CP & CG markers appear in the 2d rear view. Steps to reproduce (at least, these steps work on my Mac OS X 10.8 machine).

  1. Start 13.04beta2
  2. File... Open Example..., select "A simple model rocket"
  3. In the rocket view at bottom , change the View Type to "Back View"
  4. The CP and CG markers appear off to the right near the 25cm mark

Checked 12.09.1, this problem doesn't occur.

Decal edit with external program not reflected in 3d view.

If you edit a decal with a paint program and save it the new decal is not shown in the 3d view.

The file watcher picks up on the change, which then fires a ComponentChangeEvent with type correctly set to TEXTURE_CHANGE.

That event is delivered to Configuration::componentChanged(ComponentChangeEvent e);

That method calls Configuration::fireChangeEvent(void); which creates a new, featureless, EventObject which is passed on to the Configuration's StateChangeListeners, which include Rocket Panel.

The check at RocketPanel.java:218 to see if it is a ComponentChangeEvent with TEXTURE_CHANGE always fails.

The bold portion is the core of the problem: Configuration masks the source of a change. I am not sure if that is wrong, or if RocketPanel should also be a ComponentChangeListener on the rocket.

Change M= in RocketFigure view

It would be nice to have the stability criteria displayed in the RocketFigure to be based on maximum velocity of the model.

Crash after pressing 3D view button on Mac OS X 10.8.2

have git and eclipse set up now on my Mac running OS X 10.8.2. Actually it's a hackintosh, using the tonymacx86 multibeast install method. On the regular distribution openrocket 12.09.1 it crashes when I press the "3D" button. Now I've synced the latest and built in eclipse, run in debug mode and I get the same crash. Does this happen to anyone else, and is anyone working on it? I

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSViewAWT CGLPBufferObj]: unrecognized selector sent to instance 0x7fc819c279f0

Labels overlap on fin template

On models which have different fin sets aligned, the labels for the fins on the fin template are overlapped. This makes the fin template hard to read.

3D Decals fail to display on systems that do not support NPOT textures.

Using textures with sizes that are not power of two causes those textures to not be displayed on some older systems. See https://www.opengl.org/wiki/NPOT_Texture for background.

It ends up looking like this:

image

Textures need sizes like 64x128 or 32x256 on these systems. If I read the above wiki link correctly this is not supposed to happen, but this is a circa 2010 imac which might have one of those Radeon cards.

Courses of action include:

  • Resizing images before passing to GL either
    • if NPOT is not supported (The trouble with this is that GL2 requires NPOT support, so there is no way to ask)
    • or based on a user preference.
  • Use power of two textures in examples and
  • document the problem and wait for older computers to break

NPE at javax.swing.plaf.basic.BasicComboBoxUI$Handler.contentsChanged(Unknown Source)

reported automatically:

java.lang.NullPointerException
at javax.swing.plaf.basic.BasicComboBoxUI$Handler.contentsChanged(Unknown Source)
at net.sf.openrocket.gui.adaptors.FlightConfigurationModel.fireListDataEvent(FlightConfigurationModel.java:138)
at net.sf.openrocket.gui.adaptors.FlightConfigurationModel.stateChanged(FlightConfigurationModel.java:151)
at net.sf.openrocket.rocketcomponent.Configuration.fireChangeEvent(Configuration.java:220)
at net.sf.openrocket.rocketcomponent.Configuration.componentChanged(Configuration.java:228)
at net.sf.openrocket.rocketcomponent.Rocket.fireComponentChangeEvent(Rocket.java:407)
at net.sf.openrocket.rocketcomponent.RocketComponent.fireComponentChangeEvent(RocketComponent.java:1569)
at net.sf.openrocket.rocketcomponent.RocketComponent.fireComponentChangeEvent(RocketComponent.java:1581)
at net.sf.openrocket.rocketcomponent.RocketComponent.setAppearance(RocketComponent.java:443)
at net.sf.openrocket.gui.configdialog.AppearancePanel$2.stateChanged(AppearancePanel.java:152)
at net.sf.openrocket.util.AbstractChangeSource.fireChangeEvent(AbstractChangeSource.java:41)
at net.sf.openrocket.util.AbstractChangeSource.fireChangeEvent(AbstractChangeSource.java:52)
at net.sf.openrocket.appearance.AppearanceBuilder.fireChangeEvent(AppearanceBuilder.java:225)
at net.sf.openrocket.appearance.AppearanceBuilder.setShine(AppearanceBuilder.java:107)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.sf.openrocket.gui.adaptors.DoubleModel.setValue(DoubleModel.java:764)
at net.sf.openrocket.gui.adaptors.DoubleModel$ValueSpinnerModel.setValue(DoubleModel.java:109)
at javax.swing.JSpinner.setValue(Unknown Source)
at javax.swing.plaf.basic.BasicSpinnerUI$ArrowButtonHandler.actionPerformed(Unknown Source)
at javax.swing.Timer.fireActionPerformed(Unknown Source)
at javax.swing.Timer$DoPostEvent.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Presets from old fields might not be found.

I have an example ork file created with 12.09.1 containing two preset components. When you load the ork file from the command line, only one preset is found (the other produces warning for no match). However, if you open the ork file from the File->Open menu, both presets are found.

NPE at net.sf.openrocket.gui.main.ExampleDesignFileAction.updateMenu(ExampleDesignFileAction.java:40)

Reported automatically:

java.lang.NullPointerException
at net.sf.openrocket.gui.main.ExampleDesignFileAction.updateMenu(ExampleDesignFileAction.java:40)
at net.sf.openrocket.gui.main.ExampleDesignFileAction.(ExampleDesignFileAction.java:31)
at net.sf.openrocket.gui.main.BasicFrame.createMenu(BasicFrame.java:434)
at net.sf.openrocket.gui.main.BasicFrame.(BasicFrame.java:210)
at net.sf.openrocket.gui.main.BasicFrame.open(BasicFrame.java:1217)
at net.sf.openrocket.gui.main.BasicFrame.open(BasicFrame.java:1134)
at net.sf.openrocket.gui.main.BasicFrame.openAction(BasicFrame.java:1061)
at net.sf.openrocket.gui.main.BasicFrame.access$600(BasicFrame.java:108)
at net.sf.openrocket.gui.main.BasicFrame$6.actionPerformed(BasicFrame.java:422)
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.AbstractButton.doClick(AbstractButton.java:389)
at com.apple.laf.ScreenMenuItem.actionPerformed(ScreenMenuItem.java:95)
at java.awt.MenuItem.processActionEvent(MenuItem.java:650)
at java.awt.MenuItem.processEvent(MenuItem.java:609)
at java.awt.MenuComponent.dispatchEventImpl(MenuComponent.java:343)
at java.awt.MenuComponent.dispatchEvent(MenuComponent.java:331)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:720)
at java.awt.EventQueue.access$400(EventQueue.java:82)
at java.awt.EventQueue$2.run(EventQueue.java:676)
at java.awt.EventQueue$2.run(EventQueue.java:674)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:690)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:687)
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)

JUnit RocksimLoaderTest.testLoadFromStream() fails because it expects warning about "Parachute spill holes are not supported."

JUnit RocksimLoaderTest.testLoadFromStream() fails because it expects a warning about "Parachute spill holes are not supported." I tested this manually by:

  1. Use test RockSim file test/net/sf/openrocket/file/rocksim/importt/rocksimTestRocket3.rkt
  2. Open in 12.09.1, get 4 warnings, including the "parachute spillhole" one.
  3. In eclipse, open 13.04beta1, I get 3 warnings "parachute spillhole" missing.

So are parachute spillholes now supported, or is the missing warning a bug?

Full list of warnings the testLoadFromStream() is expecting to see when loading rocksimTestRocket3.rkt:

WarningSet
[
Parachute spill holes are not supported. Ignoring.
Pods are not currently supported. Ignoring.
Tube fins are not currently supported. Ignoring.
Ring tails are not currently supported. Ignoring.
]

Stack trace:

java.lang.AssertionError: expected:<4> but was:<3>
at org.junit.Assert.fail(Assert.java:91)
at org.junit.Assert.failNotEquals(Assert.java:645)
at org.junit.Assert.assertEquals(Assert.java:126)
at org.junit.Assert.assertEquals(Assert.java:470)
at org.junit.Assert.assertEquals(Assert.java:454)
at net.sf.openrocket.file.rocksim.importt.RocksimLoaderTest.testLoadFromStream(RocksimLoaderTest.java:126)
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 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

from range is singular and to range is not: value=216.88248691316463 fromMin=0.0 fromMax=0.0toMin=0.7 toMax=1.0

Reported in 12.03:

java.lang.IllegalArgumentException: from range is singular and to range is not: value=216.88248691316463 fromMin=0.0 fromMax=0.0toMin=0.7 toMax=1.0
at net.sf.openrocket.util.MathUtil.map(MathUtil.java:87)
at net.sf.openrocket.gui.main.SimulationRunDialog$InteractiveSimulationWorker.process(SimulationRunDialog.java:350)
at javax.swing.SwingWorker$3.run(SwingWorker.java:414)
at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:832)
at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:842)
at javax.swing.Timer.fireActionPerformed(Timer.java:312)
at javax.swing.Timer$DoPostEvent.run(Timer.java:244)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:154)
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
at java.awt.Dialog.show(Dialog.java:1082)
at java.awt.Component.show(Component.java:1651)
at java.awt.Component.setVisible(Component.java:1603)
at java.awt.Window.setVisible(Window.java:1014)
at java.awt.Dialog.setVisible(Dialog.java:1005)
at net.sf.openrocket.gui.main.SimulationRunDialog.runSimulations(SimulationRunDialog.java:189)
at net.sf.openrocket.gui.main.SimulationEditDialog$2.actionPerformed(SimulationEditDialog.java:172)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
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:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:702)
at java.awt.EventQueue$4.run(EventQueue.java:700)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:154)
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
at java.awt.Dialog.show(Dialog.java:1082)
at java.awt.Component.show(Component.java:1651)
at java.awt.Component.setVisible(Component.java:1603)
at java.awt.Window.setVisible(Window.java:1014)
at java.awt.Dialog.setVisible(Dialog.java:1005)
at net.sf.openrocket.gui.main.SimulationPanel.openDialog(SimulationPanel.java:517)
at net.sf.openrocket.gui.main.SimulationPanel.access$300(SimulationPanel.java:47)
at net.sf.openrocket.gui.main.SimulationPanel$1.actionPerformed(SimulationPanel.java:94)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
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.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:702)
at java.awt.EventQueue$4.run(EventQueue.java:700)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

JUnit RocketTest.testCopyFrom() NPE during rocket copy

JUnit test RocketTest.testCopyFrom() throws a null pointer exception during the Rocket.copy() method call.

Environment:

Mac OS X 10.8.2, Eclipse Juno SR1 build 20121004-1855
Codebase: openrocket synced to commit aef2ad6 from 18 Apr 2013.

Stack Trace:

java.lang.NullPointerException
at net.sf.openrocket.rocketcomponent.FlightConfigurationImpl.(FlightConfigurationImpl.java:55)
at net.sf.openrocket.rocketcomponent.BodyTube.copyWithOriginalID(BodyTube.java:435)
at net.sf.openrocket.rocketcomponent.RocketComponent.copyWithOriginalID(RocketComponent.java:389)
at net.sf.openrocket.rocketcomponent.Stage.copyWithOriginalID(Stage.java:58)
at net.sf.openrocket.rocketcomponent.RocketComponent.copyWithOriginalID(RocketComponent.java:389)
at net.sf.openrocket.rocketcomponent.Rocket.copyWithOriginalID(Rocket.java:267)
at net.sf.openrocket.rocketcomponent.Rocket.copyWithOriginalID(Rocket.java:1)
at net.sf.openrocket.rocketcomponent.RocketComponent.copy(RocketComponent.java:342)
at net.sf.openrocket.rocketcomponent.RocketTest.testCopyFrom(RocketTest.java:14)
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 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

12 JUnit failures with unexpected invocation of WatchService injector

12 unit tests fail with a stack trace saying:

java.lang.AssertionError: unexpected invocation: injector.getInstance()
expectations:
allowed, never invoked:
injector.getInstance()
parameter 0 did not match:
,
because was
;
returns net.sf.openrocket.database.motor.ThrustCurveMotorSetDatabase@5b5b55bc
what happened before this: nothing!

The 12 failing tests:

file.rocksim.importt.RocksimLoaderTest.testFinsOnInnerTube()
file.rocksim.importt.RocksimLoaderTest.testLoadFromStream()
openrocket.IntegrationTest.test1()
optimization.TestRocketOptimizationFunction.testNormalEvaluation()
optimization.TestRocketOptimizationFunction.testNaNValue()
optimization.TestRocketOptimizationFunction.testOutsideDomain()
optimization.TestRocketOptimizationFunction.testOutsideDomain2()
optimization.TestRocketOptimizationFunction.testNewSimulationInstance()
optimization.rocketoptimization.modifiers.TestGenericModifier.testGetCurrentValue()
optimization.rocketoptimization.modifiers.TestGenericModifier.testGetCurrentScaledValue()
optimization.rocketoptimization.modifiers.TestGenericModifier.testModify()
simulation.customexpression.TestExpressions.testExpressions()

Full stack trace:

java.lang.AssertionError: unexpected invocation: injector.getInstance()
expectations:
allowed, never invoked: injector.getInstance()
parameter 0 did not match: , because was ; returns net.sf.openrocket.database.motor.ThrustCurveMotorSetDatabase@5b5b55bc
what happened before this: nothing!
at org.jmock.internal.InvocationDispatcher.dispatch(InvocationDispatcher.java:85)
at org.jmock.Mockery.dispatch(Mockery.java:250)
at org.jmock.Mockery.access$100(Mockery.java:46)
at org.jmock.Mockery$MockObject.invoke(Mockery.java:290)
at org.jmock.internal.InvocationDiverter.invoke(InvocationDiverter.java:27)
at org.jmock.internal.FakeObjectMethods.invoke(FakeObjectMethods.java:38)
at org.jmock.internal.SingleThreadedPolicy$1.invoke(SingleThreadedPolicy.java:21)
at org.jmock.lib.JavaReflectionImposteriser$1.invoke(JavaReflectionImposteriser.java:33)
at com.sun.proxy.$Proxy29.getInstance(Unknown Source)
at net.sf.openrocket.startup.Application.getWatchService(Application.java:73)
at net.sf.openrocket.document.DecalRegistry.(DecalRegistry.java:36)
at net.sf.openrocket.document.OpenRocketDocument.(OpenRocketDocument.java:99)
at net.sf.openrocket.document.OpenRocketDocumentFactory.createEmptyRocket(OpenRocketDocumentFactory.java:30)
at net.sf.openrocket.file.GeneralRocketLoader.(GeneralRocketLoader.java:52)
at net.sf.openrocket.IntegrationTest.test1(IntegrationTest.java:118)
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 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.jmock.integration.junit4.JMock$1.evaluate(JMock.java:52)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Edit simulations, launch site altitude slider is confusing

Report from the Rocketry Forum. User was trying to set altitude to 6,500 feet, but the slide maxs out at 3,330 feet (1km). This lead user to believe that 3,300 feed was the max launch altitude that OR could handle, when in fact any altitude can be typed in the textbox.

Possible fix: rather than change the max altitude on the slider, remove the slider as most people will likely type in their actual altitude at their location.

Bonus points: Add button to search and find altitude, latitude, and longitude at your location. Use google maps api?

JUnit PluginTest.testPluginModule fails with Guice creation errors

Stack Trace:

com.google.inject.CreationException: Guice creation errors:

  1. No implementation for net.sf.openrocket.l10n.Translator was bound.
    while locating net.sf.openrocket.l10n.Translator
    for field at net.sf.openrocket.formatting.MotorDescriptionSubstitutor.trans(MotorDescriptionSubstitutor.java:22)
    at net.sf.openrocket.plugin.PluginModule.configure(PluginModule.java:50)

1 error
at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:435)
at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:154)
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:106)
at com.google.inject.Guice.createInjector(Guice.java:95)
at com.google.inject.Guice.createInjector(Guice.java:72)
at com.google.inject.Guice.createInjector(Guice.java:62)
at net.sf.openrocket.plugin.PluginTest.testPluginModule(PluginTest.java:20)
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 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Rocksim Subassemblies are not supported in OpenRocket, No warning on import

Rocksim Subassemblies are not supported in OpenRocket, with no warning given when a rocksim file containing those is opened in OpenRocket - those features will be silently dropped from the model.

Rocksim file showing problem (bottom half of rocket is lost on import) http://www.rocketreviews.com/wildman-rocketry-wildman-rocket-dual-deploy-7143.html

Possible fix: either warn on open, or add support for subassemblies.

Original Report:
http://www.rocketryforum.com/showthread.php?55541-TWO-OpenRocket-Questions

No warning when saving rocket with OR-only features in Rocksim format

From a comment on the Rocketry Forum: user saved rocket but after reopening, the following was noticed:

  1. Have to open up Stage and un-check the Override Center of Gravity each time after opening rocket file again.
  2. Add a mass component to the tube coupler (haven't found this problem anywhere else), then save and close the file, it omits this mass when file is re-opened.
  3. OR doesn't save "Deploys at" for either the payload parachute or the booster chute when file is saved and reopened.

These (and possibly others) are caused by using .ork format file features but saving in .rkt Rocksim format.

Possible Fix: popup warning dialog when saving in Rocksim format when using OR only features (or maybe always, warning that "there may be features not saved").

Link to original comment on TRF: http://www.rocketryforum.com/showthread.php?55333-OpenRocket-Problems

java.lang.ArrayIndexOutOfBoundsException: -2 at net.sf.openrocket.gui.adaptors.DecalModel.getElementAt(DecalModel.java:55)

Reported automatically:

java.lang.ArrayIndexOutOfBoundsException: -2
at net.sf.openrocket.gui.adaptors.DecalModel.getElementAt(DecalModel.java:55)
at com.apple.laf.AquaComboBoxUI$1.itemStateChanged(AquaComboBoxUI.java:96)
at javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1205)
at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1262)
at javax.swing.JComboBox.setSelectedItem(JComboBox.java:564)
at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:603)
at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:831)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.