Andy Le created AVRO-2775:
-----------------------------

             Summary: JacksonUtils: exception when calling toJsonNode() 
                 Key: AVRO-2775
                 URL: https://issues.apache.org/jira/browse/AVRO-2775
             Project: Apache Avro
          Issue Type: Bug
          Components: java
    Affects Versions: 1.9.2
            Reporter: Andy Le


I've got a simple test as followed


{code:java}
public class TestJacksonUtils {
  public static class Age{
    public int value = 9;
  }

  @Test
  public void testToJson(){
    Map<String, Object> kv = new HashMap<>();
    kv.put("age", 9);
    JsonNode node1 = JacksonUtils.toJsonNode(kv); // -> This is OK
    Object obj = new Age();
    JsonNode node2 = JacksonUtils.toJsonNode(obj); // -> This will trigger an 
exception
  }
}
{code}

When I ran the test:

{noformat}
org.apache.avro.AvroRuntimeException: Unknown datum class: class 
org.apache.avro.util.internal.TestJacksonUtils$Age

        at 
org.apache.avro.util.internal.JacksonUtils.toJson(JacksonUtils.java:87)
        at 
org.apache.avro.util.internal.JacksonUtils.toJsonNode(JacksonUtils.java:48)
        at 
org.apache.avro.util.internal.TestJacksonUtils.testToJson(TestJacksonUtils.java:20)
{noformat}

I've read the code & tests for JacksonUtils. Instead of raising exceptions at 
[line 
#87|https://github.com/apache/avro/blob/master/lang/java/avro/src/main/java/org/apache/avro/util/internal/JacksonUtils.java#L87],
 I see we can auto convert objects into maps, every thing's gonna fine.

My question is:

- Is raising exception acceptable?

- Any other way to have `toJsonNode` for general objects?




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to