avro-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gabor Szadovszky (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (AVRO-1605) Remove Jackson classes from public API
Date Tue, 06 Dec 2016 11:11:30 GMT

    [ https://issues.apache.org/jira/browse/AVRO-1605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15725006#comment-15725006

Gabor Szadovszky commented on AVRO-1605:

Thanks for the reply, [~rdblue].

I completely agree that we should not commit half-ready changes or changes that we already
know will be removed later.

What I was trying to explain is that I can see the following approaches to get rid of jackson
classes from the public API:
* Rewrite the code base to not to use the jackson json object structure neither public nor
internally. In this case we shall use jackson for only mapping the json structure to our own
object structure. Currently, we have some classes that use the jackson json object structure
quite intensively (e.g. the generated class {{Idl}}). I don't know how much effort would it
require to do this change neither if it would worth it.
* Keep using the jackson json object structure but only inside the packages. Between the packages
the public API is used with converting the internal jackson json object representation to
the public object types and vice-versa. Another idea would be to restructure the related classes
to have them in the same package so package private visibility would be used easily. I don't
think it is feasible for the current Avro code base and I am not sure it would be the best
idea as packages used for not only controlling visibility but for adding some semantic structuring.

* Keep the jackson json object structure used internally and use whatever techniques to hide
them from the public API. One way is the friend packages suggested by [~tomwhite]. I think
it is a completely acceptable approach for kind of extending the original java visibility

I would vote on the latter one.

> Remove Jackson classes from public API
> --------------------------------------
>                 Key: AVRO-1605
>                 URL: https://issues.apache.org/jira/browse/AVRO-1605
>             Project: Avro
>          Issue Type: Sub-task
>          Components: java
>    Affects Versions: 1.7.8
>            Reporter: Tom White
>            Assignee: Gabor Szadovszky
>             Fix For: 1.9.0

This message was sent by Atlassian JIRA

View raw message