+1 for ismael's suggestion.  grouping of methods by the relevant resource
will simply the
API. In future, we will be adding delegation token related operations to
admin client.
I can imagine methods like adminClient.token().create(...),
adminClient.token().renew(...), etc..


Thanks,
Manikumar

On Sun, Feb 5, 2017 at 7:27 PM, Ismael Juma <ism...@juma.me.uk> wrote:

> 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