Are you sure this happens on "Save"? I just checked the code, and the
dialog is only called when you click "Synch ObjEntity with DbEntity"
button. And from there it does the right thing. Also I couldn't
reproduce the memory problem. The only retained object in this
operation is the undo stack, which is limited to 100 undo's (which
does take memory, but a reasonable amount).
So what I suggest now is that we just wait till it happens again, to
see if there is a pattern to reproduce it.
CayenneModeler Info
Version: cayenne.version
Build Date: cayenne.build.date
Doesn't look like this is coming from a release build of the Modeler.
Andrus
On Feb 1, 2010, at 1:11 AM, Joe Baldwin wrote:
Tried to save a project with a new Entity (which had a many to one
relationship). When I selected "Save" the following panel was
displayed:
Remove Foreign Keys mapped as object attributes?
Not sure what this would accomplish, I selected "Yes", which appears
to be the wrong answer because Cayenne Modeler crashed big time.
(see auto report below)
Joe
CayenneModeler Info
Version: cayenne.version
Build Date: cayenne.build.date
Exception:
=================================
java.lang.OutOfMemoryError: Java heap space
at java.util.Collections
$UnmodifiableCollection.iterator(Collections.java:1006)
at
org
.apache
.cayenne.map.ObjEntity.getAttributeForDbAttribute(ObjEntity.java:845)
at org.apache.cayenne.modeler.undo.DbEntitySyncUndoableEdit
$MeaningfulFKsUndoableEdit.<init>(DbEntitySyncUndoableEdit.java:96)
at
org
.apache
.cayenne
.modeler
.action.DbEntitySyncAction.synchDbEntity(DbEntitySyncAction.java:95)
at
org
.apache
.cayenne
.modeler
.action.DbEntitySyncAction.performAction(DbEntitySyncAction.java:60)
at
org
.apache
.cayenne
.modeler.util.CayenneAction.actionPerformed(CayenneAction.java:163)
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.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:
272)
at java.awt.Component.processMouseEvent(Component.java:6348)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
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)