Silent exceptions in the TMQL search and query
 Posted: Sun Mar 08, 2015 5:40 pm
Posted: Sun Mar 08, 2015 5:40 pmThere is the TMQL tab inside Search and Query dialogue, which is called by Ctrl-F.
If you misprint some query here, it pops exception dialogue which contains exception name and stack trace. I suppose it is the intended way to inform the user about syntax error in his query.
I write couple of queries that output stack trace to the console running Wandora but the interface keep quiet and no popup is shown. I suppose it is a bug.
The map: http://s000.tinyupload.com/index.php?fi ... 6780062304
The query:
The stack trace, shown only in console:
There is also a query that produces infinite stack trace. In fue seconds it had writed more than 75 MB to the stderr.
I write this query by accident. I forget to write the satisfies clause and get infinite exception.
			If you misprint some query here, it pops exception dialogue which contains exception name and stack trace. I suppose it is the intended way to inform the user about syntax error in his query.
I write couple of queries that output stack trace to the console running Wandora but the interface keep quiet and no popup is shown. I suppose it is a bug.
The map: http://s000.tinyupload.com/index.php?fi ... 6780062304
The query:
- Code: Select all
- %prefix core http://wandora.org/si/core/
 select $t
 where
 some $d in core:wandora-class << types [ . / tm:name == "DDD" ] satisfies true
 & some $t in core:wandora-class << types [ . / tm:name == "AAA" ] << types satisfies $t isa $d
