Home » Modeling » EMF "Technology" (Ecore Tools, EMFatic, etc) » [teneo] ClassCastException during read of one-to-one mapping
| |
Re: [teneo] ClassCastException during read of one-to-one mapping [message #58588 is a reply to message #58564] |
Sun, 22 October 2006 13:32 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
Hi,
Strange. Which ereference is set?
How does the database look like (tables and records in the table)? Do you see anything wrong there?
Can you send me the ecore and a testcase to reproduce this?
gr. Martin
Andre Pareis wrote:
> Here is the stack trace when I run into the code:
>
> 2034641 [main] ERROR org.eclipse.emf.teneo.hibernate.HbStoreException -
> Exception when saving resource trading
> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>
> at
> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>
> at
> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>
> at
> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>
> at
> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
> at
> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>
> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
> at
> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>
> at org.hibernate.loader.Loader.doList(Loader.java:2144)
> at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
> at org.hibernate.loader.Loader.list(Loader.java:2023)
> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
> at
> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>
> at
> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
> at
> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>
> at
> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>
> at
> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>
> at
> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
> at
> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>
> at
> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>
> at
> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>
> at
> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
> at
> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
> at
> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>
> at
> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>
> at
> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>
> at
> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>
> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
> at
> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>
> at
> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>
> at
> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>
> at
> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>
> at
> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>
> at org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
> at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
> at
> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>
> at
> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>
> at
> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>
> at
> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>
> at
> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>
> at
> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
> at
> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>
> at
> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>
> at
> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
> at org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
> at
> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
> at
> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
> at
> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
> at
> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>
> at
> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>
> at
> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>
> at
> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
> at
> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>
> at org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
> at org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
> at org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
> at
> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>
> at
> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>
> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
> at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
> at
> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>
> at
> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
> at org.eclipse.core.launcher.Main.run(Main.java:977)
> at org.eclipse.core.launcher.Main.main(Main.java:952)
>
> Andre Pareis wrote:
>> Hi,
>>
>> I'm having a problem reading back a previously successful stored
>> one-to-one association. During load, a ClassCastException is thrown. I
>> have attached two files, one with the model and the other one with a
>> snapshot of the debugger showing the line which when executed produces
>> a ClassCastException somewhere in the model code. That is, because the
>> eInverseAdd is invoked with the wrong object.
>>
>> The debugger shows that target and value are the same object. The
>> eReference value is strange, because there is actually no
>> corresponding object for this association to be found in the DB.
>>
>> The only objects that are in the DB are the parent of the Yahoo object
>> and the Yahoo object itself. The load of the parent and the Yahoo
>> objects have been passed successfully. Normally, the load should have
>> stopped already as there are no more objects to read - instead, it
>> ends up as shown on the debugger screen.
>>
>> Any ideas?
>>
>> Thanks
>> Andre
>>
>> ------------------------------------------------------------ ------------
>>
>>
>> ------------------------------------------------------------ ------------
>>
--
With Regards, Martin Taal
Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #58612 is a reply to message #58588] |
Sun, 22 October 2006 20:50 |
Andre Pareis Messages: 113 Registered: July 2009 |
Senior Member |
|
|
Hi Martin,
I have upgraded to hibernate 3.2GA but still have the same problem. I
have checked the mapping descriptor for the relevant association (which
I think is Yahoo-YahooIndicesComponentsSource).
The relevant sections:
<joined-subclass entity-name="Yahoo" abstract="false" lazy="false"
extends="Vendor" table="`Yahoo`">
<key>
<column name="`Vendor_id`"/>
</key>
<one-to-one name="indicesComponentsSource"
entity-name="YahooIndicesComponentsSource" cascade="all" lazy="false"/>
...
</joined-subclass>
<joined-subclass entity-name="YahooIndicesComponentsSource"
abstract="false" lazy="false" extends="SymbolSource"
table="`YahooIndicesComponentsSource`">
<key>
<column name="`SymbolSource_id`"/>
</key>
<many-to-one name="vendor" entity-name="Yahoo"
cascade="merge,persist,save-update,lock,refresh" lazy="false"
insert="true" update="true" unique="true"/>
...
</joined-subclass>
What I am missing in this descriptor is the "property-ref" attribute
that I find in the hibernate docs under section "7.4.2 (one-to-one)".
Does teneo take care of the bi-directionality of this association?
If you think the mapping descriptor is ok then I will create a smaller
test case.
Regards
Andre
Martin Taal wrote:
> Hi,
> Strange. Which ereference is set?
> How does the database look like (tables and records in the table)? Do
> you see anything wrong there?
>
> Can you send me the ecore and a testcase to reproduce this?
>
> gr. Martin
>
> Andre Pareis wrote:
>> Here is the stack trace when I run into the code:
>>
>> 2034641 [main] ERROR org.eclipse.emf.teneo.hibernate.HbStoreException
>> - Exception when saving resource trading
>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>
>> at
>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>
>> at
>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>
>> at
>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>
>> at
>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>> at
>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>
>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>> at
>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>
>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>> at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>> at
>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>
>> at
>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>
>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>> at
>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>
>> at
>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>
>> at
>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>
>> at
>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>> at
>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>
>> at
>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>
>> at
>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>
>> at
>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>> at
>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>> at
>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>
>> at
>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>
>> at
>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>
>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>> at
>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>
>> at
>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>
>> at
>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>
>> at
>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>
>> at
>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>
>> at
>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>> at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>> at
>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>
>> at
>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>
>> at
>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>
>> at
>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>
>> at
>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>
>> at
>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>> at
>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>> at
>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>> at
>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>> at
>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>> at
>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>> at
>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>
>> at
>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>> at
>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>
>> at
>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>> at org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>> at
>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>> at
>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>
>> at
>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>
>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>> at
>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>
>> at
>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>> at
>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>
>> at
>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>
>> at java.lang.reflect.Method.invoke(Method.java:585)
>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>
>> Andre Pareis wrote:
>>> Hi,
>>>
>>> I'm having a problem reading back a previously successful stored
>>> one-to-one association. During load, a ClassCastException is thrown.
>>> I have attached two files, one with the model and the other one with
>>> a snapshot of the debugger showing the line which when executed
>>> produces a ClassCastException somewhere in the model code. That is,
>>> because the eInverseAdd is invoked with the wrong object.
>>>
>>> The debugger shows that target and value are the same object. The
>>> eReference value is strange, because there is actually no
>>> corresponding object for this association to be found in the DB.
>>>
>>> The only objects that are in the DB are the parent of the Yahoo
>>> object and the Yahoo object itself. The load of the parent and the
>>> Yahoo objects have been passed successfully. Normally, the load
>>> should have stopped already as there are no more objects to read -
>>> instead, it ends up as shown on the debugger screen.
>>>
>>> Any ideas?
>>>
>>> Thanks
>>> Andre
>>>
>>> ------------------------------------------------------------ ------------
>>>
>>>
>>> ------------------------------------------------------------ ------------
>>>
>
>
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #58698 is a reply to message #58588] |
Sun, 22 October 2006 23:00 |
Andre Pareis Messages: 113 Registered: July 2009 |
Senior Member |
|
|
This is a multi-part message in MIME format.
--------------080200070608090005020404
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
Hi Martin,
finally I have reduced the problem to a small test case. You should be able to reconstruct the problem by executing the com.pareis.trading.tests.ClientTest in
the test plugin. It uses an included hsqldb which creates its DB files under C:/Temp/options. The model project has a dependency on an "org.hibernate" plugin
containing the hibernate libs but I'm sure you have something similar to replace that with. The model is in the model/options.ecore file but everything is
generated. I'm on EMF 2.2.1 stable.
One more hint: As you can see in the model there are associations between classes of different packages. This might also be a source of the error.
I really hope we can get this fixed otherwise I would have to use non-appropriate one-to-many associations...
Regards
Andre
Martin Taal wrote:
> Hi,
> Strange. Which ereference is set?
> How does the database look like (tables and records in the table)? Do
> you see anything wrong there?
>
> Can you send me the ecore and a testcase to reproduce this?
>
> gr. Martin
>
> Andre Pareis wrote:
>> Here is the stack trace when I run into the code:
>>
>> 2034641 [main] ERROR org.eclipse.emf.teneo.hibernate.HbStoreException
>> - Exception when saving resource trading
>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>
>> at
>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>
>> at
>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>
>> at
>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>
>> at
>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>> at
>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>
>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>> at
>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>
>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>> at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>> at
>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>
>> at
>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>
>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>> at
>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>
>> at
>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>
>> at
>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>
>> at
>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>> at
>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>
>> at
>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>
>> at
>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>
>> at
>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>> at
>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>> at
>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>
>> at
>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>
>> at
>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>
>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>> at
>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>
>> at
>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>
>> at
>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>
>> at
>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>
>> at
>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>
>> at
>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>> at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>> at
>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>
>> at
>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>
>> at
>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>
>> at
>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>
>> at
>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>
>> at
>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>> at
>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>> at
>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>> at
>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>> at
>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>> at
>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>> at
>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>
>> at
>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>> at
>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>
>> at
>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>> at org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>> at
>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>> at
>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>
>> at
>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>
>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>> at
>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>
>> at
>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>> at
>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>
>> at
>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>
>> at java.lang.reflect.Method.invoke(Method.java:585)
>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>
>> Andre Pareis wrote:
>>> Hi,
>>>
>>> I'm having a problem reading back a previously successful stored
>>> one-to-one association. During load, a ClassCastException is thrown.
>>> I have attached two files, one with the model and the other one with
>>> a snapshot of the debugger showing the line which when executed
>>> produces a ClassCastException somewhere in the model code. That is,
>>> because the eInverseAdd is invoked with the wrong object.
>>>
>>> The debugger shows that target and value are the same object. The
>>> eReference value is strange, because there is actually no
>>> corresponding object for this association to be found in the DB.
>>>
>>> The only objects that are in the DB are the parent of the Yahoo
>>> object and the Yahoo object itself. The load of the parent and the
>>> Yahoo objects have been passed successfully. Normally, the load
>>> should have stopped already as there are no more objects to read -
>>> instead, it ends up as shown on the debugger screen.
>>>
>>> Any ideas?
>>>
>>> Thanks
>>> Andre
>>>
>>> ------------------------------------------------------------ ------------
>>>
>>>
>>> ------------------------------------------------------------ ------------
>>>
>
>
--------------080200070608090005020404
Content-Type: application/octet-stream;
name="problem.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="problem.zip"
UEsDBBQACAAIAEkGVzUAAAAAAAAAAAAAAAAdAAAAY29tLnBhcmVpcy50cmFk aW5nLy5jbGFz
c3BhdGidjz0LwjAURWcF/0PIbqqbQ2sRqaBDlVJnqcmjjcaXmA/Rf29Vii46 uL17OZzLi9Pr
SZELWCc1JnTMRpQAci0k1gndlovhhKbTQT/mqnLOVL5pQ++dAL29kaNEkVBn OSWP8nVG30mu
sSO1rRlwJY0DdhCeqSogb9p1tiqy3Xydl7NlnhV/2IwAxrUFZuEcpAWxUaGW 6H6pdPAm+M62
l/iE4+jz+ztQSwcI1Ryc0qUAAAAzAQAAUEsDBBQACAAIAEkGVzUAAAAAAAAA AAAAAAAbAAAA
Y29tLnBhcmVpcy50cmFkaW5nLy5wcm9qZWN0vZLPSgMxEMbPLfQdyt6b6K2H dAtVvClC9QGm
ybhN2fxhki0+vkmaVZZS8CDe5vtmvvyGIWL7afrlGSloZzfNPbtrlmilU9p2 m+b97Wm1brbt
Yi48uRPK+IhBkvYxTSd3JiwYbKUzzAOhDiwS5KjgpZEnUtOgja3gY5Xd+lwo gk/UYdC92nuU
WVX5kKJgVXEq1FHHUPbaB2QnFZl0lAo4Qwkg/ayQEkDdkNmhaj41BL+i/Irr FbJnsPoDQ9z9
L3Yvj2jgT6DVGU+eeHEgrNMXcfval35eoMzdyuSVX/uh0/blKjDWmfj9F6Yf 7QtQSwcIDCgb
f+wAAACnAgAAUEsDBBQACAAIAEkGVzUAAAAAAAAAAAAAAAAnAAAAY29tLnBh cmVpcy50cmFk
aW5nL01FVEEtSU5GL01BTklGRVNULk1GhVE9T8MwEN0j5T94oBuxgDFVB0AM SC2qKGK/Otf0
hD/C+VKR/nrSBEIqtWWxbL+Pe89egKcNRsnekSMFn6tbfZMmD7UvLGaLH3QA 7wboBRzmalLZ
uiR/OAzIqnHrYMn0DBOcroCRohaGgnw5VbFdLUprOBOu/5TjDKMUjxZiXIJs c6WHy3sjtAMJ
fDTirR+x7FJdPbvKokMvIK3taIwvDrpJxWFHBfJR/HkwYGnfSXLV90uTp68q sGRLMB9QHtW6
TpMTJU/f6lrInoEa2IZwCevEafKKnzUxZn3cXAUuNRpLVURtAqPm2gs5PFiN MXSbdt8SpjuK
tCZL0uQzRuya/bK3tEb2IJdZY09Bj+EfXft+vSKbw75ZCbDkqv/6b1BLBwjD bUIGHgEAAIEC
AABQSwMEFAAIAAgASQZXNQAAAAAAAAAAAAAAAEQAAABjb20ucGFyZWlzLnRy YWRpbmcvYmlu
L2NvbS9wYXJlaXMvVHJhZGluZ1BsdWdpbiRJbXBsZW1lbnRhdGlvbi5jbGFz c42QzU4CMRSF
T2FkYBhB8Y+tCYlACKNrjBsCCQkaowTXZbhizUxL2hnfy5XGhQ/gQxnLwIaF CW1ym6895/Tm
/vx+fQO4Qt1FjuEiVHGw5JqECSaaz4Vc3EfpQsjGKF5GFJNMeCKUdOEwdJVe BBRGYmkooPg5
sOZYyWBwO9yYBuvHNTEUroUUyQ1DvtmaMjh9NScPeZR87KHgoYx9Fz5D/b8u fFRQZSjyMCRj
GpcMneZ4x5Z7qy+rYyHpLo1npCd8FhFDbaxCHk25FiveXDrJizAMrZ2zGbxH leqQhiIL3RJ3
X/kbZ/BHUpLuR9wYsuGV7Qicw84Fq8XstvOw1bXUyxgotT9QbH/Ce7eQw4Gt lczwAAdTFPGE
Q0v+WowajjLdcVZPcGpPL4sq4wylP1BLBwi8l0RzLAEAAPgBAABQSwMEFAAI AAgASQZXNQAA
AAAAAAAAAAAAADUAAABjb20ucGFyZWlzLnRyYWRpbmcvYmluL2NvbS9wYXJl aXMvVHJhZGlu
Z1BsdWdpbi5jbGFzc5WSW08TURDH/9Pbdpe1IHjB4gWxyBYIKy/6ADEhDSRN amOgITE+Lcux
HrOXZnfr5xJ5INHoB/BDGeecro00NqH7cGZ3Zn4z8z87v35/+wlgFxsGCoRl Pw7dgZcImbq9
xDuXUf9tMOzLyECJsBonfVf4gRykwhXhB5ezwzhyD98cjbII1Xb3pHfQbR0S 6p1pxfYIlUEO
NKdmNdrhIBChiDIvk7GCqvvcO5LZa0LRaZ4SSq34XFgg3LJRg8Vl93XcZNeC jTIqhPmOjER3
GJ6JpOedBYKw2Il9Lzj1Eqm+tdPAHcLWFHnDTAbusUjjYeILxWZxYqGIe6rp fcKu874zA7qn
J88+ypTvuy+ykdqJJILrNGeqqjQ/tGGgSjDHZVmVM9MVe74v0rTxgrDt3JhT iqwTPc6R1Fd8
LX3nk/fZI9jtKBJJK/DSVKQG1gkbN2xAqF138MLyDvDiFvBA/WZ+s5R0tmU+ TailmOMvlzPU
M/cd9O4K9iXmLzR2WyMqWGe7hEXtBWO1MfyKPcTW3Cz+wNIV7k6iW9xrW6P2 KBHLehbiqep5
kR22Klb6ipUvY76ifS//YUs5a+IRHudsQ0f+zx78HXmhiidYzYn1vFt58xIr FxPI2lhlAU/1
uYZnWgzpVs9h/gFQSwcINEAWyeQBAAAQBAAAUEsDBBQACAAIAEkGVzUAAAAA AAAAAAAAAAA2
AAAAY29tLnBhcmVpcy50cmFkaW5nL2Jpbi9jb20vcGFyZWlzL3RyYWRpbmcv Q2xpZW50LmNs
YXNzvVh7fFtlGX6+Nlm69OzWdd2t27p7m7QNY2y4dZsrvYxg28216+gAIU1O 2zPSpCRpt4I4
nCIKiMhFHQooKlMY0A1IKVOYt6GAeEdAEVS8K4KAd9DnPec0ydLLCn+w35pz 8p3vfd/ne97r
yaNvPPgQgFVqiQs5CnOD0W5fTyCmG3FfIhYIGZFOX03Y0CMJFxwKK6KxTp8e DBs9cd2nd3fw
PhrTfUZ3T9hXt7V9tx5M+HnvwiSFRaOo8oeoyegwAu1hXSHfX3t+XW1dffWO hhaFgobdgb6A
LxzgvuZEjNurFHKMkIKrT4+EorG4wtKGbAA00h2N+HoTBhE0GPEEhfI2cEPE SGxSyC0ta1Vw
1ERD+mQoTNfgQp7CtAYjojf1drfrsRYLS0FDNBgItwZiJjZ7cdIGU40buZil YSamiI7ZGiYj
T+7manAjn+oTXQbBzW8YkzyC0vTmRCBhBGvCgTg3l5SWjTiLRWaduaNqMhZh sQslCp5R1LZY
122B4IWBTn1Zg5HQY4FwXMMSLCXumgZ/XRM5XTi+DQVnp57wk+JCwhmFfmfc ejyrdOTTslY3
OSjT4IGXO/SmqHg2yDNGI9v1i3qNmB4yHbDLhQqF8vFCJ1NWAsiNcviE8VMU tpWOcQh/hIeO
BMJ24FX5/Rkg7bWRKxbsUzWsxmkMLQt2v4JvpBk7tiLmDl8mxiqJKmdE3yPk OKPhkFwnk8vm
/nhC71ZYQD5HcZv1uEqCZ72GKmxQmKnXRCOJAOMxVq8HEr0x3V+roPyCcpOG d2Kzgju9R2Hx
2JFjH9GFM0bP5GF0U9sDcSPYnIa7r3QctG+Cl5ougqwaie9kEnLYeg1bcCYz UT/DRpdx6Ksn
HARvA1q6mq4f5m7UtLepY23ojncy3Ve9FSPxtIMWjucgK6S3aXg3tgt/w5xk 8Fc2ZtBkE+hG
C1pd2KGwbHQBq9TK7Q7eadiJsxmhRrw6EtTjiSiNVY/lrGEbJ3ksFWOXwpJ0 7vrDYb0zEK6O
dfZ2s5zW7Q3qPUKVC+eyIGeXpjN6jXBIj+XhPexY2/Vgbyxu9OklQYsOUVBC 2ksC4XB0jx4q
6YjGStw4BxdIwVkpVLZrCGI5G0kiammUx7qGDnSyuAZ6etiPFCpGK4ojlmww VaKi3Y02XCAW
LtQQBv061wr27Xp3tE+vj0W7M3wWejMV6a3Gcj6iuMiFHoXlE4oPDTEwnvMZ ZH16LK5Xh8jE
zRPPzjQ9Vgt6m4pLr4Ya1OZjD/pd2Mtq/yaVaLgYUxgQISPeE0gEuxjxrPat w3PJ8lHSa+Rk
4sL7FDaOl1UWTTXpQN1pJLpspk0dLlzGYjBKKegPdEWjvjb5dONS7JdY/gCt lZ6c8bG6qfS4
omCMTUmv1TsCveEEI7o3KC2KyTl6g8uAwS53BT7iwodJz/g76wNB1o1+DVfi KpY93d/U3FLd
VFOnsPIkNmxJuvgKfFTDNbicoWlBNp/n4VoqNAUqqcmNfbhOwwory2/QcAne m49P4FMufJKN
9aQe1HAAN3GmCYSyZ6JU5RIkn9FwM25JkWci8UdCButjs66bleNk5GVsrxLU n9XwOdzGzi0D
WaaqylEbwxiapFHswxc0fFHgTe08QVceDrJ5WFwZ1nJlnOtufBnXuXAHm8iE LQkLhzTchbsZ
KSNZqIl290QjDO94c7Q3FmQ4rZsoI9miJjsDGg7jiMK8NDsjTayfIFMjLFis 3afhfjnOvM4x
beRhkK89JzBYEUztqYybm9wYEjofVFjzluBw3jQ38RXiZAnI2SSD+1TyVkdC Vuy4U3007sIx
hTmSAHu7w754YK+vufrsjDb7dQ6qZrQbUZ9/a+qBpNE3NXwQl0uUHNfwiFRJ hxU2Q/iOhkdl
oZAJ0xKtDoebE9HghfbBXHhcoXScapiqSJJ6+XgMT2j4Hr7PKmyOr2bn6Rsl Cd+WlpKLH0or
5LyaF0106bE6mQhWTrC2siZ1pGf9qcO91JoC5KRPaXhaTprfnp4OxObPNDwp NkvGHBvsdwhp
67+QzXERe17Dz2XacOhb9AQHplL/rl1lI4kTb76gYRmWy91vNZyOd4j47zX8 Er/iy1JMj0fD
fQxBxfEsT47W0t+ji95m0VtUOsobWBmHyb/yzTt7LhIT18nH3zQ0oknK8Ksa XpNwcQbDeiDm
wj8YOaaYGQ41UQ6BQfGB7P2Xhn/jPzKNhUIMLE5SdiRk7TVLci5e1/Bn/IWg Obi3BsK9+om/
N6T8MknfEYnLWRylfsn7XJWr8bhKnvjjzcNPqPNF5dJUnrSDSXzZ5bs3USm3 pvLlbdhlxOu6
exL9omCKphzKyZOqaZqaLk/zqGpbLLpXHqPdpWaSupFjY0eHHnOrAlyQp4po pKTUCK0v4YKa
w0FUzeUb9QTnT1FUJYLzRbCYVaG0Zrx9aKc5upoNnzVhrI0sH1ZBqjfM33Ks HzoqZTcW0625
/HPys1h+cQHgkF9NzKsb+bzO5DcNU7hrKr+V8Sr/nOpeTDvMmxzM4KebV2A9 hVahwFwVBTNT
Ylu4IoIzPIMo9BzBtPtR5FH3Y05aRQEFgFZ+1tJuE6bzhUVUaZYg5mG+qbQY C2yllbzKM8cR
LBxI6Zlkrp2fIeuwZZVkjC3rs2WdnvtQlC18UYawMyXMacQWjpOSXF6Xi3Cj xyuHSaL0AC9H
Ud7mceSWy5NBVCaxKn3CIioDZz4n3gfpVDNwGRG93zRWYim0jcndGhoRz5Rg Le+EPma5DWCz
TWcBzaxz3EpvDBDAxmOoTh/FcskNvN6YcZyC1HE4ZtvaGsiQWHd7vI7yJOoa y7O13EIEt2bg
dKdwuuHHWaZmN95FTYKLVcLW/JJN1H4v4W29HdNsvOd5j6PN430AzQew8Cja 2o7inLaC8wZx
PvcFkggl0TUI42HVKHLHMdlDXLsbKTXN63EUVJcPIeIEmedyorH8OJZypU/h IOZZjphpO8Lh
9WZ7YS2DErgThTjEWLqLrN6NdbiHnA6gnuPJWTjCKLwX5+E+7EaSwTBIHz2Q cfr9qdPvt0+/
jmE/fHqOqvbpm5hRwkwxTz3nERPTpW0F+zzOSdTI2JflNNNTTd2PUeZxzMYT GT4rTvmM/dvW
fS2lxDObj+BDSVzd4C34WBIf5+Gv9w7hxhzs9JoPPp3Erd4kPl9wexJfspbu TOIeLt1bkEzi
AW/a/hIz65+i/afJ0DOYw1a0BM/Ci+cYi89jE14wMRVZdm1MLp79KL5iZtNX KZeDh8w0ysHD
+JqJtIVPRKKQ4L7RIGCS+JYASOLb2dn/MuP9FZ76VZaO1zKsFdrWnJiWssae bnNxG2VFur74
DtMrG02urCI0W+rEcBBVMIiaPF6mCe8SkjLXH8Nj3oohfDcXAx5vccUgfpBm ZB7PAbxOJv6H
RVS4nN3Fp3KxSTlNbB7Laioa6vEj/Ni0XI+fYINpv96MC6mxT6bwXmnjXWvj rcjCu9CjsvH9
NIXvmTQ+kzM1FXPYrRaxHVSqwgxca1O41qZwrU3hWpvCxYHDxmWQX3lWIVlq QcNSG5uyPbhV
0o8h9qxTAA3iuawAVgsIZxFWqsUZ7qtIQakwzYr7OKjYZq+y6Vg937LpsSyb kvPNpJNKm8Sv
hZDfmKwMeOYXLxjE79LGzdqqPChW5VisKrFCncIOfmoGH6tTIFabLCjz7g/4 o2loNf7EO+GD
44cN7B5+l5xstIHVZQFbZnJVfgwvJvHSYbmpTuLlwwJwCK8oyA0X/z6EfzIh D3vmlw/iv+mQ
97BkQlUR8kYsU5sYXptRoarpxhqcrmpRp+pQr7agQZ2ZUXwaU8doTB2jEW8w RFl8lPnfBH+N
XSDW2+BXZ4EXx5ZJJzaxqxOAE+qgykkjXcGRAGobkW7HUtVMtDtQplrhUWdj tWrDaeocrFPn
Znh8fQrlehulkuHKxjZgYwvb2PQsbDX8ayK0R8wGV3QcLsdBzM09iFlHzBZS lFSTDsDFBYfj
kATFcTgdh3IPSUE9zhmDlyE1WeEme5mn0Q5lhUqIp+lArerCVrWb41Y4A304 hT48jF5+Z7TR
X0o/yK41nqSaegB5nkE1Y+CoKmiTm0FV2OCdqWYl1eydXgsqb6aXJdW8nd6k WpBVXVQvNLWH
KbMXJaqfpF6MU9QlGVDW2FDmYIFayMQSIiUhctTi/wNQSwcINz2OViMMAAAS HAAAUEsDBBQA
CAAIAEkGVzUAAAAAAAAAAAAAAAA8AAAAY29tLnBhcmVpcy50cmFkaW5nL2Jp bi9jb20vcGFy
ZWlzL3RyYWRpbmcvSWRlbnRpZmlhYmxlLmNsYXNzZY+9CsJQDEa/1J9qVVDQ UVzr4sXZWUEQ
HAT3axvLldaW26sP5+AD+FBiSgcFh0DI+UhOXu/HE8ASAx8eYRblmSq0ZVMq Z3Vsronaxnx1
5mz0KWUfTcLwou9apVrY/nThyPloE6a5TRRHqSlKVpydpc8tq3UdIbQSdtuY MA7nu++Cg7Ny
YyW4rPEk/KfzIyE45Dcb8cakTBj9Oi2qvAgQGlIt+cYTSR8dVLJdBDIh9Ko5 +h9QSwcIRUfF
SbMAAADwAAAAUEsDBBQACAAIAEkGVzUAAAAAAAAAAAAAAAA2AAAAY29tLnBh cmVpcy50cmFk
aW5nL2Jpbi9jb20vcGFyZWlzL3RyYWRpbmcvU3lzdGVtLmNsYXNzvZddcBPX Fcf/iyRk7CUQ
A8bEDhgIQVoZBCltk5gEE9tQteKj2Ni1E5qupWt7yUprViuDG5q0SdOkCWmS foY0eeww7fBg
aCKXZCaTTDrQSR8z6bTTPnY6nb52+vXS6f/sLrIiyxT6UM9Ie3X3nnN+53/P Pbv+8N9vvwtg
N96IY5mGDTmnkJ42XWWV0p5r5q3iZHpwtuSpQhxRDXc77mRa5WxruqTSqjDB seOqtFWYttMD
R8ZPqpyX4TiO5Ro2NXCVyauiZ01Y5ritNLRk+h8d6B84sP94dkhDa/akOWOm bVNCei6X92hY
ZuU1xBmQdiUNW7P1AAxScIrpsmeRIGuVPBo17eWCouU9qCGSSA5riPY5ebUC GlbriKNJw6qs
VVSHy4Vx5Q4FLK1ZJ2faw6brs4WTy/f6bpoRwToda7BSfKzXsQJNMtqgoxkt dO9NWYTryC4p
HqF0NeiZnpXrs80SF3clkotyCcQc8Ff0rMAmbI6jS4PRwO1QcD1q5h4zJ9Vd WctTrmmXdGzB
VnIPjg4ODRzSsPHGMTTEJpWXocRridNA/lgpuL0usfhucriZGiR1GEhxhTrs yM7mmKNTPKZO
lS1X5f0NGItjh4buG5VOra0UUDO6kRbFd2k4mlgiiUyRSRdNOyy8nkymBjKc WzwTYN+j41PY
w9IKsGc1pBeHCWur6K9I1zL2SFXFiuq0iBNz7Lxcm6ll3/VK3dZgfxfXahz3 a3igcXrBsoC6
zyl6plUs0PeI5U1lijPKLSnfRxx7Gx/bAKUZ9+FBUXIfA9XuYlABNy2tJNyi wsD780z33E3v
yy0I2zfFNHuWlG5JC9nTPh2fxb1xDGhI3EDSKp6o14J+HNTxOWTYNsbNkpXz c5tJNCil/0cW
EXxBRy/2k8bxppQ7UCTN9psUWsOKCWV6ZVdl+jVoTClaKE2yGHffMomG265v 9jFVcGaUCDWk
47gI1eILFcwL8oiOY4IcVQeVxwaZyIyNJRcLKHv0sI67sE2MTuj4EkZ5Al1V cuwZdlttjFlL
YkOz00q8DYq3tkSDY50cjoPCrK5vShJiQsfd2N6CKZyMw9Kw+b8eQx2PYSXP cc5WphtHge3Q
d+yv6HNsmyGpjLh0dEzjFDusmc/vt22evLBS6tb2JMckSTZkE+NMi61i2LTL 6pOPueq+LVfH
iyXJNprISIOKYFbHDE7LnUxp8Pod+szhazqewJNy51SZLb+uOV8XaExov6Hj KWnOcas0UJj2
ZsXxN3V8FY8TyXMWNHtWx3OysInRjrrOGX/l8zqewbY4znET6oV+qDwxodxm vIDvSHPZ3oSX
SdSVsPL3d8nsd3V8D98XnaanldRwd6MnyKKpwG2PePihePgRn6qJvhuue55B WEJlmxq1L7WQ
zXnQKbs5dcDyXzyCp/JOWY3NzD/CT4zfnfJ6wNehqDzi/Ssf8Lyu5C+d3zwW /JXkVf5i2s+x
6hIHy3A7v5t5Be6hURKt/qw4WFM1O8gZMbzdmMda4zJWvYU2Q3sL7QsuWmkA HOb3XsY9gNU4
4rvSA0PcgQ7faSfuDJ3u5FXuRS9j41zVz3J/bqTGNhraanL+Qtt0aBsz3kRb vbFVYxyrGvNk
hcYlShLhdZsYHzJSkkwFifO8vIPuUSMa6ZY789hZwe6FDNvoDCjze4aCnebc GRLN+sG6Aodh
MBl9mkFkZ7rwGY5EPnb4EOAw90rgOhmm/RrWMOx9o609RjQ6jweoqkwvJHWb 7/scbV7EerxU
k1xnNTn23dD349RLdiLV+TOfZIt/P/isYZoPvYf+1I4rOBDBnJHq3DGPz9eH ehVr8Rq24nU/
lBG4q6aWQhaHfHcpJnLEr5UUjuKLfikeu2WQwSrIcD3ITwhygSA//R9A2KFD kCdCEKMjANmM
4E8s1/u7UMHYnBDNGR2dd87jkQWOoKovox1vsm4rTOIXNSxGlcXwCTR/9GU8 6rMY+ApHwsJG
GrK8xt+SWW/Icm8dS5fR/R5yFahLwnMFk3yH5oCT9hUUl2HkktHRPQ93oSq3 +Kf9fRJ+wFr7
JbO7ysjX6PlXfH/6EPvw65oK7a0S91aJe+GxqqVC2bZDzrP8LTnsCjmTdZyb pAl8ApNg8ziz
wLWR9Qp8RK6P+e/Abxj/t/TyO7L9nqf3Dz5TWxCjyrQrZNKkz4ckb4QkJ0KS 4TqSfQS5hlY5
sFcRj17AhsgFrOOkzFRw9jzinIhGL8qhusoOxssVfF3jVsSiFyMXBfvpi3Ub /kdi/4nC/JmN
6C81qCeqqCeqqM9Um9JZSiyr9lCUb51HE5vlt+fewQujMpjHi9lU60sVvDKS CtA4WJ2s4Acj
qQpeXSi5O9jFgL/yiP+NFH+neP9AAv+kaP+qIdkTkrSzCZxnLkLyY9/H6/8B UEsHCG1pJ2D8
BgAAGA8AAFBLAwQUAAgACABJBlc1AAAAAAAAAAAAAAAAPgAAAGNvbS5wYXJl aXMudHJhZGlu
Zy9iaW4vY29tL3BhcmVpcy90cmFkaW5nL1RyYWRpbmdGYWN0b3J5LmNsYXNz jVVtUxtVFH4u
UDZZVmxDKbS0NFAqSRDWvvhGsBVCaCMxpRCjtNW6bC5h6SYbN0uV/+D/cMZP EWfAyoz2kx/8
UY7n3l0SGhJoGPa+nfOc57zcc//978+/ANxCTUEXw5jplPWq4XKrpnuuUbQq JT3vj0uG6Tnu
roIehknHLenctK1qjeu8vElzx+W6Va7aejoQzNCCIcwzubX8fC6VZriRPRM9 yRCaI9yK5d1j
6I7FCww9KafIVTD0adDwDm2IY4absfhbAIZJ8V0N59BLY9aq8NxOeYO7eWPD 5gyRrGMadsFw
LbGWm2EMYFDBxY5eplcM84VR4hOrvGTVPHdXwyUMEfGmp/HsW6omQ7jMEN3y vOqsrusn3ZmR
in3EaUTDVVyjKJS4dxRjhrux7Lbx0tBtg1xf81xSSXa03ozJdYwpiDLE2ktW 7Z2SVdHTYrEi
58LHcYZEB+iTCkmVjExouIn3KJG2U2IYPM710cY2N71kvCAyG9MQR4ihd05m XsEUw0BTNv2T
yaue5VQYLnhb/M0Mixprng9m26gRl27EqHC8LatGVkyXGx5l/36sU6RStlGr dQ5kQL4Pd/GR
gg8Zrp6Go+FjfELVR4mTa2vT4m5mUdZ3Rrg/qyGJOQbNJ5ayLV6hAr/WvsD9 46RQvKfhPj5v
KK7t1jxe7qjoHycVLDCMN8OUsW1eMux5t7RTJuBG1BQQxaHW6lrYsewid0NY olLMb/GoKVyK
TqpI4aFIY6Yl0UdFWRDRWtaQxZcMCsUiZ5QpBxeJ6wlhAfZIwwoeU7aMapVX igzTbUu9Az+6
WGsMI5NRqxatOF7UiL40bKvos5UJEDa+0lAQdEKe42urmMdDssllohhGTy8Q BU8ZLnfMkYon
oux6zSChI6ekU8H37aH8rKl4LqFqQYrbQgUJpltC4Q1uSdBxzmqXgZisqpKG LVhBp2noj8fO
6mrkw4tTn5AGlkrIzcUir7rcpPothrENRzTr6umvxZFBUl5zdlyTL1mimw+8 2RlmRG1gjDzq
pieOoiteAZqF6E+hf+octJqiUfyUP6D+jv7faNqF8/RVaQRGSWUIF+QuSIFe oEDxR9oRqpN7
iESGX+FKF16DLSf+wflE/Rf0Le9hNLGPG4dg6weYrEvhAQJLBAauSDYx9NOt idDuEKYxjBnq
mx9Ig5dIrp9MvS/lhonzNJ0KT+IN9ndoFLjnEgfQW7nPoocai4DSfCEC7pUA t3A7APiZdoVs
duoV7jD8KkIxAf/XJUn66+vkyqd1+nxWP8T8+iFS65H0AR6Q2hcM+8hFVumz j/wBvv67wSNC
DEAXLYpFegnS5OSDhmtkM+AjZt9gXbpCjTBgtkAyQko9xBMK4LPsVL3Fv8cU htVjeGqAF6LV
t/hO4lF/PIn3nPCMk3hPSfNZB7wNmBKvCB7g3Q5CH6KgbL7GdhOtV+7zY5EP BUhh2LTfhbL0
Oixj65dfzx4qrQhOo+4YfpAz939QSwcIqibAcVUEAACwCQAAUEsDBBQACAAI AEkGVzUAAAAA
AAAAAAAAAABHAAAAY29tLnBhcmVpcy50cmFkaW5nL2Jpbi9jb20vcGFyZWlz L3RyYWRpbmcv
VHJhZGluZ1BhY2thZ2UkTGl0ZXJhbHMuY2xhc3OFU8tu00AUPZOWpA7Tpg9e 5VHaNEBbaE15
lEdL2zRJJUsmRU0UiZXlONPIxbEr20VC4qcgEgsWfABrtixZsmYH3BknFJDa WrLvmZlzzz1z
x/P558dPAJZRziDFsOAEHf3ADoUb6XFot1y/rdeT+MJ2XtltUTDdWIS2F2Uw yDC6b7+2dc8m
2k5zXzgxQ7pkGpVqnWHKDMK2LhzPPYiELjp7hINQ6JWSZ0fRKsNIwrSs2sta vfKcIX9cxq7Y
E6HwHUFZuX5Wo1It7+zWGLhRpglj2yhumRXy9PfQsozyCcLFOA7d5mEshdN9 G7kEWFZSiSoM
rVGq78brDANz8w2GwVLQEhomcD6Dcwwzp7aN4wIuMmjCqNbqxWqJfM6ap2at ZqnEJMdlXKHc
tohLnit8avL03PzJ3dXAcI3jDNJS4jrHNGaoNX8krNqbKBYdhsLxSkddl2qz HBkMSbUbHDel
2tiRWkP4rSCMJG+OQ0t4Cxy3pfEc8YwW0dw91256QrIWObKJN53jLpYZxv9j WUbrRHdHRyf1
7nOcBZd6DzlW+u1KNinXH3MMJ/Wecqz23SfrVrIJ5f4ZxwiGyLPp+qJ62GmK sC7dkD8zcGyv
YYfKXW8yWwsOQ0dsu3Iw8e/hLcm7If9O3xehOhUR0a/Uvz9pRuUG6O5lMCnP idCk7LCKWi9m
e/O0NxWHe+MRtU5qyGGU4hiN3lKUz+Z7jH/ApS6uKjDVRV6BQhe3FJjv4o4C S13cU+BBF48U
eNLF2jvSSGGdvnlZhX2Fxr5hnH2nrv5Agf3CYkrDSmoMG+wLNhRbvpvqW8QW xSzk7iZQSmu/
AVBLBwiHC4QibAIAAGIEAABQSwMEFAAIAAgASQZXNQAAAAAAAAAAAAAAAD4A AABjb20ucGFy
ZWlzLnRyYWRpbmcvYmluL2NvbS9wYXJlaXMvdHJhZGluZy9UcmFkaW5nUGFj a2FnZS5jbGFz
c7VYCXhU1RX+b2aSmSQ3BCZKRZF9SQbIVKVICVjDZEKnhIQmIUhsDS+Tl+Rh MhNn3oDBttZa
sS64daV21xZsbYUgA0FFcGurtXu1K3bfN7vZWqs95743My+TmST2+5rvm3fv Ofecc89+782T
Lx8/AeA8ITwoEpgfiQ0GhrS4biQCZlzrMaJ9gXZr3KxFLtf6dA/cAktj8b6A HhkwhhJ6QB/s
pXksrgeMwaGBQMgmDBMgUKw3128KCfiadmg7tcCARgLbzDjJqxOoCMaiCVOL mh3aQFL3olTA
Y+9KM725rWtLa9gLKTCv3zSH1gQCgfH61aq9BcqYfnNrqDF8iReVtCOR1lqk tRmhpXq4ua29
vjlIKi1smtRY0lGGG0LN7eHGcP36JmISYRe5SwhMd+K7usINjIfA2WPwjaH6 9i2toa5gy5bm
doGSYFM4xJMya8J8AtPSQNu2tvbQJoHKNKIj1NzQ0trGoik4Z9joMUJ5zUWS 07xl1sSSXJkG
LM42kmFjchSTFEs9aoaCA1oiITCnKX+ArXXyis/oIXKj19C6B/Q0l0wMJ0x9 MA16jUQ4aph6
D3mtk1xvJIJxXVNwhbVkaAPGboa9a2krQlwk4Kqu6RBwB2M9ehm5MyDxWspO uHlZYHF1zRSi
VkqMF0hMxwyevU5iKarJGU1GVG9ODnbr8XZWm5MyFtEGOrS4MsNGlqxVmpRi DdZ6UDdhTTRq
ETMWH+at1k2cUDZlXRlceIPEalxMilWPL4pCjk/z13SwSeslFmIRzxokFluz Rokl1uyNEjWo
5tmbJPxsutvsNxKl2IQWD5oLlm+6che16n1GwmS7NuPNFJ1szdQU0i+Xta6c dmuTaMcWgfI+
3UxTCKzMY/Zkcus4F7ay35aXYhsu9YAyakEBHv7afByZtwgsKiTeQUoab8Nl El3YTkmg20k8
r7qgalYteNEtsKRwewoMa/2xmNWkPKBcX1yIJrCNv7Y2pYigl7WnprU0X16N Z1E+MiR2YLnA
mRFVa/YS9VmT6jVRRlINJhuUiDLZLCNThnlIB5n0Cok4k5b0xnV9N8Vvhtmv jy04qi3COXWh
cqeYB1VToV6ZmXe1qRZBESns11a9V4/r0QhHZBhXebBbYPZEMZB4G94uMJOz jPIpGTGTcW2g
kexPxvWE1TRy+cmjg7FoIGkadGI1UcrSZlfjGg/eSQU/KbHEu3At9SrakVxd Ha5xZHRL9w49
YtZ5cB1lz2QmkjezvunQoz2xOClcSbiwo8FSp8rBdIV7JvRhvUl11Z00ddLj psJ6ZMiseKWD
MyMz77JUS1i4sb1ssm6cbXkCt0vcgfcKVHGM7IWwOvvZBwsKG+IU8n6JD+CD fFip3E6fM/PZ
/xPWKDPvk/gw7qRctJkdIVhQPTF7uKaDJXxU4mNOCRnn8eInJD6JT9GtJaGb zdqgzmmRp80p
QXdLfJppy5k2sTmu9xpXMn6/xAHGexWerj6M/KzE5zi7K1V2J7uHrAJLcLp+ XuILuI/yUOvp
ydnQzsKaTq6hQxIjLGOaJWOIDsDhIT3B4u+XuB7bPUhRL8gTSiv8Xhzju4ua M9NxiQfwIN01
uHukw9AziRcdyo1D2O7p7OycQiRPSOzELp6dlLgZ23n2iMRe7PLiMb4Jqcxl 7BMSX8SXyG6l
pyPiTxXUNdt8JlSEylCPFyRxCBl/wI/DhMPjXNOZ/ptCk2RDn5TYwy6J4CsS T/MB5qVQq4bM
yK9JfB27rBxSyK50XL9JGbvTajtefJt6qJXbDXqvlhww081UZfgzEs/iu3R3 o2QLtVAOaaYR
iwoMTxb3Kfgxj08KWp7Zmo7e7wucY2mszMroWx/tadP1Hlb7h6z2jwR2/T/U nIKSHjwnMDdP
aTnbuRc/4ZeGA8Oq/0ziPbiB73G/kPgl32Ok7riw8H3l1xK/wW+pEu2zTz1y FhZupw2aqXHt
k+9+L1BkKBf9UeJP+HO6TBxnwoGCPsueL/+T315VEUzpkPtL/v6V7QV/k0hi uxf/oIy3Hjuq
//1T4l94kWy30qhVT8SScW4R617FLTVucwXS7HX8DlOzRoOP76qx96ValswB j0b1uDJWT3jw
ioB/0rfNoiZ6UdHtht9X6SnmkyH8DpyJWShGCUEefjHCS3CZAy4nuMIBTyOY Hkk0nwUfqjL4
Mwg+0wGz3NfkrJ+Vsz4rBz47h/4cBzyb4HMd8ByC5+asz8uRNz9H3oIx9EX8 HlLzxfa4RI1l
/PRTcI09+tVYQb5ZhuUkYQVBF9DIf+XHUHsY57sOY+UhRbyKvtOUay8mt50m cfNxoVrh3+qM
AJ1oWMRCv698BK8/iov84gjq+RPkT8jvOoIN/AlnBc9R2j+DUqRok4fInsdw lrgK54p9ZN2z
aiNpicVGFaVSfgvbWz5HUliNa0ewch9mjKDJVz6K1iKchDiYhU6BpE3PwvtR 9gDEtqPoILqN
brJ0BJeM4q30umIizWaK2EyazVQyAv0kIk3+FPqXpXA5jQM0xmgc8h/MmFRL KQa8QAF6EWvx
EnntFYRFEQZFMa4QJUiKUgyLMrqLVOAaUalMnEm8a7EBCWXiIMEm+shIwfVq GxtQMFDsvx/1
2e04kyFmOzxVbHtK8BXBZl5H1LxWxcyjuJJqZRTvYEe9O1dUjUNUVUbUnglE uQuJWpVX1PV5
TQrmMq/PaxIdBnn0CI4x6cZcUS159bg5rx6hXOZL8+qxN68/QhO7tj+vHrfg VlvU+bYeXkqp
205iTS5/wsHvzfDvyJTgnXYJbiJVNuyD+5DfzSXnd6XwPi5Fjpg7hQ+pSbGa uNVSkDFBIvuI
31+sMCHGhJg4W6x+qn2I6+AVe1AhbsBMcSPmiptQLfbiPHEL1ojbEBS3o0nc 4VB0U0bRaFpR
cZRaLRWuuJA2CacVDft93hQ+7vdNS+EuaiIpfCZbfnbh3bNsFPcWYauVewfp tEjhcAYVykUx
me+I76jLRZaMEpzCQ/R7mH6nfI8Kl9t3xO1yu2iZCR5XBF+mmn6Kfl/1fUO4 inxHaNHtICCJ
TOD7FiO+YyGE73sp/EDNg77Tvh+73Zntfkq4n4/iV/R8/R3vd5pFWdL+oBhC vud9jzr0O0W/
v7Kevr/z9s+P3Z698sLWbEhaqc1A3EUhuZtCsh9V4gBmiXsoLPdihbgPq8UI NorDuEykECW3
3yqOkYuO45R4EE+LE3QpfBgvi1NimnhEBMTjYpV4ItOQKDx26FZQu7IaUhH+ rfZ+Cf9RJ4vA
y/yP4JLS/wJQSwcIBLkHs4UJAABEFwAAUEsDBBQACAAIAEkGVzUAAAAAAAAA AAAAAABMAAAA
Y29tLnBhcmVpcy50cmFkaW5nL2Jpbi9jb20vcGFyZWlzL3RyYWRpbmcvdXRp bC9UcmFkaW5n
QWRhcHRlckZhY3RvcnkkMS5jbGFzc5VUf2/SUBQ9bzDYsApuc7pNnVOmwNwK W0xMWEwM2eIM
UxOW/f8oj/GW0pL2oeFbaeKPxD/8AH4o431tQwi2EkJo77vv3HPPPX3t7z8/ fwGo4SiLBQbT
cvvmgHtC+qbyeEc6V+ZQSdu8CBevO3yghHfKLeV6o2ItizTD7oyi1ieprB5D RvWkX6xSl+Zc
bepUeiwdqV4xHJbmrC1fMqQbbkcsg+GGgUVkckjhpoEsbjGkShqQb0pHvBv2 28K74G1bMKw0
XYvbl9yTeh0l03oAhtp8Eoo1GiBncV80bCkcRfPHDhHu1svNa/6Rmzan1Pv2 tbBUPYd13Mvi
LsP+XJ0NbGCTYdXyBFdR9wjBUC6Vm653ZQrLlgNfmKLf1U+/7zqm4yrZHZkR VNvvBkIYtv4j
nKGghzzr0EJ2ZWjZi9hRJzFJAz8ysKPVb4TqJ0vGM+zMJI+cb418JfpJzoe7 SUKeGng2YWMI
HkuIdSQipAPXEV0+tFWDNDAclf5xXFiuJ8yTqF2CgucG9rWCtVBBhB5L2J7B Sh603KFniVOp
H8lm7Fk50J0ZjDPHEV7D5r4v6KjnTxzLdn1CnwvVczuo0luUog8GKxT0q0TR Iv2zWKL8MkUv
sUA/IFfZ+0aXHzC+0GoBeZ0LdhhVvEGBIoNinb2NlSC/irWI5ZjuGrtU+Yrc d9z5PObIBDVv
g/r1EBPV62gL92mf4QEexjNtTzOdJzI9DpieoBjPtDvN9CGRqRQwlVGJZ9qb ZmolMh0E7psB
vkofbe0eC2pAqEO6pqkOfwFQSwcIgFbl7k0CAADVBQAAUEsDBBQACAAIAEkG VzUAAAAAAAAA
AAAAAABKAAAAY29tLnBhcmVpcy50cmFkaW5nL2Jpbi9jb20vcGFyZWlzL3Ry YWRpbmcvdXRp
bC9UcmFkaW5nQWRhcHRlckZhY3RvcnkuY2xhc3OVVdtOE1EUXaeUDi0DRW7K TeUmvQAjIAoW
UaygJA1q2pCoLw7TAwxOZ5rpoOHBL/ADjD/gkw+Kt6CJwScTP8q458JIaZGS Jue611r7rNnn
9Pefbz8ATOCOgADDmGIUpKJscrUkWaacV/UNadtSNSnnThbyctHi5pKsWIa5 IyDIMG2YGxJX
NLVY4hIvrEtEUTB0STcsdX1HUgtFTSqHLdMSg1gw8lx7ICvP5A3OMJipIu2p ekEphkYHlH2h
Wsomw0g1zOF03UDCheZUXbXmGepi8VWGYJpoIqhDk4gwIgKiDNKpjj40EUEz ztjwVobJ2EmZ
lKNT8dUwGNpFCGiwR50i6hEK4xy6BXQx9J9ohogehBjCfHklm1tYSS8yRDOq zle2C2vczMlr
GpnamjEUWVuVTdWee4tBa1Mt0XlPmTJDi1ryJkuGmdspEldHLLMlP5clTSbw /bUtrlip+GMB
gwx9R+uCK4bJpUU3qhEDGBZxCSP0cXhak0uU0sVYPHMMyolINSKOpIAEQ+// 4kSMYoyKZYNb
i36BDRxP/q++QoaTne1cxbkYmhSTyxb3jGF4GKtgLC/+FbtTuZmqlC4P9ChT EUxhWsAVhuGa
SlvEVVxjaMgbB3diqjKnMuMplYqTCZglwZoyJIss2SRjGWo+PEOba1xaU7lu +UzxKl+kui0M
XS7Dcp4IiNWuZJ/HY8/ulCxe8Ffb3VXv2P5yJGtsmwpfUu2r0F211Mdtg+iB WtZ1bjoFxUvo
p1taRy9lAM5VpVHQvrzUC7RDjwi1jTR7QuuM+r7EV4iJ72h+RIOWz2jbRccv hHdx9iM6PjhE
vdR2O1RxAt0l2ntoQQKdSNLeGPpoR3TJcB4XqKcr4iRiC+nEEKA+kSTmt6gP vkv+xMAb9CT3
MbCHIYY9xBgONuvo56t2khYwQ6nPUuopUp1DDPOOYqfL6inao3FIpMlwmf4m XO20px1NfEKb
rfcFk/uYee8LhJy0nx4ijPqEUVwnSZtwDjc8wlFnTmh2lMM4ZEPAt2G+BuTL qsibNSBfVUXe
qgH5ugoygAWnvU22wamTZseH1r9QSwcI5bihzCEDAAB8BwAAUEsDBBQACAAI AEkGVzUAAAAA
AAAAAAAAAABCAAAAY29tLnBhcmVpcy50cmFkaW5nL2Jpbi9jb20vcGFyZWlz L3RyYWRpbmcv
dXRpbC9UcmFkaW5nU3dpdGNoLmNsYXNznVXfUxtVFP5ukrIkrIWi/YFQKCI2 hB/pD1q1oS00
TUtsGlqDqFXaLpsLLM2vSZY6vDmOPvHgsy8dn3TGGWewzuDgg9O3zvhHOX73 7oJQN2SUmeye
vffc73znO+ce/vzr9z8AnIc0EBIYtqvlZM2qS6eRdOtW0amsJNddp5Sc9z4K XziuvWogItC1
Zj21kiWLHnNLa9J2BcxytShL9yz7ibUiBYZyAWg+kO+UEmibciqOe00gHB9Z EIikiRFDGB0m
DLRHIfCaiSNoi6ITxwx0CQy2hDXRjTaBqMzmC/Mz+XRGoDPnVGR+vbwk6/PW Uon0unNV2yot
WHVHffuLEXfVaQicDaL+byFIv71Y9WyBi/Fctb6SlHbJqTVkUpaXaVfrMpnx BEqN5F7VLNWB
N9FnoFfg9KFnTZxGP8WS6ZLVIMEz8ZFmwbRHKkbhzpg4iUGB+02Jeb7/nbZA zF2Vmd3CD7RA
6MAwzhp4R6DvMCIm4hghtExXK67FetVZ7OaJ7gMfNTGGcVZ5Rboayll2ZD17 U3dVVmmRVFqc
E5iMZ/9PlYZxwcRFTAocZYhMYb3GPtqoSZZiOIAhu6dcrXgdk8k5DQVxGe8Z eJcAGl5vqR0T
7+OKgOE0MuWau6EZP1CMp0xcxSmBjqJcttZLbtpqSIVy3cQ0ZuhHIgLH49nA +kRVffxm6T+8
/Awh9yfUlTvIMGXgtkBPwI1IlxxZcRXZrIkPcIe1s8nSW6bm8aBr5O0GyayA 7prIY44kFFC2
SE+W0rublwLh9vsEgRq4zwZtcdBAITjDwkbDlWVF7CMTC/jYz9Bbbpahtxt8 b0z7QHuKLC+1
7evVe4hcdKvLBttADa4gXOeAVoMtpSJgw88iMK6fBN2q/i2PFarrdVvecvT0 PDAIJxQjDFKm
MP+bkI2a2LTaaRv6GeXXbb4F38cSvyH2HOZLRJ/j6K8wf+FiCK/z2Y0InxN8 JhHDOXThAt7g
iukdxHGc0AFO4pQPOs2QIeWRGN1Bj8DoNga29vDa9LkpjXHC8/MxlPUWhrgf UVPSR/ueaIrB
NMHeFiDJH9CpkBMCY9uY2KJ5XiA/voNLAt+hI8HV1I/oToyHd3AthBcYHjvA oJ8CqNRNzJLz
HQzgLsdcnrnN4TpymlnCi7nHbBo3kNbMpzXHEE8N4iYymh3nmMdWzHDnCL02 e3/S576G96fy
7OXvBn+LYy9wK58Y38bslUhP5CViys7t2oq+srfodi/fdOtDvTV/KIK2/kn8 BosHfIY+LJL8
Qyb9CJN4zJQsJlekHJISLNNjhbtrsPGEzxKeooyvUME3qGlxPteF2dwTZxOf 4FMtzqYvziDf
D4gTZoxe+i9SpFl6P2TEMGN0+ms2/R4zephxdv2Emlt+8S/zraQLiVcb6Mt9 DRTaYxLCEqOq
nubIaonxbVOMRxqD06UlxrOmGJbGuLp3LZpj/NwUY0hj2Pqr+DdQSwcIVZLE AkYEAAAaCgAA
UEsDBBQACAAIAEkGVzUAAAAAAAAAAAAAAABAAAAAY29tLnBhcmVpcy50cmFk aW5nL2Jpbi9j
b20vcGFyZWlzL3RyYWRpbmcvdXRpbC9UcmFkaW5nVXRpbC5jbGFzc7VVS3Mb RRD+Wk8/NrZj
Rw7CtmzHBCQrzobwCJGEQDFxCBEyYUUofBtJE2dTa8nsI4UvXPkN5k7lGi6k BFVUOMCBc/5B
/gfQM6sIx7bspCrRVu30TPd0f1/PN6u///n1dwBvo55EhLDU7GyZ28KVtmf6 rmjZ7U0z8G3H
rIeTr9hOIkaYuCvuCdMR7F9v3JVNn5Ao2W3bLxOi2dwtQmy105IjiGLYQBwJ wnjVbstasNWQ
bl00HEmYrHaawrklXFvNe4sx/47tEc5WnwNKkWB40uHyFq+o3TJb1ch0ZNX2 /GK1426asunY
25405dZttjuuNK9WfN+1G4Evi9X9XIq5QZt6fsKwZW+2hR+4XPOH/TVL+WP2 l18JqlFMIZXE
KcLYs3gMTOM0Ycj2pSv8jkuYzub2YL7eW+cMacwk8TofzUGvgVnM8fm05Xd8 2qeeZtiLMIl5
wtyRKEeRwaKBM1jiVPKa5FTl7CBilu8GTW6ycNakbnbxkKJKY2cNvIm3WIPy 20A4LJ9U9pD+
bSh+OQPLyBOSd4RX01RYrxsMxuFOsbD364c9gg+FcOb4MyPE7wkn0NI+UJ5A NvftsL4TIrJD
mD9WdhHBYdPPXpud7adX5+KL67B/ga7sqESEynNfoFVHeF5xI3ewYd+X6oWD /Msv8ZoMqF2q
13lTEh8Spv73VFxX7Cj3CEoYVgL82EAFV5RcdCLCQnbg5QpLjeITrCVxlTB7 VJyBa/iUcML2
rGCbv3Pc0vXbhMWBCg+zK2VO4TMDN5SIo6LV4qNuOoTM0fsIJ+120wla0goa ekkyGWI1J1zp
BQ7rOXVoiwgjVidwm3LNVsKZ2PNNPa/isQjGAfWLssXfb34neWbySDzGlx9i 6Gc2Ihjhd0Iv
jvIDGGEAjyd4HMYYxjlqQsee1En+YCvBY3G5i0lC7T5yK128RniETCGWjuW7 WIigEE/H/8J4
On7uF7yxi0Q69oCjsoQf/31MDzQyVTqjU46xPY4Ul5nnIiuYxAVeu8wrClI5 LIdz7IG2zmsm
yrrAf34RznGRn3c4ZwozeBfvIaYzvc/eOC71aakcH2hal1Ho0ypqDE96tKzf UPrmIcq1kF4h
dh+X0rE+QabVxUeE/E84PbuL2Xxv3sVqBLswVtT8egRfqz2a7p8r++nOYAhz LJkMg5xnegus
uzncxNIeulafroUqPtfwLdSwzjCHWGlfsDfKBCqauKKb1cRDutMcFeZQdMP4 m1oMX2rK1n9Q
SwcIgMt2nqMDAAA6CAAAUEsDBBQACAAIAEkGVzUAAAAAAAAAAAAAAAA7AAAA Y29tLnBhcmVp
cy50cmFkaW5nL2Jpbi9jb20vcGFyZWlzL3RyYWRpbmcveWFob28vWWFob28u Y2xhc3O9WWt0
VNUV/g6ZySTDLY/wkEeECEGSmTwEo5iHmhiCjiSAREKDoB1mbpKLk7lhZoIi WhSr1WqrolVB
EW2rWEs1oEzEVEXbYmtr3/VV+35p7bu/6+q3772ZDJNJTOhaZK0799xzz9n7 +/a3zz7nrrz+
0QsvAViCDzyYoDAvZHZX9gRjuhGvTMSCYSPaWbk92GWale3y64FL4Uwz1lmp hyJGT1yv1Ls7
2DZjeqXR3ROpbFq9eYseSgTY9iBXYX4We4GwHk0YHUZwc0RXmBhYflXT8qYV DeuaL1coaN4S
3BasjAQ5rjUR4/BahQlGWOE0Ixo2Qnq80ezuMaO0EG81e2MhWljWPDroQPaJ NDzRsdmq6/Tg
H5sdGcy5eXWMQNRIXKCQU1LapuBqNMN6PshBgwd5CpObjai+qrd7sx673OZa 0GyGgpG2YMzi
7nTm1llmvMjBaRpmYLLYmK0hH3nSmqvBi4nSOl2Dhk/QUaLLiCsUfQxcYtT0 1kQwYYQaI8G4
zCgpbc6uXZM1ojYfC7HIg2KFitFtrwmGrg526sXNRkKPBSNxDWdisYK7veGS 1auZRaO74cBO
PRFgyKcTURbB3XH79YyS4W9L27yMRbmGClRyhL7KlFwKkaYZXatv7TVioiUl 2eDBEoWy0ZI1
fa6krBdn4WzRoEphTckIJAJRco4GI06q1wYCaSCdvuE9NuxzNSzDeQoeG/Z2 hcrhbhj6bjNa
GbVGVKZjrJU8c0f1ayQ4bjMSlvscieVIa6OaAT7Z1TF/czBuhFpHsf5QyUka Hwfnxq6gQeLj
njER9bjIgwaGeJxTNTRiOVMoGA6PW58N1EP0GSliru54J1fiknHToV3ReyS7 WjRtBpfvCLmb
Pe3FeHwUmWtOVubSNg9WKZxzUrMnYg3WenCZwqIxLUQNreAOMkkPRLfpsbi+ Vu82txH9vjEv
5LRVaxeqU5Kma9CmYb1AnzgIvSEclmrRruF8XCCJfIWGjZjMTSdsxHuCiVAX eQ4te3v7Kh/r
Unc2sGkZy9u2ctcYtbaMnIL4kOjQerIhThpaCE5HPINExXhISJJ2KJSOeYZI 06XhKnxKIZ8q
NEYMZi335+wC2K9rZQePaOgGl+c0vdGMJkhPj63Qg4nemB5gwVEBsdyjYSti Ct6hMQpnjLxz
O8nrARHMHtE9gzQo92DHzqxBctCeAmWF7LUatuM6Hoz0iwbRDZG+c+wL91Tk YT7zcDB2c0cJ
HUfGh6I8b7Qo24eCGzXchF0ShEFiaUEoHVH5zCh48Rnc6sEtCsXZJ/QmDBZ/ aa5jS8NncRvT
zIg3RJnYCZPOGkaK+KCPj3ktZ67PKSwYqqOBSETvDEYaYp293WTcdG1I75Gg enAnj/SZh7uL
eo1IWI/l4Qv8ylirh3pjcWObXhSywyEGiihQUTASMa/Rw0UdZqzIiztwtxzZ /BLK3RruRSnr
ZMK0LcrrL2q4Hw/woB3s6dGjVqXMcqwc1uWAqRUTu724HXeLh4c0PIx9XGp2 xtqbzIqY2Z2m
WXg8Z4b/Z/ns19CLbfLl8JhsIVxIeWaiS481CcvFY8wb5mvHYBESU0/IRkpT RSMydGqWDP6q
hgMSDpd+sc5sP60ksGFD6fDTr4D9uoYSlErrGQ21qJPWIQ2bcKW0ntVgYIuY PKLhKXyNZ+SY
HjcjsoMrnqryBPvl23vkDKW3iq+ZJVkO3lLMv6EwJVNMcfGSBp+dJsc0rESz tF7VEIJV0b+l
4QZ8WgAc13AUL9AlF3xbMNKrn/hZmgpbrr4uGhckrpKArOQcfF/Dd/G6vAnE WwffbPBiAD/S
8GP8RN5s7eX3UsanTWr5iJGfaXgDPxBIb2p4Sz5y8mhuTcy8dru83u3BuyQ/ PFs7OvSYF+/g
7jz8ko6KSoxwTZF0/Fry/zf8FBpj2ouhWpn4O5n4e1a7ksZRx+2mO4rVGyHj WSMNZKmxz3Ur
DPnq9Vq7aoUMxhnkmsPLDRcK5dsZYCvfufPr17rz25f3meydhMkcPYVPpbzL n1s9i6mH2JiA
afz18g5+y7mwGNOtXjEwIzVtDXtk4kxfP6/DmHoEs3zqCObIT+GQnZmEBLRx bg1BLOfcVbSy
3rKp2RYwD/Mt60UWDbFewbu8cx3Ggr6UrVyr76q0uS5nrpJ14cytdOa6fc9h VubkrWmT3anJ
zGlncpyxyeF9kUxu8fmFVRJle8hxAGe1+1w5ZfKmH0uTOCeT5Q38/TQjtxNT cSOKuSWJsyLb
oONMWtV0IlIVMSZ5Vhy5lrOgn5OJ/r6s6HnAdSbvpfICpEomrxL0c2z0xTZ4 V7mfyGtcZa8h
f7ar5QC0stmuo7hwAtaXDfmaQ2/APlp6hGT2k8yj9PQYluLLlv8q20eKUBWa KK2yWitwMa24
SeMS9uVwxDQEcCmFUlIvHJyvOlHe6Begj+NC1SKN4yiQm89V0FJ2FKvdaPEf x2S/87yOzz5/
WRKfbCk7joXsYU07MMhwmqOPy+/PFKfCyv5n6LOPfA6Rz2GG/lkK9BwT/AiW IcnEfJ74juIK
vJAm2sYUx40ORy8lszkqKbtZRCvMFO2NrKLx6JtFtEJLtMITRHOPQ7Q3aekt gnybJN+hp3cp
2nsjiBZkMcgUbTP7ThSNpT2baIWDohXaohX63AX6CaLZzynROkcTzT2SaO/T 5wfk8xfy+ZCi
/JWi/Y2i/Z2i/YOi/Yui/Zui/WcE0WyO6aJxh3T41DsVTOBfnbufBbCPqMxj iA9F1aqCKhde
5UlTsSClIo8OjrVmRku8e33+XNK9pqUs08oU5KmpaTi9KZxe7MD1lmVvCic3 UsfyP5247/IT
3s4nMNnBu4lxbvf5n8fNezBvALe3D+CO9oLP9+MujrsnifuSeLAfe16mTJx3 HPk+4tqbUiee
rs4jo6mTO1ydc2UjUadjupqHQjUfy1QRqtUZqFcLsEItxKWqGG1qETapM7FF lWCrKsVNypfG
fleK/S6HfTWWpNjzIOaw/9Da0oAdhU9Zo2NW3GHZmMurltcV6cVjykeq3MpD LqVjaClnvehL
z9Mp/01/r/N9Z99ggPiw1+qOs/VIn89fWN6PR4eEtJJSLSXlKixU52CpOhd1 6jw0qmqsVTXY
qOoQUufDUBcgruotuj4bforuDnyJdVRZra8gam2sOyzisn+3pojfw3kys9oh flYG8QW8Sn3K
5qdsGioN9uNDsK3dSQUIeyVht8CnVmOJuiwNXnUKXnUKXnUKXnUKHg+qDjyD NuVduWSjjRAL
HXhyTZeYSpr5rWATVD+eHII0SQapDZilNmKxutKCMtM2mIJSbrmVysrDrOP2 QScqdXNtn2fb
ni2XMqtYoiJK0f1B0fVp+emTn8N9vrmFp/fjuYyiqTpRpAwsUlczMN08LJqo UlvTglOXQlRn
hURZrST6Lbx13Dn6reDwxOugPMRnQbTSQdmYgbIE8u8ioMZXdgwDSbx4SBot SbxsNfQkXrEa
8SS+ecg3t6wf386ojOo6gr4eJeoGfqvtpJo3Mhl3oUbdjFp1CxPyVixXt3Ed 3p625lamiKxM
EVmJ1/Ada83x2O3Af5jPQq3egV+dAX+xJQ6DL+c+C72yoCsLt7JB9+N7mZjv IeZ7Kfd9xH0/
ytUDqFB7cLbay4A/zPqxj/j3c195NC0d6lOY6x3MSs72DtJ+B6npIO3KQHox r7W8NhHoa1YB
mHUcHtcBzM45gBnslJ4kfrgHHna4XAftSuJ2Hcw5aBcNu8nsGWyS2E8PZmTQ kyT2FC5RB9Gq
nsaVqo8V4HAaCTNFwkyRuDd1YL2ecGVUFd38fA/yeKJ+u28A77RLox+/aPYX vJfEr9b7bbBs
TClN4rfr/Un8ITOXB6CpF7mqXsJ89TLDfIz5/EoaksEDwCx+JfwRf7KQ/Nmy 8f7/AFBLBwhW
HHfPYwsAAMccAABQSwMEFAAIAAgASQZXNQAAAAAAAAAAAAAAAEIAAABjb20u cGFyZWlzLnRy
YWRpbmcvYmluL2NvbS9wYXJlaXMvdHJhZGluZy95YWhvby9ZYWhvb0ZhY3Rv cnkuY2xhc3Od
Vm1XG0UUfoa3TZYVaSgvbRHTSksShLVv1hJs5SW0kUgpQRRtq8tmSJZusnGz 0Eb9G/4Gz/ET
4jlg5RztJz/4ozzemSxJDiEQm3PYnZm997nPvfPMXP75948/AVzHjwraGK6a Tl4vGi63Srrn
GhmrkNXLRs5x9HXxXDBMz3HLCjoYxhw3q3PTtoolrvP8Jo0dl+tWvmjrCd8w SROGIE8upVdn
luYS5JVqKUKcITBN2AXLu8fQHomuMXTMORmugqFbg4a3aEF8ZohGoi2CBsn5 bQ2d6KJ3yirw
pe38BndXjQ2bM4RSjmnYa4ZriblcDKIP/QrON802sWyYz40sH13hWavkuWUN Axgk8rWMo6kW
XeMBXGC4lvO84pSu681SmpTu3cTskoZhvEP1yHLvqOIMtyKpLWPH0G2DPNKe S47xphxqlXkX
lxWEGSInWxbt7axV0BNisizHItMrDLEm0I0OcZWCjGq4imu0pbaTZeiv5/po Y4ubXjy6JvY4
oiGKAEPXtNSAgnGGvppt4qXJi57lFGgjvRyv32Wht9rX/tQJTsSkHRESkJez ShTDdLnhkQLu
R5rVac42SqXmZfSpd+MWPlRwm2H4NBwNd/AREadtk3Nr0+Jucl7qPCmSn9IQ xzRtbIWYzI7h
ypk6jwvnexru4xMyr3NOFjKWyUtzTr7oFHjBK6WdbdekjO+eidnEVYaa1TAH 4j3QGCrNeYZh
olV4YR5XsEC0a/uVtG2eNewZN7udp8jV7VPwkGHwuMhnty07w90APqXCreZ4 2BS1DY+peICU
UNNnx/R2dDbWxLY90rCMxwwKbcqSkafSnCfuDcYCLK1hFZ+TbIxikRdklied uCb86JR/wXBp
LGyVwgXHCxvhHcO2MhW2UgkixrqGrwSdgOdUvFUkkKKYXCqGYeR0pSr4hmxO L72KZ+IQdJYr
8gqfJS4FlOvtN1KLClOEGi6fKsY7byhFBRZdsy3rTEVOkOktN8h1/H+ItXJ+ 5bJ/kbfSiXxT
eXqKGr6D61/fVQxxyk9vGJSvd2anruKphF6bzPOiy006q5kgSngpemH57KZ8 FJgAKiVfsETD
PFd/7U4KveMy5dVO/08wXBBtlkZBBKDQH13LNBunt/gpv0P9DT2/0rANvfRU 6Q2MkMsgzslV
4Upt3nd8QSvCdWwPodDQK1xsw2uwxdjf6I3t/ozuxT2MxPbx3iHY+gHGdqVx H4HF/AAXJZsI
eugmCNHqICYwhElqSR/IgANk10Oh3pd2Q8R5gr6KTKJV9jfpLXA7YwfQj3Of Qgfd2gJKqxgR
cJcEuI4bPsBPtCpsH4+/wk2GX0Qpoqj82iRJECFglFK5u0uPj8VjZvcQifVD PFgPJQ+wSL5L
DPtYCa3RYx9fHuDrv6pkBigE6FoOY546bYIyXYCOh9UcKbhPTIye4KnMidqN T3GWbISVeohn
VMlvU+O7xxJdoXqk6/BUHy9AMwMbEo86UCOeSXi8Ee8JeT5tgreJrMSjNtOI lyO8rUa8TfLM
NsF7Dlvi5VHw8W74exqgQjuvUaqhdcn1Yt2WBnykILbJvw07sooCZdTXdcce XhxH+L4qaEZj
MfrhP1BLBwhv6ocCqQQAAHYLAABQSwMEFAAIAAgASQZXNQAAAAAAAAAAAAAA AFIAAABjb20u
cGFyZWlzLnRyYWRpbmcvYmluL2NvbS9wYXJlaXMvdHJhZGluZy95YWhvby9Z YWhvb0luZGlj
ZXNDb21wb25lbnRzU291cmNlLmNsYXNzvVhpcFPXFf4ulpCRH5swuwEZs8iS jOJASIghYIxJ
FLwAwqamgPuQru0Hkp54kgy0NAtNQ9ukS5qQxFmadAttQhtDEglwGzLTKZnp r06nfzudTv92
uk37s8s57z0/CXlh+RHP6L2re+855zvfOfecK//mv9c/BtCMGx7MEHggrqci GdWQWjaSM9SE
lh6MnFGHdD3Sx89oOqHFZbZNT2X0tEznsjE9b8SlBy6BdboxGJHxpJbJyohM DdBYN2RES2WS
kfbuY8dlPBelsQczBVZNYiaaIIXagKYeS0qBmuiu/vZd7btbezoOCPg6jqvD aiSp0r5YzqDt
LQIztIRA9VaymNZyjwhUBRp7BVxtekLOgsAcBR5UC8zt0NKyK586Jo0Dlm5f hx5Xk72qYdqy
J2duNdV4UYUFCuajhnUsVDCLdbhyQ1pW4MGOe6KHsCoyllNzWrwtqWZJkT/Q 2DE5Xe3mjpZZ
WI4VHtQJbJje5F41fkIdlGs6tJw01GRWwUqsIoL7Wh/r7u6Pdu2KtrXH+tu6 O/d2d7V3HYj1
x7p79re1C6ycHoCAe1DmosRwLWGdhH131lpeGJi42tjrJfLWKliH9bRDdukc 2DgRoKf3y5N5
zZAJM16HPGgUCE+XOeWynD9eBBDiAIUF9gamcCKaJjbSatLOu5ZotAykPTdx xoK9QUEE9wl4
LNhnBCITzVBQUno6kjZ3RMoxtnASutPyFJPj1pMJfs8iLntlOqEbAquJz+lj 2sKpt1nBg3hI
YIFs09M5lXLY2C3VXN6Q0V0CIspQH1bQgq0C3tIegfqpc8v20wM6LSunx0Dn 55ia1eKxEvBn
ArfDfRc0tQ0R3JaJSG8nwW7vVNAGIsEnd9oQy9x//o5z4jNAS5GnTBgn0H87 /qjQpLKDVB+a
78VSthSqhtuGysr1DgWd6GImx9kpY7JxykSqpNKLvdjvwT6BNZML5HMaHWUe 9tBIQQxU1L1a
tjVN5TLHiFunCtu4jdsscymhg7e6dKijyaQcVJOtxmA+RbW4/XRcZpgvDz4n sLiyZu3Ma8mE
NKpxiDrZfhnPG1ltWPrjFh2swE/c+9VkUj8lE/4B3fB7cRCHuRI1MJVHFfSj nhpSTrc08rKq
4Bji1FzUTIZCI9A0WbWcMGWDaWEVR73owWG2MKhgCJrAUivt98uUPix3G3qq LGaJuylV95rV
NTiBlAdJKvF3lB8K0qCCUkNJNiyNrGxNEBNv3vk5LdFj9abPqMycVLAdO2qQ Rd6DHLWBu1Si
YBg1lBAJLZtRc/EhaqVqInFAb00mYzk9fsK+LXhALWZ9yceedDafyehGTia6 M9TTWZ+TvF6c
xgK+o5xlUqkGVuu5IWm0c26tv0NCqVQMlDrJnPGoWPnEus8peIp1+6dMNLsT cSJ8lTfrLHZe
wVc4P13yUUl0LQ5EDx1qnNhlmdrnFPhRz6NvKtiITSz+bQVfw9ep7xoyqyeH 6Uom6CxWswsH
zmQk642x3kWBSZp5Y68HLwvMqzxJbOJVBautM/qagigeZ2NvKHgRL5F6Ls9q Mi9vvWM6TM2U
FA626gpEuWRW4QcK3sLbvBLNxsZXDnlxAe8ouIif8MrJPN3EKq5GTp1iJe8q +CF+xJAuKfgZ
X5KqSd1eQz99hpePejBKjk4sCwMD0vDifRyuxgdkyB/QEg/7eeIjLjQFukrd YX1hRS0seJUF
rwksD7RNu+8omaPA5JPk8ZKpNlJNt268uzW+UtdPdynewDpQTxRU0ceNGajj +zr9FnHxnZve
8+npRQ2tKvStkd785xYfYPZlGszAXHp66Q2ESagB88xZVjDfEXuEZlhQCRbh C17B7I9QW5Ke
Q8Z5jwubSWK7qUGx9mMRFpu6lmCprWsDvXnNdQXLRh0dM825R8tkXbas4CS3 ZSO2rDv4IWor
hfvKhN2OMCWtLZwlJhjoWhbuDIbIh2ABa0awKDiGQF/QVRXmlSJotqnk3SJS Bkh6DhBPg8TK
ENZAM435LYW2MR41kxEOhB/304hZo4NpA9hhs+gjMw+43qIgjJKpLZ9gW8kV KxJn6f3lMnd8
jjtUS21tHcQQW/cGQ65wAa2d4UotzxKC82U4vQ5OL9qx29TsJc4fM3HRmbY1 /90m6lyI4O15
B3NtvEdCN9EXDF1F9whWjqGnbwwH+3x9RXye9h0p4AsFJIqQN0Qny93ErCDh GugkqbmhoMu3
LXwNx90g5mk60xm+iQaaoXZ7EcusQCywA+EKhSqjsBmz6fkiavESpfgFutW/ jC14hdh4lTwZ
IeyvoRev4wjewHF8DyepvjyNt8u8P+d4f872fgtFa9z7U06u329HqXoMp8m3 L96oSLP3yuJS
7cSF2ogt/xzFxUXvjXXvmtaC5rr1WTBOTBMR0xUMUehplBkNhuqaivhSKYBW 0lE2okC/YYt0
AK4ihOum6aCl3nFnI6XKE6b6jXgSD5mh32g6xjXhKQdY1gbWYANbdgswUQbk 6RIQ62z/ioD8
moB8WgagwQHQ4ABocAA0OACom9kANLNAAU2cTxYG2lcCwcdxDydK6BqecYPA FPFsJZTfUin5
Hdbj9yaURZZCB0qTaZaLBHVB2+wTtt/B5ZbNesuyaZKl6sjsN/gkPj8aXF63 oohvlWz6TMk/
kM0/YgX+RNXkz2UUBB27QdNxYY6+gxdMVEF8l0ZMATVJG8t5+s5eNNtYGiuw +IPhT3ChgFcu
82BbASOXg8vDRbxeOgkrqcADfyFIf6XM/hu58w9S808y9y/ch3+XZXyzA6/Z gdeMN+l0cIZT
/7VBnabvZv23Qa2tALWKK76JSViAivh+JZ7/EJ7/8f9M4BczsFZUYZ1wIyRm loUp7OAJ23gE
N3AbxQs2in02iscrUGwnEJ+atbP2Jjyui1hadRELaZJnCvjxCDw04XJd4kje hNt1qeoSQ/3p
pVujKeZgiZiHHcKHPaK2DN4+B94+B16/03rOEqW8axOpf28E1dQJfz46hvf7 eFDE5Y6Q70oB
Hx4MWXBoMK+xgOLBUAHXS/m0jIoIxAooYhWh8BNh9QiI1YiIhjIkm2wkS6jU jeEXJpJfmjo+
/j9QSwcIC4EakvwIAABqFAAAUEsDBBQACAAIAEkGVzUAAAAAAAAAAAAAAABG AAAAY29tLnBh
cmVpcy50cmFkaW5nL2Jpbi9jb20vcGFyZWlzL3RyYWRpbmcveWFob28vWWFo b29JbmRpY2Vz
U2VlZC5jbGFzc72Xa3AT1xXH/xdLSIjFUBmDjZwgsAFZshGEFhMMDsY2IGIb ioyJacCspbW9
RNaalQQYJ2lL0idp00f6oIHSpm1oU9qalxTiBOiLNKR5tNP2e7922k6/djrt 9Jzd9UrINph8
iGe8e333nnN+53HPvb79v9euA1iL912YJVAb04bCw7KuqKlwWpfjanIgPCIP alq4h5+RZFyN
KamoosRdcAis1PSBsBJLqMMpJawM9dNY05WwOjScCLft6jusxNIRGrswW2Dp FKojcSWZVvtV
uS+hCMyNtPa2tbZta97b3iXgbT8sH5XDCZnWRdM6LW8UmKXGBcqjbW2tvdGe jq272qMFEvNa
tGQqLSfT3XIio7gxT6DiYGfrY/6DrTsj/Gj2H+zc6T+4Pbq7haylyIvoyFCf lkgJuDeRF0k1
3SRQEqjtFnC0aHFlDgTKJLjgFpjfriaVzsxQn6J3mbzedi0mJ7pl3eC3Jmdv MtR4UIIKCYuw
gHUskTAHbh5VSShlbY70oEpmQ+0zDjh5LynRtJxWYy0JOUXC/kBt+9QJaDNW NM7BctS4UC2w
+u5mdsuxJ+QBpaZdTSu6nEhJWIGV5GBP845du3ojna2RlrZoL4dd4MG72xRw DijpCKVpIeFN
kUJnyvxcHpj8tbbbQzGqk1CP1bRC6dS4OmLks5bcoxzJqLoSNxK034U1tPBu 5Vcoy0XoQRgP
cUbWCewOTONEJEkBSMoJq3gbI5ECSGtu8oyJ/TEJ69Eg4DKxRwTCk81QHoa0 ZDhprAgXMjZy
1TmTyjEOjlNLxPldSrGMFtZpaap4giTunCDROybmkI5uJRnXdIHllJO7l0Ij V2mzhK2gPVKm
0JZKy1T4+jZFTmd0JUIVICLsbpuEbdgu4MmvEVg2fUlasXIhQjV0dwZyok9O qbFoHvzZwL24
7yPULYOE2ziZ9F4S7HaHhE7sor2hbLUQC9x/bsZ19SHQUuapNiYC6L9X/Kgn DaUGqF7WfhBL
qXyqqu+ZKnO/7JPwGHo4khPRKYhk7bSFVBxKDz6BAy48LlAztUAmrVI74OFe Gkk4iF6qWjXV
nKTOmmbi5unSNmHjHp+5Hcm0ufKNIZJIKANyolkfyAzREdd2PKYMc7xciAks Lu57WzNqIq7o
btD5sXKPEsvoKfWo4o+Z4WAFfoq9X04ktGNK3N+v6X4P+jDA3SzIoVQlHEaA TrG0Zmrkz+Tq
EJJ0IsnDw5QagfqpOu6kKQumkVWoHhzCAFvQJaSQFqg0y36PMqQdVbbp2lBB zuL30+4+aFXP
xVEcd+GYwIoZ1YeEEZyg056K7Kiip5TmOEXi7Mz3aT485vn2IbWZJyXsxKNz 8TQ+5cIn6Si5
TyUSPo0FVBBxNTUsp2ODtLtTxq3tWYFVeZ/2JlOZ4WFNTyvxXcN09LO8Xawe PIMKvsh8joNI
Pc+tpQcVvY1radUMA0itoT9/cpROZMGsH9b9JQmnWLd/2sKyTh5O/Fd48QkW +5qEL3M9OpTt
Cr0WByL799dOPpk5lN+UsAoBHn1bwkZz9B0JTXiEFZ2R8HW8QKe2rqS0xFHa gWI/ecrOdI0M
K2whyhYWBaa4CtR2u/ADgQXFe4hN/EhCrbk7z0toNEc/kdCFvWz2pxK+h++T IW7RfF2988Jr
R2+2Qili+45AhNtmCS5K+Dl+wV8iqejEl/0evISrErLI8ZcjGZlP/juuWHav YiXXJFzCZUYa
l/A6X7bcpG63rh0f4c+qCzfI5cmtob9f0T24jgE3fkWG/AE1vtHPE7/hZvNb upLNsMewokY3
3qR7dZ2/4CZuanuLtd0W8AVaphXmdSoxUN4yCQpDxXQLqdlHtYweU7apfEEv L75Yr2Y5LKNY
lNCvEw5U8Y2f/ity8K2d3lXw0JuaCI1nQaL5UmO+jJ7zsYC+fIT+qqU3/zjF ZXgvGksX0tND
b9CF1oEalBuzrHiRLbaDZljQG8xhcfASvFdRGfRKV+HL6/CSBBClZwNBPEpy XYYuyZTEA3jQ
0LoUfkvranrzN8clLBuz9cw25h4vkHVYsoL3iCUbtmSdwSuoLBZOFgg7bWGq dEs4RTEpofcK
Fu4IhtibLEKnsSg4jnBP0FFSx19yWJvFR/MeLiJlwAl6jlLEniRVT1G8njaM +U2FljEebTDS
4aQvD9OI47dxSnpfMf3zU9I3TknvM+h9d9I7mN43Nf2L9DxD9GdJ1XeJ/tw0 9Jts+s0WPfUi
C2CLXQ1XsMV5joppjABab2JH3hWzoi7R+/IUVSD44LC0tVN+2bonGHLWZdHe UVes5XUieKOA
02NzerAbHzc0e7CHao+5qHlZmv9lBepkiPC6X8Z8i/dA6BZ6gqFXsf80HhzH oZ5x9PV44zn0
07rBLJ7IQsth+IboYLlbmBMkriMdJDU/FHR6d9RdQ8YJijxNj3bU3UI1zTxF PRRLzESUWYlw
hkLFWViPefR8i8a3acu+TXvl91Qf71BM36V/Vd6juLyPbvwBB/BHui79CUfw Zzol/1Lg/Unb
+5OW9w9jre39SXvPPmRlyT2OZ3py+MyNojL7a0Fe3HZe6Ay15E9RXnhHr6t6 xbAWtPoC/5ZN
BKaeAtMZDFHqaTQ6FgxV1efw2XwCzaL7G43/Dh/+QR3snwhRYsoNhYZ62511 +Dy+YOCswxfR
YhhaZzjGPe+UDZaywKotsCV3gIkCkOfyIKVG7P5N4/8QyH8LAKptgGoboNoG qLYB6Ci3AFRy
yuiXXE8mA63LQyzk6HChhK7heScIJoevFqGI2agQbqwSHgNlkdWAJ1DqDbPc JOjgL06IL58Q
WCZ9RnlwT8jiG7wbv8WP02NBX9UDObxYlBBRhipRjmViMVaKSoSEb5qEcBTM hJylbmEm5ByN
OB50NbDAztDfHN0mC2x9EViNEau6m3gpix9etAYvG4MdWfz4YtBXl8Mr+T2y ko40iBpiXIka
sQorRC3qRZBuAHVYL+rRIMLYLNYU7Ikmm7nJZm7CBfzM2AN0FbFDOMugarBI 1xSRchaDfL4Z
oF7JwBQmYw5jxYgbCHEjqkUjYW5GUDRRKLdgjWjGWtFCqK0FuW2wERssRMHX GwvshgU2aoGl
i8BauOyI602j6VbegstxHpUl51F+yZzJ4sppuGjC4bjglcxlPnNZBc0u9Eo8 UbiK6+MWnI4L
JRfYuVcvFNVIOznXiVaxG4fFHmREV4Ezo7Yzo7Yzh+3T7QXKCa9qJROvnYab Lg1vjI3jeg8P
crjZHvL+Motf7wuZ4DTw3pr422cMFtRm8bt9oSzezlfucr7OiAOQRC9tnUNY KmT6d7IPYRHD
BhHHI0IpIGy1CCtQRx32HYPwXUPXe/8HUEsHCNqLXobCCQAATxYAAFBLAwQU AAgACABJBlc1
AAAAAAAAAAAAAAAASwAAAGNvbS5wYXJlaXMudHJhZGluZy9iaW4vY29tL3Bh cmVpcy90cmFk
aW5nL3lhaG9vL1lhaG9vUGFja2FnZSRMaXRlcmFscy5jbGFzc41U61LTQBT+ Em5NWeSuAspN
bkUhIooXEIQQpJo22EBn+JVJ2wWDbcKkwRlexPfQzPjDHz6AD+W4u2lFuRQ6 03PZfOc75+w5
s79+//gJYAE7bZAlzBf9inrsBNStqmHglFzvUD11Pvq+us/ljlP85BzSCcMN aeCUq21oltB1
5Hx21LLDoGbhiBZDCS3769umKWHY8INDlRbL7nGVqrRywGw/oKqulZ1qdVnC qADadjq7mdZ0
y9bMzI6Z1bO7lm2ZezlNlzB+FUeOHtCAekXKeHrP8Vi6vimho3aqGWlGKWEk 9hskm74GYdt5
Pbtp5iT0/I+ME45ePLRjae1nNkzDatDOehgGbuEk5O0MXsZTz5xYYcGeG65K aJpJ5SU0a36J
KujHnTbcljB5oxkS3MWABIWms9buelY0b9wocjnJUg0R3MN9VswhDcVH1vxM qvG4FbARELSg
lTOMEYzjAQurM9hpr+QWaVXzK8e+R72wavknQZFKmLia+WwJOPskQRsSnH2a YIaz951ntygt
cegsgRJDHxHMcWjnX6hWdll6jlIJkjFqgeAJb3ikjrqiWh71lKA9bnKJ4Dnn nromys5Tr+QH
PPglAYlTLhOs8JS954LrLawSdMRp3hCsY+NicRxpc2GdVgp+udrwKs8WkJNv EtxCJyffInjL
exi8jPys7jRBFxLsGg3Xo9mTSoEGu06hzMbXY/hFp5x3Apf7tcNk3PiWy53u f/drnr8nEkja
82ggNoeywhP1N6dVYsma2JulYIDvErMG+NSFVmo6WdPtte+k5nfUfNaa0F3i nLGjGz1M9zLv
C9P8l/uGvu8YjDAsjNEIE8KYipASxsMI88J4HGFRGM8ivBDGqwivhbEWQROG HmH7K2OV8Y7J
WVYh5G4o8gB65DEMySlMyIuYk5exJOtYkzPYlvfwQU7gvYjif0PIDLJMJ8Hv oR9mq/IHUEsH
CK5edTTMAgAAxAUAAFBLAwQUAAgACABJBlc1AAAAAAAAAAAAAAAAQgAAAGNv bS5wYXJlaXMu
dHJhZGluZy9iaW4vY29tL3BhcmVpcy90cmFkaW5nL3lhaG9vL1lhaG9vUGFj a2FnZS5jbGFz
c51XC3xTZxX/nzZt0vbyCm8c0PJss9EA29wEhnRpKBdKyppSaHWtIb0tF9Kk JCms4JyKz72c
Tp2o863DN5RRVlAG7r05HT730DGd7uHGHJvbZNPpOffepLdp0laT3733O+c7 73O+833fg28f
PQ5gCRU7kUeYH451ertCcU1PeJPxUJse7fD2hLbGYt4meW8IhbeHOjQnHISF sXiHVwtH9K6E
5tU623kci2tevbMr4vVbhCoDhAItULXeT3DXbgvtDHkjIRYaTMZZ9nLCGF8s mkiGosnGUKRb
c6GI6Q2NBKcWCLZurFddUAgLtiaTXcu8Xm8uCysN/YRi4dpQ71+tbnZhHGEa M1SaDJUWQ6Wl
oEhTA8GGqoCPjVtYOyrX2eKCpqo1dXUEUvM5cmAxBqK1Va0mlKbGgWrV5w+2 +urWb6gL+AMN
wdZg3cZ6n194iDAxgy7o91fLFOdgjDXlq1WZT5D5afrV/qqGjfV+FrvRnOJE zDancmokzB2B
wjR94YhUjf5AdV09YdFIlIPM5MQPphdfCVOGIgeFcPCE8Q42rb+8rjZImJGN JGVdNv4Mg0qM
xPp9kVAiQZhVm72UzXnO+ByDXI226WEt4Yt1dsWiWjSZCMa642EtJWWKnSio aW2pCZeeUKN6
UmvjkmnmatETvrgWMuAx5pQeiui7BXatYCMYsZKQX17RSHD4Ym1aMdfYhQou wsWMkGlCRXnF
KOu1iJkvUTAeE2T0LgXn4wLCuFo9qgW6O7do8YbQlogmizMWDkUaQ3FdYAtZ uMKwpggrscqJ
d4/YH1aHwslYvEfUVY28pCzq5cXIh0/BCnDyLy4f2iRypSfFX9Eorq1WsBDl MlqjoMIcrVXg
MUe1ChbhAhkFFFRKCBzJrXqiCFcg6ER9znaW6mTz6rUOPZEU3xqwkTM10Dkq ctmXybq8hLVt
UrAZTVyCHVoyRUG4KIvbI8ldLnXxHonb4iJciVYnWrhUc/DI2+KT7LyPMC+X eBspW3wltigI
g4uzULMKurQ8p2nminGhnalyN2yzVTuxlVCWpUQazK9lQxE6sE1s3s6NLFtF DSY3otKpIIrF
hMlhY6VZU7zTJGXdFrPETiHboSAuZNP19CLMQrpDSLsV7BTSwva4pu3mjI1L btXsC40wgTGD
beEy4Sw3mZtNaWrYmqORcEpyB7Zea9fiWjQsKbka1zjxAcJ5wyVBwQfxIe5K UmZcUN3hZHc8
FFnN4eiOa5zE+Vl0cXA7Y1Fvd1LnLbyWa5aV7cVHnfgIJ2pEYgUfw8e5cbFG jny5WmEr6bot
27RwcrkTn+RAjOQiYVJmrKSfcszTaF9E58Dx3pfC5IzpghEoWhu1aFsszjts BqGpMlOBYFvl
Fezp3BKLJIZNWlWSV/KW7qTGjn8mt+NpMt7YsqlLWZh232p8o9kGBnos4RYF X8A+09NU81SN
w5cEak5uP+xCvqTgy7iVoJhLK7XJlUm+h20KwvxVBV/D1wnjLWZbyueUD8+u VjSKhG8q+JZd
Qjp2MvkdBbdhPx8cE1oyEOrUpAyz9FVD0PcUfF9oS4Q2sSGutetXCf6HCn4k eJeB59OnrLcD
Cg7KahprrKbuLt41e7o0ozscUnA7rNpU27iu9HZjB5WV06fgCO7gJRFqa8uw xVoQFc1OHOUT
yPBJdOEncuyUoZh4XMGdOMEnXWlbqQS0jRA/m+4hCCswzc3No8jhzxTsxh4Z 3a3gerTJ6F4F
N2CPC/cTpurZ15mQPajgIfycw2gYbkv+QzmNH+h7w1rGQdfiOUlsQoYeLoZg VHVIrJpTv1H0
Z3H0FwquNWP0iIIbzRj9SsHNEqPfcM3pA6tbpn6n4Doh78CjCh6TairiajJ7 nGCfUPAH7OEd
Jo21ekLChSd5TzJxTjzF56fhKylHE3Thz7ydDEchZv5FQQ/aXHiGVe409Lvw HDdrru6GWFUk
EkzGwtstfqH/m4IX8CKfcpnAX8eLJpTUY1HCrpFKdRSZHv1pKa2Ym/BL3DJH FSDJjAsvc5/J
xIpjryj4FG6Sw+Q/FLwmhylFs52a5ND0hoJ/4hyvUWv/ZTV8fMndYqtDyZD0 FD47vWU0pfQO
48K/+RLbEqjeXNpSvVaVV1VpS2BtaUtNcINPzPkPX4+JUsvKtpvszxnogZ3p /wr2/7RoRrE9
uoivuI6EseMWmwW3WpcLyAT7EatSNHCs1WhUixs6tISTXITKUV2F5tXyJYzP QHIlSw1RxvGT
e/R0/hegkCGn3MLhYrjYBpcwPMYGj2WY71QGpxsT0/hJDE/OgKfY4KkMT7PB oneGDX4Hw+fZ
4JkMz8rgn50hvzRjvixD/pwMeG4G/7wM/vkZ9AsG2Zcn1yxjXGF9Pca3WG6W BrzI+lYa33Ec
Sy8Ws4QlDF3IX/mV3IGlh/DO/EO49KBBvIzfY41UrOIwn2NxZVhuzMizIi1A YxoRMdfjLunF
ZUdwuYcOwy+vGnmpnvzDWCev9QOCZxnWn0URTrGSR9mf05hGBzCTHuHovGIo UkyxqDOyWiTX
bUvlaZYiZuztxaX7MKEXG9wl/WjMwwnQgQHoJGgfxg/At6H4GKjpCJqZbp2D Pe3Fe/vBFbxJ
iDSLqcNi0iymwl7oJ9BR6+lD5Pw+xPjbxd8Ef5OeA2mXKrkkQW5MoslYQVOx imZApZnopFLs
oDJ00zz00HxcTeV8cvEYLk4xIlmDXYaLnQxfhe3sJElft5z1GjBQ4Lkd/gF1 UvmgS2yRKrAi
RXIcsJgvY2qZmyjM/Xg/r61+fFgC9YlMUdU2URPToq4dRpQjl6grsoq6bhhR BblEtWQVdX3W
6NRkMm/LGp0bstpRM3x0dmW148asdqiZzHuz2sE7VhY71EF2fDpT1E1Z7bg5 q0vq8Fm6Nauo
z+JzlqillksuLvTPn8DKTP79Nn5Xmj+abgyHrcbQyqas2wfHQY9DGoEnvw9f lAYhyXf04SvG
oCA1KDQGDoOmRjA1Jk2BgVEFozLmG8ZAuAaaylI2BnQULjqGMXQcU+hOzKYT KKeTWEJ3YRnd
DR/di1q6DxvpfrTQAzYXWtMuxFMu0Fu8leRJ9lnZ+pQL6z1uVx++7XGP7cN3 uen14QcD7cJo
FEZV/5jAXaK3H4fzsMkssEyUmokSTne/+1h+Prv4U4b7cJKfu/i5x30f5Tvc /Tzl4EcIHjAI
Hubnl/yccv86O8FvWcHv+Xnc/UeDgKfybQRsmfu0+082lffw87Sodv9VGE4P ZSD3s3143hir
7jPuv9uYzzLu1X68TnC/6f4Xs58RVpP7bYPilCX+YVP8mSHiVZpIeSJ/ILWN vIeDHufUPsGp
fRIT6TSm01Oc3qexiJ7hZvssgvQc2ukF7KQXcQud4XveS3iMXsbzdJaK6VWa Qq/RAnqd1tAb
pNM52klvppuwLHAz/YtordWE88gh+qmACo3dlMjJT1Fh0X8BUEsHCAj8j00N CgAAoxkAAFBL
AwQUAAgACABJBlc1AAAAAAAAAAAAAAAAUAAAAGNvbS5wYXJlaXMudHJhZGlu Zy9iaW4vY29t
L3BhcmVpcy90cmFkaW5nL3lhaG9vL3V0aWwvWWFob29BZGFwdGVyRmFjdG9y eSQxLmNsYXNz
nVRrTxNBFD0DldK62oqI4AvQqi0oS+VpIBrTQIJWSUSJfpzuTumQ7U6zu9Xw rzTxkfjBH+CP
Mt6ZNk1TupaSprt379xz7jlzd+fP31+/ARTxNIkRhhVH1e0GD4QM7SjgrvSP 7BNeU8puRtKz
P+rwhcsbkQh2uROp4CRXTCLBUDgD8OCzjJwaw1hUk2FumbqVh263RfBt6cvo GcN6/hz4wiFD
oqRckQLDRQsXMJbGKC5ZSOIyw2heF2TK0hdvmvWKCN7xiicYJsrK4d4hD6R+ bicT2gjD2vAy
ckUyknJ4KMwiw+p/vJiSrUL5mH/itscpv185Fk60lcYUppO4zlAcWoGFGdwg X04geCS6C2iY
+UJZBUe2cDzZCIUt6lWbGtSVb/sqktUTu12qp6GMFoa5QQaopGN4z3elI8KS qjeUL/woPFDN
wKEtfTVoH2KQcdszZ2Fe+yx0+Yyh6NjfOKcEhslegwdCuAzPz2hKV8cZeWDh oTZy+7QRDeuI
XxyiFUNWC95zyYSsytZLvdZXbHdNnMRHFh5riTMtid2Qjrz5geT0Vbqiypte VCJtdEjkT72L
wlGBsHfarWPUPLGwotVMttS0qztCZgewMqRbY92Velem+3xCS7ovg7Xn+yIo eTwMBZ0GmR3f
8VRIvl6LqKZcLNNBM0pnLMtm9WlDkf4nMU75FEWbGKEfkF5Y/E6Xn7C+0tMI MjpnVhjhXiJL
kUWxzl7BhMlfxWSbZZvuunZ84RvSP3DtS4djzGDKBj/VqmnjdXQTt2id3ivc 6c8028u0H8t0
1zDdQ64/0/1eprexTHnDVMBCf6bFXqb3sUxLhsk2U+jDVOxl+hDLtGrmuGbq 17Fh5sAMBlS1
SdcE4fAPUEsHCHteHWaOAgAAUgcAAFBLAwQUAAgACABJBlc1AAAAAAAAAAAA AAAATgAAAGNv
bS5wYXJlaXMudHJhZGluZy9iaW4vY29tL3BhcmVpcy90cmFkaW5nL3lhaG9v L3V0aWwvWWFo
b29BZGFwdGVyRmFjdG9yeS5jbGFzc51VS08TURg9ty0dWgaKvOTpo4L0AYyI 4KOIYC1JTVM1
JSToapheymA700wHTbf+ArduXLowLhRfQROjKxN/lPGbmVIoLWY0TeY+vnvO +e6Z75v++v3l
G4BZpAR4GGYVvSSVZYOrFck05LyqFaSqvK3r0q6pFqUNa7qSl8smN1ZlxdSN qgAfw7xuFCSu
FNVyhUu8tCURTUnXJE031a2qpJbKRakRlqYtBrGk53nxvqw8lgucYTJzoryt XDuYYOiwgbmn
qqlsM8RPxh2m7RwmrH9R1VRzicEbia4z+JJEFYQXnSICCAoIMcz9sw3js0F0 4ZRF0cOwEHGT
USNDIroeAEOfCAHt1mxARBv8AQxiWMAQw4Qrc0SMwM8Q4Olsbm0lm0wxhDKq xrO7pU1urMmb
RTK6J6MrcnFdNlRrXdv0mdtqhe7+H6kzdKuV2mJVN9aqZeLrj2R25CeyVJSJ 4N7mDlfMRPSh
gAsMY8frhSu6waWUc6oDYUyIuIhJelk8WZQrlNa5SDRzAso+kehAFHEBMYbR v50TMYVpKqAC
N1P1wgufTH5Yc37dzs5yr+leDJ2KwWWT14xheBBpYmxsiqw1qNxINEs3HqxR JoKYw7yAKwxR
1+UuYgFXGdrz+kGvzDXn1WA+pdN0OwHXqfxcZUk2mbJB5jK4NoAcdcw7Wlp0 yxYvpbUzliOH
BGktryq8ktRLZV3jmlnJ6buGcvhmxprP5jjP1+NDTjydJywlaDVHPdbnxGpe 1beDjsSqavXR
YIsOmbE8pe9dWtO4Ydchr+A8NbmXPr4e2J1OM5/V+zS2U4S+RfTsoNUj2mc0 jsU+Q4x9RdcG
Tbo/oncP/T8R2MPp9+h/ZxON0nPYpooTKE20d9FNFT+AaYpJGKOI6JDhDM7S SJ1lJ2IJacTg
oTEWJ+ZXaPO9if9A+AVG4t8R3sc4wz4iDAdBL/3qqgOkBdygCyQo9ZukuoQI lm3FAYe1pmjN
ZigXRr9L9M/jaCdr2qHYB/Raep9w+Tuuva0L+O20+RHCUJ0wRMIJm3CRpB3C KXtNaHacwzxi
g6duw5IL5LOWyFsukM9bIpddIF+2RK64QL5ugfTgtv1M4g6NVoV12Q72/AFQ SwcIKdPP2kAD
AAAJCAAAUEsDBBQACAAIAEkGVzUAAAAAAAAAAAAAAABGAAAAY29tLnBhcmVp cy50cmFkaW5n
L2Jpbi9jb20vcGFyZWlzL3RyYWRpbmcveWFob28vdXRpbC9ZYWhvb1N3aXRj aC5jbGFzc51V
31NbRRT+NgmkCddCsT+oUCBWbAjQlJa22rRAm4Y2Ng1gEG1rrZdkSS4muTEJ OHnVd0d9YXzT
F53xCesMDj5o3zrjH+X47SbEQPOjFiZ79+49+53vfOfs2b//+eNPANPYcMMh MJ60c8GCWZRW
KVgumikrnw5WzIxtBzfLVjb4QE0TX1jlZMYNl0DfhrllBrMmrRbXNmSyLGDk 7JTMLpnJz8y0
FDgXa4mowWqGIYHu61beKs8KOP3jqwKuMHG8cKLHgBtHPBB4zUAXuj3oxTE3 +gTGXgraQD+6
BTwyGk+s3IyHIwK9MSsv45u5NVlcMdeypNkfs5NmdtUsWuq9tugqZ6ySwETr EA6LwjCOpGpz
gUv+mF1MB2UyaxVKMihz65zbRRmMVMUKjccO6xfqwRsYcmNQ4EzbvQbOYJii yXDWLJHkqH+8
lTNtEfJSwFEDp+ATWG5JrGr7/2kLeMsZGdkvgpEOCD0Ywzk33hYYakfEgB/j hJZhO182mbOi
gK91oA3gEwYmMcVMp2VZQ1nrlixGb+vqiiotgkqLCwIz/uirZGkMFw1cwozA UbqIJDYLrKVK
QTIVY00YsoJydr5aL5GYVVIQV/COG1cJoOH1J/XFwLu4JuC2SpFcoVzRjB8q xtcN3MCAQE9K
rpub2XLYLEmFMmdgHjdpRyICJ/zRpvnxqPzUimW4ffrpQjYG1Bc7yDDkxh2C tD99inHUwHu4
R99JUtWrSu8OHaGZ3grsvoE4FslGgUVTMl9mTqsH9XJTzEabZqBuLHNrezLR fMpKylLYzhXs
POFKCXuzmJSKT8LACj7goaoH18JY4F6nmFvsbM76w3ZtuhEuIWVKMX1g4CEe CRw/zFQZCMy9
JDtl3fzsG8kDR0xEBboq1XSPdso2e1hRlljOqgk3wR6qtJX26isqyzqqvKBE m07/ghDkbde6
na9j9bGHVf0uWKpe+xqujPMqZviYJifvYWqp7jjO1IXHe4+jh293+BR8Hgv8 Du9TGM/heYqj
v8H4lYsOvM6xHy6OFzhOw4uL6MMMjnPFqG7ECZzUDk5hoAY6T5cOZRGY2MNp hr+LkZ06Xrfe
N6sxTlbtahhq9ibO8rtL3Sc1tB+IphjME+wtAZL8Cb0KOSAwuYvzO5xOC8Sn 9nBZ4Hv0BLga
+hn9gSnnHmYdeIaxyQMMhikAEIXqIgO4jxEs8kJYYozLmGMzUMwCVZ91ZvO4 hbBmPq85OrjL
h9uIaHbs+FW2Yplfumi1PfiL3vcNqn8qzkH+bvFnTT7DQjwwtYu711ynXc/h VfPY/lzRV/Md
mi1ps/c7ma1qs4/amunZfyIsMHXAYwzhCQP5lAKYTOwaw0sy0HXcRZqyZPAI Fmcb/M/BRh5b
HL9EAV/jc3yLkhbrY52o7bpY21x5rMXaronl4/MTenLSzyC9mRTtLtfW6M1J P/trNtdSkFzb
qq8J1exrxXCFTyWlQxwuqK8aCspRZ+JgJE90jbOndsT4riVGUmOw23XE+LEl htQYvGs6Yuy0
xEhrjBv1o9Ya46+WGGc1Rka/Wf8CUEsHCL6VuTKFBAAAqAsAAFBLAwQUAAgA CABJBlc1AAAA
AAAAAAAAAAAAJwAAAGNvbS5wYXJlaXMudHJhZGluZy9iaW4vbG9nNGoucHJv cGVydGllc42U
TW/bMAyG7wHyHwgEvi0aOnTHHNJkn8i2FulOww6yzdhKFdKR5KT+96Pszljn NsnJMMj3If2S
9ATWGMAxB7BcFOjA4gEtBIblh5ufn0BTDiZ4YLIN6KpCyiVJwvMrNR6J5nqr onyhAxbsmtmX
7x9/vJHoeDQeTeQJxoOXGiJJETQsmDxbnD+heshftppfzdgV8q6zElUX/E/U s2uPHm51COho
pRuuw0s8ZdvQEPtM+bowlj+g84bpSTFLptcOfiXhNyTT9xUkGSSPMIVkl1Db XIfqLFWxbmlS
0YlJM0MbPp2RY1oXLWYyiWOBz3cr2NfoGqi08+K/zoI5mNCc5Khyb5X2Qc3X 90PmtvYylBJh
fbc6jZGEofzr8mYBqZHtkJb0DsUVDxI8jQpNdYEBXdqgpJfB7TTgY8UuvK2r XFIvKMlsVZnu
3uW5fdnZ1lMIDtGf9XNIyOI+9QM530+bP8QEp8lHCtOF0/1H8cp4HHquXRa7 29fGm5h6mrnN
0+w5DEmnFttF2bC1fDRUgDWEYDYgxwFHTe1xSzvZA+R8JMiYCLtP6eyITaF+ 0IVc67FEkruN
mKUzclbfNEnALXrRreODiX+Z8172GnWGNYvt4Xj0B1BLBwjJYc9U0QEAAPAE AABQSwMEFAAI
AAgASQZXNQAAAAAAAAAAAAAAACMAAABjb20ucGFyZWlzLnRyYWRpbmcvYnVp bGQucHJvcGVy
dGllc3WOwQrCMBBE7wv7D4H2qMkPVMGDQg968uhFk6VG0m7YJKB/b+qtUOc2 82B4jeosx4/4
4Zn3CI3qzKLPU9u7FgHh4SftJxuKo6R2Sm9uCGqZkR0FswLOx+th219OayyG MtTr9xj+wygc
SbKnhPC6S9KWx+gDaRZHMtsgJC5iSevakliDwCXHkn9DdTdfUEsHCHjgQg2M AAAA7AAAAFBL
AwQUAAgACABJBlc1AAAAAAAAAAAAAAAALwAAAGNvbS5wYXJlaXMudHJhZGlu Zy9tb2RlbC9j
b20ucGFyZWlzLnRyYWRpbmcuY2F07Vpbbxu3En7eAP4PhJCHCsfHIPe+RlFY lqzCQJITWE2B
AgUEekVLbFe76l6SqL++vOxyl9qL5dhxc1obebCHwyVnON83w2FOXn2X3P5G why8JzmOTl4B
9vORpBlNYv6rYXtStvyU0jwnXGiMbpKMAP8MnkELWmfIhnAktcINThckFzPh +OTVifr8NMJZ
tpzinKyTdA9GeYpXNF6X82i2LGIq5/108+FKSaMEr8hKk/5R0BWQP8bIdiyI /Ms5RFOn/Bb5
vEvSfJrEeZpETOV9cRvRsByMkjUNcbTcJisSZcD4LqJZDvjay5TckZTEIVly 2ckrQ9s6GE0j
SuKcfcdo78KaT8xL6ELTmVUKqyQstmwCzrkrjdEEvMXxCsc5SFKAgf61rNiR NOTrELUpGm8I
8znmO0pJJL6Tbeiu2p7a33VD8aahyHWGtno1qjTY8ju2n1RovJEuAj9T8un8 PEy25+c7nBKa
nZ+Xh3Z+fr1im6d3FN9GZNRcp2iv4wWj8bi0M2Fmyv1VVv5PSZomKSkYhSlh QTMjd7iI8kWe
FmFepPqizWiYBP5kDq0gUBopydjMUuMXvEkSNRQmcVik/ND3bGxB/ii4WThS Csnuqi+apEK9
Ogv4exxx5YzGg0aKzSkTJ/FqQciq19JLjwU9A+Dsa5kzFsd2gILDk+eqOM9T elvkdexOKsmS
scF4GDJeoFCQMwAm+X5HmMJ1zP66w6FaRcBj2V7rQN6Ch9i42hAY0T6X1ju6 VBpiM5UGOxpJ
WXKsh2g63bbYM+O23eThWObEYySKArePPNZRcssgmbHlI5In8SmL6h0LbH4W 8RrkGwIysQIn
F/4X5oAOxfS/gWOERVdzCP3pM3JM0+2TLEtCWqLr9Yd37yZvr2av4cABmD6E wbRSYCfKvCQV
pKu4pOWWGyZk6BVcnvUiVX6d/VMaEb4lUaVxOP3BnqpzyZCPnJooeMxiGvMI YyqXe/Azjora
ySzvxvgjXXPPy8w7bhutnIrutdv8ctNq3HSYdgCcnr03RvB6nZI1Y9rSqjZS GxXKvkoV5eSD
AqUSqwplPnmzqOR3lAVLjLeE7/P19MPN7Prm11+ZiWfSwrPSwDOxyBkDal9k QjgPHMjSmkii
InbKEqbEv55Oj6hkZhSvU7wFo7csBHqWNeeX0LOh5U0qhZzmEakUmjP/TJJt NRNBWEq3+PNy
Q+h6wwLM9C2nKf9EV/mGaZvIVfpJStc0Xn4GZR5tyPbiy7blVz5nAaFDcyUt WvKRNv2XB8qj
DBwVc/LgwQVSaE0kk4oVPd8/BaYbjKvROwamygHVonMm4+NGRv9U+cMXEp7S lKffFCFdYfBj
ykpDiT/jNonUSVQhZRiMehmfZwfSgs1KIxoTTZqxNPU7OfxCmERJWn5XVCrG StZUSzlS4/yQ
oFQOYO59w+Vi9nvmtjhfCrca0leG5ijXtk8B8p2xNJtGUbUScj2Pjco5Md+/ PE/DFBItRnzp
td+KjOWCfWP3GoXKI1O7p6wSWmb5nlPASGy5Zl62mtoHtH3Hc1Xd1rfHLuap cVlplFsWGhZU
Hy1RIPHhQ41JBR5lYIpfR8cFqJYZwYVZLbXYJJ+myZbp55zaF6qcynQmvI7D qFiRuibqGq2r
U22Ur6GGFnQdY16r6jpaGLAIcBlgkPcCmCZgzDZgkIcshhj3IYhBHYhxj0GM FkPKimYF/jgr
THSPFayU3JT+ZUB8OsO+/17dHH74QacEFUXa3eJ5GOPgulPe1xRWa3c3APwQ h5smLB0+hC5x
xi2ECUvuQRkf6EaacF8n2vif3YiTsdaFOumXQ+TxX/vQZ/ScXSv
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #58881 is a reply to message #58698] |
Tue, 24 October 2006 06:42 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
Hi Andre,
This was/is a complex case. For me it works fine in case of a joined-subclass inheritance strategy
but fails with single-table.
After some debugging in Hibernate I can see that the following happens:
When hibernate loads the vendors association it will also load the one-to-one mappings from Yahoo to
YahooIndicesComponentsSource and YahooIndicesSeed. The onetoone mappings from Yahoo to the other
objects use primary key association (see the hibernate manual for one-to-one) as a default. This
means that when the vendors relation is read also its one-to-one's are read. Because they are all
stored in one table and according to the mapping have the same id column Hibernate thinks that the
one Yahoo record is a YahooIndicesComponentsSource and reads it from the db. Then when the Yahoo
object is read it gets the already read YahooIndicesComponentsSource from the cache (as the id is
the same and the table is the same) and then throws an error because it expects a Yahoo.
At the moment I am not sure where the solution for this can be done. One thing I can think of is
that Teneo should use foreign-key one-to-one instead of the now default primary key.
Can you enter a bugzilla for this issue? Then I will look at it.
As a workaround, does joined-subclass work in your case?
gr. Martin
Andre Pareis wrote:
> Hi Martin,
>
> finally I have reduced the problem to a small test case. You should be
> able to reconstruct the problem by executing the
> com.pareis.trading.tests.ClientTest in the test plugin. It uses an
> included hsqldb which creates its DB files under C:/Temp/options. The
> model project has a dependency on an "org.hibernate" plugin containing
> the hibernate libs but I'm sure you have something similar to replace
> that with. The model is in the model/options.ecore file but everything
> is generated. I'm on EMF 2.2.1 stable.
>
> One more hint: As you can see in the model there are associations
> between classes of different packages. This might also be a source of
> the error.
>
> I really hope we can get this fixed otherwise I would have to use
> non-appropriate one-to-many associations...
>
> Regards
> Andre
>
>
>
> Martin Taal wrote:
>> Hi,
>> Strange. Which ereference is set?
>> How does the database look like (tables and records in the table)? Do
>> you see anything wrong there?
>>
>> Can you send me the ecore and a testcase to reproduce this?
>>
>> gr. Martin
>>
>> Andre Pareis wrote:
>>> Here is the stack trace when I run into the code:
>>>
>>> 2034641 [main] ERROR
>>> org.eclipse.emf.teneo.hibernate.HbStoreException - Exception when
>>> saving resource trading
>>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>>
>>> at
>>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>>
>>> at
>>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>>
>>> at
>>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>>
>>> at
>>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>>>
>>> at
>>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>>
>>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>>> at
>>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>>
>>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>>> at
>>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>>> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>>> at
>>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>>
>>> at
>>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>>
>>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>>> at
>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>>
>>> at
>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>>
>>> at
>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>>
>>> at
>>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>>>
>>> at
>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>>
>>> at
>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>>
>>> at
>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>>
>>> at
>>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>>> at
>>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>>> at
>>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>>
>>> at
>>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>>
>>> at
>>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>>
>>> at
>>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>>
>>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>>> at
>>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>>
>>> at
>>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>>
>>> at
>>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>>
>>> at
>>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>>
>>> at
>>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>>
>>> at
>>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>>> at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>>> at
>>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>>
>>> at
>>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>>
>>> at
>>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>>
>>> at
>>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>>
>>> at
>>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>>
>>> at
>>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>>> at
>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>>
>>> at
>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>>
>>> at
>>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>>> at
>>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>>> at
>>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>>> at
>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>>>
>>> at
>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>>>
>>> at
>>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>>
>>> at
>>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>>
>>> at
>>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>>
>>> at
>>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>>> at
>>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>>
>>> at
>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>>> at org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>> at
>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>>> at
>>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>>
>>> at
>>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>>
>>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>>> at
>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>>
>>> at
>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>> at
>>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>>
>>> at
>>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>>
>>> at
>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>>
>>> at
>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>>
>>> at
>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>>
>>> at
>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>>
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>>
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>
>>> at java.lang.reflect.Method.invoke(Method.java:585)
>>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>>
>>> Andre Pareis wrote:
>>>> Hi,
>>>>
>>>> I'm having a problem reading back a previously successful stored
>>>> one-to-one association. During load, a ClassCastException is thrown.
>>>> I have attached two files, one with the model and the other one with
>>>> a snapshot of the debugger showing the line which when executed
>>>> produces a ClassCastException somewhere in the model code. That is,
>>>> because the eInverseAdd is invoked with the wrong object.
>>>>
>>>> The debugger shows that target and value are the same object. The
>>>> eReference value is strange, because there is actually no
>>>> corresponding object for this association to be found in the DB.
>>>>
>>>> The only objects that are in the DB are the parent of the Yahoo
>>>> object and the Yahoo object itself. The load of the parent and the
>>>> Yahoo objects have been passed successfully. Normally, the load
>>>> should have stopped already as there are no more objects to read -
>>>> instead, it ends up as shown on the debugger screen.
>>>>
>>>> Any ideas?
>>>>
>>>> Thanks
>>>> Andre
>>>>
>>>> ------------------------------------------------------------ ------------
>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------ ------------
>>>>
>>>>
>>
>>
>
--
With Regards, Martin Taal
Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #59163 is a reply to message #58881] |
Tue, 24 October 2006 23:11 |
Andre Pareis Messages: 113 Registered: July 2009 |
Senior Member |
|
|
Hey Martin,
thanks for your detailed analysis!
I think I always used the joined-subclass mapping.
In the DB, I find one table per class.
This is, for instance, how I initialize the teneo layer at the beginning of the ClientTest test case:
final Properties props = new Properties();
props.put(PersistenceOptions.INHERITANCE_MAPPING, "JOINED");
props.put(PersistenceOptions.SQL_CASE_STRATEGY, "none");
hbds.setPersistenceProperties(props);
This is only a quick response for today - I will have a deeper look at the things tomorrow...
Regards
Andre
Martin Taal wrote:
> Hi Andre,
> This was/is a complex case. For me it works fine in case of a
> joined-subclass inheritance strategy but fails with single-table.
>
> After some debugging in Hibernate I can see that the following happens:
> When hibernate loads the vendors association it will also load the
> one-to-one mappings from Yahoo to YahooIndicesComponentsSource and
> YahooIndicesSeed. The onetoone mappings from Yahoo to the other objects
> use primary key association (see the hibernate manual for one-to-one) as
> a default. This means that when the vendors relation is read also its
> one-to-one's are read. Because they are all stored in one table and
> according to the mapping have the same id column Hibernate thinks that
> the one Yahoo record is a YahooIndicesComponentsSource and reads it from
> the db. Then when the Yahoo object is read it gets the already read
> YahooIndicesComponentsSource from the cache (as the id is the same and
> the table is the same) and then throws an error because it expects a Yahoo.
>
> At the moment I am not sure where the solution for this can be done. One
> thing I can think of is that Teneo should use foreign-key one-to-one
> instead of the now default primary key.
> Can you enter a bugzilla for this issue? Then I will look at it.
>
> As a workaround, does joined-subclass work in your case?
>
> gr. Martin
>
> Andre Pareis wrote:
>> Hi Martin,
>>
>> finally I have reduced the problem to a small test case. You should be
>> able to reconstruct the problem by executing the
>> com.pareis.trading.tests.ClientTest in the test plugin. It uses an
>> included hsqldb which creates its DB files under C:/Temp/options. The
>> model project has a dependency on an "org.hibernate" plugin containing
>> the hibernate libs but I'm sure you have something similar to replace
>> that with. The model is in the model/options.ecore file but everything
>> is generated. I'm on EMF 2.2.1 stable.
>>
>> One more hint: As you can see in the model there are associations
>> between classes of different packages. This might also be a source of
>> the error.
>>
>> I really hope we can get this fixed otherwise I would have to use
>> non-appropriate one-to-many associations...
>>
>> Regards
>> Andre
>>
>>
>>
>> Martin Taal wrote:
>>> Hi,
>>> Strange. Which ereference is set?
>>> How does the database look like (tables and records in the table)? Do
>>> you see anything wrong there?
>>>
>>> Can you send me the ecore and a testcase to reproduce this?
>>>
>>> gr. Martin
>>>
>>> Andre Pareis wrote:
>>>> Here is the stack trace when I run into the code:
>>>>
>>>> 2034641 [main] ERROR
>>>> org.eclipse.emf.teneo.hibernate.HbStoreException - Exception when
>>>> saving resource trading
>>>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>>>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>>>> at
>>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>>>
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>>>
>>>> at
>>>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>>>
>>>> at
>>>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>>>
>>>> at
>>>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>>>>
>>>> at
>>>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>>>
>>>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>>>> at
>>>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>>>
>>>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>>>> at
>>>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>>>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>>>> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>>>> at
>>>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>>>
>>>> at
>>>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>>>
>>>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>>>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>>>
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>>>
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>>>
>>>> at
>>>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>>>>
>>>> at
>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>>>
>>>> at
>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>>>
>>>> at
>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>>>
>>>> at
>>>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>>>> at
>>>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>>>> at
>>>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>>>
>>>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>>>> at
>>>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>>>> at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>>>> at
>>>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>>>> at
>>>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>>>>
>>>> at
>>>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>>>
>>>> at
>>>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>>>> at
>>>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>>>> at org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>>>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>>> at
>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>>>
>>>> at
>>>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>>>
>>>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>>>> at
>>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>>>
>>>> at
>>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>>> at
>>>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>>>
>>>> at
>>>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>>>
>>>> at
>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>>>
>>>> at
>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>>>
>>>> at
>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>>>
>>>> at
>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>>>
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>>>
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>>
>>>> at java.lang.reflect.Method.invoke(Method.java:585)
>>>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>>>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>>>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>>>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>>>
>>>> Andre Pareis wrote:
>>>>> Hi,
>>>>>
>>>>> I'm having a problem reading back a previously successful stored
>>>>> one-to-one association. During load, a ClassCastException is
>>>>> thrown. I have attached two files, one with the model and the other
>>>>> one with a snapshot of the debugger showing the line which when
>>>>> executed produces a ClassCastException somewhere in the model code.
>>>>> That is, because the eInverseAdd is invoked with the wrong object.
>>>>>
>>>>> The debugger shows that target and value are the same object. The
>>>>> eReference value is strange, because there is actually no
>>>>> corresponding object for this association to be found in the DB.
>>>>>
>>>>> The only objects that are in the DB are the parent of the Yahoo
>>>>> object and the Yahoo object itself. The load of the parent and the
>>>>> Yahoo objects have been passed successfully. Normally, the load
>>>>> should have stopped already as there are no more objects to read -
>>>>> instead, it ends up as shown on the debugger screen.
>>>>>
>>>>> Any ideas?
>>>>>
>>>>> Thanks
>>>>> Andre
>>>>>
>>>>> ------------------------------------------------------------ ------------
>>>>>
>>>>>
>>>>>
>>>>> ------------------------------------------------------------ ------------
>>>>>
>>>>>
>>>
>>>
>>
>
>
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #60509 is a reply to message #58881] |
Fri, 10 November 2006 12:44 |
Andre Pareis Messages: 113 Registered: July 2009 |
Senior Member |
|
|
Hi Martin,
I'm still having my time with that one...
Do you have any idea what I could do as a temporary workaround?
Can I disable the hibernate cache? Can I add some kind of annotation to embed the owned object in the parent table? Should I use the SUPERCLASS mapping?
I really don't want to change my model to use one-to-many associations only as I would lose the explicitness with that.
Thanks
Andre
Martin Taal wrote:
> Hi Andre,
> This was/is a complex case. For me it works fine in case of a
> joined-subclass inheritance strategy but fails with single-table.
>
> After some debugging in Hibernate I can see that the following happens:
> When hibernate loads the vendors association it will also load the
> one-to-one mappings from Yahoo to YahooIndicesComponentsSource and
> YahooIndicesSeed. The onetoone mappings from Yahoo to the other objects
> use primary key association (see the hibernate manual for one-to-one) as
> a default. This means that when the vendors relation is read also its
> one-to-one's are read. Because they are all stored in one table and
> according to the mapping have the same id column Hibernate thinks that
> the one Yahoo record is a YahooIndicesComponentsSource and reads it from
> the db. Then when the Yahoo object is read it gets the already read
> YahooIndicesComponentsSource from the cache (as the id is the same and
> the table is the same) and then throws an error because it expects a Yahoo.
>
> At the moment I am not sure where the solution for this can be done. One
> thing I can think of is that Teneo should use foreign-key one-to-one
> instead of the now default primary key.
> Can you enter a bugzilla for this issue? Then I will look at it.
>
> As a workaround, does joined-subclass work in your case?
>
> gr. Martin
>
> Andre Pareis wrote:
>> Hi Martin,
>>
>> finally I have reduced the problem to a small test case. You should be
>> able to reconstruct the problem by executing the
>> com.pareis.trading.tests.ClientTest in the test plugin. It uses an
>> included hsqldb which creates its DB files under C:/Temp/options. The
>> model project has a dependency on an "org.hibernate" plugin containing
>> the hibernate libs but I'm sure you have something similar to replace
>> that with. The model is in the model/options.ecore file but everything
>> is generated. I'm on EMF 2.2.1 stable.
>>
>> One more hint: As you can see in the model there are associations
>> between classes of different packages. This might also be a source of
>> the error.
>>
>> I really hope we can get this fixed otherwise I would have to use
>> non-appropriate one-to-many associations...
>>
>> Regards
>> Andre
>>
>>
>>
>> Martin Taal wrote:
>>> Hi,
>>> Strange. Which ereference is set?
>>> How does the database look like (tables and records in the table)? Do
>>> you see anything wrong there?
>>>
>>> Can you send me the ecore and a testcase to reproduce this?
>>>
>>> gr. Martin
>>>
>>> Andre Pareis wrote:
>>>> Here is the stack trace when I run into the code:
>>>>
>>>> 2034641 [main] ERROR
>>>> org.eclipse.emf.teneo.hibernate.HbStoreException - Exception when
>>>> saving resource trading
>>>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>>>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>>>> at
>>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>>>
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>>>
>>>> at
>>>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>>>
>>>> at
>>>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>>>
>>>> at
>>>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>>>>
>>>> at
>>>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>>>
>>>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>>>> at
>>>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>>>
>>>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>>>> at
>>>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>>>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>>>> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>>>> at
>>>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>>>
>>>> at
>>>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>>>
>>>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>>>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>>>
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>>>
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>>>
>>>> at
>>>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>>>>
>>>> at
>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>>>
>>>> at
>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>>>
>>>> at
>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>>>
>>>> at
>>>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>>>> at
>>>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>>>> at
>>>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>>>
>>>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>>>> at
>>>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>>>> at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>>>> at
>>>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>>>> at
>>>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>>>>
>>>> at
>>>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>>>
>>>> at
>>>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>>>> at
>>>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>>>> at org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>>>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>>> at
>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>>>
>>>> at
>>>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>>>
>>>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>>>> at
>>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>>>
>>>> at
>>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>>> at
>>>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>>>
>>>> at
>>>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>>>
>>>> at
>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>>>
>>>> at
>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>>>
>>>> at
>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>>>
>>>> at
>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>>>
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>>>
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>>
>>>> at java.lang.reflect.Method.invoke(Method.java:585)
>>>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>>>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>>>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>>>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>>>
>>>> Andre Pareis wrote:
>>>>> Hi,
>>>>>
>>>>> I'm having a problem reading back a previously successful stored
>>>>> one-to-one association. During load, a ClassCastException is
>>>>> thrown. I have attached two files, one with the model and the other
>>>>> one with a snapshot of the debugger showing the line which when
>>>>> executed produces a ClassCastException somewhere in the model code.
>>>>> That is, because the eInverseAdd is invoked with the wrong object.
>>>>>
>>>>> The debugger shows that target and value are the same object. The
>>>>> eReference value is strange, because there is actually no
>>>>> corresponding object for this association to be found in the DB.
>>>>>
>>>>> The only objects that are in the DB are the parent of the Yahoo
>>>>> object and the Yahoo object itself. The load of the parent and the
>>>>> Yahoo objects have been passed successfully. Normally, the load
>>>>> should have stopped already as there are no more objects to read -
>>>>> instead, it ends up as shown on the debugger screen.
>>>>>
>>>>> Any ideas?
>>>>>
>>>>> Thanks
>>>>> Andre
>>>>>
>>>>> ------------------------------------------------------------ ------------
>>>>>
>>>>>
>>>>>
>>>>> ------------------------------------------------------------ ------------
>>>>>
>>>>>
>>>
>>>
>>
>
>
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #60528 is a reply to message #60509] |
Fri, 10 November 2006 13:20 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
Hi Andre,
I didn't have time to look at this issue. However today and tomorrow I will work on a number of
Teneo issues. I will also look further at this one.
Can you test if superclass (single-table) also fails?
gr. Martin
Andre Pareis wrote:
> Hi Martin,
>
> I'm still having my time with that one...
>
> Do you have any idea what I could do as a temporary workaround?
>
> Can I disable the hibernate cache? Can I add some kind of annotation to
> embed the owned object in the parent table? Should I use the SUPERCLASS
> mapping?
>
> I really don't want to change my model to use one-to-many associations
> only as I would lose the explicitness with that.
>
> Thanks
> Andre
>
>
> Martin Taal wrote:
>> Hi Andre,
>> This was/is a complex case. For me it works fine in case of a
>> joined-subclass inheritance strategy but fails with single-table.
>>
>> After some debugging in Hibernate I can see that the following happens:
>> When hibernate loads the vendors association it will also load the
>> one-to-one mappings from Yahoo to YahooIndicesComponentsSource and
>> YahooIndicesSeed. The onetoone mappings from Yahoo to the other
>> objects use primary key association (see the hibernate manual for
>> one-to-one) as a default. This means that when the vendors relation is
>> read also its one-to-one's are read. Because they are all stored in
>> one table and according to the mapping have the same id column
>> Hibernate thinks that the one Yahoo record is a
>> YahooIndicesComponentsSource and reads it from the db. Then when the
>> Yahoo object is read it gets the already read
>> YahooIndicesComponentsSource from the cache (as the id is the same and
>> the table is the same) and then throws an error because it expects a
>> Yahoo.
>>
>> At the moment I am not sure where the solution for this can be done.
>> One thing I can think of is that Teneo should use foreign-key
>> one-to-one instead of the now default primary key.
>> Can you enter a bugzilla for this issue? Then I will look at it.
>>
>> As a workaround, does joined-subclass work in your case?
>>
>> gr. Martin
>>
>> Andre Pareis wrote:
>>> Hi Martin,
>>>
>>> finally I have reduced the problem to a small test case. You should
>>> be able to reconstruct the problem by executing the
>>> com.pareis.trading.tests.ClientTest in the test plugin. It uses an
>>> included hsqldb which creates its DB files under C:/Temp/options. The
>>> model project has a dependency on an "org.hibernate" plugin
>>> containing the hibernate libs but I'm sure you have something similar
>>> to replace that with. The model is in the model/options.ecore file
>>> but everything is generated. I'm on EMF 2.2.1 stable.
>>>
>>> One more hint: As you can see in the model there are associations
>>> between classes of different packages. This might also be a source of
>>> the error.
>>>
>>> I really hope we can get this fixed otherwise I would have to use
>>> non-appropriate one-to-many associations...
>>>
>>> Regards
>>> Andre
>>>
>>>
>>>
>>> Martin Taal wrote:
>>>> Hi,
>>>> Strange. Which ereference is set?
>>>> How does the database look like (tables and records in the table)?
>>>> Do you see anything wrong there?
>>>>
>>>> Can you send me the ecore and a testcase to reproduce this?
>>>>
>>>> gr. Martin
>>>>
>>>> Andre Pareis wrote:
>>>>> Here is the stack trace when I run into the code:
>>>>>
>>>>> 2034641 [main] ERROR
>>>>> org.eclipse.emf.teneo.hibernate.HbStoreException - Exception when
>>>>> saving resource trading
>>>>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>>>>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>>>>> at
>>>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>>>>
>>>>> at
>>>>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>>>>
>>>>> at
>>>>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>>>>
>>>>> at
>>>>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>>>>
>>>>> at
>>>>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>>>>>
>>>>> at
>>>>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>>>>
>>>>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>>>>> at
>>>>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>>>>
>>>>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>>>>> at
>>>>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>>>>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>>>>> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>>>>> at
>>>>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>>>>
>>>>> at
>>>>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>>>>
>>>>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>>>>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>>>>> at
>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>>>>
>>>>> at
>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>>>>
>>>>> at
>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>>>>
>>>>> at
>>>>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>>>>>
>>>>> at
>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>>>>
>>>>> at
>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>>>>
>>>>> at
>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>>>>
>>>>> at
>>>>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>>>>>
>>>>> at
>>>>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>>>>
>>>>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>>>>> at
>>>>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>>>>> at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>>>>> at
>>>>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>>>>> at
>>>>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>>>>>
>>>>> at
>>>>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>>>>
>>>>> at
>>>>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>>>>> at
>>>>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>>>>> at
>>>>> org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>>>>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>>>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>>>> at
>>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>>>>
>>>>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>>>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>>>>> at
>>>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>>>> at
>>>>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>>>>
>>>>> at
>>>>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>>>>
>>>>> at
>>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>>>>
>>>>> at
>>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>>>>
>>>>> at
>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>>>>
>>>>> at
>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>>>>
>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>> at
>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>>>>
>>>>> at
>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>>>
>>>>> at java.lang.reflect.Method.invoke(Method.java:585)
>>>>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>>>>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>>>>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>>>>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>>>>
>>>>> Andre Pareis wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I'm having a problem reading back a previously successful stored
>>>>>> one-to-one association. During load, a ClassCastException is
>>>>>> thrown. I have attached two files, one with the model and the
>>>>>> other one with a snapshot of the debugger showing the line which
>>>>>> when executed produces a ClassCastException somewhere in the model
>>>>>> code. That is, because the eInverseAdd is invoked with the wrong
>>>>>> object.
>>>>>>
>>>>>> The debugger shows that target and value are the same object. The
>>>>>> eReference value is strange, because there is actually no
>>>>>> corresponding object for this association to be found in the DB.
>>>>>>
>>>>>> The only objects that are in the DB are the parent of the Yahoo
>>>>>> object and the Yahoo object itself. The load of the parent and the
>>>>>> Yahoo objects have been passed successfully. Normally, the load
>>>>>> should have stopped already as there are no more objects to read -
>>>>>> instead, it ends up as shown on the debugger screen.
>>>>>>
>>>>>> Any ideas?
>>>>>>
>>>>>> Thanks
>>>>>> Andre
>>>>>>
>>>>>> ------------------------------------------------------------ ------------
>>>>>>
>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------ ------------
>>>>>>
>>>>>>
>>>>
>>>>
>>>
>>
>>
--
With Regards, Martin Taal
Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #60546 is a reply to message #60528] |
Fri, 10 November 2006 13:39 |
Andre Pareis Messages: 113 Registered: July 2009 |
Senior Member |
|
|
Yes I just did that. It also fails but with a slightly different error:
org.hibernate.WrongClassException: Object with id: 2 was not of the specified subclass: Yahoo (loaded object was of wrong class class
com.pareis.trading.yahoo.impl.YahooIndicesComponentsSourceIm pl)
at org.hibernate.loader.Loader.instanceAlreadyLoaded(Loader.jav a:1234)
at org.hibernate.loader.Loader.getRow(Loader.java:1186)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java: 568)
at org.hibernate.loader.Loader.doQuery(Loader.java:689)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
at org.hibernate.loader.Loader.loadCollection(Loader.java:1918)
at org.hibernate.loader.collection.CollectionLoader.initialize( CollectionLoader.java:36)
at org.hibernate.persister.collection.AbstractCollectionPersist er.initialize(AbstractCollectionPersister.java:565)
at org.hibernate.event.def.DefaultInitializeCollectionEventList ener.onInitializeCollection(DefaultInitializeCollectionEvent Listener.java:60)
at org.hibernate.impl.SessionImpl.initializeCollection(SessionI mpl.java:1716)
at org.hibernate.collection.AbstractPersistentCollection.initia lize(AbstractPersistentCollection.java:344)
at org.hibernate.collection.AbstractPersistentCollection.read(A bstractPersistentCollection.java:86)
at org.hibernate.collection.PersistentList.toArray(PersistentLi st.java:123)
at org.eclipse.emf.teneo.hibernate.mapping.elist.HibernatePersi stableEList.doLoad(HibernatePersistableEList.java:106)
at org.eclipse.emf.teneo.mapping.elist.PersistableEList.load(Pe rsistableEList.java:187)
at org.eclipse.emf.teneo.mapping.elist.PersistableEList.delegat eGet(PersistableEList.java:305)
at org.eclipse.emf.common.util.DelegatingEList.get(DelegatingEL ist.java:378)
at com.pareis.trading.tests.ClientTest.testBug(ClientTest.java: 128)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestRefer ence.run(JUnit3TestReference.java:128)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(Test Execution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe sts(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe sts(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(R emoteTestRunner.java:386)
at org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunne r.main(RemotePluginTestRunner.java:58)
at org.eclipse.pde.internal.junit.runtime.CoreTestApplication.r un(CoreTestApplication.java:24)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
at org.eclipse.core.launcher.Main.run(Main.java:977)
at org.eclipse.core.launcher.Main.main(Main.java:952)
It seems that this time hibernate itself recognizes that it made a mistake.
-Andre
Martin Taal wrote:
> Hi Andre,
> I didn't have time to look at this issue. However today and tomorrow I
> will work on a number of Teneo issues. I will also look further at this
> one.
>
> Can you test if superclass (single-table) also fails?
>
> gr. Martin
>
> Andre Pareis wrote:
>> Hi Martin,
>>
>> I'm still having my time with that one...
>>
>> Do you have any idea what I could do as a temporary workaround?
>>
>> Can I disable the hibernate cache? Can I add some kind of annotation
>> to embed the owned object in the parent table? Should I use the
>> SUPERCLASS mapping?
>>
>> I really don't want to change my model to use one-to-many associations
>> only as I would lose the explicitness with that.
>>
>> Thanks
>> Andre
>>
>>
>> Martin Taal wrote:
>>> Hi Andre,
>>> This was/is a complex case. For me it works fine in case of a
>>> joined-subclass inheritance strategy but fails with single-table.
>>>
>>> After some debugging in Hibernate I can see that the following happens:
>>> When hibernate loads the vendors association it will also load the
>>> one-to-one mappings from Yahoo to YahooIndicesComponentsSource and
>>> YahooIndicesSeed. The onetoone mappings from Yahoo to the other
>>> objects use primary key association (see the hibernate manual for
>>> one-to-one) as a default. This means that when the vendors relation
>>> is read also its one-to-one's are read. Because they are all stored
>>> in one table and according to the mapping have the same id column
>>> Hibernate thinks that the one Yahoo record is a
>>> YahooIndicesComponentsSource and reads it from the db. Then when the
>>> Yahoo object is read it gets the already read
>>> YahooIndicesComponentsSource from the cache (as the id is the same
>>> and the table is the same) and then throws an error because it
>>> expects a Yahoo.
>>>
>>> At the moment I am not sure where the solution for this can be done.
>>> One thing I can think of is that Teneo should use foreign-key
>>> one-to-one instead of the now default primary key.
>>> Can you enter a bugzilla for this issue? Then I will look at it.
>>>
>>> As a workaround, does joined-subclass work in your case?
>>>
>>> gr. Martin
>>>
>>> Andre Pareis wrote:
>>>> Hi Martin,
>>>>
>>>> finally I have reduced the problem to a small test case. You should
>>>> be able to reconstruct the problem by executing the
>>>> com.pareis.trading.tests.ClientTest in the test plugin. It uses an
>>>> included hsqldb which creates its DB files under C:/Temp/options.
>>>> The model project has a dependency on an "org.hibernate" plugin
>>>> containing the hibernate libs but I'm sure you have something
>>>> similar to replace that with. The model is in the
>>>> model/options.ecore file but everything is generated. I'm on EMF
>>>> 2.2.1 stable.
>>>>
>>>> One more hint: As you can see in the model there are associations
>>>> between classes of different packages. This might also be a source
>>>> of the error.
>>>>
>>>> I really hope we can get this fixed otherwise I would have to use
>>>> non-appropriate one-to-many associations...
>>>>
>>>> Regards
>>>> Andre
>>>>
>>>>
>>>>
>>>> Martin Taal wrote:
>>>>> Hi,
>>>>> Strange. Which ereference is set?
>>>>> How does the database look like (tables and records in the table)?
>>>>> Do you see anything wrong there?
>>>>>
>>>>> Can you send me the ecore and a testcase to reproduce this?
>>>>>
>>>>> gr. Martin
>>>>>
>>>>> Andre Pareis wrote:
>>>>>> Here is the stack trace when I run into the code:
>>>>>>
>>>>>> 2034641 [main] ERROR
>>>>>> org.eclipse.emf.teneo.hibernate.HbStoreException - Exception when
>>>>>> saving resource trading
>>>>>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>>>>>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>>>>>> at
>>>>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>>>>>
>>>>>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>>>>>> at
>>>>>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>>>>>
>>>>>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>>>>>> at
>>>>>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>>>>>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>>>>>> at
>>>>>> org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>>>>>> at
>>>>>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>>>>>
>>>>>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>>>>>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>>>>>
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>>>>>>
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>>>>>
>>>>>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>>>>>> at
>>>>>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>>>>>> at
>>>>>> org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>>>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>>>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>>>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>>>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>>>>>> at
>>>>>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>>>>>>
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>>>>>
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>>>>>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>>>>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>>>>>
>>>>>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>>>>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>>>>>
>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>> at
>>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>>>>>
>>>>>> at
>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>>>>
>>>>>> at java.lang.reflect.Method.invoke(Method.java:585)
>>>>>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>>>>>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>>>>>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>>>>>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>>>>>
>>>>>> Andre Pareis wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> I'm having a problem reading back a previously successful stored
>>>>>>> one-to-one association. During load, a ClassCastException is
>>>>>>> thrown. I have attached two files, one with the model and the
>>>>>>> other one with a snapshot of the debugger showing the line which
>>>>>>> when executed produces a ClassCastException somewhere in the
>>>>>>> model code. That is, because the eInverseAdd is invoked with the
>>>>>>> wrong object.
>>>>>>>
>>>>>>> The debugger shows that target and value are the same object. The
>>>>>>> eReference value is strange, because there is actually no
>>>>>>> corresponding object for this association to be found in the DB.
>>>>>>>
>>>>>>> The only objects that are in the DB are the parent of the Yahoo
>>>>>>> object and the Yahoo object itself. The load of the parent and
>>>>>>> the Yahoo objects have been passed successfully. Normally, the
>>>>>>> load should have stopped already as there are no more objects to
>>>>>>> read - instead, it ends up as shown on the debugger screen.
>>>>>>>
>>>>>>> Any ideas?
>>>>>>>
>>>>>>> Thanks
>>>>>>> Andre
>>>>>>>
>>>>>>> ------------------------------------------------------------ ------------
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ------------------------------------------------------------ ------------
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>
>
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #60568 is a reply to message #60528] |
Fri, 10 November 2006 15:12 |
Andre Pareis Messages: 113 Registered: July 2009 |
Senior Member |
|
|
Hi Martin,
because I seriously needed this part of the model now, and after a few attempts
to solve the issue using annotations I gave up and changed the model to utilize
a one-to-many associations instead of many one-to-one's. SO basically I have
found my workaround and it is not urgent any more...
THanks
Andre
Martin Taal wrote:
> Hi Andre,
> I didn't have time to look at this issue. However today and tomorrow I
> will work on a number of Teneo issues. I will also look further at this
> one.
>
> Can you test if superclass (single-table) also fails?
>
> gr. Martin
>
> Andre Pareis wrote:
>> Hi Martin,
>>
>> I'm still having my time with that one...
>>
>> Do you have any idea what I could do as a temporary workaround?
>>
>> Can I disable the hibernate cache? Can I add some kind of annotation
>> to embed the owned object in the parent table? Should I use the
>> SUPERCLASS mapping?
>>
>> I really don't want to change my model to use one-to-many associations
>> only as I would lose the explicitness with that.
>>
>> Thanks
>> Andre
>>
>>
>> Martin Taal wrote:
>>> Hi Andre,
>>> This was/is a complex case. For me it works fine in case of a
>>> joined-subclass inheritance strategy but fails with single-table.
>>>
>>> After some debugging in Hibernate I can see that the following happens:
>>> When hibernate loads the vendors association it will also load the
>>> one-to-one mappings from Yahoo to YahooIndicesComponentsSource and
>>> YahooIndicesSeed. The onetoone mappings from Yahoo to the other
>>> objects use primary key association (see the hibernate manual for
>>> one-to-one) as a default. This means that when the vendors relation
>>> is read also its one-to-one's are read. Because they are all stored
>>> in one table and according to the mapping have the same id column
>>> Hibernate thinks that the one Yahoo record is a
>>> YahooIndicesComponentsSource and reads it from the db. Then when the
>>> Yahoo object is read it gets the already read
>>> YahooIndicesComponentsSource from the cache (as the id is the same
>>> and the table is the same) and then throws an error because it
>>> expects a Yahoo.
>>>
>>> At the moment I am not sure where the solution for this can be done.
>>> One thing I can think of is that Teneo should use foreign-key
>>> one-to-one instead of the now default primary key.
>>> Can you enter a bugzilla for this issue? Then I will look at it.
>>>
>>> As a workaround, does joined-subclass work in your case?
>>>
>>> gr. Martin
>>>
>>> Andre Pareis wrote:
>>>> Hi Martin,
>>>>
>>>> finally I have reduced the problem to a small test case. You should
>>>> be able to reconstruct the problem by executing the
>>>> com.pareis.trading.tests.ClientTest in the test plugin. It uses an
>>>> included hsqldb which creates its DB files under C:/Temp/options.
>>>> The model project has a dependency on an "org.hibernate" plugin
>>>> containing the hibernate libs but I'm sure you have something
>>>> similar to replace that with. The model is in the
>>>> model/options.ecore file but everything is generated. I'm on EMF
>>>> 2.2.1 stable.
>>>>
>>>> One more hint: As you can see in the model there are associations
>>>> between classes of different packages. This might also be a source
>>>> of the error.
>>>>
>>>> I really hope we can get this fixed otherwise I would have to use
>>>> non-appropriate one-to-many associations...
>>>>
>>>> Regards
>>>> Andre
>>>>
>>>>
>>>>
>>>> Martin Taal wrote:
>>>>> Hi,
>>>>> Strange. Which ereference is set?
>>>>> How does the database look like (tables and records in the table)?
>>>>> Do you see anything wrong there?
>>>>>
>>>>> Can you send me the ecore and a testcase to reproduce this?
>>>>>
>>>>> gr. Martin
>>>>>
>>>>> Andre Pareis wrote:
>>>>>> Here is the stack trace when I run into the code:
>>>>>>
>>>>>> 2034641 [main] ERROR
>>>>>> org.eclipse.emf.teneo.hibernate.HbStoreException - Exception when
>>>>>> saving resource trading
>>>>>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>>>>>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>>>>>> at
>>>>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>>>>>
>>>>>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>>>>>> at
>>>>>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>>>>>
>>>>>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>>>>>> at
>>>>>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>>>>>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>>>>>> at
>>>>>> org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>>>>>> at
>>>>>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>>>>>
>>>>>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>>>>>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>>>>>
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>>>>>>
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>>>>>
>>>>>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>>>>>> at
>>>>>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>>>>>> at
>>>>>> org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>>>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>>>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>>>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>>>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>>>>>> at
>>>>>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>>>>>>
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>>>>>
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>>>>>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>>>>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>>>>>
>>>>>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>>>>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>>>>>
>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>> at
>>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>>>>>
>>>>>> at
>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>>>>
>>>>>> at java.lang.reflect.Method.invoke(Method.java:585)
>>>>>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>>>>>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>>>>>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>>>>>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>>>>>
>>>>>> Andre Pareis wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> I'm having a problem reading back a previously successful stored
>>>>>>> one-to-one association. During load, a ClassCastException is
>>>>>>> thrown. I have attached two files, one with the model and the
>>>>>>> other one with a snapshot of the debugger showing the line which
>>>>>>> when executed produces a ClassCastException somewhere in the
>>>>>>> model code. That is, because the eInverseAdd is invoked with the
>>>>>>> wrong object.
>>>>>>>
>>>>>>> The debugger shows that target and value are the same object. The
>>>>>>> eReference value is strange, because there is actually no
>>>>>>> corresponding object for this association to be found in the DB.
>>>>>>>
>>>>>>> The only objects that are in the DB are the parent of the Yahoo
>>>>>>> object and the Yahoo object itself. The load of the parent and
>>>>>>> the Yahoo objects have been passed successfully. Normally, the
>>>>>>> load should have stopped already as there are no more objects to
>>>>>>> read - instead, it ends up as shown on the debugger screen.
>>>>>>>
>>>>>>> Any ideas?
>>>>>>>
>>>>>>> Thanks
>>>>>>> Andre
>>>>>>>
>>>>>>> ------------------------------------------------------------ ------------
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ------------------------------------------------------------ ------------
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>
>
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #60921 is a reply to message #60568] |
Fri, 10 November 2006 20:08 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
Hi Andre,
Well I added the property-ref to the one-to-one and now the test cases pass (the joined passed
anyway, but now single-table also passed). Are you able to test this by manually adapting the hbm.xml?
The property-ref should contain the efeature name on the opposite side.
I should have read your post on 22/10/06 better as you already mentioned this...
gr. Martin
Andre Pareis wrote:
> Hi Martin,
>
> because I seriously needed this part of the model now, and after a few
> attempts to solve the issue using annotations I gave up and changed the
> model to utilize a one-to-many associations instead of many
> one-to-one's. SO basically I have found my workaround and it is not
> urgent any more...
>
> THanks
> Andre
>
>
> Martin Taal wrote:
>> Hi Andre,
>> I didn't have time to look at this issue. However today and tomorrow I
>> will work on a number of Teneo issues. I will also look further at
>> this one.
>>
>> Can you test if superclass (single-table) also fails?
>>
>> gr. Martin
>>
>> Andre Pareis wrote:
>>> Hi Martin,
>>>
>>> I'm still having my time with that one...
>>>
>>> Do you have any idea what I could do as a temporary workaround?
>>>
>>> Can I disable the hibernate cache? Can I add some kind of annotation
>>> to embed the owned object in the parent table? Should I use the
>>> SUPERCLASS mapping?
>>>
>>> I really don't want to change my model to use one-to-many
>>> associations only as I would lose the explicitness with that.
>>>
>>> Thanks
>>> Andre
>>>
>>>
>>> Martin Taal wrote:
>>>> Hi Andre,
>>>> This was/is a complex case. For me it works fine in case of a
>>>> joined-subclass inheritance strategy but fails with single-table.
>>>>
>>>> After some debugging in Hibernate I can see that the following happens:
>>>> When hibernate loads the vendors association it will also load the
>>>> one-to-one mappings from Yahoo to YahooIndicesComponentsSource and
>>>> YahooIndicesSeed. The onetoone mappings from Yahoo to the other
>>>> objects use primary key association (see the hibernate manual for
>>>> one-to-one) as a default. This means that when the vendors relation
>>>> is read also its one-to-one's are read. Because they are all stored
>>>> in one table and according to the mapping have the same id column
>>>> Hibernate thinks that the one Yahoo record is a
>>>> YahooIndicesComponentsSource and reads it from the db. Then when the
>>>> Yahoo object is read it gets the already read
>>>> YahooIndicesComponentsSource from the cache (as the id is the same
>>>> and the table is the same) and then throws an error because it
>>>> expects a Yahoo.
>>>>
>>>> At the moment I am not sure where the solution for this can be done.
>>>> One thing I can think of is that Teneo should use foreign-key
>>>> one-to-one instead of the now default primary key.
>>>> Can you enter a bugzilla for this issue? Then I will look at it.
>>>>
>>>> As a workaround, does joined-subclass work in your case?
>>>>
>>>> gr. Martin
>>>>
>>>> Andre Pareis wrote:
>>>>> Hi Martin,
>>>>>
>>>>> finally I have reduced the problem to a small test case. You should
>>>>> be able to reconstruct the problem by executing the
>>>>> com.pareis.trading.tests.ClientTest in the test plugin. It uses an
>>>>> included hsqldb which creates its DB files under C:/Temp/options.
>>>>> The model project has a dependency on an "org.hibernate" plugin
>>>>> containing the hibernate libs but I'm sure you have something
>>>>> similar to replace that with. The model is in the
>>>>> model/options.ecore file but everything is generated. I'm on EMF
>>>>> 2.2.1 stable.
>>>>>
>>>>> One more hint: As you can see in the model there are associations
>>>>> between classes of different packages. This might also be a source
>>>>> of the error.
>>>>>
>>>>> I really hope we can get this fixed otherwise I would have to use
>>>>> non-appropriate one-to-many associations...
>>>>>
>>>>> Regards
>>>>> Andre
>>>>>
>>>>>
>>>>>
>>>>> Martin Taal wrote:
>>>>>> Hi,
>>>>>> Strange. Which ereference is set?
>>>>>> How does the database look like (tables and records in the table)?
>>>>>> Do you see anything wrong there?
>>>>>>
>>>>>> Can you send me the ecore and a testcase to reproduce this?
>>>>>>
>>>>>> gr. Martin
>>>>>>
>>>>>> Andre Pareis wrote:
>>>>>>> Here is the stack trace when I run into the code:
>>>>>>>
>>>>>>> 2034641 [main] ERROR
>>>>>>> org.eclipse.emf.teneo.hibernate.HbStoreException - Exception
>>>>>>> when saving resource trading
>>>>>>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>>>>>>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>>>>>>> at
>>>>>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>>>>>>
>>>>>>> at
>>>>>>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>>>>>>
>>>>>>> at
>>>>>>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>>>>>>
>>>>>>> at
>>>>>>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>>>>>>>
>>>>>>> at
>>>>>>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>>>>>>
>>>>>>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>>>>>>> at
>>>>>>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>>>>>>
>>>>>>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>>>>>>> at
>>>>>>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>>>>>>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>>>>>>> at
>>>>>>> org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>>>>>>> at
>>>>>>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>>>>>>
>>>>>>> at
>>>>>>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>>>>>>
>>>>>>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>>>>>>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>>>>>>
>>>>>>> at
>>>>>>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>>>>>>>
>>>>>>> at
>>>>>>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>>>>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>>>>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>>>>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>>>>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>>>>>>> at
>>>>>>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>>>>>>>
>>>>>>> at
>>>>>>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>>>>>>
>>>>>>> at
>>>>>>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>>>>>>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>>>>>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>>>>>>
>>>>>>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>>>>>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>>>>>> at
>>>>>>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>>>>>>
>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>> at
>>>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>>>>>>
>>>>>>> at
>>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>>>>>
>>>>>>> at java.lang.reflect.Method.invoke(Method.java:585)
>>>>>>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>>>>>>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>>>>>>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>>>>>>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>>>>>>
>>>>>>> Andre Pareis wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I'm having a problem reading back a previously successful stored
>>>>>>>> one-to-one association. During load, a ClassCastException is
>>>>>>>> thrown. I have attached two files, one with the model and the
>>>>>>>> other one with a snapshot of the debugger showing the line which
>>>>>>>> when executed produces a ClassCastException somewhere in the
>>>>>>>> model code. That is, because the eInverseAdd is invoked with the
>>>>>>>> wrong object.
>>>>>>>>
>>>>>>>> The debugger shows that target and value are the same object.
>>>>>>>> The eReference value is strange, because there is actually no
>>>>>>>> corresponding object for this association to be found in the DB.
>>>>>>>>
>>>>>>>> The only objects that are in the DB are the parent of the Yahoo
>>>>>>>> object and the Yahoo object itself. The load of the parent and
>>>>>>>> the Yahoo objects have been passed successfully. Normally, the
>>>>>>>> load should have stopped already as there are no more objects to
>>>>>>>> read - instead, it ends up as shown on the debugger screen.
>>>>>>>>
>>>>>>>> Any ideas?
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>> Andre
>>>>>>>>
>>>>>>>> ------------------------------------------------------------ ------------
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> ------------------------------------------------------------ ------------
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>
>>
--
With Regards, Martin Taal
Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
| |
Re: [teneo] ClassCastException during read of one-to-one mapping [message #594581 is a reply to message #58564] |
Sun, 22 October 2006 13:32 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
Hi,
Strange. Which ereference is set?
How does the database look like (tables and records in the table)? Do you see anything wrong there?
Can you send me the ecore and a testcase to reproduce this?
gr. Martin
Andre Pareis wrote:
> Here is the stack trace when I run into the code:
>
> 2034641 [main] ERROR org.eclipse.emf.teneo.hibernate.HbStoreException -
> Exception when saving resource trading
> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>
> at
> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>
> at
> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>
> at
> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>
> at
> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
> at
> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>
> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
> at
> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>
> at org.hibernate.loader.Loader.doList(Loader.java:2144)
> at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
> at org.hibernate.loader.Loader.list(Loader.java:2023)
> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
> at
> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>
> at
> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
> at
> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>
> at
> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>
> at
> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>
> at
> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
> at
> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>
> at
> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>
> at
> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>
> at
> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
> at
> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
> at
> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>
> at
> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>
> at
> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>
> at
> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>
> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
> at
> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>
> at
> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>
> at
> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>
> at
> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>
> at
> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>
> at org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
> at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
> at
> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>
> at
> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>
> at
> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>
> at
> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>
> at
> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>
> at
> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
> at
> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>
> at
> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>
> at
> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
> at org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
> at
> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
> at
> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
> at
> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
> at
> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>
> at
> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>
> at
> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>
> at
> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
> at
> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>
> at org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
> at org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
> at org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
> at
> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>
> at
> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>
> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
> at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
> at
> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>
> at
> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
> at org.eclipse.core.launcher.Main.run(Main.java:977)
> at org.eclipse.core.launcher.Main.main(Main.java:952)
>
> Andre Pareis wrote:
>> Hi,
>>
>> I'm having a problem reading back a previously successful stored
>> one-to-one association. During load, a ClassCastException is thrown. I
>> have attached two files, one with the model and the other one with a
>> snapshot of the debugger showing the line which when executed produces
>> a ClassCastException somewhere in the model code. That is, because the
>> eInverseAdd is invoked with the wrong object.
>>
>> The debugger shows that target and value are the same object. The
>> eReference value is strange, because there is actually no
>> corresponding object for this association to be found in the DB.
>>
>> The only objects that are in the DB are the parent of the Yahoo object
>> and the Yahoo object itself. The load of the parent and the Yahoo
>> objects have been passed successfully. Normally, the load should have
>> stopped already as there are no more objects to read - instead, it
>> ends up as shown on the debugger screen.
>>
>> Any ideas?
>>
>> Thanks
>> Andre
>>
>> ------------------------------------------------------------ ------------
>>
>>
>> ------------------------------------------------------------ ------------
>>
--
With Regards, Martin Taal
Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #594594 is a reply to message #58588] |
Sun, 22 October 2006 20:50 |
Andre Pareis Messages: 113 Registered: July 2009 |
Senior Member |
|
|
Hi Martin,
I have upgraded to hibernate 3.2GA but still have the same problem. I
have checked the mapping descriptor for the relevant association (which
I think is Yahoo-YahooIndicesComponentsSource).
The relevant sections:
<joined-subclass entity-name="Yahoo" abstract="false" lazy="false"
extends="Vendor" table="`Yahoo`">
<key>
<column name="`Vendor_id`"/>
</key>
<one-to-one name="indicesComponentsSource"
entity-name="YahooIndicesComponentsSource" cascade="all" lazy="false"/>
...
</joined-subclass>
<joined-subclass entity-name="YahooIndicesComponentsSource"
abstract="false" lazy="false" extends="SymbolSource"
table="`YahooIndicesComponentsSource`">
<key>
<column name="`SymbolSource_id`"/>
</key>
<many-to-one name="vendor" entity-name="Yahoo"
cascade="merge,persist,save-update,lock,refresh" lazy="false"
insert="true" update="true" unique="true"/>
...
</joined-subclass>
What I am missing in this descriptor is the "property-ref" attribute
that I find in the hibernate docs under section "7.4.2 (one-to-one)".
Does teneo take care of the bi-directionality of this association?
If you think the mapping descriptor is ok then I will create a smaller
test case.
Regards
Andre
Martin Taal wrote:
> Hi,
> Strange. Which ereference is set?
> How does the database look like (tables and records in the table)? Do
> you see anything wrong there?
>
> Can you send me the ecore and a testcase to reproduce this?
>
> gr. Martin
>
> Andre Pareis wrote:
>> Here is the stack trace when I run into the code:
>>
>> 2034641 [main] ERROR org.eclipse.emf.teneo.hibernate.HbStoreException
>> - Exception when saving resource trading
>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>
>> at
>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>
>> at
>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>
>> at
>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>
>> at
>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>> at
>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>
>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>> at
>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>
>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>> at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>> at
>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>
>> at
>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>
>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>> at
>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>
>> at
>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>
>> at
>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>
>> at
>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>> at
>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>
>> at
>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>
>> at
>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>
>> at
>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>> at
>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>> at
>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>
>> at
>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>
>> at
>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>
>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>> at
>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>
>> at
>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>
>> at
>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>
>> at
>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>
>> at
>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>
>> at
>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>> at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>> at
>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>
>> at
>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>
>> at
>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>
>> at
>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>
>> at
>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>
>> at
>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>> at
>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>> at
>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>> at
>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>> at
>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>> at
>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>> at
>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>
>> at
>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>> at
>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>
>> at
>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>> at org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>> at
>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>> at
>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>
>> at
>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>
>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>> at
>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>
>> at
>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>> at
>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>
>> at
>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>
>> at java.lang.reflect.Method.invoke(Method.java:585)
>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>
>> Andre Pareis wrote:
>>> Hi,
>>>
>>> I'm having a problem reading back a previously successful stored
>>> one-to-one association. During load, a ClassCastException is thrown.
>>> I have attached two files, one with the model and the other one with
>>> a snapshot of the debugger showing the line which when executed
>>> produces a ClassCastException somewhere in the model code. That is,
>>> because the eInverseAdd is invoked with the wrong object.
>>>
>>> The debugger shows that target and value are the same object. The
>>> eReference value is strange, because there is actually no
>>> corresponding object for this association to be found in the DB.
>>>
>>> The only objects that are in the DB are the parent of the Yahoo
>>> object and the Yahoo object itself. The load of the parent and the
>>> Yahoo objects have been passed successfully. Normally, the load
>>> should have stopped already as there are no more objects to read -
>>> instead, it ends up as shown on the debugger screen.
>>>
>>> Any ideas?
>>>
>>> Thanks
>>> Andre
>>>
>>> ------------------------------------------------------------ ------------
>>>
>>>
>>> ------------------------------------------------------------ ------------
>>>
>
>
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #594601 is a reply to message #58588] |
Sun, 22 October 2006 23:00 |
Andre Pareis Messages: 113 Registered: July 2009 |
Senior Member |
|
|
This is a multi-part message in MIME format.
--------------080200070608090005020404
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
Hi Martin,
finally I have reduced the problem to a small test case. You should be able to reconstruct the problem by executing the com.pareis.trading.tests.ClientTest in
the test plugin. It uses an included hsqldb which creates its DB files under C:/Temp/options. The model project has a dependency on an "org.hibernate" plugin
containing the hibernate libs but I'm sure you have something similar to replace that with. The model is in the model/options.ecore file but everything is
generated. I'm on EMF 2.2.1 stable.
One more hint: As you can see in the model there are associations between classes of different packages. This might also be a source of the error.
I really hope we can get this fixed otherwise I would have to use non-appropriate one-to-many associations...
Regards
Andre
Martin Taal wrote:
> Hi,
> Strange. Which ereference is set?
> How does the database look like (tables and records in the table)? Do
> you see anything wrong there?
>
> Can you send me the ecore and a testcase to reproduce this?
>
> gr. Martin
>
> Andre Pareis wrote:
>> Here is the stack trace when I run into the code:
>>
>> 2034641 [main] ERROR org.eclipse.emf.teneo.hibernate.HbStoreException
>> - Exception when saving resource trading
>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>
>> at
>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>
>> at
>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>
>> at
>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>
>> at
>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>> at
>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>
>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>> at
>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>
>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>> at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>> at
>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>
>> at
>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>
>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>> at
>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>
>> at
>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>
>> at
>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>
>> at
>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>> at
>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>
>> at
>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>
>> at
>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>
>> at
>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>> at
>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>> at
>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>
>> at
>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>
>> at
>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>
>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>> at
>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>
>> at
>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>
>> at
>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>
>> at
>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>
>> at
>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>
>> at
>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>> at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>> at
>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>
>> at
>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>
>> at
>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>
>> at
>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>
>> at
>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>
>> at
>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>> at
>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>> at
>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>> at
>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>> at
>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>> at
>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>> at
>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>
>> at
>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>> at
>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>
>> at
>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>> at org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>> at
>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>> at
>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>
>> at
>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>
>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>> at
>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>
>> at
>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>> at
>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>
>> at
>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>
>> at java.lang.reflect.Method.invoke(Method.java:585)
>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>
>> Andre Pareis wrote:
>>> Hi,
>>>
>>> I'm having a problem reading back a previously successful stored
>>> one-to-one association. During load, a ClassCastException is thrown.
>>> I have attached two files, one with the model and the other one with
>>> a snapshot of the debugger showing the line which when executed
>>> produces a ClassCastException somewhere in the model code. That is,
>>> because the eInverseAdd is invoked with the wrong object.
>>>
>>> The debugger shows that target and value are the same object. The
>>> eReference value is strange, because there is actually no
>>> corresponding object for this association to be found in the DB.
>>>
>>> The only objects that are in the DB are the parent of the Yahoo
>>> object and the Yahoo object itself. The load of the parent and the
>>> Yahoo objects have been passed successfully. Normally, the load
>>> should have stopped already as there are no more objects to read -
>>> instead, it ends up as shown on the debugger screen.
>>>
>>> Any ideas?
>>>
>>> Thanks
>>> Andre
>>>
>>> ------------------------------------------------------------ ------------
>>>
>>>
>>> ------------------------------------------------------------ ------------
>>>
>
>
--------------080200070608090005020404
Content-Type: application/octet-stream;
name="problem.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="problem.zip"
UEsDBBQACAAIAEkGVzUAAAAAAAAAAAAAAAAdAAAAY29tLnBhcmVpcy50cmFk aW5nLy5jbGFz
c3BhdGidjz0LwjAURWcF/0PIbqqbQ2sRqaBDlVJnqcmjjcaXmA/Rf29Vii46 uL17OZzLi9Pr
SZELWCc1JnTMRpQAci0k1gndlovhhKbTQT/mqnLOVL5pQ++dAL29kaNEkVBn OSWP8nVG30mu
sSO1rRlwJY0DdhCeqSogb9p1tiqy3Xydl7NlnhV/2IwAxrUFZuEcpAWxUaGW 6H6pdPAm+M62
l/iE4+jz+ztQSwcI1Ryc0qUAAAAzAQAAUEsDBBQACAAIAEkGVzUAAAAAAAAA AAAAAAAbAAAA
Y29tLnBhcmVpcy50cmFkaW5nLy5wcm9qZWN0vZLPSgMxEMbPLfQdyt6b6K2H dAtVvClC9QGm
ybhN2fxhki0+vkmaVZZS8CDe5vtmvvyGIWL7afrlGSloZzfNPbtrlmilU9p2 m+b97Wm1brbt
Yi48uRPK+IhBkvYxTSd3JiwYbKUzzAOhDiwS5KjgpZEnUtOgja3gY5Xd+lwo gk/UYdC92nuU
WVX5kKJgVXEq1FHHUPbaB2QnFZl0lAo4Qwkg/ayQEkDdkNmhaj41BL+i/Irr FbJnsPoDQ9z9
L3Yvj2jgT6DVGU+eeHEgrNMXcfval35eoMzdyuSVX/uh0/blKjDWmfj9F6Yf 7QtQSwcIDCgb
f+wAAACnAgAAUEsDBBQACAAIAEkGVzUAAAAAAAAAAAAAAAAnAAAAY29tLnBh cmVpcy50cmFk
aW5nL01FVEEtSU5GL01BTklGRVNULk1GhVE9T8MwEN0j5T94oBuxgDFVB0AM SC2qKGK/Otf0
hD/C+VKR/nrSBEIqtWWxbL+Pe89egKcNRsnekSMFn6tbfZMmD7UvLGaLH3QA 7wboBRzmalLZ
uiR/OAzIqnHrYMn0DBOcroCRohaGgnw5VbFdLUprOBOu/5TjDKMUjxZiXIJs c6WHy3sjtAMJ
fDTirR+x7FJdPbvKokMvIK3taIwvDrpJxWFHBfJR/HkwYGnfSXLV90uTp68q sGRLMB9QHtW6
TpMTJU/f6lrInoEa2IZwCevEafKKnzUxZn3cXAUuNRpLVURtAqPm2gs5PFiN MXSbdt8SpjuK
tCZL0uQzRuya/bK3tEb2IJdZY09Bj+EfXft+vSKbw75ZCbDkqv/6b1BLBwjD bUIGHgEAAIEC
AABQSwMEFAAIAAgASQZXNQAAAAAAAAAAAAAAAEQAAABjb20ucGFyZWlzLnRy YWRpbmcvYmlu
L2NvbS9wYXJlaXMvVHJhZGluZ1BsdWdpbiRJbXBsZW1lbnRhdGlvbi5jbGFz c42QzU4CMRSF
T2FkYBhB8Y+tCYlACKNrjBsCCQkaowTXZbhizUxL2hnfy5XGhQ/gQxnLwIaF CW1ym6895/Tm
/vx+fQO4Qt1FjuEiVHGw5JqECSaaz4Vc3EfpQsjGKF5GFJNMeCKUdOEwdJVe BBRGYmkooPg5
sOZYyWBwO9yYBuvHNTEUroUUyQ1DvtmaMjh9NScPeZR87KHgoYx9Fz5D/b8u fFRQZSjyMCRj
GpcMneZ4x5Z7qy+rYyHpLo1npCd8FhFDbaxCHk25FiveXDrJizAMrZ2zGbxH leqQhiIL3RJ3
X/kbZ/BHUpLuR9wYsuGV7Qicw84Fq8XstvOw1bXUyxgotT9QbH/Ce7eQw4Gt lczwAAdTFPGE
Q0v+WowajjLdcVZPcGpPL4sq4wylP1BLBwi8l0RzLAEAAPgBAABQSwMEFAAI AAgASQZXNQAA
AAAAAAAAAAAAADUAAABjb20ucGFyZWlzLnRyYWRpbmcvYmluL2NvbS9wYXJl aXMvVHJhZGlu
Z1BsdWdpbi5jbGFzc5WSW08TURDH/9Pbdpe1IHjB4gWxyBYIKy/6ADEhDSRN amOgITE+Lcux
HrOXZnfr5xJ5INHoB/BDGeecro00NqH7cGZ3Zn4z8z87v35/+wlgFxsGCoRl Pw7dgZcImbq9
xDuXUf9tMOzLyECJsBonfVf4gRykwhXhB5ezwzhyD98cjbII1Xb3pHfQbR0S 6p1pxfYIlUEO
NKdmNdrhIBChiDIvk7GCqvvcO5LZa0LRaZ4SSq34XFgg3LJRg8Vl93XcZNeC jTIqhPmOjER3
GJ6JpOedBYKw2Il9Lzj1Eqm+tdPAHcLWFHnDTAbusUjjYeILxWZxYqGIe6rp fcKu874zA7qn
J88+ypTvuy+ykdqJJILrNGeqqjQ/tGGgSjDHZVmVM9MVe74v0rTxgrDt3JhT iqwTPc6R1Fd8
LX3nk/fZI9jtKBJJK/DSVKQG1gkbN2xAqF138MLyDvDiFvBA/WZ+s5R0tmU+ TailmOMvlzPU
M/cd9O4K9iXmLzR2WyMqWGe7hEXtBWO1MfyKPcTW3Cz+wNIV7k6iW9xrW6P2 KBHLehbiqep5
kR22Klb6ipUvY76ifS//YUs5a+IRHudsQ0f+zx78HXmhiidYzYn1vFt58xIr FxPI2lhlAU/1
uYZnWgzpVs9h/gFQSwcINEAWyeQBAAAQBAAAUEsDBBQACAAIAEkGVzUAAAAA AAAAAAAAAAA2
AAAAY29tLnBhcmVpcy50cmFkaW5nL2Jpbi9jb20vcGFyZWlzL3RyYWRpbmcv Q2xpZW50LmNs
YXNzvVh7fFtlGX6+Nlm69OzWdd2t27p7m7QNY2y4dZsrvYxg28216+gAIU1O 2zPSpCRpt4I4
nCIKiMhFHQooKlMY0A1IKVOYt6GAeEdAEVS8K4KAd9DnPec0ydLLCn+w35pz 8p3vfd/ne97r
yaNvPPgQgFVqiQs5CnOD0W5fTyCmG3FfIhYIGZFOX03Y0CMJFxwKK6KxTp8e DBs9cd2nd3fw
PhrTfUZ3T9hXt7V9tx5M+HnvwiSFRaOo8oeoyegwAu1hXSHfX3t+XW1dffWO hhaFgobdgb6A
LxzgvuZEjNurFHKMkIKrT4+EorG4wtKGbAA00h2N+HoTBhE0GPEEhfI2cEPE SGxSyC0ta1Vw
1ERD+mQoTNfgQp7CtAYjojf1drfrsRYLS0FDNBgItwZiJjZ7cdIGU40buZil YSamiI7ZGiYj
T+7manAjn+oTXQbBzW8YkzyC0vTmRCBhBGvCgTg3l5SWjTiLRWaduaNqMhZh sQslCp5R1LZY
122B4IWBTn1Zg5HQY4FwXMMSLCXumgZ/XRM5XTi+DQVnp57wk+JCwhmFfmfc ejyrdOTTslY3
OSjT4IGXO/SmqHg2yDNGI9v1i3qNmB4yHbDLhQqF8vFCJ1NWAsiNcviE8VMU tpWOcQh/hIeO
BMJ24FX5/Rkg7bWRKxbsUzWsxmkMLQt2v4JvpBk7tiLmDl8mxiqJKmdE3yPk OKPhkFwnk8vm
/nhC71ZYQD5HcZv1uEqCZ72GKmxQmKnXRCOJAOMxVq8HEr0x3V+roPyCcpOG d2Kzgju9R2Hx
2JFjH9GFM0bP5GF0U9sDcSPYnIa7r3QctG+Cl5ougqwaie9kEnLYeg1bcCYz UT/DRpdx6Ksn
HARvA1q6mq4f5m7UtLepY23ojncy3Ve9FSPxtIMWjucgK6S3aXg3tgt/w5xk 8Fc2ZtBkE+hG
C1pd2KGwbHQBq9TK7Q7eadiJsxmhRrw6EtTjiSiNVY/lrGEbJ3ksFWOXwpJ0 7vrDYb0zEK6O
dfZ2s5zW7Q3qPUKVC+eyIGeXpjN6jXBIj+XhPexY2/Vgbyxu9OklQYsOUVBC 2ksC4XB0jx4q
6YjGStw4BxdIwVkpVLZrCGI5G0kiammUx7qGDnSyuAZ6etiPFCpGK4ojlmww VaKi3Y02XCAW
LtQQBv061wr27Xp3tE+vj0W7M3wWejMV6a3Gcj6iuMiFHoXlE4oPDTEwnvMZ ZH16LK5Xh8jE
zRPPzjQ9Vgt6m4pLr4Ya1OZjD/pd2Mtq/yaVaLgYUxgQISPeE0gEuxjxrPat w3PJ8lHSa+Rk
4sL7FDaOl1UWTTXpQN1pJLpspk0dLlzGYjBKKegPdEWjvjb5dONS7JdY/gCt lZ6c8bG6qfS4
omCMTUmv1TsCveEEI7o3KC2KyTl6g8uAwS53BT7iwodJz/g76wNB1o1+DVfi KpY93d/U3FLd
VFOnsPIkNmxJuvgKfFTDNbicoWlBNp/n4VoqNAUqqcmNfbhOwwory2/QcAne m49P4FMufJKN
9aQe1HAAN3GmCYSyZ6JU5RIkn9FwM25JkWci8UdCButjs66bleNk5GVsrxLU n9XwOdzGzi0D
WaaqylEbwxiapFHswxc0fFHgTe08QVceDrJ5WFwZ1nJlnOtufBnXuXAHm8iE LQkLhzTchbsZ
KSNZqIl290QjDO94c7Q3FmQ4rZsoI9miJjsDGg7jiMK8NDsjTayfIFMjLFis 3afhfjnOvM4x
beRhkK89JzBYEUztqYybm9wYEjofVFjzluBw3jQ38RXiZAnI2SSD+1TyVkdC Vuy4U3007sIx
hTmSAHu7w754YK+vufrsjDb7dQ6qZrQbUZ9/a+qBpNE3NXwQl0uUHNfwiFRJ hxU2Q/iOhkdl
oZAJ0xKtDoebE9HghfbBXHhcoXScapiqSJJ6+XgMT2j4Hr7PKmyOr2bn6Rsl Cd+WlpKLH0or
5LyaF0106bE6mQhWTrC2siZ1pGf9qcO91JoC5KRPaXhaTprfnp4OxObPNDwp NkvGHBvsdwhp
67+QzXERe17Dz2XacOhb9AQHplL/rl1lI4kTb76gYRmWy91vNZyOd4j47zX8 Er/iy1JMj0fD
fQxBxfEsT47W0t+ji95m0VtUOsobWBmHyb/yzTt7LhIT18nH3zQ0oknK8Ksa XpNwcQbDeiDm
wj8YOaaYGQ41UQ6BQfGB7P2Xhn/jPzKNhUIMLE5SdiRk7TVLci5e1/Bn/IWg Obi3BsK9+om/
N6T8MknfEYnLWRylfsn7XJWr8bhKnvjjzcNPqPNF5dJUnrSDSXzZ5bs3USm3 pvLlbdhlxOu6
exL9omCKphzKyZOqaZqaLk/zqGpbLLpXHqPdpWaSupFjY0eHHnOrAlyQp4po pKTUCK0v4YKa
w0FUzeUb9QTnT1FUJYLzRbCYVaG0Zrx9aKc5upoNnzVhrI0sH1ZBqjfM33Ks HzoqZTcW0625
/HPys1h+cQHgkF9NzKsb+bzO5DcNU7hrKr+V8Sr/nOpeTDvMmxzM4KebV2A9 hVahwFwVBTNT
Ylu4IoIzPIMo9BzBtPtR5FH3Y05aRQEFgFZ+1tJuE6bzhUVUaZYg5mG+qbQY C2yllbzKM8cR
LBxI6Zlkrp2fIeuwZZVkjC3rs2WdnvtQlC18UYawMyXMacQWjpOSXF6Xi3Cj xyuHSaL0AC9H
Ud7mceSWy5NBVCaxKn3CIioDZz4n3gfpVDNwGRG93zRWYim0jcndGhoRz5Rg Le+EPma5DWCz
TWcBzaxz3EpvDBDAxmOoTh/FcskNvN6YcZyC1HE4ZtvaGsiQWHd7vI7yJOoa y7O13EIEt2bg
dKdwuuHHWaZmN95FTYKLVcLW/JJN1H4v4W29HdNsvOd5j6PN430AzQew8Cja 2o7inLaC8wZx
PvcFkggl0TUI42HVKHLHMdlDXLsbKTXN63EUVJcPIeIEmedyorH8OJZypU/h IOZZjphpO8Lh
9WZ7YS2DErgThTjEWLqLrN6NdbiHnA6gnuPJWTjCKLwX5+E+7EaSwTBIHz2Q cfr9qdPvt0+/
jmE/fHqOqvbpm5hRwkwxTz3nERPTpW0F+zzOSdTI2JflNNNTTd2PUeZxzMYT GT4rTvmM/dvW
fS2lxDObj+BDSVzd4C34WBIf5+Gv9w7hxhzs9JoPPp3Erd4kPl9wexJfspbu TOIeLt1bkEzi
AW/a/hIz65+i/afJ0DOYw1a0BM/Ci+cYi89jE14wMRVZdm1MLp79KL5iZtNX KZeDh8w0ysHD
+JqJtIVPRKKQ4L7RIGCS+JYASOLb2dn/MuP9FZ76VZaO1zKsFdrWnJiWssae bnNxG2VFur74
DtMrG02urCI0W+rEcBBVMIiaPF6mCe8SkjLXH8Nj3oohfDcXAx5vccUgfpBm ZB7PAbxOJv6H
RVS4nN3Fp3KxSTlNbB7Laioa6vEj/Ni0XI+fYINpv96MC6mxT6bwXmnjXWvj rcjCu9CjsvH9
NIXvmTQ+kzM1FXPYrRaxHVSqwgxca1O41qZwrU3hWpvCxYHDxmWQX3lWIVlq QcNSG5uyPbhV
0o8h9qxTAA3iuawAVgsIZxFWqsUZ7qtIQakwzYr7OKjYZq+y6Vg937LpsSyb kvPNpJNKm8Sv
hZDfmKwMeOYXLxjE79LGzdqqPChW5VisKrFCncIOfmoGH6tTIFabLCjz7g/4 o2loNf7EO+GD
44cN7B5+l5xstIHVZQFbZnJVfgwvJvHSYbmpTuLlwwJwCK8oyA0X/z6EfzIh D3vmlw/iv+mQ
97BkQlUR8kYsU5sYXptRoarpxhqcrmpRp+pQr7agQZ2ZUXwaU8doTB2jEW8w RFl8lPnfBH+N
XSDW2+BXZ4EXx5ZJJzaxqxOAE+qgykkjXcGRAGobkW7HUtVMtDtQplrhUWdj tWrDaeocrFPn
Znh8fQrlehulkuHKxjZgYwvb2PQsbDX8ayK0R8wGV3QcLsdBzM09iFlHzBZS lFSTDsDFBYfj
kATFcTgdh3IPSUE9zhmDlyE1WeEme5mn0Q5lhUqIp+lArerCVrWb41Y4A304 hT48jF5+Z7TR
X0o/yK41nqSaegB5nkE1Y+CoKmiTm0FV2OCdqWYl1eydXgsqb6aXJdW8nd6k WpBVXVQvNLWH
KbMXJaqfpF6MU9QlGVDW2FDmYIFayMQSIiUhctTi/wNQSwcINz2OViMMAAAS HAAAUEsDBBQA
CAAIAEkGVzUAAAAAAAAAAAAAAAA8AAAAY29tLnBhcmVpcy50cmFkaW5nL2Jp bi9jb20vcGFy
ZWlzL3RyYWRpbmcvSWRlbnRpZmlhYmxlLmNsYXNzZY+9CsJQDEa/1J9qVVDQ UVzr4sXZWUEQ
HAT3axvLldaW26sP5+AD+FBiSgcFh0DI+UhOXu/HE8ASAx8eYRblmSq0ZVMq Z3Vsronaxnx1
5mz0KWUfTcLwou9apVrY/nThyPloE6a5TRRHqSlKVpydpc8tq3UdIbQSdtuY MA7nu++Cg7Ny
YyW4rPEk/KfzIyE45Dcb8cakTBj9Oi2qvAgQGlIt+cYTSR8dVLJdBDIh9Ko5 +h9QSwcIRUfF
SbMAAADwAAAAUEsDBBQACAAIAEkGVzUAAAAAAAAAAAAAAAA2AAAAY29tLnBh cmVpcy50cmFk
aW5nL2Jpbi9jb20vcGFyZWlzL3RyYWRpbmcvU3lzdGVtLmNsYXNzvZddcBPX Fcf/iyRk7CUQ
A8bEDhgIQVoZBCltk5gEE9tQteKj2Ni1E5qupWt7yUprViuDG5q0SdOkCWmS foY0eeww7fBg
aCKXZCaTTDrQSR8z6bTTPnY6nb52+vXS6f/sLrIiyxT6UM9Ie3X3nnN+53/P Pbv+8N9vvwtg
N96IY5mGDTmnkJ42XWWV0p5r5q3iZHpwtuSpQhxRDXc77mRa5WxruqTSqjDB seOqtFWYttMD
R8ZPqpyX4TiO5Ro2NXCVyauiZ01Y5ritNLRk+h8d6B84sP94dkhDa/akOWOm bVNCei6X92hY
ZuU1xBmQdiUNW7P1AAxScIrpsmeRIGuVPBo17eWCouU9qCGSSA5riPY5ebUC GlbriKNJw6qs
VVSHy4Vx5Q4FLK1ZJ2faw6brs4WTy/f6bpoRwToda7BSfKzXsQJNMtqgoxkt dO9NWYTryC4p
HqF0NeiZnpXrs80SF3clkotyCcQc8Ff0rMAmbI6jS4PRwO1QcD1q5h4zJ9Vd WctTrmmXdGzB
VnIPjg4ODRzSsPHGMTTEJpWXocRridNA/lgpuL0usfhucriZGiR1GEhxhTrs yM7mmKNTPKZO
lS1X5f0NGItjh4buG5VOra0UUDO6kRbFd2k4mlgiiUyRSRdNOyy8nkymBjKc WzwTYN+j41PY
w9IKsGc1pBeHCWur6K9I1zL2SFXFiuq0iBNz7Lxcm6ll3/VK3dZgfxfXahz3 a3igcXrBsoC6
zyl6plUs0PeI5U1lijPKLSnfRxx7Gx/bAKUZ9+FBUXIfA9XuYlABNy2tJNyi wsD780z33E3v
yy0I2zfFNHuWlG5JC9nTPh2fxb1xDGhI3EDSKp6o14J+HNTxOWTYNsbNkpXz c5tJNCil/0cW
EXxBRy/2k8bxppQ7UCTN9psUWsOKCWV6ZVdl+jVoTClaKE2yGHffMomG265v 9jFVcGaUCDWk
47gI1eILFcwL8oiOY4IcVQeVxwaZyIyNJRcLKHv0sI67sE2MTuj4EkZ5Al1V cuwZdlttjFlL
YkOz00q8DYq3tkSDY50cjoPCrK5vShJiQsfd2N6CKZyMw9Kw+b8eQx2PYSXP cc5WphtHge3Q
d+yv6HNsmyGpjLh0dEzjFDusmc/vt22evLBS6tb2JMckSTZkE+NMi61i2LTL 6pOPueq+LVfH
iyXJNprISIOKYFbHDE7LnUxp8Pod+szhazqewJNy51SZLb+uOV8XaExov6Hj KWnOcas0UJj2
ZsXxN3V8FY8TyXMWNHtWx3OysInRjrrOGX/l8zqewbY4znET6oV+qDwxodxm vIDvSHPZ3oSX
SdSVsPL3d8nsd3V8D98XnaanldRwd6MnyKKpwG2PePihePgRn6qJvhuue55B WEJlmxq1L7WQ
zXnQKbs5dcDyXzyCp/JOWY3NzD/CT4zfnfJ6wNehqDzi/Ssf8Lyu5C+d3zwW /JXkVf5i2s+x
6hIHy3A7v5t5Be6hURKt/qw4WFM1O8gZMbzdmMda4zJWvYU2Q3sL7QsuWmkA HOb3XsY9gNU4
4rvSA0PcgQ7faSfuDJ3u5FXuRS9j41zVz3J/bqTGNhraanL+Qtt0aBsz3kRb vbFVYxyrGvNk
hcYlShLhdZsYHzJSkkwFifO8vIPuUSMa6ZY789hZwe6FDNvoDCjze4aCnebc GRLN+sG6Aodh
MBl9mkFkZ7rwGY5EPnb4EOAw90rgOhmm/RrWMOx9o609RjQ6jweoqkwvJHWb 7/scbV7EerxU
k1xnNTn23dD349RLdiLV+TOfZIt/P/isYZoPvYf+1I4rOBDBnJHq3DGPz9eH ehVr8Rq24nU/
lBG4q6aWQhaHfHcpJnLEr5UUjuKLfikeu2WQwSrIcD3ITwhygSA//R9A2KFD kCdCEKMjANmM
4E8s1/u7UMHYnBDNGR2dd87jkQWOoKovox1vsm4rTOIXNSxGlcXwCTR/9GU8 6rMY+ApHwsJG
GrK8xt+SWW/Icm8dS5fR/R5yFahLwnMFk3yH5oCT9hUUl2HkktHRPQ93oSq3 +Kf9fRJ+wFr7
JbO7ysjX6PlXfH/6EPvw65oK7a0S91aJe+GxqqVC2bZDzrP8LTnsCjmTdZyb pAl8ApNg8ziz
wLWR9Qp8RK6P+e/Abxj/t/TyO7L9nqf3Dz5TWxCjyrQrZNKkz4ckb4QkJ0KS 4TqSfQS5hlY5
sFcRj17AhsgFrOOkzFRw9jzinIhGL8qhusoOxssVfF3jVsSiFyMXBfvpi3Ub /kdi/4nC/JmN
6C81qCeqqCeqqM9Um9JZSiyr9lCUb51HE5vlt+fewQujMpjHi9lU60sVvDKS CtA4WJ2s4Acj
qQpeXSi5O9jFgL/yiP+NFH+neP9AAv+kaP+qIdkTkrSzCZxnLkLyY9/H6/8B UEsHCG1pJ2D8
BgAAGA8AAFBLAwQUAAgACABJBlc1AAAAAAAAAAAAAAAAPgAAAGNvbS5wYXJl aXMudHJhZGlu
Zy9iaW4vY29tL3BhcmVpcy90cmFkaW5nL1RyYWRpbmdGYWN0b3J5LmNsYXNz jVVtUxtVFH4u
UDZZVmxDKbS0NFAqSRDWvvhGsBVCaCMxpRCjtNW6bC5h6SYbN0uV/+D/cMZP EWfAyoz2kx/8
UY7n3l0SGhJoGPa+nfOc57zcc//978+/ANxCTUEXw5jplPWq4XKrpnuuUbQq JT3vj0uG6Tnu
roIehknHLenctK1qjeu8vElzx+W6Va7aejoQzNCCIcwzubX8fC6VZriRPRM9 yRCaI9yK5d1j
6I7FCww9KafIVTD0adDwDm2IY4absfhbAIZJ8V0N59BLY9aq8NxOeYO7eWPD 5gyRrGMadsFw
LbGWm2EMYFDBxY5eplcM84VR4hOrvGTVPHdXwyUMEfGmp/HsW6omQ7jMEN3y vOqsrusn3ZmR
in3EaUTDVVyjKJS4dxRjhrux7Lbx0tBtg1xf81xSSXa03ozJdYwpiDLE2ktW 7Z2SVdHTYrEi
58LHcYZEB+iTCkmVjExouIn3KJG2U2IYPM710cY2N71kvCAyG9MQR4ihd05m XsEUw0BTNv2T
yaue5VQYLnhb/M0Mixprng9m26gRl27EqHC8LatGVkyXGx5l/36sU6RStlGr dQ5kQL4Pd/GR
gg8Zrp6Go+FjfELVR4mTa2vT4m5mUdZ3Rrg/qyGJOQbNJ5ayLV6hAr/WvsD9 46RQvKfhPj5v
KK7t1jxe7qjoHycVLDCMN8OUsW1eMux5t7RTJuBG1BQQxaHW6lrYsewid0NY olLMb/GoKVyK
TqpI4aFIY6Yl0UdFWRDRWtaQxZcMCsUiZ5QpBxeJ6wlhAfZIwwoeU7aMapVX igzTbUu9Az+6
WGsMI5NRqxatOF7UiL40bKvos5UJEDa+0lAQdEKe42urmMdDssllohhGTy8Q BU8ZLnfMkYon
oux6zSChI6ekU8H37aH8rKl4LqFqQYrbQgUJpltC4Q1uSdBxzmqXgZisqpKG LVhBp2noj8fO
6mrkw4tTn5AGlkrIzcUir7rcpPothrENRzTr6umvxZFBUl5zdlyTL1mimw+8 2RlmRG1gjDzq
pieOoiteAZqF6E+hf+octJqiUfyUP6D+jv7faNqF8/RVaQRGSWUIF+QuSIFe oEDxR9oRqpN7
iESGX+FKF16DLSf+wflE/Rf0Le9hNLGPG4dg6weYrEvhAQJLBAauSDYx9NOt idDuEKYxjBnq
mx9Ig5dIrp9MvS/lhonzNJ0KT+IN9ndoFLjnEgfQW7nPoocai4DSfCEC7pUA t3A7APiZdoVs
duoV7jD8KkIxAf/XJUn66+vkyqd1+nxWP8T8+iFS65H0AR6Q2hcM+8hFVumz j/wBvv67wSNC
DEAXLYpFegnS5OSDhmtkM+AjZt9gXbpCjTBgtkAyQko9xBMK4LPsVL3Fv8cU htVjeGqAF6LV
t/hO4lF/PIn3nPCMk3hPSfNZB7wNmBKvCB7g3Q5CH6KgbL7GdhOtV+7zY5EP BUhh2LTfhbL0
Oixj65dfzx4qrQhOo+4YfpAz939QSwcIqibAcVUEAACwCQAAUEsDBBQACAAI AEkGVzUAAAAA
AAAAAAAAAABHAAAAY29tLnBhcmVpcy50cmFkaW5nL2Jpbi9jb20vcGFyZWlz L3RyYWRpbmcv
VHJhZGluZ1BhY2thZ2UkTGl0ZXJhbHMuY2xhc3OFU8tu00AUPZOWpA7Tpg9e 5VHaNEBbaE15
lEdL2zRJJUsmRU0UiZXlONPIxbEr20VC4qcgEgsWfABrtixZsmYH3BknFJDa WrLvmZlzzz1z
x/P558dPAJZRziDFsOAEHf3ADoUb6XFot1y/rdeT+MJ2XtltUTDdWIS2F2Uw yDC6b7+2dc8m
2k5zXzgxQ7pkGpVqnWHKDMK2LhzPPYiELjp7hINQ6JWSZ0fRKsNIwrSs2sta vfKcIX9cxq7Y
E6HwHUFZuX5Wo1It7+zWGLhRpglj2yhumRXy9PfQsozyCcLFOA7d5mEshdN9 G7kEWFZSiSoM
rVGq78brDANz8w2GwVLQEhomcD6Dcwwzp7aN4wIuMmjCqNbqxWqJfM6ap2at ZqnEJMdlXKHc
tohLnit8avL03PzJ3dXAcI3jDNJS4jrHNGaoNX8krNqbKBYdhsLxSkddl2qz HBkMSbUbHDel
2tiRWkP4rSCMJG+OQ0t4Cxy3pfEc8YwW0dw91256QrIWObKJN53jLpYZxv9j WUbrRHdHRyf1
7nOcBZd6DzlW+u1KNinXH3MMJ/Wecqz23SfrVrIJ5f4ZxwiGyLPp+qJ62GmK sC7dkD8zcGyv
YYfKXW8yWwsOQ0dsu3Iw8e/hLcm7If9O3xehOhUR0a/Uvz9pRuUG6O5lMCnP idCk7LCKWi9m
e/O0NxWHe+MRtU5qyGGU4hiN3lKUz+Z7jH/ApS6uKjDVRV6BQhe3FJjv4o4C S13cU+BBF48U
eNLF2jvSSGGdvnlZhX2Fxr5hnH2nrv5Agf3CYkrDSmoMG+wLNhRbvpvqW8QW xSzk7iZQSmu/
AVBLBwiHC4QibAIAAGIEAABQSwMEFAAIAAgASQZXNQAAAAAAAAAAAAAAAD4A AABjb20ucGFy
ZWlzLnRyYWRpbmcvYmluL2NvbS9wYXJlaXMvdHJhZGluZy9UcmFkaW5nUGFj a2FnZS5jbGFz
c7VYCXhU1RX+b2aSmSQ3BCZKRZF9SQbIVKVICVjDZEKnhIQmIUhsDS+Tl+Rh MhNn3oDBttZa
sS64daV21xZsbYUgA0FFcGurtXu1K3bfN7vZWqs95743My+TmST2+5rvm3fv Ofecc89+782T
Lx8/AeA8ITwoEpgfiQ0GhrS4biQCZlzrMaJ9gXZr3KxFLtf6dA/cAktj8b6A HhkwhhJ6QB/s
pXksrgeMwaGBQMgmDBMgUKw3128KCfiadmg7tcCARgLbzDjJqxOoCMaiCVOL mh3aQFL3olTA
Y+9KM725rWtLa9gLKTCv3zSH1gQCgfH61aq9BcqYfnNrqDF8iReVtCOR1lqk tRmhpXq4ua29
vjlIKi1smtRY0lGGG0LN7eHGcP36JmISYRe5SwhMd+K7usINjIfA2WPwjaH6 9i2toa5gy5bm
doGSYFM4xJMya8J8AtPSQNu2tvbQJoHKNKIj1NzQ0trGoik4Z9joMUJ5zUWS 07xl1sSSXJkG
LM42kmFjchSTFEs9aoaCA1oiITCnKX+ArXXyis/oIXKj19C6B/Q0l0wMJ0x9 MA16jUQ4aph6
D3mtk1xvJIJxXVNwhbVkaAPGboa9a2krQlwk4Kqu6RBwB2M9ehm5MyDxWspO uHlZYHF1zRSi
VkqMF0hMxwyevU5iKarJGU1GVG9ODnbr8XZWm5MyFtEGOrS4MsNGlqxVmpRi DdZ6UDdhTTRq
ETMWH+at1k2cUDZlXRlceIPEalxMilWPL4pCjk/z13SwSeslFmIRzxokFluz Rokl1uyNEjWo
5tmbJPxsutvsNxKl2IQWD5oLlm+6che16n1GwmS7NuPNFJ1szdQU0i+Xta6c dmuTaMcWgfI+
3UxTCKzMY/Zkcus4F7ay35aXYhsu9YAyakEBHv7afByZtwgsKiTeQUoab8Nl El3YTkmg20k8
r7qgalYteNEtsKRwewoMa/2xmNWkPKBcX1yIJrCNv7Y2pYigl7WnprU0X16N Z1E+MiR2YLnA
mRFVa/YS9VmT6jVRRlINJhuUiDLZLCNThnlIB5n0Cok4k5b0xnV9N8Vvhtmv jy04qi3COXWh
cqeYB1VToV6ZmXe1qRZBESns11a9V4/r0QhHZBhXebBbYPZEMZB4G94uMJOz jPIpGTGTcW2g
kexPxvWE1TRy+cmjg7FoIGkadGI1UcrSZlfjGg/eSQU/KbHEu3At9SrakVxd Ha5xZHRL9w49
YtZ5cB1lz2QmkjezvunQoz2xOClcSbiwo8FSp8rBdIV7JvRhvUl11Z00ddLj psJ6ZMiseKWD
MyMz77JUS1i4sb1ssm6cbXkCt0vcgfcKVHGM7IWwOvvZBwsKG+IU8n6JD+CD fFip3E6fM/PZ
/xPWKDPvk/gw7qRctJkdIVhQPTF7uKaDJXxU4mNOCRnn8eInJD6JT9GtJaGb zdqgzmmRp80p
QXdLfJppy5k2sTmu9xpXMn6/xAHGexWerj6M/KzE5zi7K1V2J7uHrAJLcLp+ XuILuI/yUOvp
ydnQzsKaTq6hQxIjLGOaJWOIDsDhIT3B4u+XuB7bPUhRL8gTSiv8Xhzju4ua M9NxiQfwIN01
uHukw9AziRcdyo1D2O7p7OycQiRPSOzELp6dlLgZ23n2iMRe7PLiMb4Jqcxl 7BMSX8SXyG6l
pyPiTxXUNdt8JlSEylCPFyRxCBl/wI/DhMPjXNOZ/ptCk2RDn5TYwy6J4CsS T/MB5qVQq4bM
yK9JfB27rBxSyK50XL9JGbvTajtefJt6qJXbDXqvlhww081UZfgzEs/iu3R3 o2QLtVAOaaYR
iwoMTxb3Kfgxj08KWp7Zmo7e7wucY2mszMroWx/tadP1Hlb7h6z2jwR2/T/U nIKSHjwnMDdP
aTnbuRc/4ZeGA8Oq/0ziPbiB73G/kPgl32Ok7riw8H3l1xK/wW+pEu2zTz1y FhZupw2aqXHt
k+9+L1BkKBf9UeJP+HO6TBxnwoGCPsueL/+T315VEUzpkPtL/v6V7QV/k0hi uxf/oIy3Hjuq
//1T4l94kWy30qhVT8SScW4R617FLTVucwXS7HX8DlOzRoOP76qx96ValswB j0b1uDJWT3jw
ioB/0rfNoiZ6UdHtht9X6SnmkyH8DpyJWShGCUEefjHCS3CZAy4nuMIBTyOY Hkk0nwUfqjL4
Mwg+0wGz3NfkrJ+Vsz4rBz47h/4cBzyb4HMd8ByC5+asz8uRNz9H3oIx9EX8 HlLzxfa4RI1l
/PRTcI09+tVYQb5ZhuUkYQVBF9DIf+XHUHsY57sOY+UhRbyKvtOUay8mt50m cfNxoVrh3+qM
AJ1oWMRCv698BK8/iov84gjq+RPkT8jvOoIN/AlnBc9R2j+DUqRok4fInsdw lrgK54p9ZN2z
aiNpicVGFaVSfgvbWz5HUliNa0ewch9mjKDJVz6K1iKchDiYhU6BpE3PwvtR 9gDEtqPoILqN
brJ0BJeM4q30umIizWaK2EyazVQyAv0kIk3+FPqXpXA5jQM0xmgc8h/MmFRL KQa8QAF6EWvx
EnntFYRFEQZFMa4QJUiKUgyLMrqLVOAaUalMnEm8a7EBCWXiIMEm+shIwfVq GxtQMFDsvx/1
2e04kyFmOzxVbHtK8BXBZl5H1LxWxcyjuJJqZRTvYEe9O1dUjUNUVUbUnglE uQuJWpVX1PV5
TQrmMq/PaxIdBnn0CI4x6cZcUS159bg5rx6hXOZL8+qxN68/QhO7tj+vHrfg VlvU+bYeXkqp
205iTS5/wsHvzfDvyJTgnXYJbiJVNuyD+5DfzSXnd6XwPi5Fjpg7hQ+pSbGa uNVSkDFBIvuI
31+sMCHGhJg4W6x+qn2I6+AVe1AhbsBMcSPmiptQLfbiPHEL1ojbEBS3o0nc 4VB0U0bRaFpR
cZRaLRWuuJA2CacVDft93hQ+7vdNS+EuaiIpfCZbfnbh3bNsFPcWYauVewfp tEjhcAYVykUx
me+I76jLRZaMEpzCQ/R7mH6nfI8Kl9t3xO1yu2iZCR5XBF+mmn6Kfl/1fUO4 inxHaNHtICCJ
TOD7FiO+YyGE73sp/EDNg77Tvh+73Zntfkq4n4/iV/R8/R3vd5pFWdL+oBhC vud9jzr0O0W/
v7Kevr/z9s+P3Z698sLWbEhaqc1A3EUhuZtCsh9V4gBmiXsoLPdihbgPq8UI NorDuEykECW3
3yqOkYuO45R4EE+LE3QpfBgvi1NimnhEBMTjYpV4ItOQKDx26FZQu7IaUhH+ rfZ+Cf9RJ4vA
y/yP4JLS/wJQSwcIBLkHs4UJAABEFwAAUEsDBBQACAAIAEkGVzUAAAAAAAAA AAAAAABMAAAA
Y29tLnBhcmVpcy50cmFkaW5nL2Jpbi9jb20vcGFyZWlzL3RyYWRpbmcvdXRp bC9UcmFkaW5n
QWRhcHRlckZhY3RvcnkkMS5jbGFzc5VUf2/SUBQ9bzDYsApuc7pNnVOmwNwK W0xMWEwM2eIM
UxOW/f8oj/GW0pL2oeFbaeKPxD/8AH4o431tQwi2EkJo77vv3HPPPX3t7z8/ fwGo4SiLBQbT
cvvmgHtC+qbyeEc6V+ZQSdu8CBevO3yghHfKLeV6o2ItizTD7oyi1ieprB5D RvWkX6xSl+Zc
bepUeiwdqV4xHJbmrC1fMqQbbkcsg+GGgUVkckjhpoEsbjGkShqQb0pHvBv2 28K74G1bMKw0
XYvbl9yTeh0l03oAhtp8Eoo1GiBncV80bCkcRfPHDhHu1svNa/6Rmzan1Pv2 tbBUPYd13Mvi
LsP+XJ0NbGCTYdXyBFdR9wjBUC6Vm653ZQrLlgNfmKLf1U+/7zqm4yrZHZkR VNvvBkIYtv4j
nKGghzzr0EJ2ZWjZi9hRJzFJAz8ysKPVb4TqJ0vGM+zMJI+cb418JfpJzoe7 SUKeGng2YWMI
HkuIdSQipAPXEV0+tFWDNDAclf5xXFiuJ8yTqF2CgucG9rWCtVBBhB5L2J7B Sh603KFniVOp
H8lm7Fk50J0ZjDPHEV7D5r4v6KjnTxzLdn1CnwvVczuo0luUog8GKxT0q0TR Iv2zWKL8MkUv
sUA/IFfZ+0aXHzC+0GoBeZ0LdhhVvEGBIoNinb2NlSC/irWI5ZjuGrtU+Yrc d9z5PObIBDVv
g/r1EBPV62gL92mf4QEexjNtTzOdJzI9DpieoBjPtDvN9CGRqRQwlVGJZ9qb ZmolMh0E7psB
vkofbe0eC2pAqEO6pqkOfwFQSwcIgFbl7k0CAADVBQAAUEsDBBQACAAIAEkG VzUAAAAAAAAA
AAAAAABKAAAAY29tLnBhcmVpcy50cmFkaW5nL2Jpbi9jb20vcGFyZWlzL3Ry YWRpbmcvdXRp
bC9UcmFkaW5nQWRhcHRlckZhY3RvcnkuY2xhc3OVVdtOE1EUXaeUDi0DRW7K TeUmvQAjIAoW
UaygJA1q2pCoLw7TAwxOZ5rpoOHBL/ADjD/gkw+Kt6CJwScTP8q458JIaZGS Jue611r7rNnn
9Pefbz8ATOCOgADDmGIUpKJscrUkWaacV/UNadtSNSnnThbyctHi5pKsWIa5 IyDIMG2YGxJX
NLVY4hIvrEtEUTB0STcsdX1HUgtFTSqHLdMSg1gw8lx7ICvP5A3OMJipIu2p ekEphkYHlH2h
Wsomw0g1zOF03UDCheZUXbXmGepi8VWGYJpoIqhDk4gwIgKiDNKpjj40EUEz ztjwVobJ2EmZ
lKNT8dUwGNpFCGiwR50i6hEK4xy6BXQx9J9ohogehBjCfHklm1tYSS8yRDOq zle2C2vczMlr
GpnamjEUWVuVTdWee4tBa1Mt0XlPmTJDi1ryJkuGmdspEldHLLMlP5clTSbw /bUtrlip+GMB
gwx9R+uCK4bJpUU3qhEDGBZxCSP0cXhak0uU0sVYPHMMyolINSKOpIAEQ+// 4kSMYoyKZYNb
i36BDRxP/q++QoaTne1cxbkYmhSTyxb3jGF4GKtgLC/+FbtTuZmqlC4P9ChT EUxhWsAVhuGa
SlvEVVxjaMgbB3diqjKnMuMplYqTCZglwZoyJIss2SRjGWo+PEOba1xaU7lu +UzxKl+kui0M
XS7Dcp4IiNWuZJ/HY8/ulCxe8Ffb3VXv2P5yJGtsmwpfUu2r0F211Mdtg+iB WtZ1bjoFxUvo
p1taRy9lAM5VpVHQvrzUC7RDjwi1jTR7QuuM+r7EV4iJ72h+RIOWz2jbRccv hHdx9iM6PjhE
vdR2O1RxAt0l2ntoQQKdSNLeGPpoR3TJcB4XqKcr4iRiC+nEEKA+kSTmt6gP vkv+xMAb9CT3
MbCHIYY9xBgONuvo56t2khYwQ6nPUuopUp1DDPOOYqfL6inao3FIpMlwmf4m XO20px1NfEKb
rfcFk/uYee8LhJy0nx4ijPqEUVwnSZtwDjc8wlFnTmh2lMM4ZEPAt2G+BuTL qsibNSBfVUXe
qgH5ugoygAWnvU22wamTZseH1r9QSwcI5bihzCEDAAB8BwAAUEsDBBQACAAI AEkGVzUAAAAA
AAAAAAAAAABCAAAAY29tLnBhcmVpcy50cmFkaW5nL2Jpbi9jb20vcGFyZWlz L3RyYWRpbmcv
dXRpbC9UcmFkaW5nU3dpdGNoLmNsYXNznVXfUxtVFP5ukrIkrIWi/YFQKCI2 hB/pD1q1oS00
TUtsGlqDqFXaLpsLLM2vSZY6vDmOPvHgsy8dn3TGGWewzuDgg9O3zvhHOX73 7oJQN2SUmeye
vffc73znO+ce/vzr9z8AnIc0EBIYtqvlZM2qS6eRdOtW0amsJNddp5Sc9z4K XziuvWogItC1
Zj21kiWLHnNLa9J2BcxytShL9yz7ibUiBYZyAWg+kO+UEmibciqOe00gHB9Z EIikiRFDGB0m
DLRHIfCaiSNoi6ITxwx0CQy2hDXRjTaBqMzmC/Mz+XRGoDPnVGR+vbwk6/PW Uon0unNV2yot
WHVHffuLEXfVaQicDaL+byFIv71Y9WyBi/Fctb6SlHbJqTVkUpaXaVfrMpnx BEqN5F7VLNWB
N9FnoFfg9KFnTZxGP8WS6ZLVIMEz8ZFmwbRHKkbhzpg4iUGB+02Jeb7/nbZA zF2Vmd3CD7RA
6MAwzhp4R6DvMCIm4hghtExXK67FetVZ7OaJ7gMfNTGGcVZ5Rboayll2ZD17 U3dVVmmRVFqc
E5iMZ/9PlYZxwcRFTAocZYhMYb3GPtqoSZZiOIAhu6dcrXgdk8k5DQVxGe8Z eJcAGl5vqR0T
7+OKgOE0MuWau6EZP1CMp0xcxSmBjqJcttZLbtpqSIVy3cQ0ZuhHIgLH49nA +kRVffxm6T+8
/Awh9yfUlTvIMGXgtkBPwI1IlxxZcRXZrIkPcIe1s8nSW6bm8aBr5O0GyayA 7prIY44kFFC2
SE+W0rublwLh9vsEgRq4zwZtcdBAITjDwkbDlWVF7CMTC/jYz9Bbbpahtxt8 b0z7QHuKLC+1
7evVe4hcdKvLBttADa4gXOeAVoMtpSJgw88iMK6fBN2q/i2PFarrdVvecvT0 PDAIJxQjDFKm
MP+bkI2a2LTaaRv6GeXXbb4F38cSvyH2HOZLRJ/j6K8wf+FiCK/z2Y0InxN8 JhHDOXThAt7g
iukdxHGc0AFO4pQPOs2QIeWRGN1Bj8DoNga29vDa9LkpjXHC8/MxlPUWhrgf UVPSR/ueaIrB
NMHeFiDJH9CpkBMCY9uY2KJ5XiA/voNLAt+hI8HV1I/oToyHd3AthBcYHjvA oJ8CqNRNzJLz
HQzgLsdcnrnN4TpymlnCi7nHbBo3kNbMpzXHEE8N4iYymh3nmMdWzHDnCL02 e3/S576G96fy
7OXvBn+LYy9wK58Y38bslUhP5CViys7t2oq+srfodi/fdOtDvTV/KIK2/kn8 BosHfIY+LJL8
Qyb9CJN4zJQsJlekHJISLNNjhbtrsPGEzxKeooyvUME3qGlxPteF2dwTZxOf 4FMtzqYvziDf
D4gTZoxe+i9SpFl6P2TEMGN0+ms2/R4zephxdv2Emlt+8S/zraQLiVcb6Mt9 DRTaYxLCEqOq
nubIaonxbVOMRxqD06UlxrOmGJbGuLp3LZpj/NwUY0hj2Pqr+DdQSwcIVZLE AkYEAAAaCgAA
UEsDBBQACAAIAEkGVzUAAAAAAAAAAAAAAABAAAAAY29tLnBhcmVpcy50cmFk aW5nL2Jpbi9j
b20vcGFyZWlzL3RyYWRpbmcvdXRpbC9UcmFkaW5nVXRpbC5jbGFzc7VVS3Mb RRD+Wk8/NrZj
Rw7CtmzHBCQrzobwCJGEQDFxCBEyYUUofBtJE2dTa8nsI4UvXPkN5k7lGi6k BFVUOMCBc/5B
/gfQM6sIx7bspCrRVu30TPd0f1/PN6u///n1dwBvo55EhLDU7GyZ28KVtmf6 rmjZ7U0z8G3H
rIeTr9hOIkaYuCvuCdMR7F9v3JVNn5Ao2W3bLxOi2dwtQmy105IjiGLYQBwJ wnjVbstasNWQ
bl00HEmYrHaawrklXFvNe4sx/47tEc5WnwNKkWB40uHyFq+o3TJb1ch0ZNX2 /GK1426asunY
25405dZttjuuNK9WfN+1G4Evi9X9XIq5QZt6fsKwZW+2hR+4XPOH/TVL+WP2 l18JqlFMIZXE
KcLYs3gMTOM0Ycj2pSv8jkuYzub2YL7eW+cMacwk8TofzUGvgVnM8fm05Xd8 2qeeZtiLMIl5
wtyRKEeRwaKBM1jiVPKa5FTl7CBilu8GTW6ycNakbnbxkKJKY2cNvIm3WIPy 20A4LJ9U9pD+
bSh+OQPLyBOSd4RX01RYrxsMxuFOsbD364c9gg+FcOb4MyPE7wkn0NI+UJ5A NvftsL4TIrJD
mD9WdhHBYdPPXpud7adX5+KL67B/ga7sqESEynNfoFVHeF5xI3ewYd+X6oWD /Msv8ZoMqF2q
13lTEh8Spv73VFxX7Cj3CEoYVgL82EAFV5RcdCLCQnbg5QpLjeITrCVxlTB7 VJyBa/iUcML2
rGCbv3Pc0vXbhMWBCg+zK2VO4TMDN5SIo6LV4qNuOoTM0fsIJ+120wla0goa ekkyGWI1J1zp
BQ7rOXVoiwgjVidwm3LNVsKZ2PNNPa/isQjGAfWLssXfb34neWbySDzGlx9i 6Gc2Ihjhd0Iv
jvIDGGEAjyd4HMYYxjlqQsee1En+YCvBY3G5i0lC7T5yK128RniETCGWjuW7 WIigEE/H/8J4
On7uF7yxi0Q69oCjsoQf/31MDzQyVTqjU46xPY4Ul5nnIiuYxAVeu8wrClI5 LIdz7IG2zmsm
yrrAf34RznGRn3c4ZwozeBfvIaYzvc/eOC71aakcH2hal1Ho0ypqDE96tKzf UPrmIcq1kF4h
dh+X0rE+QabVxUeE/E84PbuL2Xxv3sVqBLswVtT8egRfqz2a7p8r++nOYAhz LJkMg5xnegus
uzncxNIeulafroUqPtfwLdSwzjCHWGlfsDfKBCqauKKb1cRDutMcFeZQdMP4 m1oMX2rK1n9Q
SwcIgMt2nqMDAAA6CAAAUEsDBBQACAAIAEkGVzUAAAAAAAAAAAAAAAA7AAAA Y29tLnBhcmVp
cy50cmFkaW5nL2Jpbi9jb20vcGFyZWlzL3RyYWRpbmcveWFob28vWWFob28u Y2xhc3O9WWt0
VNUV/g6ZySTDLY/wkEeECEGSmTwEo5iHmhiCjiSAREKDoB1mbpKLk7lhZoIi WhSr1WqrolVB
EW2rWEs1oEzEVEXbYmtr3/VV+35p7bu/6+q3772ZDJNJTOhaZK0799xzz9n7 +/a3zz7nrrz+
0QsvAViCDzyYoDAvZHZX9gRjuhGvTMSCYSPaWbk92GWale3y64FL4Uwz1lmp hyJGT1yv1Ls7
2DZjeqXR3ROpbFq9eYseSgTY9iBXYX4We4GwHk0YHUZwc0RXmBhYflXT8qYV DeuaL1coaN4S
3BasjAQ5rjUR4/BahQlGWOE0Ixo2Qnq80ezuMaO0EG81e2MhWljWPDroQPaJ NDzRsdmq6/Tg
H5sdGcy5eXWMQNRIXKCQU1LapuBqNMN6PshBgwd5CpObjai+qrd7sx673OZa 0GyGgpG2YMzi
7nTm1llmvMjBaRpmYLLYmK0hH3nSmqvBi4nSOl2Dhk/QUaLLiCsUfQxcYtT0 1kQwYYQaI8G4
zCgpbc6uXZM1ojYfC7HIg2KFitFtrwmGrg526sXNRkKPBSNxDWdisYK7veGS 1auZRaO74cBO
PRFgyKcTURbB3XH79YyS4W9L27yMRbmGClRyhL7KlFwKkaYZXatv7TVioiUl 2eDBEoWy0ZI1
fa6krBdn4WzRoEphTckIJAJRco4GI06q1wYCaSCdvuE9NuxzNSzDeQoeG/Z2 hcrhbhj6bjNa
GbVGVKZjrJU8c0f1ayQ4bjMSlvscieVIa6OaAT7Z1TF/czBuhFpHsf5QyUka Hwfnxq6gQeLj
njER9bjIgwaGeJxTNTRiOVMoGA6PW58N1EP0GSliru54J1fiknHToV3ReyS7 WjRtBpfvCLmb
Pe3FeHwUmWtOVubSNg9WKZxzUrMnYg3WenCZwqIxLUQNreAOMkkPRLfpsbi+ Vu82txH9vjEv
5LRVaxeqU5Kma9CmYb1AnzgIvSEclmrRruF8XCCJfIWGjZjMTSdsxHuCiVAX eQ4te3v7Kh/r
Unc2sGkZy9u2ctcYtbaMnIL4kOjQerIhThpaCE5HPINExXhISJJ2KJSOeYZI 06XhKnxKIZ8q
NEYMZi335+wC2K9rZQePaOgGl+c0vdGMJkhPj63Qg4nemB5gwVEBsdyjYSti Ct6hMQpnjLxz
O8nrARHMHtE9gzQo92DHzqxBctCeAmWF7LUatuM6Hoz0iwbRDZG+c+wL91Tk YT7zcDB2c0cJ
HUfGh6I8b7Qo24eCGzXchF0ShEFiaUEoHVH5zCh48Rnc6sEtCsXZJ/QmDBZ/ aa5jS8NncRvT
zIg3RJnYCZPOGkaK+KCPj3ktZ67PKSwYqqOBSETvDEYaYp293WTcdG1I75Gg enAnj/SZh7uL
eo1IWI/l4Qv8ylirh3pjcWObXhSywyEGiihQUTASMa/Rw0UdZqzIiztwtxzZ /BLK3RruRSnr
ZMK0LcrrL2q4Hw/woB3s6dGjVqXMcqwc1uWAqRUTu724HXeLh4c0PIx9XGp2 xtqbzIqY2Z2m
WXg8Z4b/Z/ns19CLbfLl8JhsIVxIeWaiS481CcvFY8wb5mvHYBESU0/IRkpT RSMydGqWDP6q
hgMSDpd+sc5sP60ksGFD6fDTr4D9uoYSlErrGQ21qJPWIQ2bcKW0ntVgYIuY PKLhKXyNZ+SY
HjcjsoMrnqryBPvl23vkDKW3iq+ZJVkO3lLMv6EwJVNMcfGSBp+dJsc0rESz tF7VEIJV0b+l
4QZ8WgAc13AUL9AlF3xbMNKrn/hZmgpbrr4uGhckrpKArOQcfF/Dd/G6vAnE WwffbPBiAD/S
8GP8RN5s7eX3UsanTWr5iJGfaXgDPxBIb2p4Sz5y8mhuTcy8dru83u3BuyQ/ PFs7OvSYF+/g
7jz8ko6KSoxwTZF0/Fry/zf8FBpj2ouhWpn4O5n4e1a7ksZRx+2mO4rVGyHj WSMNZKmxz3Ur
DPnq9Vq7aoUMxhnkmsPLDRcK5dsZYCvfufPr17rz25f3meydhMkcPYVPpbzL n1s9i6mH2JiA
afz18g5+y7mwGNOtXjEwIzVtDXtk4kxfP6/DmHoEs3zqCObIT+GQnZmEBLRx bg1BLOfcVbSy
3rKp2RYwD/Mt60UWDbFewbu8cx3Ggr6UrVyr76q0uS5nrpJ14cytdOa6fc9h VubkrWmT3anJ
zGlncpyxyeF9kUxu8fmFVRJle8hxAGe1+1w5ZfKmH0uTOCeT5Q38/TQjtxNT cSOKuSWJsyLb
oONMWtV0IlIVMSZ5Vhy5lrOgn5OJ/r6s6HnAdSbvpfICpEomrxL0c2z0xTZ4 V7mfyGtcZa8h
f7ar5QC0stmuo7hwAtaXDfmaQ2/APlp6hGT2k8yj9PQYluLLlv8q20eKUBWa KK2yWitwMa24
SeMS9uVwxDQEcCmFUlIvHJyvOlHe6Begj+NC1SKN4yiQm89V0FJ2FKvdaPEf x2S/87yOzz5/
WRKfbCk7joXsYU07MMhwmqOPy+/PFKfCyv5n6LOPfA6Rz2GG/lkK9BwT/AiW IcnEfJ74juIK
vJAm2sYUx40ORy8lszkqKbtZRCvMFO2NrKLx6JtFtEJLtMITRHOPQ7Q3aekt gnybJN+hp3cp
2nsjiBZkMcgUbTP7ThSNpT2baIWDohXaohX63AX6CaLZzynROkcTzT2SaO/T 5wfk8xfy+ZCi
/JWi/Y2i/Z2i/YOi/Yui/Zui/WcE0WyO6aJxh3T41DsVTOBfnbufBbCPqMxj iA9F1aqCKhde
5UlTsSClIo8OjrVmRku8e33+XNK9pqUs08oU5KmpaTi9KZxe7MD1lmVvCic3 UsfyP5247/IT
3s4nMNnBu4lxbvf5n8fNezBvALe3D+CO9oLP9+MujrsnifuSeLAfe16mTJx3 HPk+4tqbUiee
rs4jo6mTO1ydc2UjUadjupqHQjUfy1QRqtUZqFcLsEItxKWqGG1qETapM7FF lWCrKsVNypfG
fleK/S6HfTWWpNjzIOaw/9Da0oAdhU9Zo2NW3GHZmMurltcV6cVjykeq3MpD LqVjaClnvehL
z9Mp/01/r/N9Z99ggPiw1+qOs/VIn89fWN6PR4eEtJJSLSXlKixU52CpOhd1 6jw0qmqsVTXY
qOoQUufDUBcgruotuj4bforuDnyJdVRZra8gam2sOyzisn+3pojfw3kys9oh flYG8QW8Sn3K
5qdsGioN9uNDsK3dSQUIeyVht8CnVmOJuiwNXnUKXnUKXnUKXnUKHg+qDjyD NuVduWSjjRAL
HXhyTZeYSpr5rWATVD+eHII0SQapDZilNmKxutKCMtM2mIJSbrmVysrDrOP2 QScqdXNtn2fb
ni2XMqtYoiJK0f1B0fVp+emTn8N9vrmFp/fjuYyiqTpRpAwsUlczMN08LJqo UlvTglOXQlRn
hURZrST6Lbx13Dn6reDwxOugPMRnQbTSQdmYgbIE8u8ioMZXdgwDSbx4SBot SbxsNfQkXrEa
8SS+ecg3t6wf386ojOo6gr4eJeoGfqvtpJo3Mhl3oUbdjFp1CxPyVixXt3Ed 3p625lamiKxM
EVmJ1/Ada83x2O3Af5jPQq3egV+dAX+xJQ6DL+c+C72yoCsLt7JB9+N7mZjv IeZ7Kfd9xH0/
ytUDqFB7cLbay4A/zPqxj/j3c195NC0d6lOY6x3MSs72DtJ+B6npIO3KQHox r7W8NhHoa1YB
mHUcHtcBzM45gBnslJ4kfrgHHna4XAftSuJ2Hcw5aBcNu8nsGWyS2E8PZmTQ kyT2FC5RB9Gq
nsaVqo8V4HAaCTNFwkyRuDd1YL2ecGVUFd38fA/yeKJ+u28A77RLox+/aPYX vJfEr9b7bbBs
TClN4rfr/Un8ITOXB6CpF7mqXsJ89TLDfIz5/EoaksEDwCx+JfwRf7KQ/Nmy 8f7/AFBLBwhW
HHfPYwsAAMccAABQSwMEFAAIAAgASQZXNQAAAAAAAAAAAAAAAEIAAABjb20u cGFyZWlzLnRy
YWRpbmcvYmluL2NvbS9wYXJlaXMvdHJhZGluZy95YWhvby9ZYWhvb0ZhY3Rv cnkuY2xhc3Od
Vm1XG0UUfoa3TZYVaSgvbRHTSksShLVv1hJs5SW0kUgpQRRtq8tmSJZusnGz 0Eb9G/4Gz/ET
4jlg5RztJz/4ozzemSxJDiEQm3PYnZm997nPvfPMXP75948/AVzHjwraGK6a Tl4vGi63Srrn
GhmrkNXLRs5x9HXxXDBMz3HLCjoYxhw3q3PTtoolrvP8Jo0dl+tWvmjrCd8w SROGIE8upVdn
luYS5JVqKUKcITBN2AXLu8fQHomuMXTMORmugqFbg4a3aEF8ZohGoi2CBsn5 bQ2d6KJ3yirw
pe38BndXjQ2bM4RSjmnYa4ZriblcDKIP/QrON802sWyYz40sH13hWavkuWUN Axgk8rWMo6kW
XeMBXGC4lvO84pSu681SmpTu3cTskoZhvEP1yHLvqOIMtyKpLWPH0G2DPNKe S47xphxqlXkX
lxWEGSInWxbt7axV0BNisizHItMrDLEm0I0OcZWCjGq4imu0pbaTZeiv5/po Y4ubXjy6JvY4
oiGKAEPXtNSAgnGGvppt4qXJi57lFGgjvRyv32Wht9rX/tQJTsSkHRESkJez ShTDdLnhkQLu
R5rVac42SqXmZfSpd+MWPlRwm2H4NBwNd/AREadtk3Nr0+Jucl7qPCmSn9IQ xzRtbIWYzI7h
ypk6jwvnexru4xMyr3NOFjKWyUtzTr7oFHjBK6WdbdekjO+eidnEVYaa1TAH 4j3QGCrNeYZh
olV4YR5XsEC0a/uVtG2eNewZN7udp8jV7VPwkGHwuMhnty07w90APqXCreZ4 2BS1DY+peICU
UNNnx/R2dDbWxLY90rCMxwwKbcqSkafSnCfuDcYCLK1hFZ+TbIxikRdklied uCb86JR/wXBp
LGyVwgXHCxvhHcO2MhW2UgkixrqGrwSdgOdUvFUkkKKYXCqGYeR0pSr4hmxO L72KZ+IQdJYr
8gqfJS4FlOvtN1KLClOEGi6fKsY7byhFBRZdsy3rTEVOkOktN8h1/H+ItXJ+ 5bJ/kbfSiXxT
eXqKGr6D61/fVQxxyk9vGJSvd2anruKphF6bzPOiy006q5kgSngpemH57KZ8 FJgAKiVfsETD
PFd/7U4KveMy5dVO/08wXBBtlkZBBKDQH13LNBunt/gpv0P9DT2/0rANvfRU 6Q2MkMsgzslV
4Upt3nd8QSvCdWwPodDQK1xsw2uwxdjf6I3t/ozuxT2MxPbx3iHY+gHGdqVx H4HF/AAXJZsI
eugmCNHqICYwhElqSR/IgANk10Oh3pd2Q8R5gr6KTKJV9jfpLXA7YwfQj3Of Qgfd2gJKqxgR
cJcEuI4bPsBPtCpsH4+/wk2GX0Qpoqj82iRJECFglFK5u0uPj8VjZvcQifVD PFgPJQ+wSL5L
DPtYCa3RYx9fHuDrv6pkBigE6FoOY546bYIyXYCOh9UcKbhPTIye4KnMidqN T3GWbISVeohn
VMlvU+O7xxJdoXqk6/BUHy9AMwMbEo86UCOeSXi8Ee8JeT5tgreJrMSjNtOI lyO8rUa8TfLM
NsF7Dlvi5VHw8W74exqgQjuvUaqhdcn1Yt2WBnykILbJvw07sooCZdTXdcce XhxH+L4qaEZj
MfrhP1BLBwhv6ocCqQQAAHYLAABQSwMEFAAIAAgASQZXNQAAAAAAAAAAAAAA AFIAAABjb20u
cGFyZWlzLnRyYWRpbmcvYmluL2NvbS9wYXJlaXMvdHJhZGluZy95YWhvby9Z YWhvb0luZGlj
ZXNDb21wb25lbnRzU291cmNlLmNsYXNzvVhpcFPXFf4ulpCRH5swuwEZs8iS jOJASIghYIxJ
FLwAwqamgPuQru0Hkp54kgy0NAtNQ9ukS5qQxFmadAttQhtDEglwGzLTKZnp r06nfzudTv92
uk37s8s57z0/CXlh+RHP6L2re+855zvfOfecK//mv9c/BtCMGx7MEHggrqci GdWQWjaSM9SE
lh6MnFGHdD3Sx89oOqHFZbZNT2X0tEznsjE9b8SlBy6BdboxGJHxpJbJyohM DdBYN2RES2WS
kfbuY8dlPBelsQczBVZNYiaaIIXagKYeS0qBmuiu/vZd7btbezoOCPg6jqvD aiSp0r5YzqDt
LQIztIRA9VaymNZyjwhUBRp7BVxtekLOgsAcBR5UC8zt0NKyK586Jo0Dlm5f hx5Xk72qYdqy
J2duNdV4UYUFCuajhnUsVDCLdbhyQ1pW4MGOe6KHsCoyllNzWrwtqWZJkT/Q 2DE5Xe3mjpZZ
WI4VHtQJbJje5F41fkIdlGs6tJw01GRWwUqsIoL7Wh/r7u6Pdu2KtrXH+tu6 O/d2d7V3HYj1
x7p79re1C6ycHoCAe1DmosRwLWGdhH131lpeGJi42tjrJfLWKliH9bRDdukc 2DgRoKf3y5N5
zZAJM16HPGgUCE+XOeWynD9eBBDiAIUF9gamcCKaJjbSatLOu5ZotAykPTdx xoK9QUEE9wl4
LNhnBCITzVBQUno6kjZ3RMoxtnASutPyFJPj1pMJfs8iLntlOqEbAquJz+lj 2sKpt1nBg3hI
YIFs09M5lXLY2C3VXN6Q0V0CIspQH1bQgq0C3tIegfqpc8v20wM6LSunx0Dn 55ia1eKxEvBn
ArfDfRc0tQ0R3JaJSG8nwW7vVNAGIsEnd9oQy9x//o5z4jNAS5GnTBgn0H87 /qjQpLKDVB+a
78VSthSqhtuGysr1DgWd6GImx9kpY7JxykSqpNKLvdjvwT6BNZML5HMaHWUe 9tBIQQxU1L1a
tjVN5TLHiFunCtu4jdsscymhg7e6dKijyaQcVJOtxmA+RbW4/XRcZpgvDz4n sLiyZu3Ma8mE
NKpxiDrZfhnPG1ltWPrjFh2swE/c+9VkUj8lE/4B3fB7cRCHuRI1MJVHFfSj nhpSTrc08rKq
4Bji1FzUTIZCI9A0WbWcMGWDaWEVR73owWG2MKhgCJrAUivt98uUPix3G3qq LGaJuylV95rV
NTiBlAdJKvF3lB8K0qCCUkNJNiyNrGxNEBNv3vk5LdFj9abPqMycVLAdO2qQ Rd6DHLWBu1Si
YBg1lBAJLZtRc/EhaqVqInFAb00mYzk9fsK+LXhALWZ9yceedDafyehGTia6 M9TTWZ+TvF6c
xgK+o5xlUqkGVuu5IWm0c26tv0NCqVQMlDrJnPGoWPnEus8peIp1+6dMNLsT cSJ8lTfrLHZe
wVc4P13yUUl0LQ5EDx1qnNhlmdrnFPhRz6NvKtiITSz+bQVfw9ep7xoyqyeH 6Uom6CxWswsH
zmQk642x3kWBSZp5Y68HLwvMqzxJbOJVBautM/qagigeZ2NvKHgRL5F6Ls9q Mi9vvWM6TM2U
FA626gpEuWRW4QcK3sLbvBLNxsZXDnlxAe8ouIif8MrJPN3EKq5GTp1iJe8q +CF+xJAuKfgZ
X5KqSd1eQz99hpePejBKjk4sCwMD0vDifRyuxgdkyB/QEg/7eeIjLjQFukrd YX1hRS0seJUF
rwksD7RNu+8omaPA5JPk8ZKpNlJNt268uzW+UtdPdynewDpQTxRU0ceNGajj +zr9FnHxnZve
8+npRQ2tKvStkd785xYfYPZlGszAXHp66Q2ESagB88xZVjDfEXuEZlhQCRbh C17B7I9QW5Ke
Q8Z5jwubSWK7qUGx9mMRFpu6lmCprWsDvXnNdQXLRh0dM825R8tkXbas4CS3 ZSO2rDv4IWor
hfvKhN2OMCWtLZwlJhjoWhbuDIbIh2ABa0awKDiGQF/QVRXmlSJotqnk3SJS Bkh6DhBPg8TK
ENZAM435LYW2MR41kxEOhB/304hZo4NpA9hhs+gjMw+43qIgjJKpLZ9gW8kV KxJn6f3lMnd8
jjtUS21tHcQQW/cGQ65wAa2d4UotzxKC82U4vQ5OL9qx29TsJc4fM3HRmbY1 /90m6lyI4O15
B3NtvEdCN9EXDF1F9whWjqGnbwwH+3x9RXye9h0p4AsFJIqQN0Qny93ErCDh GugkqbmhoMu3
LXwNx90g5mk60xm+iQaaoXZ7EcusQCywA+EKhSqjsBmz6fkiavESpfgFutW/ jC14hdh4lTwZ
IeyvoRev4wjewHF8DyepvjyNt8u8P+d4f872fgtFa9z7U06u329HqXoMp8m3 L96oSLP3yuJS
7cSF2ogt/xzFxUXvjXXvmtaC5rr1WTBOTBMR0xUMUehplBkNhuqaivhSKYBW 0lE2okC/YYt0
AK4ihOum6aCl3nFnI6XKE6b6jXgSD5mh32g6xjXhKQdY1gbWYANbdgswUQbk 6RIQ62z/ioD8
moB8WgagwQHQ4ABocAA0OACom9kANLNAAU2cTxYG2lcCwcdxDydK6BqecYPA FPFsJZTfUin5
Hdbj9yaURZZCB0qTaZaLBHVB2+wTtt/B5ZbNesuyaZKl6sjsN/gkPj8aXF63 oohvlWz6TMk/
kM0/YgX+RNXkz2UUBB27QdNxYY6+gxdMVEF8l0ZMATVJG8t5+s5eNNtYGiuw +IPhT3ChgFcu
82BbASOXg8vDRbxeOgkrqcADfyFIf6XM/hu58w9S808y9y/ch3+XZXyzA6/Z gdeMN+l0cIZT
/7VBnabvZv23Qa2tALWKK76JSViAivh+JZ7/EJ7/8f9M4BczsFZUYZ1wIyRm loUp7OAJ23gE
N3AbxQs2in02iscrUGwnEJ+atbP2Jjyui1hadRELaZJnCvjxCDw04XJd4kje hNt1qeoSQ/3p
pVujKeZgiZiHHcKHPaK2DN4+B94+B16/03rOEqW8axOpf28E1dQJfz46hvf7 eFDE5Y6Q70oB
Hx4MWXBoMK+xgOLBUAHXS/m0jIoIxAooYhWh8BNh9QiI1YiIhjIkm2wkS6jU jeEXJpJfmjo+
/j9QSwcIC4EakvwIAABqFAAAUEsDBBQACAAIAEkGVzUAAAAAAAAAAAAAAABG AAAAY29tLnBh
cmVpcy50cmFkaW5nL2Jpbi9jb20vcGFyZWlzL3RyYWRpbmcveWFob28vWWFo b29JbmRpY2Vz
U2VlZC5jbGFzc72Xa3AT1xXH/xdLSIjFUBmDjZwgsAFZshGEFhMMDsY2IGIb ioyJacCspbW9
RNaalQQYJ2lL0idp00f6oIHSpm1oU9qalxTiBOiLNKR5tNP2e7922k6/djrt 9Jzd9UrINph8
iGe8e333nnN+53HPvb79v9euA1iL912YJVAb04bCw7KuqKlwWpfjanIgPCIP alq4h5+RZFyN
KamoosRdcAis1PSBsBJLqMMpJawM9dNY05WwOjScCLft6jusxNIRGrswW2Dp FKojcSWZVvtV
uS+hCMyNtPa2tbZta97b3iXgbT8sH5XDCZnWRdM6LW8UmKXGBcqjbW2tvdGe jq272qMFEvNa
tGQqLSfT3XIio7gxT6DiYGfrY/6DrTsj/Gj2H+zc6T+4Pbq7haylyIvoyFCf lkgJuDeRF0k1
3SRQEqjtFnC0aHFlDgTKJLjgFpjfriaVzsxQn6J3mbzedi0mJ7pl3eC3Jmdv MtR4UIIKCYuw
gHUskTAHbh5VSShlbY70oEpmQ+0zDjh5LynRtJxWYy0JOUXC/kBt+9QJaDNW NM7BctS4UC2w
+u5mdsuxJ+QBpaZdTSu6nEhJWIGV5GBP845du3ojna2RlrZoL4dd4MG72xRw DijpCKVpIeFN
kUJnyvxcHpj8tbbbQzGqk1CP1bRC6dS4OmLks5bcoxzJqLoSNxK034U1tPBu 5Vcoy0XoQRgP
cUbWCewOTONEJEkBSMoJq3gbI5ECSGtu8oyJ/TEJ69Eg4DKxRwTCk81QHoa0 ZDhprAgXMjZy
1TmTyjEOjlNLxPldSrGMFtZpaap4giTunCDROybmkI5uJRnXdIHllJO7l0Ij V2mzhK2gPVKm
0JZKy1T4+jZFTmd0JUIVICLsbpuEbdgu4MmvEVg2fUlasXIhQjV0dwZyok9O qbFoHvzZwL24
7yPULYOE2ziZ9F4S7HaHhE7sor2hbLUQC9x/bsZ19SHQUuapNiYC6L9X/Kgn DaUGqF7WfhBL
qXyqqu+ZKnO/7JPwGHo4khPRKYhk7bSFVBxKDz6BAy48LlAztUAmrVI74OFe Gkk4iF6qWjXV
nKTOmmbi5unSNmHjHp+5Hcm0ufKNIZJIKANyolkfyAzREdd2PKYMc7xciAks Lu57WzNqIq7o
btD5sXKPEsvoKfWo4o+Z4WAFfoq9X04ktGNK3N+v6X4P+jDA3SzIoVQlHEaA TrG0Zmrkz+Tq
EJJ0IsnDw5QagfqpOu6kKQumkVWoHhzCAFvQJaSQFqg0y36PMqQdVbbp2lBB zuL30+4+aFXP
xVEcd+GYwIoZ1YeEEZyg056K7Kiip5TmOEXi7Mz3aT485vn2IbWZJyXsxKNz 8TQ+5cIn6Si5
TyUSPo0FVBBxNTUsp2ODtLtTxq3tWYFVeZ/2JlOZ4WFNTyvxXcN09LO8Xawe PIMKvsh8joNI
Pc+tpQcVvY1radUMA0itoT9/cpROZMGsH9b9JQmnWLd/2sKyTh5O/Fd48QkW +5qEL3M9OpTt
Cr0WByL799dOPpk5lN+UsAoBHn1bwkZz9B0JTXiEFZ2R8HW8QKe2rqS0xFHa gWI/ecrOdI0M
K2whyhYWBaa4CtR2u/ADgQXFe4hN/EhCrbk7z0toNEc/kdCFvWz2pxK+h++T IW7RfF2988Jr
R2+2Qili+45AhNtmCS5K+Dl+wV8iqejEl/0evISrErLI8ZcjGZlP/juuWHav YiXXJFzCZUYa
l/A6X7bcpG63rh0f4c+qCzfI5cmtob9f0T24jgE3fkWG/AE1vtHPE7/hZvNb upLNsMewokY3
3qR7dZ2/4CZuanuLtd0W8AVaphXmdSoxUN4yCQpDxXQLqdlHtYweU7apfEEv L75Yr2Y5LKNY
lNCvEw5U8Y2f/ity8K2d3lXw0JuaCI1nQaL5UmO+jJ7zsYC+fIT+qqU3/zjF ZXgvGksX0tND
b9CF1oEalBuzrHiRLbaDZljQG8xhcfASvFdRGfRKV+HL6/CSBBClZwNBPEpy XYYuyZTEA3jQ
0LoUfkvranrzN8clLBuz9cw25h4vkHVYsoL3iCUbtmSdwSuoLBZOFgg7bWGq dEs4RTEpofcK
Fu4IhtibLEKnsSg4jnBP0FFSx19yWJvFR/MeLiJlwAl6jlLEniRVT1G8njaM +U2FljEebTDS
4aQvD9OI47dxSnpfMf3zU9I3TknvM+h9d9I7mN43Nf2L9DxD9GdJ1XeJ/tw0 9Jts+s0WPfUi
C2CLXQ1XsMV5joppjABab2JH3hWzoi7R+/IUVSD44LC0tVN+2bonGHLWZdHe UVes5XUieKOA
02NzerAbHzc0e7CHao+5qHlZmv9lBepkiPC6X8Z8i/dA6BZ6gqFXsf80HhzH oZ5x9PV44zn0
07rBLJ7IQsth+IboYLlbmBMkriMdJDU/FHR6d9RdQ8YJijxNj3bU3UI1zTxF PRRLzESUWYlw
hkLFWViPefR8i8a3acu+TXvl91Qf71BM36V/Vd6juLyPbvwBB/BHui79CUfw Zzol/1Lg/Unb
+5OW9w9jre39SXvPPmRlyT2OZ3py+MyNojL7a0Fe3HZe6Ay15E9RXnhHr6t6 xbAWtPoC/5ZN
BKaeAtMZDFHqaTQ6FgxV1efw2XwCzaL7G43/Dh/+QR3snwhRYsoNhYZ62511 +Dy+YOCswxfR
YhhaZzjGPe+UDZaywKotsCV3gIkCkOfyIKVG7P5N4/8QyH8LAKptgGoboNoG qLYB6Ci3AFRy
yuiXXE8mA63LQyzk6HChhK7heScIJoevFqGI2agQbqwSHgNlkdWAJ1DqDbPc JOjgL06IL58Q
WCZ9RnlwT8jiG7wbv8WP02NBX9UDObxYlBBRhipRjmViMVaKSoSEb5qEcBTM hJylbmEm5ByN
OB50NbDAztDfHN0mC2x9EViNEau6m3gpix9etAYvG4MdWfz4YtBXl8Mr+T2y ko40iBpiXIka
sQorRC3qRZBuAHVYL+rRIMLYLNYU7Ikmm7nJZm7CBfzM2AN0FbFDOMugarBI 1xSRchaDfL4Z
oF7JwBQmYw5jxYgbCHEjqkUjYW5GUDRRKLdgjWjGWtFCqK0FuW2wERssRMHX GwvshgU2aoGl
i8BauOyI602j6VbegstxHpUl51F+yZzJ4sppuGjC4bjglcxlPnNZBc0u9Eo8 UbiK6+MWnI4L
JRfYuVcvFNVIOznXiVaxG4fFHmREV4Ezo7Yzo7Yzh+3T7QXKCa9qJROvnYab Lg1vjI3jeg8P
crjZHvL+Motf7wuZ4DTw3pr422cMFtRm8bt9oSzezlfucr7OiAOQRC9tnUNY KmT6d7IPYRHD
BhHHI0IpIGy1CCtQRx32HYPwXUPXe/8HUEsHCNqLXobCCQAATxYAAFBLAwQU AAgACABJBlc1
AAAAAAAAAAAAAAAASwAAAGNvbS5wYXJlaXMudHJhZGluZy9iaW4vY29tL3Bh cmVpcy90cmFk
aW5nL3lhaG9vL1lhaG9vUGFja2FnZSRMaXRlcmFscy5jbGFzc41U61LTQBT+ Em5NWeSuAspN
bkUhIooXEIQQpJo22EBn+JVJ2wWDbcKkwRlexPfQzPjDHz6AD+W4u2lFuRQ6 03PZfOc75+w5
s79+//gJYAE7bZAlzBf9inrsBNStqmHglFzvUD11Pvq+us/ljlP85BzSCcMN aeCUq21oltB1
5Hx21LLDoGbhiBZDCS3769umKWHY8INDlRbL7nGVqrRywGw/oKqulZ1qdVnC qADadjq7mdZ0
y9bMzI6Z1bO7lm2ZezlNlzB+FUeOHtCAekXKeHrP8Vi6vimho3aqGWlGKWEk 9hskm74GYdt5
Pbtp5iT0/I+ME45ePLRjae1nNkzDatDOehgGbuEk5O0MXsZTz5xYYcGeG65K aJpJ5SU0a36J
KujHnTbcljB5oxkS3MWABIWms9buelY0b9wocjnJUg0R3MN9VswhDcVH1vxM qvG4FbARELSg
lTOMEYzjAQurM9hpr+QWaVXzK8e+R72wavknQZFKmLia+WwJOPskQRsSnH2a YIaz951ntygt
cegsgRJDHxHMcWjnX6hWdll6jlIJkjFqgeAJb3ikjrqiWh71lKA9bnKJ4Dnn nromys5Tr+QH
PPglAYlTLhOs8JS954LrLawSdMRp3hCsY+NicRxpc2GdVgp+udrwKs8WkJNv EtxCJyffInjL
exi8jPys7jRBFxLsGg3Xo9mTSoEGu06hzMbXY/hFp5x3Apf7tcNk3PiWy53u f/drnr8nEkja
82ggNoeywhP1N6dVYsma2JulYIDvErMG+NSFVmo6WdPtte+k5nfUfNaa0F3i nLGjGz1M9zLv
C9P8l/uGvu8YjDAsjNEIE8KYipASxsMI88J4HGFRGM8ivBDGqwivhbEWQROG HmH7K2OV8Y7J
WVYh5G4o8gB65DEMySlMyIuYk5exJOtYkzPYlvfwQU7gvYjif0PIDLJMJ8Hv oR9mq/IHUEsH
CK5edTTMAgAAxAUAAFBLAwQUAAgACABJBlc1AAAAAAAAAAAAAAAAQgAAAGNv bS5wYXJlaXMu
dHJhZGluZy9iaW4vY29tL3BhcmVpcy90cmFkaW5nL3lhaG9vL1lhaG9vUGFj a2FnZS5jbGFz
c51XC3xTZxX/nzZt0vbyCm8c0PJss9EA29wEhnRpKBdKyppSaHWtIb0tF9Kk JCms4JyKz72c
Tp2o863DN5RRVlAG7r05HT730DGd7uHGHJvbZNPpOffepLdp0laT3733O+c7 73O+833fg28f
PQ5gCRU7kUeYH451ertCcU1PeJPxUJse7fD2hLbGYt4meW8IhbeHOjQnHISF sXiHVwtH9K6E
5tU623kci2tevbMr4vVbhCoDhAItULXeT3DXbgvtDHkjIRYaTMZZ9nLCGF8s mkiGosnGUKRb
c6GI6Q2NBKcWCLZurFddUAgLtiaTXcu8Xm8uCysN/YRi4dpQ71+tbnZhHGEa M1SaDJUWQ6Wl
oEhTA8GGqoCPjVtYOyrX2eKCpqo1dXUEUvM5cmAxBqK1Va0mlKbGgWrV5w+2 +urWb6gL+AMN
wdZg3cZ6n194iDAxgy7o91fLFOdgjDXlq1WZT5D5afrV/qqGjfV+FrvRnOJE zDancmokzB2B
wjR94YhUjf5AdV09YdFIlIPM5MQPphdfCVOGIgeFcPCE8Q42rb+8rjZImJGN JGVdNv4Mg0qM
xPp9kVAiQZhVm72UzXnO+ByDXI226WEt4Yt1dsWiWjSZCMa642EtJWWKnSio aW2pCZeeUKN6
UmvjkmnmatETvrgWMuAx5pQeiui7BXatYCMYsZKQX17RSHD4Ym1aMdfYhQou wsWMkGlCRXnF
KOu1iJkvUTAeE2T0LgXn4wLCuFo9qgW6O7do8YbQlogmizMWDkUaQ3FdYAtZ uMKwpggrscqJ
d4/YH1aHwslYvEfUVY28pCzq5cXIh0/BCnDyLy4f2iRypSfFX9Eorq1WsBDl MlqjoMIcrVXg
MUe1ChbhAhkFFFRKCBzJrXqiCFcg6ER9znaW6mTz6rUOPZEU3xqwkTM10Dkq ctmXybq8hLVt
UrAZTVyCHVoyRUG4KIvbI8ldLnXxHonb4iJciVYnWrhUc/DI2+KT7LyPMC+X eBspW3wltigI
g4uzULMKurQ8p2nminGhnalyN2yzVTuxlVCWpUQazK9lQxE6sE1s3s6NLFtF DSY3otKpIIrF
hMlhY6VZU7zTJGXdFrPETiHboSAuZNP19CLMQrpDSLsV7BTSwva4pu3mjI1L btXsC40wgTGD
beEy4Sw3mZtNaWrYmqORcEpyB7Zea9fiWjQsKbka1zjxAcJ5wyVBwQfxIe5K UmZcUN3hZHc8
FFnN4eiOa5zE+Vl0cXA7Y1Fvd1LnLbyWa5aV7cVHnfgIJ2pEYgUfw8e5cbFG jny5WmEr6bot
27RwcrkTn+RAjOQiYVJmrKSfcszTaF9E58Dx3pfC5IzpghEoWhu1aFsszjts BqGpMlOBYFvl
Fezp3BKLJIZNWlWSV/KW7qTGjn8mt+NpMt7YsqlLWZh232p8o9kGBnos4RYF X8A+09NU81SN
w5cEak5uP+xCvqTgy7iVoJhLK7XJlUm+h20KwvxVBV/D1wnjLWZbyueUD8+u VjSKhG8q+JZd
Qjp2MvkdBbdhPx8cE1oyEOrUpAyz9FVD0PcUfF9oS4Q2sSGutetXCf6HCn4k eJeB59OnrLcD
Cg7KahprrKbuLt41e7o0ozscUnA7rNpU27iu9HZjB5WV06fgCO7gJRFqa8uw xVoQFc1OHOUT
yPBJdOEncuyUoZh4XMGdOMEnXWlbqQS0jRA/m+4hCCswzc3No8jhzxTsxh4Z 3a3gerTJ6F4F
N2CPC/cTpurZ15mQPajgIfycw2gYbkv+QzmNH+h7w1rGQdfiOUlsQoYeLoZg VHVIrJpTv1H0
Z3H0FwquNWP0iIIbzRj9SsHNEqPfcM3pA6tbpn6n4Doh78CjCh6TairiajJ7 nGCfUPAH7OEd
Jo21ekLChSd5TzJxTjzF56fhKylHE3Thz7ydDEchZv5FQQ/aXHiGVe409Lvw HDdrru6GWFUk
EkzGwtstfqH/m4IX8CKfcpnAX8eLJpTUY1HCrpFKdRSZHv1pKa2Ym/BL3DJH FSDJjAsvc5/J
xIpjryj4FG6Sw+Q/FLwmhylFs52a5ND0hoJ/4hyvUWv/ZTV8fMndYqtDyZD0 FD47vWU0pfQO
48K/+RLbEqjeXNpSvVaVV1VpS2BtaUtNcINPzPkPX4+JUsvKtpvszxnogZ3p /wr2/7RoRrE9
uoivuI6EseMWmwW3WpcLyAT7EatSNHCs1WhUixs6tISTXITKUV2F5tXyJYzP QHIlSw1RxvGT
e/R0/hegkCGn3MLhYrjYBpcwPMYGj2WY71QGpxsT0/hJDE/OgKfY4KkMT7PB oneGDX4Hw+fZ
4JkMz8rgn50hvzRjvixD/pwMeG4G/7wM/vkZ9AsG2Zcn1yxjXGF9Pca3WG6W BrzI+lYa33Ec
Sy8Ws4QlDF3IX/mV3IGlh/DO/EO49KBBvIzfY41UrOIwn2NxZVhuzMizIi1A YxoRMdfjLunF
ZUdwuYcOwy+vGnmpnvzDWCev9QOCZxnWn0URTrGSR9mf05hGBzCTHuHovGIo UkyxqDOyWiTX
bUvlaZYiZuztxaX7MKEXG9wl/WjMwwnQgQHoJGgfxg/At6H4GKjpCJqZbp2D Pe3Fe/vBFbxJ
iDSLqcNi0iymwl7oJ9BR6+lD5Pw+xPjbxd8Ef5OeA2mXKrkkQW5MoslYQVOx imZApZnopFLs
oDJ00zz00HxcTeV8cvEYLk4xIlmDXYaLnQxfhe3sJElft5z1GjBQ4Lkd/gF1 UvmgS2yRKrAi
RXIcsJgvY2qZmyjM/Xg/r61+fFgC9YlMUdU2URPToq4dRpQjl6grsoq6bhhR BblEtWQVdX3W
6NRkMm/LGp0bstpRM3x0dmW148asdqiZzHuz2sE7VhY71EF2fDpT1E1Z7bg5 q0vq8Fm6Nauo
z+JzlqillksuLvTPn8DKTP79Nn5Xmj+abgyHrcbQyqas2wfHQY9DGoEnvw9f lAYhyXf04SvG
oCA1KDQGDoOmRjA1Jk2BgVEFozLmG8ZAuAaaylI2BnQULjqGMXQcU+hOzKYT KKeTWEJ3YRnd
DR/di1q6DxvpfrTQAzYXWtMuxFMu0Fu8leRJ9lnZ+pQL6z1uVx++7XGP7cN3 uen14QcD7cJo
FEZV/5jAXaK3H4fzsMkssEyUmokSTne/+1h+Prv4U4b7cJKfu/i5x30f5Tvc /Tzl4EcIHjAI
Hubnl/yccv86O8FvWcHv+Xnc/UeDgKfybQRsmfu0+082lffw87Sodv9VGE4P ZSD3s3143hir
7jPuv9uYzzLu1X68TnC/6f4Xs58RVpP7bYPilCX+YVP8mSHiVZpIeSJ/ILWN vIeDHufUPsGp
fRIT6TSm01Oc3qexiJ7hZvssgvQc2ukF7KQXcQud4XveS3iMXsbzdJaK6VWa Qq/RAnqd1tAb
pNM52klvppuwLHAz/YtordWE88gh+qmACo3dlMjJT1Fh0X8BUEsHCAj8j00N CgAAoxkAAFBL
AwQUAAgACABJBlc1AAAAAAAAAAAAAAAAUAAAAGNvbS5wYXJlaXMudHJhZGlu Zy9iaW4vY29t
L3BhcmVpcy90cmFkaW5nL3lhaG9vL3V0aWwvWWFob29BZGFwdGVyRmFjdG9y eSQxLmNsYXNz
nVRrTxNBFD0DldK62oqI4AvQqi0oS+VpIBrTQIJWSUSJfpzuTumQ7U6zu9Xw rzTxkfjBH+CP
Mt6ZNk1TupaSprt379xz7jlzd+fP31+/ARTxNIkRhhVH1e0GD4QM7SjgrvSP 7BNeU8puRtKz
P+rwhcsbkQh2uROp4CRXTCLBUDgD8OCzjJwaw1hUk2FumbqVh263RfBt6cvo GcN6/hz4wiFD
oqRckQLDRQsXMJbGKC5ZSOIyw2heF2TK0hdvmvWKCN7xiicYJsrK4d4hD6R+ bicT2gjD2vAy
ckUyknJ4KMwiw+p/vJiSrUL5mH/itscpv185Fk60lcYUppO4zlAcWoGFGdwg X04geCS6C2iY
+UJZBUe2cDzZCIUt6lWbGtSVb/sqktUTu12qp6GMFoa5QQaopGN4z3elI8KS qjeUL/woPFDN
wKEtfTVoH2KQcdszZ2Fe+yx0+Yyh6NjfOKcEhslegwdCuAzPz2hKV8cZeWDh oTZy+7QRDeuI
XxyiFUNWC95zyYSsytZLvdZXbHdNnMRHFh5riTMtid2Qjrz5geT0Vbqiypte VCJtdEjkT72L
wlGBsHfarWPUPLGwotVMttS0qztCZgewMqRbY92Velem+3xCS7ovg7Xn+yIo eTwMBZ0GmR3f
8VRIvl6LqKZcLNNBM0pnLMtm9WlDkf4nMU75FEWbGKEfkF5Y/E6Xn7C+0tMI MjpnVhjhXiJL
kUWxzl7BhMlfxWSbZZvuunZ84RvSP3DtS4djzGDKBj/VqmnjdXQTt2id3ivc 6c8028u0H8t0
1zDdQ64/0/1eprexTHnDVMBCf6bFXqb3sUxLhsk2U+jDVOxl+hDLtGrmuGbq 17Fh5sAMBlS1
SdcE4fAPUEsHCHteHWaOAgAAUgcAAFBLAwQUAAgACABJBlc1AAAAAAAAAAAA AAAATgAAAGNv
bS5wYXJlaXMudHJhZGluZy9iaW4vY29tL3BhcmVpcy90cmFkaW5nL3lhaG9v L3V0aWwvWWFo
b29BZGFwdGVyRmFjdG9yeS5jbGFzc51VS08TURg9ty0dWgaKvOTpo4L0AYyI 4KOIYC1JTVM1
JSToapheymA700wHTbf+ArduXLowLhRfQROjKxN/lPGbmVIoLWY0TeY+vnvO +e6Z75v++v3l
G4BZpAR4GGYVvSSVZYOrFck05LyqFaSqvK3r0q6pFqUNa7qSl8smN1ZlxdSN qgAfw7xuFCSu
FNVyhUu8tCURTUnXJE031a2qpJbKRakRlqYtBrGk53nxvqw8lgucYTJzoryt XDuYYOiwgbmn
qqlsM8RPxh2m7RwmrH9R1VRzicEbia4z+JJEFYQXnSICCAoIMcz9sw3js0F0 4ZRF0cOwEHGT
USNDIroeAEOfCAHt1mxARBv8AQxiWMAQw4Qrc0SMwM8Q4Olsbm0lm0wxhDKq xrO7pU1urMmb
RTK6J6MrcnFdNlRrXdv0mdtqhe7+H6kzdKuV2mJVN9aqZeLrj2R25CeyVJSJ 4N7mDlfMRPSh
gAsMY8frhSu6waWUc6oDYUyIuIhJelk8WZQrlNa5SDRzAso+kehAFHEBMYbR v50TMYVpKqAC
N1P1wgufTH5Yc37dzs5yr+leDJ2KwWWT14xheBBpYmxsiqw1qNxINEs3HqxR JoKYw7yAKwxR
1+UuYgFXGdrz+kGvzDXn1WA+pdN0OwHXqfxcZUk2mbJB5jK4NoAcdcw7Wlp0 yxYvpbUzliOH
BGktryq8ktRLZV3jmlnJ6buGcvhmxprP5jjP1+NDTjydJywlaDVHPdbnxGpe 1beDjsSqavXR
YIsOmbE8pe9dWtO4Ydchr+A8NbmXPr4e2J1OM5/V+zS2U4S+RfTsoNUj2mc0 jsU+Q4x9RdcG
Tbo/oncP/T8R2MPp9+h/ZxON0nPYpooTKE20d9FNFT+AaYpJGKOI6JDhDM7S SJ1lJ2IJacTg
oTEWJ+ZXaPO9if9A+AVG4t8R3sc4wz4iDAdBL/3qqgOkBdygCyQo9ZukuoQI lm3FAYe1pmjN
ZigXRr9L9M/jaCdr2qHYB/Raep9w+Tuuva0L+O20+RHCUJ0wRMIJm3CRpB3C KXtNaHacwzxi
g6duw5IL5LOWyFsukM9bIpddIF+2RK64QL5ugfTgtv1M4g6NVoV12Q72/AFQ SwcIKdPP2kAD
AAAJCAAAUEsDBBQACAAIAEkGVzUAAAAAAAAAAAAAAABGAAAAY29tLnBhcmVp cy50cmFkaW5n
L2Jpbi9jb20vcGFyZWlzL3RyYWRpbmcveWFob28vdXRpbC9ZYWhvb1N3aXRj aC5jbGFzc51V
31NbRRT+NgmkCddCsT+oUCBWbAjQlJa22rRAm4Y2Ng1gEG1rrZdkSS4muTEJ OHnVd0d9YXzT
F53xCesMDj5o3zrjH+X47SbEQPOjFiZ79+49+53vfOfs2b//+eNPANPYcMMh MJ60c8GCWZRW
KVgumikrnw5WzIxtBzfLVjb4QE0TX1jlZMYNl0DfhrllBrMmrRbXNmSyLGDk 7JTMLpnJz8y0
FDgXa4mowWqGIYHu61beKs8KOP3jqwKuMHG8cKLHgBtHPBB4zUAXuj3oxTE3 +gTGXgraQD+6
BTwyGk+s3IyHIwK9MSsv45u5NVlcMdeypNkfs5NmdtUsWuq9tugqZ6ySwETr EA6LwjCOpGpz
gUv+mF1MB2UyaxVKMihz65zbRRmMVMUKjccO6xfqwRsYcmNQ4EzbvQbOYJii yXDWLJHkqH+8
lTNtEfJSwFEDp+ATWG5JrGr7/2kLeMsZGdkvgpEOCD0Ywzk33hYYakfEgB/j hJZhO182mbOi
gK91oA3gEwYmMcVMp2VZQ1nrlixGb+vqiiotgkqLCwIz/uirZGkMFw1cwozA UbqIJDYLrKVK
QTIVY00YsoJydr5aL5GYVVIQV/COG1cJoOH1J/XFwLu4JuC2SpFcoVzRjB8q xtcN3MCAQE9K
rpub2XLYLEmFMmdgHjdpRyICJ/zRpvnxqPzUimW4ffrpQjYG1Bc7yDDkxh2C tD99inHUwHu4
R99JUtWrSu8OHaGZ3grsvoE4FslGgUVTMl9mTqsH9XJTzEabZqBuLHNrezLR fMpKylLYzhXs
POFKCXuzmJSKT8LACj7goaoH18JY4F6nmFvsbM76w3ZtuhEuIWVKMX1g4CEe CRw/zFQZCMy9
JDtl3fzsG8kDR0xEBboq1XSPdso2e1hRlljOqgk3wR6qtJX26isqyzqqvKBE m07/ghDkbde6
na9j9bGHVf0uWKpe+xqujPMqZviYJifvYWqp7jjO1IXHe4+jh293+BR8Hgv8 Du9TGM/heYqj
v8H4lYsOvM6xHy6OFzhOw4uL6MMMjnPFqG7ECZzUDk5hoAY6T5cOZRGY2MNp hr+LkZ06Xrfe
N6sxTlbtahhq9ibO8rtL3Sc1tB+IphjME+wtAZL8Cb0KOSAwuYvzO5xOC8Sn 9nBZ4Hv0BLga
+hn9gSnnHmYdeIaxyQMMhikAEIXqIgO4jxEs8kJYYozLmGMzUMwCVZ91ZvO4 hbBmPq85OrjL
h9uIaHbs+FW2Yplfumi1PfiL3vcNqn8qzkH+bvFnTT7DQjwwtYu711ynXc/h VfPY/lzRV/Md
mi1ps/c7ma1qs4/amunZfyIsMHXAYwzhCQP5lAKYTOwaw0sy0HXcRZqyZPAI Fmcb/M/BRh5b
HL9EAV/jc3yLkhbrY52o7bpY21x5rMXaronl4/MTenLSzyC9mRTtLtfW6M1J P/trNtdSkFzb
qq8J1exrxXCFTyWlQxwuqK8aCspRZ+JgJE90jbOndsT4riVGUmOw23XE+LEl htQYvGs6Yuy0
xEhrjBv1o9Ya46+WGGc1Rka/Wf8CUEsHCL6VuTKFBAAAqAsAAFBLAwQUAAgA CABJBlc1AAAA
AAAAAAAAAAAAJwAAAGNvbS5wYXJlaXMudHJhZGluZy9iaW4vbG9nNGoucHJv cGVydGllc42U
TW/bMAyG7wHyHwgEvi0aOnTHHNJkn8i2FulOww6yzdhKFdKR5KT+96Pszljn NsnJMMj3If2S
9ATWGMAxB7BcFOjA4gEtBIblh5ufn0BTDiZ4YLIN6KpCyiVJwvMrNR6J5nqr onyhAxbsmtmX
7x9/vJHoeDQeTeQJxoOXGiJJETQsmDxbnD+heshftppfzdgV8q6zElUX/E/U s2uPHm51COho
pRuuw0s8ZdvQEPtM+bowlj+g84bpSTFLptcOfiXhNyTT9xUkGSSPMIVkl1Db XIfqLFWxbmlS
0YlJM0MbPp2RY1oXLWYyiWOBz3cr2NfoGqi08+K/zoI5mNCc5Khyb5X2Qc3X 90PmtvYylBJh
fbc6jZGEofzr8mYBqZHtkJb0DsUVDxI8jQpNdYEBXdqgpJfB7TTgY8UuvK2r XFIvKMlsVZnu
3uW5fdnZ1lMIDtGf9XNIyOI+9QM530+bP8QEp8lHCtOF0/1H8cp4HHquXRa7 29fGm5h6mrnN
0+w5DEmnFttF2bC1fDRUgDWEYDYgxwFHTe1xSzvZA+R8JMiYCLtP6eyITaF+ 0IVc67FEkruN
mKUzclbfNEnALXrRreODiX+Z8172GnWGNYvt4Xj0B1BLBwjJYc9U0QEAAPAE AABQSwMEFAAI
AAgASQZXNQAAAAAAAAAAAAAAACMAAABjb20ucGFyZWlzLnRyYWRpbmcvYnVp bGQucHJvcGVy
dGllc3WOwQrCMBBE7wv7D4H2qMkPVMGDQg968uhFk6VG0m7YJKB/b+qtUOc2 82B4jeosx4/4
4Zn3CI3qzKLPU9u7FgHh4SftJxuKo6R2Sm9uCGqZkR0FswLOx+th219OayyG MtTr9xj+wygc
SbKnhPC6S9KWx+gDaRZHMtsgJC5iSevakliDwCXHkn9DdTdfUEsHCHjgQg2M AAAA7AAAAFBL
AwQUAAgACABJBlc1AAAAAAAAAAAAAAAALwAAAGNvbS5wYXJlaXMudHJhZGlu Zy9tb2RlbC9j
b20ucGFyZWlzLnRyYWRpbmcuY2F07Vpbbxu3En7eAP4PhJCHCsfHIPe+RlFY lqzCQJITWE2B
AgUEekVLbFe76l6SqL++vOxyl9qL5dhxc1obebCHwyVnON83w2FOXn2X3P5G why8JzmOTl4B
9vORpBlNYv6rYXtStvyU0jwnXGiMbpKMAP8MnkELWmfIhnAktcINThckFzPh +OTVifr8NMJZ
tpzinKyTdA9GeYpXNF6X82i2LGIq5/108+FKSaMEr8hKk/5R0BWQP8bIdiyI /Ms5RFOn/Bb5
vEvSfJrEeZpETOV9cRvRsByMkjUNcbTcJisSZcD4LqJZDvjay5TckZTEIVly 2ckrQ9s6GE0j
SuKcfcdo78KaT8xL6ELTmVUKqyQstmwCzrkrjdEEvMXxCsc5SFKAgf61rNiR NOTrELUpGm8I
8znmO0pJJL6Tbeiu2p7a33VD8aahyHWGtno1qjTY8ju2n1RovJEuAj9T8un8 PEy25+c7nBKa
nZ+Xh3Z+fr1im6d3FN9GZNRcp2iv4wWj8bi0M2Fmyv1VVv5PSZomKSkYhSlh QTMjd7iI8kWe
FmFepPqizWiYBP5kDq0gUBopydjMUuMXvEkSNRQmcVik/ND3bGxB/ii4WThS Csnuqi+apEK9
Ogv4exxx5YzGg0aKzSkTJ/FqQciq19JLjwU9A+Dsa5kzFsd2gILDk+eqOM9T elvkdexOKsmS
scF4GDJeoFCQMwAm+X5HmMJ1zP66w6FaRcBj2V7rQN6Ch9i42hAY0T6X1ju6 VBpiM5UGOxpJ
WXKsh2g63bbYM+O23eThWObEYySKArePPNZRcssgmbHlI5In8SmL6h0LbH4W 8RrkGwIysQIn
F/4X5oAOxfS/gWOERVdzCP3pM3JM0+2TLEtCWqLr9Yd37yZvr2av4cABmD6E wbRSYCfKvCQV
pKu4pOWWGyZk6BVcnvUiVX6d/VMaEb4lUaVxOP3BnqpzyZCPnJooeMxiGvMI YyqXe/Azjora
ySzvxvgjXXPPy8w7bhutnIrutdv8ctNq3HSYdgCcnr03RvB6nZI1Y9rSqjZS GxXKvkoV5eSD
AqUSqwplPnmzqOR3lAVLjLeE7/P19MPN7Prm11+ZiWfSwrPSwDOxyBkDal9k QjgPHMjSmkii
InbKEqbEv55Oj6hkZhSvU7wFo7csBHqWNeeX0LOh5U0qhZzmEakUmjP/TJJt NRNBWEq3+PNy
Q+h6wwLM9C2nKf9EV/mGaZvIVfpJStc0Xn4GZR5tyPbiy7blVz5nAaFDcyUt WvKRNv2XB8qj
DBwVc/LgwQVSaE0kk4oVPd8/BaYbjKvROwamygHVonMm4+NGRv9U+cMXEp7S lKffFCFdYfBj
ykpDiT/jNonUSVQhZRiMehmfZwfSgs1KIxoTTZqxNPU7OfxCmERJWn5XVCrG StZUSzlS4/yQ
oFQOYO59w+Vi9nvmtjhfCrca0leG5ijXtk8B8p2xNJtGUbUScj2Pjco5Md+/ PE/DFBItRnzp
td+KjOWCfWP3GoXKI1O7p6wSWmb5nlPASGy5Zl62mtoHtH3Hc1Xd1rfHLuap cVlplFsWGhZU
Hy1RIPHhQ41JBR5lYIpfR8cFqJYZwYVZLbXYJJ+myZbp55zaF6qcynQmvI7D qFiRuibqGq2r
U22Ur6GGFnQdY16r6jpaGLAIcBlgkPcCmCZgzDZgkIcshhj3IYhBHYhxj0GM FkPKimYF/jgr
THSPFayU3JT+ZUB8OsO+/17dHH74QacEFUXa3eJ5GOPgulPe1xRWa3c3APwQ h5smLB0+hC5x
xi2ECUvuQRkf6EaacF8n2vif3YiTsdaFOumXQ+TxX/vQZ/ScXSv
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #594670 is a reply to message #58698] |
Tue, 24 October 2006 06:42 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
Hi Andre,
This was/is a complex case. For me it works fine in case of a joined-subclass inheritance strategy
but fails with single-table.
After some debugging in Hibernate I can see that the following happens:
When hibernate loads the vendors association it will also load the one-to-one mappings from Yahoo to
YahooIndicesComponentsSource and YahooIndicesSeed. The onetoone mappings from Yahoo to the other
objects use primary key association (see the hibernate manual for one-to-one) as a default. This
means that when the vendors relation is read also its one-to-one's are read. Because they are all
stored in one table and according to the mapping have the same id column Hibernate thinks that the
one Yahoo record is a YahooIndicesComponentsSource and reads it from the db. Then when the Yahoo
object is read it gets the already read YahooIndicesComponentsSource from the cache (as the id is
the same and the table is the same) and then throws an error because it expects a Yahoo.
At the moment I am not sure where the solution for this can be done. One thing I can think of is
that Teneo should use foreign-key one-to-one instead of the now default primary key.
Can you enter a bugzilla for this issue? Then I will look at it.
As a workaround, does joined-subclass work in your case?
gr. Martin
Andre Pareis wrote:
> Hi Martin,
>
> finally I have reduced the problem to a small test case. You should be
> able to reconstruct the problem by executing the
> com.pareis.trading.tests.ClientTest in the test plugin. It uses an
> included hsqldb which creates its DB files under C:/Temp/options. The
> model project has a dependency on an "org.hibernate" plugin containing
> the hibernate libs but I'm sure you have something similar to replace
> that with. The model is in the model/options.ecore file but everything
> is generated. I'm on EMF 2.2.1 stable.
>
> One more hint: As you can see in the model there are associations
> between classes of different packages. This might also be a source of
> the error.
>
> I really hope we can get this fixed otherwise I would have to use
> non-appropriate one-to-many associations...
>
> Regards
> Andre
>
>
>
> Martin Taal wrote:
>> Hi,
>> Strange. Which ereference is set?
>> How does the database look like (tables and records in the table)? Do
>> you see anything wrong there?
>>
>> Can you send me the ecore and a testcase to reproduce this?
>>
>> gr. Martin
>>
>> Andre Pareis wrote:
>>> Here is the stack trace when I run into the code:
>>>
>>> 2034641 [main] ERROR
>>> org.eclipse.emf.teneo.hibernate.HbStoreException - Exception when
>>> saving resource trading
>>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>>
>>> at
>>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>>
>>> at
>>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>>
>>> at
>>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>>
>>> at
>>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>>>
>>> at
>>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>>
>>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>>> at
>>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>>
>>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>>> at
>>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>>> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>>> at
>>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>>
>>> at
>>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>>
>>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>>> at
>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>>
>>> at
>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>>
>>> at
>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>>
>>> at
>>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>>>
>>> at
>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>>
>>> at
>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>>
>>> at
>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>>
>>> at
>>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>>> at
>>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>>> at
>>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>>
>>> at
>>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>>
>>> at
>>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>>
>>> at
>>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>>
>>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>>> at
>>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>>
>>> at
>>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>>
>>> at
>>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>>
>>> at
>>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>>
>>> at
>>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>>
>>> at
>>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>>> at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>>> at
>>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>>
>>> at
>>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>>
>>> at
>>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>>
>>> at
>>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>>
>>> at
>>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>>
>>> at
>>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>>> at
>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>>
>>> at
>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>>
>>> at
>>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>>> at
>>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>>> at
>>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>>> at
>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>>>
>>> at
>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>>>
>>> at
>>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>>
>>> at
>>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>>
>>> at
>>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>>
>>> at
>>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>>> at
>>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>>
>>> at
>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>>> at org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>> at
>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>>> at
>>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>>
>>> at
>>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>>
>>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>>> at
>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>>
>>> at
>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>> at
>>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>>
>>> at
>>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>>
>>> at
>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>>
>>> at
>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>>
>>> at
>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>>
>>> at
>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>>
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>>
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>
>>> at java.lang.reflect.Method.invoke(Method.java:585)
>>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>>
>>> Andre Pareis wrote:
>>>> Hi,
>>>>
>>>> I'm having a problem reading back a previously successful stored
>>>> one-to-one association. During load, a ClassCastException is thrown.
>>>> I have attached two files, one with the model and the other one with
>>>> a snapshot of the debugger showing the line which when executed
>>>> produces a ClassCastException somewhere in the model code. That is,
>>>> because the eInverseAdd is invoked with the wrong object.
>>>>
>>>> The debugger shows that target and value are the same object. The
>>>> eReference value is strange, because there is actually no
>>>> corresponding object for this association to be found in the DB.
>>>>
>>>> The only objects that are in the DB are the parent of the Yahoo
>>>> object and the Yahoo object itself. The load of the parent and the
>>>> Yahoo objects have been passed successfully. Normally, the load
>>>> should have stopped already as there are no more objects to read -
>>>> instead, it ends up as shown on the debugger screen.
>>>>
>>>> Any ideas?
>>>>
>>>> Thanks
>>>> Andre
>>>>
>>>> ------------------------------------------------------------ ------------
>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------ ------------
>>>>
>>>>
>>
>>
>
--
With Regards, Martin Taal
Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #594776 is a reply to message #58881] |
Tue, 24 October 2006 23:11 |
Andre Pareis Messages: 113 Registered: July 2009 |
Senior Member |
|
|
Hey Martin,
thanks for your detailed analysis!
I think I always used the joined-subclass mapping.
In the DB, I find one table per class.
This is, for instance, how I initialize the teneo layer at the beginning of the ClientTest test case:
final Properties props = new Properties();
props.put(PersistenceOptions.INHERITANCE_MAPPING, "JOINED");
props.put(PersistenceOptions.SQL_CASE_STRATEGY, "none");
hbds.setPersistenceProperties(props);
This is only a quick response for today - I will have a deeper look at the things tomorrow...
Regards
Andre
Martin Taal wrote:
> Hi Andre,
> This was/is a complex case. For me it works fine in case of a
> joined-subclass inheritance strategy but fails with single-table.
>
> After some debugging in Hibernate I can see that the following happens:
> When hibernate loads the vendors association it will also load the
> one-to-one mappings from Yahoo to YahooIndicesComponentsSource and
> YahooIndicesSeed. The onetoone mappings from Yahoo to the other objects
> use primary key association (see the hibernate manual for one-to-one) as
> a default. This means that when the vendors relation is read also its
> one-to-one's are read. Because they are all stored in one table and
> according to the mapping have the same id column Hibernate thinks that
> the one Yahoo record is a YahooIndicesComponentsSource and reads it from
> the db. Then when the Yahoo object is read it gets the already read
> YahooIndicesComponentsSource from the cache (as the id is the same and
> the table is the same) and then throws an error because it expects a Yahoo.
>
> At the moment I am not sure where the solution for this can be done. One
> thing I can think of is that Teneo should use foreign-key one-to-one
> instead of the now default primary key.
> Can you enter a bugzilla for this issue? Then I will look at it.
>
> As a workaround, does joined-subclass work in your case?
>
> gr. Martin
>
> Andre Pareis wrote:
>> Hi Martin,
>>
>> finally I have reduced the problem to a small test case. You should be
>> able to reconstruct the problem by executing the
>> com.pareis.trading.tests.ClientTest in the test plugin. It uses an
>> included hsqldb which creates its DB files under C:/Temp/options. The
>> model project has a dependency on an "org.hibernate" plugin containing
>> the hibernate libs but I'm sure you have something similar to replace
>> that with. The model is in the model/options.ecore file but everything
>> is generated. I'm on EMF 2.2.1 stable.
>>
>> One more hint: As you can see in the model there are associations
>> between classes of different packages. This might also be a source of
>> the error.
>>
>> I really hope we can get this fixed otherwise I would have to use
>> non-appropriate one-to-many associations...
>>
>> Regards
>> Andre
>>
>>
>>
>> Martin Taal wrote:
>>> Hi,
>>> Strange. Which ereference is set?
>>> How does the database look like (tables and records in the table)? Do
>>> you see anything wrong there?
>>>
>>> Can you send me the ecore and a testcase to reproduce this?
>>>
>>> gr. Martin
>>>
>>> Andre Pareis wrote:
>>>> Here is the stack trace when I run into the code:
>>>>
>>>> 2034641 [main] ERROR
>>>> org.eclipse.emf.teneo.hibernate.HbStoreException - Exception when
>>>> saving resource trading
>>>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>>>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>>>> at
>>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>>>
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>>>
>>>> at
>>>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>>>
>>>> at
>>>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>>>
>>>> at
>>>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>>>>
>>>> at
>>>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>>>
>>>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>>>> at
>>>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>>>
>>>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>>>> at
>>>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>>>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>>>> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>>>> at
>>>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>>>
>>>> at
>>>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>>>
>>>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>>>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>>>
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>>>
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>>>
>>>> at
>>>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>>>>
>>>> at
>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>>>
>>>> at
>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>>>
>>>> at
>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>>>
>>>> at
>>>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>>>> at
>>>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>>>> at
>>>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>>>
>>>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>>>> at
>>>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>>>> at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>>>> at
>>>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>>>> at
>>>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>>>>
>>>> at
>>>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>>>
>>>> at
>>>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>>>> at
>>>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>>>> at org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>>>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>>> at
>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>>>
>>>> at
>>>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>>>
>>>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>>>> at
>>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>>>
>>>> at
>>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>>> at
>>>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>>>
>>>> at
>>>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>>>
>>>> at
>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>>>
>>>> at
>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>>>
>>>> at
>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>>>
>>>> at
>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>>>
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>>>
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>>
>>>> at java.lang.reflect.Method.invoke(Method.java:585)
>>>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>>>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>>>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>>>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>>>
>>>> Andre Pareis wrote:
>>>>> Hi,
>>>>>
>>>>> I'm having a problem reading back a previously successful stored
>>>>> one-to-one association. During load, a ClassCastException is
>>>>> thrown. I have attached two files, one with the model and the other
>>>>> one with a snapshot of the debugger showing the line which when
>>>>> executed produces a ClassCastException somewhere in the model code.
>>>>> That is, because the eInverseAdd is invoked with the wrong object.
>>>>>
>>>>> The debugger shows that target and value are the same object. The
>>>>> eReference value is strange, because there is actually no
>>>>> corresponding object for this association to be found in the DB.
>>>>>
>>>>> The only objects that are in the DB are the parent of the Yahoo
>>>>> object and the Yahoo object itself. The load of the parent and the
>>>>> Yahoo objects have been passed successfully. Normally, the load
>>>>> should have stopped already as there are no more objects to read -
>>>>> instead, it ends up as shown on the debugger screen.
>>>>>
>>>>> Any ideas?
>>>>>
>>>>> Thanks
>>>>> Andre
>>>>>
>>>>> ------------------------------------------------------------ ------------
>>>>>
>>>>>
>>>>>
>>>>> ------------------------------------------------------------ ------------
>>>>>
>>>>>
>>>
>>>
>>
>
>
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #595368 is a reply to message #58881] |
Fri, 10 November 2006 12:44 |
Andre Pareis Messages: 113 Registered: July 2009 |
Senior Member |
|
|
Hi Martin,
I'm still having my time with that one...
Do you have any idea what I could do as a temporary workaround?
Can I disable the hibernate cache? Can I add some kind of annotation to embed the owned object in the parent table? Should I use the SUPERCLASS mapping?
I really don't want to change my model to use one-to-many associations only as I would lose the explicitness with that.
Thanks
Andre
Martin Taal wrote:
> Hi Andre,
> This was/is a complex case. For me it works fine in case of a
> joined-subclass inheritance strategy but fails with single-table.
>
> After some debugging in Hibernate I can see that the following happens:
> When hibernate loads the vendors association it will also load the
> one-to-one mappings from Yahoo to YahooIndicesComponentsSource and
> YahooIndicesSeed. The onetoone mappings from Yahoo to the other objects
> use primary key association (see the hibernate manual for one-to-one) as
> a default. This means that when the vendors relation is read also its
> one-to-one's are read. Because they are all stored in one table and
> according to the mapping have the same id column Hibernate thinks that
> the one Yahoo record is a YahooIndicesComponentsSource and reads it from
> the db. Then when the Yahoo object is read it gets the already read
> YahooIndicesComponentsSource from the cache (as the id is the same and
> the table is the same) and then throws an error because it expects a Yahoo.
>
> At the moment I am not sure where the solution for this can be done. One
> thing I can think of is that Teneo should use foreign-key one-to-one
> instead of the now default primary key.
> Can you enter a bugzilla for this issue? Then I will look at it.
>
> As a workaround, does joined-subclass work in your case?
>
> gr. Martin
>
> Andre Pareis wrote:
>> Hi Martin,
>>
>> finally I have reduced the problem to a small test case. You should be
>> able to reconstruct the problem by executing the
>> com.pareis.trading.tests.ClientTest in the test plugin. It uses an
>> included hsqldb which creates its DB files under C:/Temp/options. The
>> model project has a dependency on an "org.hibernate" plugin containing
>> the hibernate libs but I'm sure you have something similar to replace
>> that with. The model is in the model/options.ecore file but everything
>> is generated. I'm on EMF 2.2.1 stable.
>>
>> One more hint: As you can see in the model there are associations
>> between classes of different packages. This might also be a source of
>> the error.
>>
>> I really hope we can get this fixed otherwise I would have to use
>> non-appropriate one-to-many associations...
>>
>> Regards
>> Andre
>>
>>
>>
>> Martin Taal wrote:
>>> Hi,
>>> Strange. Which ereference is set?
>>> How does the database look like (tables and records in the table)? Do
>>> you see anything wrong there?
>>>
>>> Can you send me the ecore and a testcase to reproduce this?
>>>
>>> gr. Martin
>>>
>>> Andre Pareis wrote:
>>>> Here is the stack trace when I run into the code:
>>>>
>>>> 2034641 [main] ERROR
>>>> org.eclipse.emf.teneo.hibernate.HbStoreException - Exception when
>>>> saving resource trading
>>>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>>>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>>>> at
>>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>>>
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>>>
>>>> at
>>>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>>>
>>>> at
>>>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>>>
>>>> at
>>>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>>>>
>>>> at
>>>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>>>
>>>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>>>> at
>>>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>>>
>>>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>>>> at
>>>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>>>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>>>> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>>>> at
>>>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>>>
>>>> at
>>>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>>>
>>>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>>>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>>>
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>>>
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>>>
>>>> at
>>>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>>>>
>>>> at
>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>>>
>>>> at
>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>>>
>>>> at
>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>>>
>>>> at
>>>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>>>> at
>>>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>>>> at
>>>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>>>
>>>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>>>> at
>>>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>>>> at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>>>> at
>>>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>>>> at
>>>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>>>>
>>>> at
>>>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>>>
>>>> at
>>>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>>>> at
>>>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>>>
>>>> at
>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>>>> at org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>>>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>>> at
>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>>>> at
>>>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>>>
>>>> at
>>>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>>>
>>>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>>>> at
>>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>>>
>>>> at
>>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>>> at
>>>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>>>
>>>> at
>>>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>>>
>>>> at
>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>>>
>>>> at
>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>>>
>>>> at
>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>>>
>>>> at
>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>>>
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>>>
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>>
>>>> at java.lang.reflect.Method.invoke(Method.java:585)
>>>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>>>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>>>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>>>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>>>
>>>> Andre Pareis wrote:
>>>>> Hi,
>>>>>
>>>>> I'm having a problem reading back a previously successful stored
>>>>> one-to-one association. During load, a ClassCastException is
>>>>> thrown. I have attached two files, one with the model and the other
>>>>> one with a snapshot of the debugger showing the line which when
>>>>> executed produces a ClassCastException somewhere in the model code.
>>>>> That is, because the eInverseAdd is invoked with the wrong object.
>>>>>
>>>>> The debugger shows that target and value are the same object. The
>>>>> eReference value is strange, because there is actually no
>>>>> corresponding object for this association to be found in the DB.
>>>>>
>>>>> The only objects that are in the DB are the parent of the Yahoo
>>>>> object and the Yahoo object itself. The load of the parent and the
>>>>> Yahoo objects have been passed successfully. Normally, the load
>>>>> should have stopped already as there are no more objects to read -
>>>>> instead, it ends up as shown on the debugger screen.
>>>>>
>>>>> Any ideas?
>>>>>
>>>>> Thanks
>>>>> Andre
>>>>>
>>>>> ------------------------------------------------------------ ------------
>>>>>
>>>>>
>>>>>
>>>>> ------------------------------------------------------------ ------------
>>>>>
>>>>>
>>>
>>>
>>
>
>
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #595377 is a reply to message #60509] |
Fri, 10 November 2006 13:20 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
Hi Andre,
I didn't have time to look at this issue. However today and tomorrow I will work on a number of
Teneo issues. I will also look further at this one.
Can you test if superclass (single-table) also fails?
gr. Martin
Andre Pareis wrote:
> Hi Martin,
>
> I'm still having my time with that one...
>
> Do you have any idea what I could do as a temporary workaround?
>
> Can I disable the hibernate cache? Can I add some kind of annotation to
> embed the owned object in the parent table? Should I use the SUPERCLASS
> mapping?
>
> I really don't want to change my model to use one-to-many associations
> only as I would lose the explicitness with that.
>
> Thanks
> Andre
>
>
> Martin Taal wrote:
>> Hi Andre,
>> This was/is a complex case. For me it works fine in case of a
>> joined-subclass inheritance strategy but fails with single-table.
>>
>> After some debugging in Hibernate I can see that the following happens:
>> When hibernate loads the vendors association it will also load the
>> one-to-one mappings from Yahoo to YahooIndicesComponentsSource and
>> YahooIndicesSeed. The onetoone mappings from Yahoo to the other
>> objects use primary key association (see the hibernate manual for
>> one-to-one) as a default. This means that when the vendors relation is
>> read also its one-to-one's are read. Because they are all stored in
>> one table and according to the mapping have the same id column
>> Hibernate thinks that the one Yahoo record is a
>> YahooIndicesComponentsSource and reads it from the db. Then when the
>> Yahoo object is read it gets the already read
>> YahooIndicesComponentsSource from the cache (as the id is the same and
>> the table is the same) and then throws an error because it expects a
>> Yahoo.
>>
>> At the moment I am not sure where the solution for this can be done.
>> One thing I can think of is that Teneo should use foreign-key
>> one-to-one instead of the now default primary key.
>> Can you enter a bugzilla for this issue? Then I will look at it.
>>
>> As a workaround, does joined-subclass work in your case?
>>
>> gr. Martin
>>
>> Andre Pareis wrote:
>>> Hi Martin,
>>>
>>> finally I have reduced the problem to a small test case. You should
>>> be able to reconstruct the problem by executing the
>>> com.pareis.trading.tests.ClientTest in the test plugin. It uses an
>>> included hsqldb which creates its DB files under C:/Temp/options. The
>>> model project has a dependency on an "org.hibernate" plugin
>>> containing the hibernate libs but I'm sure you have something similar
>>> to replace that with. The model is in the model/options.ecore file
>>> but everything is generated. I'm on EMF 2.2.1 stable.
>>>
>>> One more hint: As you can see in the model there are associations
>>> between classes of different packages. This might also be a source of
>>> the error.
>>>
>>> I really hope we can get this fixed otherwise I would have to use
>>> non-appropriate one-to-many associations...
>>>
>>> Regards
>>> Andre
>>>
>>>
>>>
>>> Martin Taal wrote:
>>>> Hi,
>>>> Strange. Which ereference is set?
>>>> How does the database look like (tables and records in the table)?
>>>> Do you see anything wrong there?
>>>>
>>>> Can you send me the ecore and a testcase to reproduce this?
>>>>
>>>> gr. Martin
>>>>
>>>> Andre Pareis wrote:
>>>>> Here is the stack trace when I run into the code:
>>>>>
>>>>> 2034641 [main] ERROR
>>>>> org.eclipse.emf.teneo.hibernate.HbStoreException - Exception when
>>>>> saving resource trading
>>>>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>>>>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>>>>> at
>>>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>>>>
>>>>> at
>>>>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>>>>
>>>>> at
>>>>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>>>>
>>>>> at
>>>>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>>>>
>>>>> at
>>>>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>>>>>
>>>>> at
>>>>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>>>>
>>>>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>>>>> at
>>>>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>>>>
>>>>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>>>>> at
>>>>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>>>>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>>>>> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>>>>> at
>>>>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>>>>
>>>>> at
>>>>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>>>>
>>>>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>>>>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>>>>> at
>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>>>>
>>>>> at
>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>>>>
>>>>> at
>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>>>>
>>>>> at
>>>>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>>>>>
>>>>> at
>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>>>>
>>>>> at
>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>>>>
>>>>> at
>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>>>>
>>>>> at
>>>>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>>>>>
>>>>> at
>>>>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>>>>
>>>>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>>>>> at
>>>>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>>>>> at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>>>>> at
>>>>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>>>>> at
>>>>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>>>>>
>>>>> at
>>>>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>>>>
>>>>> at
>>>>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>>>>> at
>>>>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>>>>> at
>>>>> org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>>>>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>>>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>>>> at
>>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>>>>> at
>>>>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>>>>
>>>>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>>>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>>>>> at
>>>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>>>>
>>>>> at
>>>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>>>> at
>>>>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>>>>
>>>>> at
>>>>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>>>>
>>>>> at
>>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>>>>
>>>>> at
>>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>>>>
>>>>> at
>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>>>>
>>>>> at
>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>>>>
>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>> at
>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>>>>
>>>>> at
>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>>>
>>>>> at java.lang.reflect.Method.invoke(Method.java:585)
>>>>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>>>>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>>>>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>>>>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>>>>
>>>>> Andre Pareis wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I'm having a problem reading back a previously successful stored
>>>>>> one-to-one association. During load, a ClassCastException is
>>>>>> thrown. I have attached two files, one with the model and the
>>>>>> other one with a snapshot of the debugger showing the line which
>>>>>> when executed produces a ClassCastException somewhere in the model
>>>>>> code. That is, because the eInverseAdd is invoked with the wrong
>>>>>> object.
>>>>>>
>>>>>> The debugger shows that target and value are the same object. The
>>>>>> eReference value is strange, because there is actually no
>>>>>> corresponding object for this association to be found in the DB.
>>>>>>
>>>>>> The only objects that are in the DB are the parent of the Yahoo
>>>>>> object and the Yahoo object itself. The load of the parent and the
>>>>>> Yahoo objects have been passed successfully. Normally, the load
>>>>>> should have stopped already as there are no more objects to read -
>>>>>> instead, it ends up as shown on the debugger screen.
>>>>>>
>>>>>> Any ideas?
>>>>>>
>>>>>> Thanks
>>>>>> Andre
>>>>>>
>>>>>> ------------------------------------------------------------ ------------
>>>>>>
>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------ ------------
>>>>>>
>>>>>>
>>>>
>>>>
>>>
>>
>>
--
With Regards, Martin Taal
Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #595388 is a reply to message #60528] |
Fri, 10 November 2006 13:39 |
Andre Pareis Messages: 113 Registered: July 2009 |
Senior Member |
|
|
Yes I just did that. It also fails but with a slightly different error:
org.hibernate.WrongClassException: Object with id: 2 was not of the specified subclass: Yahoo (loaded object was of wrong class class
com.pareis.trading.yahoo.impl.YahooIndicesComponentsSourceIm pl)
at org.hibernate.loader.Loader.instanceAlreadyLoaded(Loader.jav a:1234)
at org.hibernate.loader.Loader.getRow(Loader.java:1186)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java: 568)
at org.hibernate.loader.Loader.doQuery(Loader.java:689)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
at org.hibernate.loader.Loader.loadCollection(Loader.java:1918)
at org.hibernate.loader.collection.CollectionLoader.initialize( CollectionLoader.java:36)
at org.hibernate.persister.collection.AbstractCollectionPersist er.initialize(AbstractCollectionPersister.java:565)
at org.hibernate.event.def.DefaultInitializeCollectionEventList ener.onInitializeCollection(DefaultInitializeCollectionEvent Listener.java:60)
at org.hibernate.impl.SessionImpl.initializeCollection(SessionI mpl.java:1716)
at org.hibernate.collection.AbstractPersistentCollection.initia lize(AbstractPersistentCollection.java:344)
at org.hibernate.collection.AbstractPersistentCollection.read(A bstractPersistentCollection.java:86)
at org.hibernate.collection.PersistentList.toArray(PersistentLi st.java:123)
at org.eclipse.emf.teneo.hibernate.mapping.elist.HibernatePersi stableEList.doLoad(HibernatePersistableEList.java:106)
at org.eclipse.emf.teneo.mapping.elist.PersistableEList.load(Pe rsistableEList.java:187)
at org.eclipse.emf.teneo.mapping.elist.PersistableEList.delegat eGet(PersistableEList.java:305)
at org.eclipse.emf.common.util.DelegatingEList.get(DelegatingEL ist.java:378)
at com.pareis.trading.tests.ClientTest.testBug(ClientTest.java: 128)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestRefer ence.run(JUnit3TestReference.java:128)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(Test Execution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe sts(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe sts(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(R emoteTestRunner.java:386)
at org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunne r.main(RemotePluginTestRunner.java:58)
at org.eclipse.pde.internal.junit.runtime.CoreTestApplication.r un(CoreTestApplication.java:24)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
at org.eclipse.core.launcher.Main.run(Main.java:977)
at org.eclipse.core.launcher.Main.main(Main.java:952)
It seems that this time hibernate itself recognizes that it made a mistake.
-Andre
Martin Taal wrote:
> Hi Andre,
> I didn't have time to look at this issue. However today and tomorrow I
> will work on a number of Teneo issues. I will also look further at this
> one.
>
> Can you test if superclass (single-table) also fails?
>
> gr. Martin
>
> Andre Pareis wrote:
>> Hi Martin,
>>
>> I'm still having my time with that one...
>>
>> Do you have any idea what I could do as a temporary workaround?
>>
>> Can I disable the hibernate cache? Can I add some kind of annotation
>> to embed the owned object in the parent table? Should I use the
>> SUPERCLASS mapping?
>>
>> I really don't want to change my model to use one-to-many associations
>> only as I would lose the explicitness with that.
>>
>> Thanks
>> Andre
>>
>>
>> Martin Taal wrote:
>>> Hi Andre,
>>> This was/is a complex case. For me it works fine in case of a
>>> joined-subclass inheritance strategy but fails with single-table.
>>>
>>> After some debugging in Hibernate I can see that the following happens:
>>> When hibernate loads the vendors association it will also load the
>>> one-to-one mappings from Yahoo to YahooIndicesComponentsSource and
>>> YahooIndicesSeed. The onetoone mappings from Yahoo to the other
>>> objects use primary key association (see the hibernate manual for
>>> one-to-one) as a default. This means that when the vendors relation
>>> is read also its one-to-one's are read. Because they are all stored
>>> in one table and according to the mapping have the same id column
>>> Hibernate thinks that the one Yahoo record is a
>>> YahooIndicesComponentsSource and reads it from the db. Then when the
>>> Yahoo object is read it gets the already read
>>> YahooIndicesComponentsSource from the cache (as the id is the same
>>> and the table is the same) and then throws an error because it
>>> expects a Yahoo.
>>>
>>> At the moment I am not sure where the solution for this can be done.
>>> One thing I can think of is that Teneo should use foreign-key
>>> one-to-one instead of the now default primary key.
>>> Can you enter a bugzilla for this issue? Then I will look at it.
>>>
>>> As a workaround, does joined-subclass work in your case?
>>>
>>> gr. Martin
>>>
>>> Andre Pareis wrote:
>>>> Hi Martin,
>>>>
>>>> finally I have reduced the problem to a small test case. You should
>>>> be able to reconstruct the problem by executing the
>>>> com.pareis.trading.tests.ClientTest in the test plugin. It uses an
>>>> included hsqldb which creates its DB files under C:/Temp/options.
>>>> The model project has a dependency on an "org.hibernate" plugin
>>>> containing the hibernate libs but I'm sure you have something
>>>> similar to replace that with. The model is in the
>>>> model/options.ecore file but everything is generated. I'm on EMF
>>>> 2.2.1 stable.
>>>>
>>>> One more hint: As you can see in the model there are associations
>>>> between classes of different packages. This might also be a source
>>>> of the error.
>>>>
>>>> I really hope we can get this fixed otherwise I would have to use
>>>> non-appropriate one-to-many associations...
>>>>
>>>> Regards
>>>> Andre
>>>>
>>>>
>>>>
>>>> Martin Taal wrote:
>>>>> Hi,
>>>>> Strange. Which ereference is set?
>>>>> How does the database look like (tables and records in the table)?
>>>>> Do you see anything wrong there?
>>>>>
>>>>> Can you send me the ecore and a testcase to reproduce this?
>>>>>
>>>>> gr. Martin
>>>>>
>>>>> Andre Pareis wrote:
>>>>>> Here is the stack trace when I run into the code:
>>>>>>
>>>>>> 2034641 [main] ERROR
>>>>>> org.eclipse.emf.teneo.hibernate.HbStoreException - Exception when
>>>>>> saving resource trading
>>>>>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>>>>>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>>>>>> at
>>>>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>>>>>
>>>>>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>>>>>> at
>>>>>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>>>>>
>>>>>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>>>>>> at
>>>>>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>>>>>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>>>>>> at
>>>>>> org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>>>>>> at
>>>>>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>>>>>
>>>>>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>>>>>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>>>>>
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>>>>>>
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>>>>>
>>>>>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>>>>>> at
>>>>>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>>>>>> at
>>>>>> org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>>>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>>>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>>>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>>>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>>>>>> at
>>>>>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>>>>>>
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>>>>>
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>>>>>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>>>>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>>>>>
>>>>>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>>>>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>>>>>
>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>> at
>>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>>>>>
>>>>>> at
>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>>>>
>>>>>> at java.lang.reflect.Method.invoke(Method.java:585)
>>>>>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>>>>>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>>>>>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>>>>>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>>>>>
>>>>>> Andre Pareis wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> I'm having a problem reading back a previously successful stored
>>>>>>> one-to-one association. During load, a ClassCastException is
>>>>>>> thrown. I have attached two files, one with the model and the
>>>>>>> other one with a snapshot of the debugger showing the line which
>>>>>>> when executed produces a ClassCastException somewhere in the
>>>>>>> model code. That is, because the eInverseAdd is invoked with the
>>>>>>> wrong object.
>>>>>>>
>>>>>>> The debugger shows that target and value are the same object. The
>>>>>>> eReference value is strange, because there is actually no
>>>>>>> corresponding object for this association to be found in the DB.
>>>>>>>
>>>>>>> The only objects that are in the DB are the parent of the Yahoo
>>>>>>> object and the Yahoo object itself. The load of the parent and
>>>>>>> the Yahoo objects have been passed successfully. Normally, the
>>>>>>> load should have stopped already as there are no more objects to
>>>>>>> read - instead, it ends up as shown on the debugger screen.
>>>>>>>
>>>>>>> Any ideas?
>>>>>>>
>>>>>>> Thanks
>>>>>>> Andre
>>>>>>>
>>>>>>> ------------------------------------------------------------ ------------
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ------------------------------------------------------------ ------------
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>
>
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #595405 is a reply to message #60528] |
Fri, 10 November 2006 15:12 |
Andre Pareis Messages: 113 Registered: July 2009 |
Senior Member |
|
|
Hi Martin,
because I seriously needed this part of the model now, and after a few attempts
to solve the issue using annotations I gave up and changed the model to utilize
a one-to-many associations instead of many one-to-one's. SO basically I have
found my workaround and it is not urgent any more...
THanks
Andre
Martin Taal wrote:
> Hi Andre,
> I didn't have time to look at this issue. However today and tomorrow I
> will work on a number of Teneo issues. I will also look further at this
> one.
>
> Can you test if superclass (single-table) also fails?
>
> gr. Martin
>
> Andre Pareis wrote:
>> Hi Martin,
>>
>> I'm still having my time with that one...
>>
>> Do you have any idea what I could do as a temporary workaround?
>>
>> Can I disable the hibernate cache? Can I add some kind of annotation
>> to embed the owned object in the parent table? Should I use the
>> SUPERCLASS mapping?
>>
>> I really don't want to change my model to use one-to-many associations
>> only as I would lose the explicitness with that.
>>
>> Thanks
>> Andre
>>
>>
>> Martin Taal wrote:
>>> Hi Andre,
>>> This was/is a complex case. For me it works fine in case of a
>>> joined-subclass inheritance strategy but fails with single-table.
>>>
>>> After some debugging in Hibernate I can see that the following happens:
>>> When hibernate loads the vendors association it will also load the
>>> one-to-one mappings from Yahoo to YahooIndicesComponentsSource and
>>> YahooIndicesSeed. The onetoone mappings from Yahoo to the other
>>> objects use primary key association (see the hibernate manual for
>>> one-to-one) as a default. This means that when the vendors relation
>>> is read also its one-to-one's are read. Because they are all stored
>>> in one table and according to the mapping have the same id column
>>> Hibernate thinks that the one Yahoo record is a
>>> YahooIndicesComponentsSource and reads it from the db. Then when the
>>> Yahoo object is read it gets the already read
>>> YahooIndicesComponentsSource from the cache (as the id is the same
>>> and the table is the same) and then throws an error because it
>>> expects a Yahoo.
>>>
>>> At the moment I am not sure where the solution for this can be done.
>>> One thing I can think of is that Teneo should use foreign-key
>>> one-to-one instead of the now default primary key.
>>> Can you enter a bugzilla for this issue? Then I will look at it.
>>>
>>> As a workaround, does joined-subclass work in your case?
>>>
>>> gr. Martin
>>>
>>> Andre Pareis wrote:
>>>> Hi Martin,
>>>>
>>>> finally I have reduced the problem to a small test case. You should
>>>> be able to reconstruct the problem by executing the
>>>> com.pareis.trading.tests.ClientTest in the test plugin. It uses an
>>>> included hsqldb which creates its DB files under C:/Temp/options.
>>>> The model project has a dependency on an "org.hibernate" plugin
>>>> containing the hibernate libs but I'm sure you have something
>>>> similar to replace that with. The model is in the
>>>> model/options.ecore file but everything is generated. I'm on EMF
>>>> 2.2.1 stable.
>>>>
>>>> One more hint: As you can see in the model there are associations
>>>> between classes of different packages. This might also be a source
>>>> of the error.
>>>>
>>>> I really hope we can get this fixed otherwise I would have to use
>>>> non-appropriate one-to-many associations...
>>>>
>>>> Regards
>>>> Andre
>>>>
>>>>
>>>>
>>>> Martin Taal wrote:
>>>>> Hi,
>>>>> Strange. Which ereference is set?
>>>>> How does the database look like (tables and records in the table)?
>>>>> Do you see anything wrong there?
>>>>>
>>>>> Can you send me the ecore and a testcase to reproduce this?
>>>>>
>>>>> gr. Martin
>>>>>
>>>>> Andre Pareis wrote:
>>>>>> Here is the stack trace when I run into the code:
>>>>>>
>>>>>> 2034641 [main] ERROR
>>>>>> org.eclipse.emf.teneo.hibernate.HbStoreException - Exception when
>>>>>> saving resource trading
>>>>>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>>>>>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>>>>>> at
>>>>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>>>>>
>>>>>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>>>>>> at
>>>>>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>>>>>
>>>>>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>>>>>> at
>>>>>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>>>>>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>>>>>> at
>>>>>> org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>>>>>> at
>>>>>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>>>>>
>>>>>> at
>>>>>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>>>>>
>>>>>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>>>>>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>>>>>
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>>>>>>
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>>>>>
>>>>>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>>>>>> at
>>>>>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>>>>>> at
>>>>>> org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>>>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>>>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>>>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>>>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>>>>>> at
>>>>>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>>>>>>
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>>>>>
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>>>>>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>>>>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>>>>>> at
>>>>>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>>>>>
>>>>>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>>>>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>>>>>> at
>>>>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>>>>> at
>>>>>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>>>>>
>>>>>> at
>>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>>>>>
>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>> at
>>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>>>>>
>>>>>> at
>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>>>>
>>>>>> at java.lang.reflect.Method.invoke(Method.java:585)
>>>>>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>>>>>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>>>>>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>>>>>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>>>>>
>>>>>> Andre Pareis wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> I'm having a problem reading back a previously successful stored
>>>>>>> one-to-one association. During load, a ClassCastException is
>>>>>>> thrown. I have attached two files, one with the model and the
>>>>>>> other one with a snapshot of the debugger showing the line which
>>>>>>> when executed produces a ClassCastException somewhere in the
>>>>>>> model code. That is, because the eInverseAdd is invoked with the
>>>>>>> wrong object.
>>>>>>>
>>>>>>> The debugger shows that target and value are the same object. The
>>>>>>> eReference value is strange, because there is actually no
>>>>>>> corresponding object for this association to be found in the DB.
>>>>>>>
>>>>>>> The only objects that are in the DB are the parent of the Yahoo
>>>>>>> object and the Yahoo object itself. The load of the parent and
>>>>>>> the Yahoo objects have been passed successfully. Normally, the
>>>>>>> load should have stopped already as there are no more objects to
>>>>>>> read - instead, it ends up as shown on the debugger screen.
>>>>>>>
>>>>>>> Any ideas?
>>>>>>>
>>>>>>> Thanks
>>>>>>> Andre
>>>>>>>
>>>>>>> ------------------------------------------------------------ ------------
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ------------------------------------------------------------ ------------
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>
>
|
|
|
Re: [teneo] ClassCastException during read of one-to-one mapping [message #595444 is a reply to message #60568] |
Fri, 10 November 2006 20:08 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
Hi Andre,
Well I added the property-ref to the one-to-one and now the test cases pass (the joined passed
anyway, but now single-table also passed). Are you able to test this by manually adapting the hbm.xml?
The property-ref should contain the efeature name on the opposite side.
I should have read your post on 22/10/06 better as you already mentioned this...
gr. Martin
Andre Pareis wrote:
> Hi Martin,
>
> because I seriously needed this part of the model now, and after a few
> attempts to solve the issue using annotations I gave up and changed the
> model to utilize a one-to-many associations instead of many
> one-to-one's. SO basically I have found my workaround and it is not
> urgent any more...
>
> THanks
> Andre
>
>
> Martin Taal wrote:
>> Hi Andre,
>> I didn't have time to look at this issue. However today and tomorrow I
>> will work on a number of Teneo issues. I will also look further at
>> this one.
>>
>> Can you test if superclass (single-table) also fails?
>>
>> gr. Martin
>>
>> Andre Pareis wrote:
>>> Hi Martin,
>>>
>>> I'm still having my time with that one...
>>>
>>> Do you have any idea what I could do as a temporary workaround?
>>>
>>> Can I disable the hibernate cache? Can I add some kind of annotation
>>> to embed the owned object in the parent table? Should I use the
>>> SUPERCLASS mapping?
>>>
>>> I really don't want to change my model to use one-to-many
>>> associations only as I would lose the explicitness with that.
>>>
>>> Thanks
>>> Andre
>>>
>>>
>>> Martin Taal wrote:
>>>> Hi Andre,
>>>> This was/is a complex case. For me it works fine in case of a
>>>> joined-subclass inheritance strategy but fails with single-table.
>>>>
>>>> After some debugging in Hibernate I can see that the following happens:
>>>> When hibernate loads the vendors association it will also load the
>>>> one-to-one mappings from Yahoo to YahooIndicesComponentsSource and
>>>> YahooIndicesSeed. The onetoone mappings from Yahoo to the other
>>>> objects use primary key association (see the hibernate manual for
>>>> one-to-one) as a default. This means that when the vendors relation
>>>> is read also its one-to-one's are read. Because they are all stored
>>>> in one table and according to the mapping have the same id column
>>>> Hibernate thinks that the one Yahoo record is a
>>>> YahooIndicesComponentsSource and reads it from the db. Then when the
>>>> Yahoo object is read it gets the already read
>>>> YahooIndicesComponentsSource from the cache (as the id is the same
>>>> and the table is the same) and then throws an error because it
>>>> expects a Yahoo.
>>>>
>>>> At the moment I am not sure where the solution for this can be done.
>>>> One thing I can think of is that Teneo should use foreign-key
>>>> one-to-one instead of the now default primary key.
>>>> Can you enter a bugzilla for this issue? Then I will look at it.
>>>>
>>>> As a workaround, does joined-subclass work in your case?
>>>>
>>>> gr. Martin
>>>>
>>>> Andre Pareis wrote:
>>>>> Hi Martin,
>>>>>
>>>>> finally I have reduced the problem to a small test case. You should
>>>>> be able to reconstruct the problem by executing the
>>>>> com.pareis.trading.tests.ClientTest in the test plugin. It uses an
>>>>> included hsqldb which creates its DB files under C:/Temp/options.
>>>>> The model project has a dependency on an "org.hibernate" plugin
>>>>> containing the hibernate libs but I'm sure you have something
>>>>> similar to replace that with. The model is in the
>>>>> model/options.ecore file but everything is generated. I'm on EMF
>>>>> 2.2.1 stable.
>>>>>
>>>>> One more hint: As you can see in the model there are associations
>>>>> between classes of different packages. This might also be a source
>>>>> of the error.
>>>>>
>>>>> I really hope we can get this fixed otherwise I would have to use
>>>>> non-appropriate one-to-many associations...
>>>>>
>>>>> Regards
>>>>> Andre
>>>>>
>>>>>
>>>>>
>>>>> Martin Taal wrote:
>>>>>> Hi,
>>>>>> Strange. Which ereference is set?
>>>>>> How does the database look like (tables and records in the table)?
>>>>>> Do you see anything wrong there?
>>>>>>
>>>>>> Can you send me the ecore and a testcase to reproduce this?
>>>>>>
>>>>>> gr. Martin
>>>>>>
>>>>>> Andre Pareis wrote:
>>>>>>> Here is the stack trace when I run into the code:
>>>>>>>
>>>>>>> 2034641 [main] ERROR
>>>>>>> org.eclipse.emf.teneo.hibernate.HbStoreException - Exception
>>>>>>> when saving resource trading
>>>>>>> java.lang.ClassCastException: com.pareis.trading.yahoo.Yahoo
>>>>>>> at com.pareis.trading.yahoo.Yahoo.eInverseAdd(Yahoo.java:404)
>>>>>>> at
>>>>>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(Basi cEObjectImpl.java:985)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.hibernate.mapping.property.EReferenceP ropertyHandler.set(EReferencePropertyHandler.java:124)
>>>>>>>
>>>>>>> at
>>>>>>> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropert yValues(AbstractEntityTuplizer.java:337)
>>>>>>>
>>>>>>> at
>>>>>>> org.hibernate.persister.entity.AbstractEntityPersister.setPr opertyValues(AbstractEntityPersister.java:3499)
>>>>>>>
>>>>>>> at
>>>>>>> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseL oad.java:129)
>>>>>>>
>>>>>>> at
>>>>>>> org.hibernate.loader.Loader.initializeEntitiesAndCollections (Loader.java:842)
>>>>>>>
>>>>>>> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
>>>>>>> at
>>>>>>> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyColle ctions(Loader.java:224)
>>>>>>>
>>>>>>> at org.hibernate.loader.Loader.doList(Loader.java:2144)
>>>>>>> at
>>>>>>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java :2028)
>>>>>>> at org.hibernate.loader.Loader.list(Loader.java:2023)
>>>>>>> at
>>>>>>> org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:3 93)
>>>>>>> at
>>>>>>> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslat orImpl.java:338)
>>>>>>>
>>>>>>> at
>>>>>>> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQuery Plan.java:172)
>>>>>>>
>>>>>>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>>>>>>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadUsingTopClasses(HibernateResource.java:319)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadFromStore(HibernateResource.java:305)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.hibernate.resource.HibernateResource.l oadResource(HibernateResource.java:260)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.resource.StoreResource.load(StoreResou rce.java:236)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo ad(ResourceSetImpl.java:249)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLo adHelper(ResourceSetImpl.java:264)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResou rce(ResourceSetImpl.java:390)
>>>>>>>
>>>>>>> at
>>>>>>> com.pareis.trading.ui.TradingEditor.createModel(TradingEdito r.java:796)
>>>>>>>
>>>>>>> at
>>>>>>> com.pareis.trading.ui.TradingEditor.createPages(TradingEdito r.java:851)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.part.MultiPageEditorPart.createPartControl(Mu ltiPageEditorPart.java:276)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:596)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:372)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:566)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:29 0)
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.presentations.PresentablePart.setVis ible(PresentablePart.java:140)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.presentations.util.PresentablePartFo lder.select(PresentablePartFolder.java:268)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrd er.select(LeftToRightTabOrder.java:65)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.presentations.util.TabbedStackPresen tation.selectPart(TabbedStackPresentation.java:394)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.PartStack.refreshPresentationSelecti on(PartStack.java:1144)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.jav a:1097)
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.PartStack.showPart(PartStack.java:13 11)
>>>>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
>>>>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102 )
>>>>>>> at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
>>>>>>> at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111 )
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.EditorSashContainer.addEditor(Editor SashContainer.java:60)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorA reaHelper.java:217)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAre aHelper.java:207)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.EditorManager.createEditorTab(Editor Manager.java:820)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.EditorManager.openEditorFromDescript or(EditorManager.java:719)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.EditorManager.openEditor(EditorManag er.java:680)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched( WorkbenchPage.java:2593)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(Workben chPage.java:2528)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPag e.java:2520)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.ja va:2505)
>>>>>>> at
>>>>>>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:67)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2500)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPa ge.java:2477)
>>>>>>>
>>>>>>> at
>>>>>>> com.pareis.trading.ui.TradingEditorAdvisor.openEditor(Tradin gEditorAdvisor.java:440)
>>>>>>>
>>>>>>> at
>>>>>>> com.pareis.trading.ui.TradingEditorAdvisor$WindowAdvisor.pos tWindowOpen(TradingEditorAdvisor.java:177)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(Wor kbenchWindow.java:1128)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow .java:685)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.Workbench.openWindowsAfterRestore(Wo rkbench.java:2886)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1686)
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1 650)
>>>>>>> at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529 )
>>>>>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.Workbench.restoreState(Workbench.jav a:1473)
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(Wor kbenchConfigurer.java:183)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(Work benchAdvisor.java:702)
>>>>>>>
>>>>>>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>>>>>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>>>>>>> at
>>>>>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:419)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>>>>>> at
>>>>>>> com.pareis.trading.ui.TradingEditorAdvisor$Application.run(T radingEditorAdvisor.java:97)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.java:78)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:92)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:68)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:400)
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:177)
>>>>>>>
>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>> at
>>>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>>>>>>>
>>>>>>> at
>>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>>>>>
>>>>>>> at java.lang.reflect.Method.invoke(Method.java:585)
>>>>>>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336 )
>>>>>>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>>>>>>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>>>>>>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>>>>>>
>>>>>>> Andre Pareis wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I'm having a problem reading back a previously successful stored
>>>>>>>> one-to-one association. During load, a ClassCastException is
>>>>>>>> thrown. I have attached two files, one with the model and the
>>>>>>>> other one with a snapshot of the debugger showing the line which
>>>>>>>> when executed produces a ClassCastException somewhere in the
>>>>>>>> model code. That is, because the eInverseAdd is invoked with the
>>>>>>>> wrong object.
>>>>>>>>
>>>>>>>> The debugger shows that target and value are the same object.
>>>>>>>> The eReference value is strange, because there is actually no
>>>>>>>> corresponding object for this association to be found in the DB.
>>>>>>>>
>>>>>>>> The only objects that are in the DB are the parent of the Yahoo
>>>>>>>> object and the Yahoo object itself. The load of the parent and
>>>>>>>> the Yahoo objects have been passed successfully. Normally, the
>>>>>>>> load should have stopped already as there are no more objects to
>>>>>>>> read - instead, it ends up as shown on the debugger screen.
>>>>>>>>
>>>>>>>> Any ideas?
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>> Andre
>>>>>>>>
>>>>>>>> ------------------------------------------------------------ ------------
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> ------------------------------------------------------------ ------------
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>
>>
--
With Regards, Martin Taal
Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
|
Goto Forum:
Current Time: Sat Oct 19 07:41:27 GMT 2024
Powered by FUDForum. Page generated in 0.12167 seconds
|