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

EOModel import: NPE importing EOFetchSpecification

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 4.2.RC2
    • 4.2, 5.0-M1
    • None
    • None

    Description

      Per user report at https://lists.apache.org/list.html?user@cayenne.apache.org , there's an NPE during EOModel import, caused by EOFetchSpecification with relationships referencing a different EOModel.

       qualifier = {
                 class = EOAndQualifier;
                 qualifiers = (
                     {
                         class = EOKeyValueQualifier;
                         key = "storedName.netid";
                         selectorName = "isEqualTo:";
                         value = {"_key" = netid; class = EOQualifierVariable; };
                     },
                     {
                         class = EOKeyValueQualifier;
                         key = "storedName.sourceDnd.domain";
                         selectorName = "isEqualTo:";
                         value = {"_key" = upperRealm; class = EOQualifierVariable; };
                     }
                 );
             };
      
      CayenneModeler Info
      Version: 4.2.RC2
      Build Date: Dec 01 2022 08:35:36
      Exception: 
      =================================
      org.apache.cayenne.exp.ExpressionException: [v.4.2.RC2 Dec 01 2022 08:35:36] And: invalid child - null
      	at org.apache.cayenne.exp.parser.AggregateConditionNode.jjtAddChild(AggregateConditionNode.java:94)
      	at org.apache.cayenne.exp.parser.SimpleNode.setOperand(SimpleNode.java:325)
      	at org.apache.cayenne.exp.ExpressionFactory.joinExp(ExpressionFactory.java:1298)
      	at org.apache.cayenne.exp.ExpressionFactory.joinExp(ExpressionFactory.java:1270)
      	at org.apache.cayenne.wocompat.EOQuery$EOFetchSpecificationParser.makeQualifier(EOQuery.java:413)
      	at org.apache.cayenne.wocompat.EOModelProcessor.makeEOQueryDescriptor(EOModelProcessor.java:266)
      	at org.apache.cayenne.wocompat.EOModelProcessor.makeQuery(EOModelProcessor.java:223)
      	at org.apache.cayenne.wocompat.EOModelProcessor.loadEOModel(EOModelProcessor.java:180)
      	at org.apache.cayenne.wocompat.EOModelProcessor.loadEOModel(EOModelProcessor.java:105)
      	at org.apache.cayenne.modeler.action.ImportEOModelAction.importEOModel(ImportEOModelAction.java:124)
      	at org.apache.cayenne.modeler.action.ImportEOModelAction.performAction(ImportEOModelAction.java:88)
      	at org.apache.cayenne.modeler.util.CayenneAction.actionPerformed(CayenneAction.java:171)
      	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
      	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
      	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
      	at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
      	at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:374)
      	at java.desktop/com.apple.laf.ScreenMenuItem.actionPerformed(ScreenMenuItem.java:129)
      	at java.desktop/java.awt.MenuItem.processActionEvent(MenuItem.java:692)
      	at java.desktop/java.awt.MenuItem.processEvent(MenuItem.java:651)
      	at java.desktop/java.awt.MenuComponent.dispatchEventImpl(MenuComponent.java:379)
      	at java.desktop/java.awt.MenuComponent.dispatchEvent(MenuComponent.java:367)
      	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
      	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
      	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
      	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
      	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
      	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
      	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
      	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
      	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
      	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
      	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
      	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
      	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
      	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
      	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
      	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
      	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
      

      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:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 20m
                20m