Uploaded image for project: 'yangtools'
  1. yangtools
  2. YANGTOOLS-127

yang-data-api: ClassCastException when serializing enums

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved
    • Resolution: Duplicate
    • None
    • None
    • None
    • None
    • Operating System: All
      Platform: All

    • 646

    Description

      I am testing minimal toaster distro found here:
      https://git.opendaylight.org/gerrit/#/c/5825/

      Steps to reproduce:
      run odl with toaster
      do
      curl http://localhost:8080/restconf/operational/toaster:toaster/ -v
      An exception appears in logs: (some JSON is returned to the http client)

      2014-04-02 08:56:44.325 CEST [qtp1112930044-117] ERROR o.o.c.sal.restconf.impl.RestCodec - ClassCastException was thrown when codec is invoked with parameter Up
      java.lang.ClassCastException: org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.Toaster$ToasterStatus cannot be cast to java.lang.String
      at org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec$EnumCodecStringImpl.serialize(TypeDefinitionAwareCodec.java:509) ~[bundlefile:na]
      at org.opendaylight.controller.sal.restconf.impl.RestCodec$ObjectCodec.serialize(RestCodec.java:135) ~[bundlefile:na]
      at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeValueOfNodeByType(JsonMapper.java:240) [bundlefile:na]
      at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeLeaf(JsonMapper.java:193) [bundlefile:na]
      at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeChildrenOfParent(JsonMapper.java:118) [bundlefile:na]
      at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeContainer(JsonMapper.java:154) [bundlefile:na]
      at org.opendaylight.controller.sal.rest.impl.JsonMapper.write(JsonMapper.java:70) [bundlefile:na]
      at org.opendaylight.controller.sal.rest.impl.StructuredDataToJsonProvider.writeTo(StructuredDataToJsonProvider.java:61) [bundlefile:na]
      at org.opendaylight.controller.sal.rest.impl.StructuredDataToJsonProvider.writeTo(StructuredDataToJsonProvider.java:33) [bundlefile:na]
      at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306) [jersey-server-1.17.jar:1.17]
      at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1479) [jersey-server-1.17.jar:1.17]
      at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391) [jersey-server-1.17.jar:1.17]
      at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381) [jersey-server-1.17.jar:1.17]
      at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) [bundlefile:na]
      at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538) [bundlefile:na]
      at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716) [bundlefile:na]
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [bundlefile:3.1.0]
      at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:711) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:568) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1112) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:479) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1046) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:199) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.server.Server.handle(Server.java:462) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:281) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:232) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.io.AbstractConnection$1.run(AbstractConnection.java:505) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607) [bundlefile:9.1.3.v20140225]
      at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536) [bundlefile:9.1.3.v20140225]
      at java.lang.Thread.run(Thread.java:744) [na:1.7.0_51]


      This is probably related to the fact that org.opendaylight.yangtools.yang.data.api.codec.EnumCodec#serialize has String parameter and ToasterStatus is an enum? Deserialization also looks suspicious IMO

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              lborak@cisco.com Ladislav Borak
              tolvecky@cisco.com Tomas Olvecky
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: