Notice: In order to edit this ticket you need to be either: a Product Owner, The owner or the reporter of the ticket, or, in case of a Task not yet assigned, a team_member"

Task #8908 (closed)

Opened 7 years ago

Closed 7 years ago

Bug: Class Cast Exception (DetailsI to ObjectI)

Reported by: jburel Owned by: jamoore
Priority: critical Milestone: OMERO-4.4
Component: Services Version: n.a.
Keywords: n.a. Cc: cblackburn, sylittlewood
Resources: n.a. Referenced By: n.a.
References: n.a. Remaining Time: n.a.
Sprint: 2012-06-05 (16)

Description

The following java test testResetDefaultInSetForScreen in integration/RenderingSettingsServiceTest leads to the following exception.

testResetDefaultInSetForScreen on instance null(integration.RenderingSettingsServiceTest) 	0.911s 	omero.InternalException
    serverStackTrace = "java.lang.ClassCastException: ome.model.internal.Details$1 cannot be cast to ome.model.IObject
                        at omero.util.IceMapper.reverse(IceMapper.java:949)
                        at omero.model.ImageI.fillDetails(ImageI.java:222)
                        at omero.model.ImageI.fillObject(ImageI.java:1213)
                        at omero.util.IceMapper.reverse(IceMapper.java:953)
                        at omero.model.WellSampleI.fillImage(WellSampleI.java:188)
                        at omero.model.WellSampleI.fillObject(WellSampleI.java:548)
                        at omero.util.IceMapper.reverse(IceMapper.java:953)
                        at omero.util.IceMapper.reverse(IceMapper.java:798)
                        at omero.util.IceMapper.reverse(IceMapper.java:862)
                        at omero.model.WellI.fillWellSamples(WellI.java:392)
                        at omero.model.WellI.fillObject(WellI.java:710)
                        at omero.util.IceMapper.reverse(IceMapper.java:953)
                        at omero.util.IceMapper.reverse(IceMapper.java:798)
                        at omero.util.IceMapper.reverse(IceMapper.java:862)
                        at omero.model.PlateI.fillWells(PlateI.java:676)
                        at omero.model.PlateI.fillObject(PlateI.java:1112)
                        at omero.util.IceMapper.reverse(IceMapper.java:953)
                        at omero.model.ScreenPlateLinkI.fillChild(ScreenPlateLinkI.java:177)
                        at omero.model.ScreenPlateLinkI.fillObject(ScreenPlateLinkI.java:229)
                        at omero.util.IceMapper.reverse(IceMapper.java:953)
                        at omero.util.IceMapper.handleInput(IceMapper.java:1055)
                        at ome.services.blitz.util.IceMethodInvoker.arguments(IceMethodInvoker.java:229)
                        at ome.services.blitz.util.IceMethodInvoker.invoke(IceMethodInvoker.java:175)
                        at ome.services.throttling.Callback.run(Callback.java:56)
                        at ome.services.throttling.InThreadThrottlingStrategy.callInvokerOnRawArgs(InThreadThrottlingStrategy.java:56)
                        at ome.services.blitz.impl.AbstractAmdServant.callInvokerOnRawArgs(AbstractAmdServant.java:137)
                        at ome.services.blitz.impl.UpdateI.saveAndReturnObject_async(UpdateI.java:64)
                        at sun.reflect.GeneratedMethodAccessor772.invoke(Unknown Source)
                        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                        at java.lang.reflect.Method.invoke(Method.java:597)
                        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
                        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
                        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
                        at omero.cmd.CallContext.invoke(CallContext.java:59)
                        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
                        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
                        at $Proxy88.saveAndReturnObject_async(Unknown Source)
                        at omero.api._IUpdateTie.saveAndReturnObject_async(_IUpdateTie.java:92)
                        at omero.api._IUpdateDisp.___saveAndReturnObject(_IUpdateDisp.java:185)
                        at omero.api._IUpdateDisp.__dispatch(_IUpdateDisp.java:365)
                        at IceInternal.Incoming.invoke(Incoming.java:159)
                        at Ice.ConnectionI.invokeAll(ConnectionI.java:2037)
                        at Ice.ConnectionI.message(ConnectionI.java:972)
                        at IceInternal.ThreadPool.run(ThreadPool.java:577)
                        at IceInternal.ThreadPool.access$100(ThreadPool.java:12)
                        at IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:971)
                        "
    serverExceptionClass = "java.lang.ClassCastException"
    message = "ome.model.internal.Details$1 cannot be cast to ome.model.IObject"

Change History (3)

comment:1 Changed 7 years ago by cblackburn

I'm seeing the same exception in a couple of tests in integration/ishare.py.

comment:2 Changed 7 years ago by cblackburn

  • Summary changed from Bug: Class Cast Exception to Bug: Class Cast Exception (DetailsI to ObjectI)

comment:3 Changed 7 years ago by jmoore

  • Resolution set to fixed
  • Sprint set to 2012-06-05 (16)
  • Status changed from new to closed

Fixed and pushing to schema branch:

commit 2fff5b683cf1169e23ec7a18e1b3dc1c25399ee6
Author: jmoore <josh@glencoesoftware.com>
Date:   Tue May 29 08:46:02 2012 +0200

    Fix ClassCastException of Details (Fix #8908)
    
    I'm not sure what changed to make this now throw,
    but the return type of the failing method is
    Filterable rather than IObject so there's no need
    to be so strict.

diff --git a/components/blitz/src/omero/util/IceMapper.java b/components/blitz/src/omero/util/IceMapper.java
index 586500c..c2f5638 100644
--- a/components/blitz/src/omero/util/IceMapper.java
+++ b/components/blitz/src/omero/util/IceMapper.java
@@ -946,7 +946,7 @@ public class IceMapper extends ome.util.ModelMapper implements
 
         } else if (target2model.containsKey(source)) {
 
-            return (ome.model.IObject) target2model.get(source);
+            return (Filterable) target2model.get(source);^M
Note: See TracTickets for help on using tickets. You may also have a look at Agilo extensions to the ticket.

1.3.13-PRO © 2008-2011 Agilo Software all rights reserved (this page was served in: 0.76977 sec.)

We're Hiring!