Problem with IItemQuery (NPE)
Hi,
I have a problem with an item query. My item holds a reference of
IItemHandles. To query all of my items that hold a certain IItemHandle
as reference I use the following IItemQuery:
IQueryService queryService = getService(IQueryService.class);
MyItemQueryModel myItemQueryModel =
BaseMyItemQueryModel.MyItemQueryModel.ROOT;
IItemQuery myItemQuery =
IItemQuery.FACTORY.newInstance(myItemQueryModel);
myItemQuery.filter(myItemQueryModel.relatedItems()._contains(itemHandle));
IItemQueryPage queryItems = queryService.queryItems(myItemQuery,
IQueryService.EMPTY_PARAMETERS,
IQueryService.ITEM_QUERY_MAX_PAGE_SIZE);
The problem is that the last method invocation
(queryService.queryItems(..)) throws a NullPointerException (see stack
trace below). I used the debugger but could not find any problem so far.
All created objects are not null. Besides, the EReference relatedItems
in the ecore model has set the queryableProperty annotation.
What is strange, the same approach worked well for a similar item query
that tries to find all of my items that hold a reference to an own
ISimpleItem.
Is is not allowed to hold a reference to IItemHandles?
Thanks for your help!
Andreas
------
java.lang.NullPointerException
at
com.ibm.team.repository.service.internal.query.sqlgen.JoinStepWithJoinTable.<init>(JoinStepWithJoinTable.java:35)
at
com.ibm.team.repository.service.internal.query.sqlgen.TableJoins.addNewManyJoin(TableJoins.java:234)
at
com.ibm.team.repository.service.internal.query.sqlgen.TableJoins.addJoinForFeature(TableJoins.java:195)
at
com.ibm.team.repository.service.internal.query.sqlgen.TableJoins.addTablesFromPath(TableJoins.java:168)
at
com.ibm.team.repository.service.internal.query.sqlgen.TableJoins.initialize(TableJoins.java:62)
at
com.ibm.team.repository.service.internal.query.sqlgen.TableJoins.<init>(TableJoins.java:49)
at
com.ibm.team.repository.service.internal.query.sqlgen.QueryGenerator.toSqlOn(QueryGenerator.java:54)
at
com.ibm.team.repository.service.internal.query.sqlgen.QueryGenerator.toSqlQuery(QueryGenerator.java:44)
at
com.ibm.team.repository.service.internal.query.sqlgen.SqlQueryGenerator.generate(SqlQueryGenerator.java:40)
at
com.ibm.team.repository.service.internal.RdbRepositoryDataMediator.queryData(RdbRepositoryDataMediator.java:780)
at
com.ibm.team.repository.service.internal.QueryService.performQuery(QueryService.java:525)
at
com.ibm.team.repository.service.internal.QueryService.doExecuteItemQuery(QueryService.java:382)
at
com.ibm.team.repository.service.internal.QueryService.access$0(QueryService.java:379)
at
com.ibm.team.repository.service.internal.QueryService$1.run(QueryService.java:216)
at
com.ibm.team.repository.service.internal.QueryService$1.run(QueryService.java:1)
at
com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runTransaction(RepositoryDatabase.java:289)
at
com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runInTransaction(RepositoryDatabase.java:218)
at
com.ibm.team.repository.service.internal.TransactionService.runInTransaction(TransactionService.java:77)
at sun.reflect.GeneratedMethodAccessor35.invoke(null)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:368)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:353)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:54)
at $Proxy34.runInTransaction(null)
at
com.ibm.team.repository.service.internal.QueryService.executeItemQuery(QueryService.java:207)
at
com.ibm.team.repository.service.internal.QueryService.queryItems(QueryService.java:806)
at sun.reflect.GeneratedMethodAccessor38.invoke(null)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:368)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:353)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:54)
at $Proxy51.queryItems(null)
at com.example.service.internal.MyItemService$6.run(MyItemService.java:521)
at com.example.service.internal.MyItemService$6.run(MyItemService.java:1)
at
com.ibm.team.repository.service.internal.TransactionService$1.run(TransactionService.java:102)
at
com.ibm.team.repository.service.internal.rdb.RepositoryDatabase$Transaction.run(RepositoryDatabase.java:449)
at
com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runTransaction(RepositoryDatabase.java:263)
at
com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runInTransaction(RepositoryDatabase.java:218)
at
com.ibm.team.repository.service.internal.TransactionService.runInTransaction(TransactionService.java:77)
at
com.ibm.team.repository.service.internal.TransactionService.runInTransaction(TransactionService.java:66)
at sun.reflect.GeneratedMethodAccessor51.invoke(null)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:368)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:353)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:54)
at $Proxy35.runInTransaction(null)
at
com.ibm.team.repository.service.AbstractService.runInTransaction(AbstractService.java:591)
at
com.example.service.internal.MyItemService.getMyItemsWithRelatedItem(MyItemService.java:513)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
I have a problem with an item query. My item holds a reference of
IItemHandles. To query all of my items that hold a certain IItemHandle
as reference I use the following IItemQuery:
IQueryService queryService = getService(IQueryService.class);
MyItemQueryModel myItemQueryModel =
BaseMyItemQueryModel.MyItemQueryModel.ROOT;
IItemQuery myItemQuery =
IItemQuery.FACTORY.newInstance(myItemQueryModel);
myItemQuery.filter(myItemQueryModel.relatedItems()._contains(itemHandle));
IItemQueryPage queryItems = queryService.queryItems(myItemQuery,
IQueryService.EMPTY_PARAMETERS,
IQueryService.ITEM_QUERY_MAX_PAGE_SIZE);
The problem is that the last method invocation
(queryService.queryItems(..)) throws a NullPointerException (see stack
trace below). I used the debugger but could not find any problem so far.
All created objects are not null. Besides, the EReference relatedItems
in the ecore model has set the queryableProperty annotation.
What is strange, the same approach worked well for a similar item query
that tries to find all of my items that hold a reference to an own
ISimpleItem.
Is is not allowed to hold a reference to IItemHandles?
Thanks for your help!
Andreas
------
java.lang.NullPointerException
at
com.ibm.team.repository.service.internal.query.sqlgen.JoinStepWithJoinTable.<init>(JoinStepWithJoinTable.java:35)
at
com.ibm.team.repository.service.internal.query.sqlgen.TableJoins.addNewManyJoin(TableJoins.java:234)
at
com.ibm.team.repository.service.internal.query.sqlgen.TableJoins.addJoinForFeature(TableJoins.java:195)
at
com.ibm.team.repository.service.internal.query.sqlgen.TableJoins.addTablesFromPath(TableJoins.java:168)
at
com.ibm.team.repository.service.internal.query.sqlgen.TableJoins.initialize(TableJoins.java:62)
at
com.ibm.team.repository.service.internal.query.sqlgen.TableJoins.<init>(TableJoins.java:49)
at
com.ibm.team.repository.service.internal.query.sqlgen.QueryGenerator.toSqlOn(QueryGenerator.java:54)
at
com.ibm.team.repository.service.internal.query.sqlgen.QueryGenerator.toSqlQuery(QueryGenerator.java:44)
at
com.ibm.team.repository.service.internal.query.sqlgen.SqlQueryGenerator.generate(SqlQueryGenerator.java:40)
at
com.ibm.team.repository.service.internal.RdbRepositoryDataMediator.queryData(RdbRepositoryDataMediator.java:780)
at
com.ibm.team.repository.service.internal.QueryService.performQuery(QueryService.java:525)
at
com.ibm.team.repository.service.internal.QueryService.doExecuteItemQuery(QueryService.java:382)
at
com.ibm.team.repository.service.internal.QueryService.access$0(QueryService.java:379)
at
com.ibm.team.repository.service.internal.QueryService$1.run(QueryService.java:216)
at
com.ibm.team.repository.service.internal.QueryService$1.run(QueryService.java:1)
at
com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runTransaction(RepositoryDatabase.java:289)
at
com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runInTransaction(RepositoryDatabase.java:218)
at
com.ibm.team.repository.service.internal.TransactionService.runInTransaction(TransactionService.java:77)
at sun.reflect.GeneratedMethodAccessor35.invoke(null)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:368)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:353)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:54)
at $Proxy34.runInTransaction(null)
at
com.ibm.team.repository.service.internal.QueryService.executeItemQuery(QueryService.java:207)
at
com.ibm.team.repository.service.internal.QueryService.queryItems(QueryService.java:806)
at sun.reflect.GeneratedMethodAccessor38.invoke(null)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:368)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:353)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:54)
at $Proxy51.queryItems(null)
at com.example.service.internal.MyItemService$6.run(MyItemService.java:521)
at com.example.service.internal.MyItemService$6.run(MyItemService.java:1)
at
com.ibm.team.repository.service.internal.TransactionService$1.run(TransactionService.java:102)
at
com.ibm.team.repository.service.internal.rdb.RepositoryDatabase$Transaction.run(RepositoryDatabase.java:449)
at
com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runTransaction(RepositoryDatabase.java:263)
at
com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runInTransaction(RepositoryDatabase.java:218)
at
com.ibm.team.repository.service.internal.TransactionService.runInTransaction(TransactionService.java:77)
at
com.ibm.team.repository.service.internal.TransactionService.runInTransaction(TransactionService.java:66)
at sun.reflect.GeneratedMethodAccessor51.invoke(null)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:368)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:353)
at
org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:54)
at $Proxy35.runInTransaction(null)
at
com.ibm.team.repository.service.AbstractService.runInTransaction(AbstractService.java:591)
at
com.example.service.internal.MyItemService.getMyItemsWithRelatedItem(MyItemService.java:513)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)