emfjson / emfjson-jackson

JSON Binding for Eclipse Modeling Framework
https://emfjson.github.io
Other
80 stars 23 forks source link

incompatible with jackson 2.12.1 #114

Open juergen-albert opened 3 years ago

juergen-albert commented 3 years ago

I've updated jackson from 2.11.2 ot 2.12.1 and the following error appears on Resource save:

com.fasterxml.jackson.databind.JsonMappingException: Cannot create TypeBindings for class org.gecko.emf.osgi.model.test.Address with 1 type parameter: class expects 0
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._wrapAsIOE(DefaultSerializerProvider.java:509)
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:482)
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
    at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1514)
    at com.fasterxml.jackson.databind.ObjectWriter._writeValueAndClose(ObjectWriter.java:1215)
    at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:1043)
    at org.gecko.emf.osgi.json.configuration.ConfigurableJsonResource.doSave(ConfigurableJsonResource.java:210)
    at org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(ResourceImpl.java:1475)
    at org.gecko.emf.osgi.json.JsonConfiguratorTest.test(JsonConfiguratorTest.java:79)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
Caused by: java.lang.IllegalArgumentException: Cannot create TypeBindings for class org.gecko.emf.osgi.model.test.Address with 1 type parameter: class expects 0
    at com.fasterxml.jackson.databind.type.TypeBindings.create(TypeBindings.java:126)
    at com.fasterxml.jackson.databind.type.TypeFactory.constructReferenceType(TypeFactory.java:1043)
    at org.emfjson.jackson.databind.type.EcoreTypeFactory.constructReferenceType(EcoreTypeFactory.java:99)
    at org.emfjson.jackson.databind.type.EcoreTypeFactory.typeOf(EcoreTypeFactory.java:79)
    at org.emfjson.jackson.databind.type.EcoreTypeFactory.typeOf(EcoreTypeFactory.java:61)
    at org.emfjson.jackson.databind.property.EObjectPropertyMap$Builder.createFeatureProperty(EObjectPropertyMap.java:122)
    at org.emfjson.jackson.databind.property.EObjectPropertyMap$Builder.createPropertyMap(EObjectPropertyMap.java:98)
    at org.emfjson.jackson.databind.property.EObjectPropertyMap$Builder.construct(EObjectPropertyMap.java:59)
    at org.emfjson.jackson.databind.ser.EObjectSerializer.serialize(EObjectSerializer.java:43)
    at org.emfjson.jackson.databind.ser.EObjectSerializer.serialize(EObjectSerializer.java:26)
    at org.emfjson.jackson.databind.ser.ResourceSerializer.serializeOne(ResourceSerializer.java:45)
    at org.emfjson.jackson.databind.ser.ResourceSerializer.serialize(ResourceSerializer.java:30)
    at org.emfjson.jackson.databind.ser.ResourceSerializer.serialize(ResourceSerializer.java:23)
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
    ... 30 more

I'd like to provide a fix, but I'm a bit lost at the moment, where to start.

kentxu commented 3 years ago

Also ran into this. Eclipse 2021-06 release ships with jackson 2.12.1. The problem goes away after downgrading jackson to 2.9.x.

java.lang.IllegalArgumentException: Cannot create TypeBindings for class com.test.model.Card with 1 type parameter: class expects 0 at com.fasterxml.jackson.databind.type.TypeBindings.create(TypeBindings.java:126) at com.fasterxml.jackson.databind.type.TypeFactory.constructReferenceType(TypeFactory.java:1043) at org.emfjson.jackson.databind.type.EcoreTypeFactory.constructReferenceType(EcoreTypeFactory.java:99) at org.emfjson.jackson.databind.type.EcoreTypeFactory.typeOf(EcoreTypeFactory.java:84) at org.emfjson.jackson.databind.type.EcoreTypeFactory.typeOf(EcoreTypeFactory.java:61) at org.emfjson.jackson.databind.property.EObjectPropertyMap$Builder.createFeatureProperty(EObjectPropertyMap.java:122) at org.emfjson.jackson.databind.property.EObjectPropertyMap$Builder.createPropertyMap(EObjectPropertyMap.java:98) at org.emfjson.jackson.databind.property.EObjectPropertyMap$Builder.construct(EObjectPropertyMap.java:59) at org.emfjson.jackson.databind.property.EObjectPropertyMap$Builder.lambda$buildCache$3(EObjectPropertyMap.java:76) at java.base/java.lang.Iterable.forEach(Unknown Source) at org.emfjson.jackson.databind.property.EObjectPropertyMap$Builder.buildCache(EObjectPropertyMap.java:76) at org.emfjson.jackson.databind.property.EObjectPropertyMap$Builder.construct(EObjectPropertyMap.java:53) at org.emfjson.jackson.databind.property.EObjectPropertyMap$Builder.constructDefault(EObjectPropertyMap.java:182) at org.emfjson.jackson.databind.deser.EObjectDeserializer.deserialize(EObjectDeserializer.java:64) at org.emfjson.jackson.databind.deser.EObjectDeserializer.deserialize(EObjectDeserializer.java:38) at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:322) at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2033) at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1491)