snowdrop / istio-java-api

A Java API to generate Istio descriptors, inspired by Fabric8's kubernetes-model.
Apache License 2.0
112 stars 33 forks source link

Error in Virtual Service Spec Deserialization #69

Closed sureshsmvc closed 5 years ago

sureshsmvc commented 5 years ago

Error in deserializing VirtualService configuration for the below spec istio-java-api version - 0.12

Spec

{
  "apiVersion": "networking.istio.io/v1alpha3",
  "kind": "VirtualService",
  "metadata": {
    "name": "ratings-route"
  },
  "spec": {
    "hosts": [
      "ratings.prod.svc.cluster.local"
    ],
    "http": [
      {
        "match": [
          {
            "headers": {
              "end-user": {
                "exact": "jason"
              }
            },
            "uri": {
              "prefix": "/ratings/v2/"
            }
          }
        ],
        "route": [
          {
            "destination": {
              "host": "ratings.prod.svc.cluster.local"
            }
          }
        ]
      }
    ]
  }
}

Error

Caused by: com.fasterxml.jackson.databind.JsonMappingException: Couldn't create an instance of java.util.Map (through reference chain: me.snowdrop.istio.api.model.v1.networking.VirtualService["http"]->java.util.ArrayList[0]->me.snowdrop.istio.api.model.v1.networking.HTTPRoute["match"]->java.util.ArrayList[0]->me.snowdrop.istio.api.model.v1.networking.HTTPMatchRequest["headers"]->java.util.LinkedHashMap["end-user"])
    at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:394)
    at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:353)
    at com.fasterxml.jackson.databind.deser.std.ContainerDeserializerBase.wrapAndThrow(ContainerDeserializerBase.java:181)
    at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:539)
    at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:364)
    at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:29)
    at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:286)
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27)
    at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:286)
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27)
    at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
    at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:3984)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2276)
    at com.fasterxml.jackson.databind.ObjectMapper.treeToValue(ObjectMapper.java:2758)
    at me.snowdrop.istio.api.internal.IstioDeserializer.getIstioSpec(IstioDeserializer.java:58)
    at me.snowdrop.istio.api.internal.IstioDeserializer.deserialize(IstioDeserializer.java:49)
    at me.snowdrop.istio.api.internal.IstioDeserializer.deserialize(IstioDeserializer.java:25)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3004)

Caused by: java.lang.RuntimeException: Couldn't create an instance of java.util.Map
    at me.snowdrop.istio.api.internal.ClassWithInterfaceFieldsDeserializer.deserialize(ClassWithInterfaceFieldsDeserializer.java:69)
    at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:527)
    ... 166 common frames omitted
Caused by: java.lang.InstantiationException: java.util.Map
    at java.lang.Class.newInstance(Class.java:427)
    at me.snowdrop.istio.api.internal.ClassWithInterfaceFieldsDeserializer.deserialize(ClassWithInterfaceFieldsDeserializer.java:67)
    ... 167 common frames omitted
Caused by: java.lang.NoSuchMethodException: java.util.Map.<init>()
    at java.lang.Class.getConstructor0(Class.java:3082)
    at java.lang.Class.newInstance(Class.java:412)
    ... 168 common frames omitted
metacosm commented 5 years ago

Please use the latest 1.1.0 version.