Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-7906

Infinispan Query DSL does not handle inheritance of properties/fields correctly

    Details

      Description

      If 'age' property is a field declared in the parent class of 'Person' and you query it you will get:

       
      org.infinispan.objectfilter.ParsingException: ISPN028501: The type org.infinispan.query.dsl.embedded.SingleClassDSLQueryTest$Person has no property named 'age'.
       
      	at org.infinispan.objectfilter.impl.syntax.parser.QueryResolverDelegateImpl.normalizeProperty(QueryResolverDelegateImpl.java:191)
      	at org.infinispan.objectfilter.impl.syntax.parser.QueryResolverDelegateImpl.normalizePropertyPathTerminus(QueryResolverDelegateImpl.java:185)
      	at org.infinispan.objectfilter.impl.ql.parse.QueryResolver.pathedPropertyReference(QueryResolver.java:7736)
      	at org.infinispan.objectfilter.impl.ql.parse.QueryResolver.propertyReferencePath(QueryResolver.java:7567)
      	at org.infinispan.objectfilter.impl.ql.parse.QueryResolver.propertyReferenceExpression(QueryResolver.java:5689)
      	at org.infinispan.objectfilter.impl.ql.parse.QueryResolver.valueExpressionPrimary(QueryResolver.java:5495)
      	at org.infinispan.objectfilter.impl.ql.parse.QueryResolver.valueExpression(QueryResolver.java:5271)
      	at org.infinispan.objectfilter.impl.ql.parse.QueryResolver.rowValueConstructor(QueryResolver.java:4490)
      	at org.infinispan.objectfilter.impl.ql.parse.QueryResolver.predicate(QueryResolver.java:3458)
      	at org.infinispan.objectfilter.impl.ql.parse.QueryResolver.searchCondition(QueryResolver.java:2979)
      	at org.infinispan.objectfilter.impl.ql.parse.QueryResolver.whereClause(QueryResolver.java:655)
      	at org.infinispan.objectfilter.impl.ql.parse.QueryResolver.querySpec(QueryResolver.java:510)
      	at org.infinispan.objectfilter.impl.ql.parse.QueryResolver.queryStatement(QueryResolver.java:379)
      	at org.infinispan.objectfilter.impl.ql.parse.QueryResolver.queryStatementSet(QueryResolver.java:292)
      	at org.infinispan.objectfilter.impl.ql.parse.QueryResolver.statement(QueryResolver.java:220)
      	at org.infinispan.objectfilter.impl.ql.QueryParser.resolve(QueryParser.java:81)
      	at org.infinispan.objectfilter.impl.ql.QueryParser.parseQuery(QueryParser.java:69)
      	at org.infinispan.objectfilter.impl.syntax.parser.IckleParser.parse(IckleParser.java:19)
      	at org.infinispan.query.dsl.embedded.impl.QueryEngine.lambda$parse$1(QueryEngine.java:655)
      	at org.infinispan.query.dsl.embedded.impl.QueryCache.lambda$get$0(QueryCache.java:79)
      	at org.infinispan.cache.impl.TypeConverterDelegatingAdvancedCache.lambda$convertFunction$1(TypeConverterDelegatingAdvancedCache.java:103)
      	at java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:324)
      	at org.infinispan.cache.impl.AbstractDelegatingCache.computeIfAbsent(AbstractDelegatingCache.java:343)
      	at org.infinispan.cache.impl.TypeConverterDelegatingAdvancedCache.computeIfAbsent(TypeConverterDelegatingAdvancedCache.java:163)
      	at org.infinispan.query.dsl.embedded.impl.QueryCache.get(QueryCache.java:79)
      	at org.infinispan.query.dsl.embedded.impl.QueryEngine.parse(QueryEngine.java:655)
      	at org.infinispan.query.dsl.embedded.impl.DelegatingQuery.<init>(DelegatingQuery.java:54)
      	at org.infinispan.query.dsl.embedded.impl.EmbeddedQueryBuilder.build(EmbeddedQueryBuilder.java:32)
      	at org.infinispan.query.dsl.impl.BaseCondition.build(BaseCondition.java:197)
      	at org.infinispan.query.dsl.embedded.SingleClassDSLQueryTest.testInheritedField(SingleClassDSLQueryTest.java:88)
      	at org.infinispan.query.dsl.embedded.NonIndexedSingleClassDSLQueryTest.testInheritedField(NonIndexedSingleClassDSLQueryTest.java:22)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
      	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
      	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
      	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
      	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
      	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
      	at org.testng.TestRunner.privateRun(TestRunner.java:767)
      	at org.testng.TestRunner.run(TestRunner.java:617)
      	at org.testng.SuiteRunner.runTest(SuiteRunner.java:348)
      	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:343)
      	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:305)
      	at org.testng.SuiteRunner.run(SuiteRunner.java:254)
      	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
      	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
      	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
      	at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
      	at org.testng.TestNG.run(TestNG.java:1057)
      	at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
      	at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:127)
      

      Similar failures occur for java-bean style properties.

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  anistor Adrian Nistor
                  Reporter:
                  anistor Adrian Nistor
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  2 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: