Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » [CDO] OCL query and deleted objects
[CDO] OCL query and deleted objects [message #664934] Tue, 12 April 2011 14:05 Go to next message
Nils Israel is currently offline Nils IsraelFriend
Messages: 72
Registered: May 2010
Member
Hi,

at the moment I am trying to use OCL queries instead of traversing the
whole model to find some objects. This works great, until I delete some
object. Then my query fails with:
org.eclipse.emf.cdo.util.ObjectNotFoundException: Object OID154 not
found in branch 0 at * (test and stacktrace below).

An OCL query like "Product1.allInstances()" should give me all instances
which are contained in the resource at the moment and not all instances
ever created. Do I have this right?

Regards,
Nils


This exception is reproducible by the following test method in
org.eclipse.emf.cdo.tests.OCLQueryTest

public void testDeletedObject() throws Exception
{
CDOQuery query = transaction.createQuery("ocl",
"Product1.allInstances()", getModel1Package().getProduct1(), true);

List<Product1> products = query.getResult(Product1.class);
int numOfProducts = products.size();

resource.getContents().add(0, getModel1Factory().createProduct1());
transaction.commit();

resource.getContents().remove(0);
transaction.commit();

query = transaction.createQuery("ocl", "Product1.allInstances()",
getModel1Package().getProduct1(), true);

products = query.getResult(Product1.class);
assertEquals(numOfProducts, products.size());
}

leeds to:

org.eclipse.emf.cdo.util.ObjectNotFoundException: Object OID154 not
found in branch 0 at *
at
org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObje ct(AbstractCDOView.java:790)
at
org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject( AbstractCDOView.java:702)
at
org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject( AbstractCDOView.java:668)
at
org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject( AbstractCDOView.java:1)
at
org.eclipse.emf.cdo.server.ocl.CDOExtentCreator.getEObject(C DOExtentCreator.java:148)
at
org.eclipse.emf.cdo.server.ocl.CDOExtentCreator$1.handleRevi sion(CDOExtentCreator.java:121)
at
org.eclipse.emf.cdo.internal.server.mem.MEMStore.handleRevis ion(MEMStore.java:332)
at
org.eclipse.emf.cdo.internal.server.mem.MEMStore.handleRevis ions(MEMStore.java:293)
at
org.eclipse.emf.cdo.internal.server.mem.MEMStoreAccessor.han dleRevisions(MEMStoreAccessor.java:214)
at
org.eclipse.emf.cdo.server.ocl.CDOExtentCreator.createExtent (CDOExtentCreator.java:109)
at
org.eclipse.emf.cdo.server.ocl.CDOExtentCreator.createExtent (CDOExtentCreator.java:86)
at org.eclipse.emf.cdo.server.ocl.CDOExtentMap.get(CDOExtentMap .java:52)
at org.eclipse.emf.cdo.server.ocl.CDOExtentMap.get(CDOExtentMap .java:1)
at
org.eclipse.ocl.EvaluationVisitorImpl.visitOperationCallExp( EvaluationVisitorImpl.java:1218)
at
org.eclipse.ocl.ecore.impl.OperationCallExpImpl.accept(Opera tionCallExpImpl.java:390)
at
org.eclipse.ocl.AbstractEvaluationVisitor.visitExpression(Ab stractEvaluationVisitor.java:247)
at
org.eclipse.ocl.internal.evaluation.QueryImpl.evaluate(Query Impl.java:152)
at
org.eclipse.emf.cdo.server.ocl.OCLQueryHandler.evaluate(OCLQ ueryHandler.java:200)
at
org.eclipse.emf.cdo.server.ocl.OCLQueryHandler.executeQuery( OCLQueryHandler.java:147)
at
org.eclipse.emf.cdo.internal.server.QueryManager$QueryContex t.run(QueryManager.java:293)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unkno wn Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

!ENTRY org.eclipse.net4j 4 0 2011-04-12 15:32:43.736
!MESSAGE Problem executing OCL query: Product1.allInstances()
!STACK 0
org.eclipse.net4j.util.WrappedException: Problem executing OCL query:
Product1.allInstances()
at org.eclipse.net4j.util.WrappedException.wrap(WrappedExceptio n.java:40)
at
org.eclipse.emf.cdo.server.ocl.OCLQueryHandler.executeQuery( OCLQueryHandler.java:180)
at
org.eclipse.emf.cdo.internal.server.QueryManager$QueryContex t.run(QueryManager.java:293)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unkno wn Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: Invalid result:
org.eclipse.emf.ecore.impl.DynamicEObjectImpl@5e4c689e (eClass:
org.eclipse.emf.ecore.impl.EClassImpl@6a688d6f (name: OclInvalid_Class)
(instanceClassName: null) (abstract: false, interface: false))
at
org.eclipse.emf.cdo.server.ocl.OCLQueryHandler.executeQuery( OCLQueryHandler.java:175)
... 7 more
Re: [CDO] OCL query and deleted objects [message #664959 is a reply to message #664934] Tue, 12 April 2011 15:14 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Hi Nils,

I've fixed this in:

Bug 342595: OCLQueryHandler does not ignore old revisions
https://bugs.eclipse.org/bugs/show_bug.cgi?id=342595

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper



Am 12.04.2011 16:05, schrieb Nils Israel:
> Hi,
>
> at the moment I am trying to use OCL queries instead of traversing the whole model to find some objects. This works great, until I delete some object. Then my query fails with:
> org.eclipse.emf.cdo.util.ObjectNotFoundException: Object OID154 not found in branch 0 at * (test and stacktrace below).
>
> An OCL query like "Product1.allInstances()" should give me all instances which are contained in the resource at the moment and not all instances ever created. Do I have this right?
>
> Regards,
> Nils
>
>
> This exception is reproducible by the following test method in org.eclipse.emf.cdo.tests.OCLQueryTest
>
> public void testDeletedObject() throws Exception
> {
> CDOQuery query = transaction.createQuery("ocl", "Product1.allInstances()", getModel1Package().getProduct1(), true);
>
> List<Product1> products = query.getResult(Product1.class);
> int numOfProducts = products.size();
>
> resource.getContents().add(0, getModel1Factory().createProduct1());
> transaction.commit();
>
> resource.getContents().remove(0);
> transaction.commit();
>
> query = transaction.createQuery("ocl", "Product1.allInstances()", getModel1Package().getProduct1(), true);
>
> products = query.getResult(Product1.class);
> assertEquals(numOfProducts, products.size());
> }
>
> leeds to:
>
> org.eclipse.emf.cdo.util.ObjectNotFoundException: Object OID154 not found in branch 0 at *
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObje ct(AbstractCDOView.java:790)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject( AbstractCDOView.java:702)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject( AbstractCDOView.java:668)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject( AbstractCDOView.java:1)
> at org.eclipse.emf.cdo.server.ocl.CDOExtentCreator.getEObject(C DOExtentCreator.java:148)
> at org.eclipse.emf.cdo.server.ocl.CDOExtentCreator$1.handleRevi sion(CDOExtentCreator.java:121)
> at org.eclipse.emf.cdo.internal.server.mem.MEMStore.handleRevis ion(MEMStore.java:332)
> at org.eclipse.emf.cdo.internal.server.mem.MEMStore.handleRevis ions(MEMStore.java:293)
> at org.eclipse.emf.cdo.internal.server.mem.MEMStoreAccessor.han dleRevisions(MEMStoreAccessor.java:214)
> at org.eclipse.emf.cdo.server.ocl.CDOExtentCreator.createExtent (CDOExtentCreator.java:109)
> at org.eclipse.emf.cdo.server.ocl.CDOExtentCreator.createExtent (CDOExtentCreator.java:86)
> at org.eclipse.emf.cdo.server.ocl.CDOExtentMap.get(CDOExtentMap .java:52)
> at org.eclipse.emf.cdo.server.ocl.CDOExtentMap.get(CDOExtentMap .java:1)
> at org.eclipse.ocl.EvaluationVisitorImpl.visitOperationCallExp( EvaluationVisitorImpl.java:1218)
> at org.eclipse.ocl.ecore.impl.OperationCallExpImpl.accept(Opera tionCallExpImpl.java:390)
> at org.eclipse.ocl.AbstractEvaluationVisitor.visitExpression(Ab stractEvaluationVisitor.java:247)
> at org.eclipse.ocl.internal.evaluation.QueryImpl.evaluate(Query Impl.java:152)
> at org.eclipse.emf.cdo.server.ocl.OCLQueryHandler.evaluate(OCLQ ueryHandler.java:200)
> at org.eclipse.emf.cdo.server.ocl.OCLQueryHandler.executeQuery( OCLQueryHandler.java:147)
> at org.eclipse.emf.cdo.internal.server.QueryManager$QueryContex t.run(QueryManager.java:293)
> at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
> at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
> at java.util.concurrent.FutureTask.run(Unknown Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unkno wn Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
>
> !ENTRY org.eclipse.net4j 4 0 2011-04-12 15:32:43.736
> !MESSAGE Problem executing OCL query: Product1.allInstances()
> !STACK 0
> org.eclipse.net4j.util.WrappedException: Problem executing OCL query: Product1.allInstances()
> at org.eclipse.net4j.util.WrappedException.wrap(WrappedExceptio n.java:40)
> at org.eclipse.emf.cdo.server.ocl.OCLQueryHandler.executeQuery( OCLQueryHandler.java:180)
> at org.eclipse.emf.cdo.internal.server.QueryManager$QueryContex t.run(QueryManager.java:293)
> at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
> at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
> at java.util.concurrent.FutureTask.run(Unknown Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unkno wn Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> Caused by: java.lang.IllegalStateException: Invalid result: org.eclipse.emf.ecore.impl.DynamicEObjectImpl@5e4c689e (eClass: org.eclipse.emf.ecore.impl.EClassImpl@6a688d6f (name: OclInvalid_Class) (instanceClassName: null) (abstract: false, interface: false))
> at org.eclipse.emf.cdo.server.ocl.OCLQueryHandler.executeQuery( OCLQueryHandler.java:175)
> ... 7 more
>


Re: [CDO] OCL query and deleted objects [message #665008 is a reply to message #664959] Tue, 12 April 2011 18:16 Go to previous message
Nils Israel is currently offline Nils IsraelFriend
Messages: 72
Registered: May 2010
Member
Hi Eike,

thanks.

Regards,
Nils

Am 12.04.2011 17:14, schrieb Eike Stepper:
> Hi Nils,
>
> I've fixed this in:
>
> Bug 342595: OCLQueryHandler does not ignore old revisions
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=342595
>
> Cheers
> /Eike
>
> ----
> http://www.esc-net.de
> http://thegordian.blogspot.com
> http://twitter.com/eikestepper
>
>
>
> Am 12.04.2011 16:05, schrieb Nils Israel:
>> Hi,
>>
>> at the moment I am trying to use OCL queries instead of traversing the
>> whole model to find some objects. This works great, until I delete
>> some object. Then my query fails with:
>> org.eclipse.emf.cdo.util.ObjectNotFoundException: Object OID154 not
>> found in branch 0 at * (test and stacktrace below).
>>
>> An OCL query like "Product1.allInstances()" should give me all
>> instances which are contained in the resource at the moment and not
>> all instances ever created. Do I have this right?
>>
>> Regards,
>> Nils
>>
>>
>> This exception is reproducible by the following test method in
>> org.eclipse.emf.cdo.tests.OCLQueryTest
>>
>> public void testDeletedObject() throws Exception
>> {
>> CDOQuery query = transaction.createQuery("ocl",
>> "Product1.allInstances()", getModel1Package().getProduct1(), true);
>>
>> List<Product1> products = query.getResult(Product1.class);
>> int numOfProducts = products.size();
>>
>> resource.getContents().add(0, getModel1Factory().createProduct1());
>> transaction.commit();
>>
>> resource.getContents().remove(0);
>> transaction.commit();
>>
>> query = transaction.createQuery("ocl", "Product1.allInstances()",
>> getModel1Package().getProduct1(), true);
>>
>> products = query.getResult(Product1.class);
>> assertEquals(numOfProducts, products.size());
>> }
>>
>> leeds to:
>>
>> org.eclipse.emf.cdo.util.ObjectNotFoundException: Object OID154 not
>> found in branch 0 at *
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObje ct(AbstractCDOView.java:790)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject( AbstractCDOView.java:702)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject( AbstractCDOView.java:668)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject( AbstractCDOView.java:1)
>>
>> at
>> org.eclipse.emf.cdo.server.ocl.CDOExtentCreator.getEObject(C DOExtentCreator.java:148)
>>
>> at
>> org.eclipse.emf.cdo.server.ocl.CDOExtentCreator$1.handleRevi sion(CDOExtentCreator.java:121)
>>
>> at
>> org.eclipse.emf.cdo.internal.server.mem.MEMStore.handleRevis ion(MEMStore.java:332)
>>
>> at
>> org.eclipse.emf.cdo.internal.server.mem.MEMStore.handleRevis ions(MEMStore.java:293)
>>
>> at
>> org.eclipse.emf.cdo.internal.server.mem.MEMStoreAccessor.han dleRevisions(MEMStoreAccessor.java:214)
>>
>> at
>> org.eclipse.emf.cdo.server.ocl.CDOExtentCreator.createExtent (CDOExtentCreator.java:109)
>>
>> at
>> org.eclipse.emf.cdo.server.ocl.CDOExtentCreator.createExtent (CDOExtentCreator.java:86)
>>
>> at org.eclipse.emf.cdo.server.ocl.CDOExtentMap.get(CDOExtentMap .java:52)
>> at org.eclipse.emf.cdo.server.ocl.CDOExtentMap.get(CDOExtentMap .java:1)
>> at
>> org.eclipse.ocl.EvaluationVisitorImpl.visitOperationCallExp( EvaluationVisitorImpl.java:1218)
>>
>> at
>> org.eclipse.ocl.ecore.impl.OperationCallExpImpl.accept(Opera tionCallExpImpl.java:390)
>>
>> at
>> org.eclipse.ocl.AbstractEvaluationVisitor.visitExpression(Ab stractEvaluationVisitor.java:247)
>>
>> at
>> org.eclipse.ocl.internal.evaluation.QueryImpl.evaluate(Query Impl.java:152)
>>
>> at
>> org.eclipse.emf.cdo.server.ocl.OCLQueryHandler.evaluate(OCLQ ueryHandler.java:200)
>>
>> at
>> org.eclipse.emf.cdo.server.ocl.OCLQueryHandler.executeQuery( OCLQueryHandler.java:147)
>>
>> at
>> org.eclipse.emf.cdo.internal.server.QueryManager$QueryContex t.run(QueryManager.java:293)
>>
>> at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
>> at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
>> at java.util.concurrent.FutureTask.run(Unknown Source)
>> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unkno wn Source)
>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>> at java.lang.Thread.run(Unknown Source)
>>
>> !ENTRY org.eclipse.net4j 4 0 2011-04-12 15:32:43.736
>> !MESSAGE Problem executing OCL query: Product1.allInstances()
>> !STACK 0
>> org.eclipse.net4j.util.WrappedException: Problem executing OCL query:
>> Product1.allInstances()
>> at org.eclipse.net4j.util.WrappedException.wrap(WrappedExceptio n.java:40)
>> at
>> org.eclipse.emf.cdo.server.ocl.OCLQueryHandler.executeQuery( OCLQueryHandler.java:180)
>>
>> at
>> org.eclipse.emf.cdo.internal.server.QueryManager$QueryContex t.run(QueryManager.java:293)
>>
>> at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
>> at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
>> at java.util.concurrent.FutureTask.run(Unknown Source)
>> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unkno wn Source)
>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>> at java.lang.Thread.run(Unknown Source)
>> Caused by: java.lang.IllegalStateException: Invalid result:
>> org.eclipse.emf.ecore.impl.DynamicEObjectImpl@5e4c689e (eClass:
>> org.eclipse.emf.ecore.impl.EClassImpl@6a688d6f (name:
>> OclInvalid_Class) (instanceClassName: null) (abstract: false,
>> interface: false))
>> at
>> org.eclipse.emf.cdo.server.ocl.OCLQueryHandler.executeQuery( OCLQueryHandler.java:175)
>>
>> ... 7 more
>>
>
Previous Topic:SERIALIZATION
Next Topic:Using Ecore2Java ant task
Goto Forum:
  


Current Time: Fri Apr 19 23:20:15 GMT 2024

Powered by FUDForum. Page generated in 0.02982 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top