Github user bzz commented on the issue:
https://github.com/apache/zeppelin/pull/1277
First of all - I appreciate you patience and attention to details and your
code looks great. There are few design aspects of it I wanted to discuss with
you here
From the diff tab:
> +116 â36 Options
This approach, namely, extracting `RevisionId` looks interesting, but in
this particular case it brings 80 new LOC, add extra class and uses generics,
parameterized types, `instance of` and a wildcard.
If I try to understand, what are the benefits of `Something<?>` compared
to `Something`, given that `Something` is not some kind of collection, but I'm
having hard time doing it. I think there are none, and Java Language
Specification, section [4.8 Raw
Types](https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.8)
support my guess
>Raw types are closely related to wildcards. Both are based on existential
types. Raw types can be thought of as wildcards whose type rules are
deliberately unsound, to accommodate interaction with legacy code.
Historically, raw types preceded wildcards;
-----
I think we are on the way of coming up with a better design here together,
so let's try to follow Occam's razor design principle and think in term of API.
First of all, here is current problem, how I see: we are talking about
design of the "Notebook Repository subsystem or API" that abstracts (hides all
implementation details of) the process of getting an information about
notebooks and it's lineage from the persistent storage.
This subsystem provides a _public and uniform API_ for all it's clients to
get the a notebooks, together with their history (modifications\snapshots).
`NotebookRepo` is part of it, it defines the semantics of the storage
(list, get, etc),
`Revision` is another part of it that represents a point in time, selected
and annotated by the user. We want `NotebookRepo` semantics to be aware of of
such entities.
In terms of API design, first question to ask is always the same - "who are
the clients"?
In our case there are:
- `NotebookServer.java`
- `Notebook.java`
If we agree on this general terms, I'll be happy to go on, and discuss
possible ways to solve this problem. Please, et me know what you think!
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---