[YANGTOOLS-263] Generated object cannot be cast to Set Exception Created: 12/Aug/14  Updated: 10/Apr/22  Resolved: 20/Aug/14

Status: Resolved
Project: yangtools
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: Dana Kutenicsova Assignee: Tony Tkacik
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: Linux
Platform: PC


External issue ID: 1531
Priority: Normal

 Description   

grouping error-spec {

leaf node

{ type inet:ip-address; mandatory true; }

leaf flags {
type bits {
bit in-place

{ position 7; }

bit not-guilty

{ position 6; }

}
}
....
}

2014-08-12 06:38:43.710 PDT [http-bio-8080-exec-7] ERROR o.o.c.sal.restconf.impl.RestCodec - ClassCastException was thrown when codec is invoked with parameter Flags [_inPlace=false, _notGuilty=false]
java.lang.ClassCastException: org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.ErrorSpec$Flags cannot be cast to java.util.Set
at org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec$BitsCodecStringImpl.serialize(TypeDefinitionAwareCodec.java:481) ~[bundlefile:na]
at org.opendaylight.controller.sal.restconf.impl.RestCodec$ObjectCodec.serialize(RestCodec.java:140) ~[bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeValueOfNodeByType(JsonMapper.java:282) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeLeaf(JsonMapper.java:235) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeChildrenOfParent(JsonMapper.java:127) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeContainer(JsonMapper.java:195) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeChildrenOfParent(JsonMapper.java:109) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeContainer(JsonMapper.java:195) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeChildrenOfParent(JsonMapper.java:109) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeContainer(JsonMapper.java:195) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeChildrenOfParent(JsonMapper.java:109) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeContainer(JsonMapper.java:195) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeChildrenOfParent(JsonMapper.java:109) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeList(JsonMapper.java:208) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeChildrenOfParent(JsonMapper.java:115) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeList(JsonMapper.java:208) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeChildrenOfParent(JsonMapper.java:115) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeContainer(JsonMapper.java:195) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeChildrenOfParent(JsonMapper.java:109) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.writeList(JsonMapper.java:213) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.JsonMapper.write(JsonMapper.java:72) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.StructuredDataToJsonProvider.writeTo(StructuredDataToJsonProvider.java:67) [bundlefile:na]
at org.opendaylight.controller.sal.rest.impl.StructuredDataToJsonProvider.writeTo(StructuredDataToJsonProvider.java:31) [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:848) [bundlefile:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) [bundlefile:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) [bundlefile:na]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) [bundlefile:na]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) [bundlefile:na]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581) [bundlefile:na]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) [bundlefile:na]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) [bundlefile:na]
at org.opendaylight.controller.filtervalve.cors.FilterValve$1.doFilter(FilterValve.java:53) [bundlefile:na]
at org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:440) [bundlefile:na]
at org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:179) [bundlefile:na]
at org.opendaylight.controller.filtervalve.cors.model.FilterProcessor$1.doFilter(FilterProcessor.java:61) [bundlefile:na]
at org.opendaylight.controller.filtervalve.cors.model.FilterProcessor.process(FilterProcessor.java:66) [bundlefile:na]
at org.opendaylight.controller.filtervalve.cors.FilterValve.invoke(FilterValve.java:56) [bundlefile:na]
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) [bundlefile:na]
at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:309) [bundlefile:na]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) [bundlefile:na]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) [bundlefile:na]
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) [bundlefile:na]
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) [bundlefile:na]
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) [bundlefile:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.7.0_60]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.7.0_60]
at java.lang.Thread.run(Unknown Source) [na:1.7.0_60]



 Comments   
Comment by Robert Varga [ 12/Aug/14 ]

Raising priority, as it blocks BGPCEP testing.

Comment by Jozef Gloncak [ 13/Aug/14 ]

When for BitsCodecStringImpl was created it was specified that during serialization input value will be Set of Strings in this case the input value was of type org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.ErrorSpec$Flags.

If serialize method should be able to accept generated classes for bits (in this example Flags generated class) then there is several problems (questions):

  • what will be type of input data parameter of serialize method (just Object?)
  • how should be done mapping of bits names from BytsTypeDefinition to is*() method in generated class (example: in yang there is bit in-place, bit not-guilty which is mapped to isInPlace(), isNotGuilty(). Could it be done as searching in*place in list of available method via reflection?)
  • if some of is*() method return true then it will be translated to corresponding yang bit name? (e.g. if isInPlace() == true and isNotGuilty() == true then output contains "in-place not-guilty".
Comment by Jozef Gloncak [ 15/Aug/14 ]

Problem could be:

  • solved during last two weeks
  • or still persist until and could be somewhere during data transformation between Binding Aware Data Broker and Binging Indepedent Data Broker.

Dana should try to replicate.

Comment by Dana Kutenicsova [ 15/Aug/14 ]

Still present in build from Aug 15, 2014 1:32:24 PM

Comment by Tony Tkacik [ 19/Aug/14 ]

https://git.opendaylight.org/gerrit/10058

Generated at Wed Feb 07 20:52:43 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.