Hi Colin,

I was thinking about the API and the fact that the AdminClient will be used
by a variety of somewhat unrelated things (unlike the Consumer and
Producer), so I think we should consider an approach where not all the
methods are at the top-level. One idea is that you could perform operations
on topics by doing something like `adminClient.topics().create(...)`,
`adminClient.topics().delete(...)`, `adminClient.topics().describe(...)`,
etc. This is just an initial sketch to describe the idea, but I think it
would be a nice way to group methods by the relevant resource. It would
also make it easier to enforce consistency by using shared interfaces for
the types returned by the resource method (e.g. `topics()`, `acls()`, etc.).

One additional comment inline.

On Fri, Feb 3, 2017 at 6:40 PM, Colin McCabe <cmcc...@apache.org> wrote:
>
> I guess my thought process was that users might find it confusing if the
> public API and the old private API had the same name.  "What do you
> mean, I have to upgrade to release X to get AdminClient, I have it right
> here?"  I do have a slight preference for the shorter name, though, so
> if this isn't a worry, we can change it to AdminClient.
>

Yes, I don't think this is a worry. The package name and implementation
language are different, so it's easy enough to distinguish. We should not
choose a worse name for a public class because of an internal class, as a
general rule, in my opinion.

More to follow later.

Ismael

Reply via email to