The stack trace, shown only in console:
- Code: Select all
- de.topicmapslab.tmql4j.exception.TMQLGeneratorException: Invalid state, grammar unknown for given query.
 at de.topicmapslab.tmql4j.components.parser.ParserTreeImpl.createRootExpression(ParserTreeImpl.java:181)
 at de.topicmapslab.tmql4j.components.parser.ParserTreeImpl.<init>(ParserTreeImpl.java:134)
 at de.topicmapslab.tmql4j.draft2010.components.parser.TmqlParserTree.<init>(TmqlParserTree.java:46)
 at de.topicmapslab.tmql4j.draft2010.components.parser.TMQLParser.getParserTreeInstance(TMQLParser.java:43)
 at de.topicmapslab.tmql4j.components.parser.ParserImpl.parse(ParserImpl.java:67)
 at de.topicmapslab.tmql4j.components.processor.TmqlProcessorImpl.parse(TmqlProcessorImpl.java:125)
 at de.topicmapslab.tmql4j.components.processor.TmqlProcessorImpl.query(TmqlProcessorImpl.java:57)
 at de.topicmapslab.tmql4j.draft2010.components.processor.runtime.TmqlRuntime.doRun(TmqlRuntime.java:100)
 at de.topicmapslab.tmql4j.components.processor.runtime.TmqlRuntimeImpl.run(TmqlRuntimeImpl.java:160)
 at de.topicmapslab.tmql4j.components.processor.runtime.TmqlRuntimeImpl.run(TmqlRuntimeImpl.java:191)
 at de.topicmapslab.tmql4j.path.components.interpreter.QuantifiedExpression$1.run(QuantifiedExpression.java:273)
 at de.topicmapslab.tmql4j.path.components.interpreter.QuantifiedExpression.interpretQuantifiedExpression(QuantifiedExpression.java:300)
 at de.topicmapslab.tmql4j.path.components.interpreter.QuantifiedExpression.interpret(QuantifiedExpression.java:167)
 at de.topicmapslab.tmql4j.path.components.interpreter.ExistsClauseInterpreter.interpret(ExistsClauseInterpreter.java:86)
 at de.topicmapslab.tmql4j.path.components.interpreter.ExistsClauseInterpreter.interpret(ExistsClauseInterpreter.java:52)
 at de.topicmapslab.tmql4j.path.components.interpreter.BooleanPrimitiveInterpreter.interpretExsistsExpression(BooleanPrimitiveInterpreter.java:331)
 at de.topicmapslab.tmql4j.path.components.interpreter.BooleanPrimitiveInterpreter.interpret(BooleanPrimitiveInterpreter.java:114)
 at de.topicmapslab.tmql4j.path.components.interpreter.BooleanPrimitiveInterpreter.interpret(BooleanPrimitiveInterpreter.java:69)
 at de.topicmapslab.tmql4j.path.components.interpreter.BooleanExpressionInterpreter.interpretBooleanPrimitve(BooleanExpressionInterpreter.java:257)
 at de.topicmapslab.tmql4j.path.components.interpreter.BooleanExpressionInterpreter.interpret(BooleanExpressionInterpreter.java:89)
 at de.topicmapslab.tmql4j.path.components.interpreter.BooleanExpressionInterpreter.interpret(BooleanExpressionInterpreter.java:50)
 at de.topicmapslab.tmql4j.path.components.interpreter.BooleanExpressionInterpreter.interpretConjunction(BooleanExpressionInterpreter.java:189)
 at de.topicmapslab.tmql4j.path.components.interpreter.BooleanExpressionInterpreter.interpret(BooleanExpressionInterpreter.java:83)
 at de.topicmapslab.tmql4j.path.components.interpreter.BooleanExpressionInterpreter.interpret(BooleanExpressionInterpreter.java:50)
 at de.topicmapslab.tmql4j.select.components.interpreter.WhereClauseInterpreter.interpret(WhereClauseInterpreter.java:60)
 at de.topicmapslab.tmql4j.select.components.interpreter.WhereClauseInterpreter.interpret(WhereClauseInterpreter.java:37)
 at de.topicmapslab.tmql4j.components.interpreter.ExpressionInterpreterImpl.extractArguments(ExpressionInterpreterImpl.java:248)
 at de.topicmapslab.tmql4j.select.components.interpreter.SelectExpressionInterpreter.interpretWhereClause(SelectExpressionInterpreter.java:276)
 at de.topicmapslab.tmql4j.select.components.interpreter.SelectExpressionInterpreter.interpret(SelectExpressionInterpreter.java:111)
 at de.topicmapslab.tmql4j.select.components.interpreter.SelectExpressionInterpreter.interpret(SelectExpressionInterpreter.java:55)
 at de.topicmapslab.tmql4j.select.components.interpreter.QueryExpressionInterpreter.interpret(QueryExpressionInterpreter.java:69)
 at de.topicmapslab.tmql4j.select.components.interpreter.QueryExpressionInterpreter.interpret(QueryExpressionInterpreter.java:38)
 at de.topicmapslab.tmql4j.grammar.productions.ExpressionImpl.interpret(ExpressionImpl.java:335)
 at de.topicmapslab.tmql4j.components.processor.TmqlProcessorImpl.query(TmqlProcessorImpl.java:61)
 at de.topicmapslab.tmql4j.path.components.processor.runtime.TmqlRuntime2007.doRun(TmqlRuntime2007.java:87)
 at de.topicmapslab.tmql4j.components.processor.runtime.TmqlRuntimeImpl.run(TmqlRuntimeImpl.java:160)
 at de.topicmapslab.tmql4j.components.processor.runtime.TmqlRuntimeImpl.run(TmqlRuntimeImpl.java:191)
 at org.wandora.topicmap.TMQLRunner.runTMQL(TMQLRunner.java:62)
 at org.wandora.application.gui.search.TMQLPanel.getTopicsByTMQL(TMQLPanel.java:182)
 at org.wandora.application.gui.search.TMQLPanel.runButtonActionPerformed(TMQLPanel.java:364)
 at org.wandora.application.gui.search.TMQLPanel.access$400(TMQLPanel.java:61)
 at org.wandora.application.gui.search.TMQLPanel$4.actionPerformed(TMQLPanel.java:303)
 at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
 at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
 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:6516)
 at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
 at java.awt.Component.processEvent(Component.java:6281)
 at java.awt.Container.processEvent(Container.java:2229)
 at java.awt.Component.dispatchEventImpl(Component.java:4872)
 at java.awt.Container.dispatchEventImpl(Container.java:2287)
 at java.awt.Component.dispatchEvent(Component.java:4698)
 at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
 at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
 at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
 at java.awt.Container.dispatchEventImpl(Container.java:2273)
 at java.awt.Window.dispatchEventImpl(Window.java:2719)
 at java.awt.Component.dispatchEvent(Component.java:4698)
 at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:740)
 at java.awt.EventQueue.access$300(EventQueue.java:103)
 at java.awt.EventQueue$3.run(EventQueue.java:699)
 at java.awt.EventQueue$3.run(EventQueue.java:697)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
 at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
 at java.awt.EventQueue$4.run(EventQueue.java:713)
 at java.awt.EventQueue$4.run(EventQueue.java:711)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
 at java.awt.EventQueue.dispatchEvent(EventQueue.java:710)
 at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
 at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
 at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
 at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
 Caused by: java.lang.reflect.InvocationTargetException
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
 at de.topicmapslab.tmql4j.components.parser.ParserTreeImpl.createRootExpression(ParserTreeImpl.java:169)
 ... 78 more
 Caused by: de.topicmapslab.tmql4j.exception.TMQLGeneratorException: java.lang.reflect.InvocationTargetException
 at de.topicmapslab.tmql4j.grammar.productions.ExpressionImpl.checkForExtensions(ExpressionImpl.java:307)
 at de.topicmapslab.tmql4j.draft2010.grammar.productions.QueryExpression.<init>(QueryExpression.java:130)
 at de.topicmapslab.tmql4j.draft2010.grammar.productions.QueryExpression.<init>(QueryExpression.java:60)
 ... 83 more
 Caused by: java.lang.reflect.InvocationTargetException
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
 at de.topicmapslab.tmql4j.grammar.productions.ExpressionImpl.checkForExtensions(ExpressionImpl.java:301)
 ... 85 more
 Caused by: de.topicmapslab.tmql4j.exception.TMQLGeneratorException: java.lang.reflect.InvocationTargetException
 at de.topicmapslab.tmql4j.grammar.productions.ExpressionImpl.checkForExtensions(ExpressionImpl.java:307)
 at de.topicmapslab.tmql4j.draft2010.grammar.productions.Expression.<init>(Expression.java:78)
 ... 90 more
 Caused by: java.lang.reflect.InvocationTargetException
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
 at de.topicmapslab.tmql4j.grammar.productions.ExpressionImpl.checkForExtensions(ExpressionImpl.java:301)
 ... 91 more
 Caused by: de.topicmapslab.tmql4j.exception.TMQLGeneratorException: java.lang.reflect.InvocationTargetException
 at de.topicmapslab.tmql4j.grammar.productions.ExpressionImpl.checkForExtensions(ExpressionImpl.java:307)
 at de.topicmapslab.tmql4j.draft2010.grammar.productions.PathExpression$1.newToken(PathExpression.java:75)
 at de.topicmapslab.tmql4j.draft2010.components.parser.ParserUtils.split(ParserUtils.java:371)
 at de.topicmapslab.tmql4j.draft2010.components.parser.ParserUtils.split(ParserUtils.java:305)
 at de.topicmapslab.tmql4j.draft2010.grammar.productions.PathExpression.<init>(PathExpression.java:90)
 ... 96 more
 Caused by: java.lang.reflect.InvocationTargetException
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
 at de.topicmapslab.tmql4j.grammar.productions.ExpressionImpl.checkForExtensions(ExpressionImpl.java:301)
 ... 100 more
 Caused by: de.topicmapslab.tmql4j.exception.TMQLInvalidSyntaxException: Message: Expression is invalid.
 Expression: SimpleExpression
 language-specific Tokens: Element Element Element BracketSquareOpen Dot Axis Element Equality Element BracketSquareClose Element Element BracketSquareOpen Dot Element Element Element Element BracketSquareClose
 string-represented Tokens: [core:wandora-class, <<, types, [, ., /, tm:name, ==, "AAA", ], <<, types, [, ., isa, "ID1379043793-ID2063089-topic74", <<, id, ]]
 at de.topicmapslab.tmql4j.grammar.productions.ExpressionImpl.<init>(ExpressionImpl.java:98)
 at de.topicmapslab.tmql4j.draft2010.grammar.productions.SimpleExpression.<init>(SimpleExpression.java:67)
 ... 105 more
There is also a query that produces infinite stack trace. In fue seconds it had writed more than 75 MB to the stderr.
- Code: Select all
- %prefix core http://wandora.org/si/core/
 select $t
 where
 some $d in core:wandora-class << types [ . / tm:name == "DDD" ]
 & some $t in core:wandora-class << types [ . / tm:name == "AAA" ] << types satisfies $t isa $d
I write this query by accident. I forget to write the satisfies clause and get infinite exception.