Uploaded image for project: 'Cayenne'
  1. Cayenne
  2. CAY-2303

Modeler: Exception when creating a new ObjEntity from DbEntity

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 4.0.B1
    • 4.0.B1
    • None
    • None
    • Nightly build of CayenneModeler:

      Version: 4.0.M6-SNAPSHOT
      Build Date: May 06 2017 07:40:32

    Description

      1. Created new project with 2 DataMaps (don't think 2 DataMaps is relevant here)
      2. Created 2 DbEntities
      3. Created a relationship between them, but forgot to specify joins
      4. Clicked on "Create ObjEntity" button inside DbEntity editor.
      5. The stack below appeared in a dialog.

      I guess we can handle this condition more gracefully.

      java.lang.IllegalArgumentException: No joins for relationship. Can't generate a name
      at org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator.toOneRelationshipName(DefaultObjectNameGenerator.java:106)
      at org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator.relationshipName(DefaultObjectNameGenerator.java:61)
      at org.apache.cayenne.modeler.action.DbEntitySyncAction$PreserveRelationshipNameGenerator.relationshipName(DbEntitySyncAction.java:141)
      at org.apache.cayenne.dbsync.merge.context.EntityMergeSupport.createObjRelationship(EntityMergeSupport.java:198)
      at org.apache.cayenne.dbsync.merge.context.EntityMergeSupport.addMissingRelationship(EntityMergeSupport.java:260)
      at org.apache.cayenne.dbsync.merge.context.EntityMergeSupport.addMissingRelationships(EntityMergeSupport.java:189)
      at org.apache.cayenne.dbsync.merge.context.EntityMergeSupport.synchronizeWithDbEntity(EntityMergeSupport.java:148)
      at org.apache.cayenne.modeler.action.CreateObjEntityAction.createObjEntity(CreateObjEntityAction.java:119)
      at org.apache.cayenne.modeler.action.CreateObjEntityAction.performAction(CreateObjEntityAction.java:79)
      at org.apache.cayenne.modeler.util.CayenneAction.actionPerformed(CayenneAction.java:163)
      at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
      at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
      at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
      at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
      at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
      at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
      at java.awt.Component.processMouseEvent(Component.java:6533)
      at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
      at java.awt.Component.processEvent(Component.java:6298)
      at java.awt.Container.processEvent(Container.java:2236)
      at java.awt.Component.dispatchEventImpl(Component.java:4889)
      at java.awt.Container.dispatchEventImpl(Container.java:2294)
      at java.awt.Component.dispatchEvent(Component.java:4711)
      at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
      at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
      at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
      at java.awt.Container.dispatchEventImpl(Container.java:2280)
      at java.awt.Window.dispatchEventImpl(Window.java:2746)
      at java.awt.Component.dispatchEvent(Component.java:4711)
      at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
      at java.awt.EventQueue.access$500(EventQueue.java:97)
      at java.awt.EventQueue$3.run(EventQueue.java:709)
      at java.awt.EventQueue$3.run(EventQueue.java:703)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
      at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
      at java.awt.EventQueue$4.run(EventQueue.java:731)
      at java.awt.EventQueue$4.run(EventQueue.java:729)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
      at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
      at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
      at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
      at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

      Attachments

        Activity

          People

            ntimofeev Nikita Timofeev
            andrus Andrus Adamchik
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: