Error generating classes with invalid path in the query qualifier
-----------------------------------------------------------------
Key: CAY-1674
URL: https://issues.apache.org/jira/browse/CAY-1674
Project: Cayenne
Issue Type: Bug
Affects Versions: 3.1M3
Environment: affects 3.1M1 - 3.1M4-SNAPSHOT, and probably earlier
versions as well
Reporter: Andrus Adamchik
Priority: Minor
When a model has a query with invalid path , and I am attempting to generate
classes from the Modeler, the following error (is this when the queries methods
are generated??). Class generation behavior is probably correct here (although
it may be more descriptive, showing the root object - the query - that caused
the error). However we need to add a validation to the list of project
validations to detect this condition on project save/load.
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: SEVERE: Error
generating classes
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]:
org.apache.velocity.exception.MethodInvocationException: Invocation of method
'getParameterNames' in class org.apache.cayenne.gen.DataMapUtils threw
exception org.apache.cayenne.exp.ExpressionException: [v.3.1M3 Sep 13 2011
18:52:59] Can't resolve path component: [Entity.badRelationship]. at
templates/v1_2/datamap-superclass.vm[line 43, column 40]
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.runtime.parser.node.ASTMethod.handleInvocationException(ASTMethod.java:337)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:284)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:262)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:507)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:282)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:366)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.Template.merge(Template.java:328)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.Template.merge(Template.java:235)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.gen.ClassGenerationAction.execute(ClassGenerationAction.java:242)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.gen.ClassGenerationAction.execute(ClassGenerationAction.java:214)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.modeler.dialog.codegen.CodeGeneratorController.generateAction(CodeGeneratorController.java:146)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.lang.reflect.Method.invoke(Method.java:597)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:491)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:785)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:61)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
ognl.OgnlRuntime.callMethod(OgnlRuntime.java:819)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
ognl.ASTMethod.getValueBody(ASTMethod.java:75)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
ognl.SimpleNode.getValue(SimpleNode.java:210)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
ognl.Ognl.getValue(Ognl.java:333)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
ognl.Ognl.getValue(Ognl.java:413)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
ognl.Ognl.getValue(Ognl.java:395)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.swing.BindingBase.getValue(BindingBase.java:168)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.swing.ActionBinding.fireAction(ActionBinding.java:80)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.swing.ActionBinding$1.actionPerformed(ActionBinding.java:42)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.Component.processMouseEvent(Component.java:6373)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.Component.processEvent(Component.java:6138)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.Container.processEvent(Container.java:2085)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.Component.dispatchEventImpl(Component.java:4735)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.Container.dispatchEventImpl(Container.java:2143)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.Component.dispatchEvent(Component.java:4565)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.Container.dispatchEventImpl(Container.java:2129)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.Window.dispatchEventImpl(Window.java:2478)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.Component.dispatchEvent(Component.java:4565)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventQueue.access$000(EventQueue.java:85)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventQueue$1.run(EventQueue.java:638)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventQueue$1.run(EventQueue.java:636)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.security.AccessController.doPrivileged(Native Method)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventQueue$2.run(EventQueue.java:652)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventQueue$2.run(EventQueue.java:650)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.security.AccessController.doPrivileged(Native Method)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventQueue.dispatchEvent(EventQueue.java:649)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.Dialog$1.run(Dialog.java:1046)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.Dialog$3.run(Dialog.java:1098)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.security.AccessController.doPrivileged(Native Method)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.Dialog.show(Dialog.java:1096)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.Component.show(Component.java:1584)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.Component.setVisible(Component.java:1536)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.Window.setVisible(Window.java:842)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.Dialog.setVisible(Dialog.java:986)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.modeler.dialog.codegen.CodeGeneratorController.startup(CodeGeneratorController.java:75)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.modeler.action.GenerateCodeAction.performAction(GenerateCodeAction.java:46)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.modeler.util.CayenneAction.actionPerformed(CayenneAction.java:162)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
javax.swing.AbstractButton.doClick(AbstractButton.java:389)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
com.apple.laf.ScreenMenuItem.actionPerformed(ScreenMenuItem.java:95)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.MenuItem.processActionEvent(MenuItem.java:627)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.MenuItem.processEvent(MenuItem.java:586)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.MenuComponent.dispatchEventImpl(MenuComponent.java:337)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.MenuComponent.dispatchEvent(MenuComponent.java:325)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:682)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventQueue.access$000(EventQueue.java:85)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventQueue$1.run(EventQueue.java:638)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventQueue$1.run(EventQueue.java:636)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.security.AccessController.doPrivileged(Native Method)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventQueue$2.run(EventQueue.java:652)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventQueue$2.run(EventQueue.java:650)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.security.AccessController.doPrivileged(Native Method)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventQueue.dispatchEvent(EventQueue.java:649)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: Caused by:
org.apache.cayenne.exp.ExpressionException: [v.3.1M3 Sep 13 2011 18:52:59]
Can't resolve path component: [Entity.badRelationship].
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.map.PathComponentIterator.invalidPathException(PathComponentIterator.java:145)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.map.PathComponentIterator.next(PathComponentIterator.java:133)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.map.PathComponentIterator.next(PathComponentIterator.java:33)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.map.Entity.lastPathComponent(Entity.java:296)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.map.ObjEntity.lastPathComponent(ObjEntity.java:983)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.gen.DataMapUtils.getParameterNames(DataMapUtils.java:142)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.gen.DataMapUtils.getParameterNames(DataMapUtils.java:138)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.cayenne.gen.DataMapUtils.getParameterNames(DataMapUtils.java:81)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
sun.reflect.GeneratedMethodAccessor47.invoke(Unknown Source)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
java.lang.reflect.Method.invoke(Method.java:597)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:389)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:378)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: at
org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270)
Feb 27 20:18:27 garodnya [0x0-0x646646].CayenneModeler[18451]: ... 104 more
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira