[ 
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 possibilities.

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
(v6.3.4#6332)

Reply via email to