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)