We could have a simple wrapper around geode API for JSR-107, but I still
don't see how this is helpful. I can read a book about JSR-107 and try to
use geode, but then I wanted to create a PartitionedRegion in Geode, the
book didn't tell me anything about that (since it is implementation
specific), I then tried to use the EntryProcessor mentioned in the book,
but Geode does not support that. Supporting a standard would only become an
exercise in getting a checkmark in a feature comparison. BTW, we are stuck
with "Region" because of the initial drafts of JSR-107. Geode is much more
than a "Cache", a number of users treat it as a system of record.
Implementing JSR-107 would be a step backward. I would have been onboard
implementing JSR-347 "Data grids for Java
<https://jcp.org/en/jsr/detail?id=347>, unfortunately, it was withdrawn.
Rather than renaming "Region" to "Cache", if we do have to rename it, we
should just call it a Map. Then add other data structures like Lists and
Sorted Sets.

On Thu, Apr 27, 2017 at 2:21 PM Kirk Lund <kl...@pivotal.io> wrote:

> "geode-client-api.jar" (not ai)
>
> On Thu, Apr 27, 2017 at 2:20 PM, Kirk Lund <kl...@pivotal.io> wrote:
>
> > Different module or different repo is same thing I'm suggesting. Make it
> > separate and independent such that a Client can be compiled only with
> > geode-client-ai.jar.
> >
> > On Wed, Apr 26, 2017 at 4:52 PM, Bruce Schuchardt <
> bschucha...@pivotal.io>
> > wrote:
> >
> >> I don't think we should mix the old client code with a new API.  We
> >> should keep the new client code separate from the server.  Maybe even
> in a
> >> different repo, as I think Fred suggested.
> >>
> >> Le 4/26/2017 à 3:12 PM, Kirk Lund a écrit :
> >>
> >>> If we want to add a new API then I suggest we create new API packages
> and
> >>> leave the "cache" package as the old deprecated API for backwards
> >>> compatibility.
> >>>
> >>> The new APIs and implementation could be separated into different geode
> >>> modules and packages (something like what follows):
> >>>
> >>> org.apache.geode.api -- the main rich API (geode-api module and jar)
> >>> org.apache.geode.api.client -- the new thin client API
> (geode-api-client
> >>> module and jar)
> >>> org.apache.geode.core -- the main implementation of api (geode-core
> >>> module
> >>> and jar which also currently contains the old API)
> >>>
> >>> On Wed, Apr 26, 2017 at 9:41 AM, William Markito Oliveira <
> >>> william.mark...@gmail.com> wrote:
> >>>
> >>> This is an awesome discussion and Jake's hitting all the right notes
> >>>> about
> >>>> why JCache is a good idea! I've fought that fight in the past and lost
> >>>> it
> >>>> but I'm happy to see it coming back...
> >>>>
> >>>> What's really nice about Geode is that the functionalities and
> >>>> capabilities
> >>>> are all there, they're just not that well exposed, known by others or
> >>>> obscured by some decisions that doesn't apply anymore.
> >>>>
> >>>> It's the same conversation about monitoring and statistics...  All the
> >>>> capability is there with JMX and Stats, but using an unknown custom
> >>>> format
> >>>> or tool to display that data makes it not very appealing for OSS and
> >>>> enterprise users that need workarounds and hacks to integrate with
> >>>> common
> >>>> monitoring tools.
> >>>>
> >>>> Refactoring API Client APIs, documentation and implementation of a new
> >>>> Protocol, Reactive APIs, better integration with standard monitoring
> >>>> tools
> >>>> -  Sounds like good points for a 2.0 roadmap IMHO.
> >>>>
> >>>>
> >>>> On Wed, Apr 26, 2017 at 10:28 AM, Jacob Barrett <jbarr...@pivotal.io>
> >>>> wrote:
> >>>>
> >>>> Wes,
> >>>>>
> >>>>> Those are almost all administrative commands and have no place on the
> >>>>> client API. They belong on an administrative API or as I'm arguing a
> >>>>>
> >>>> series
> >>>>
> >>>>> of MBeans/JMX as it is already an established standard.
> >>>>>
> >>>>> -Jake
> >>>>>
> >>>>> On Wed, Apr 26, 2017 at 8:09 AM Wes Williams <wwilli...@pivotal.io>
> >>>>>
> >>>> wrote:
> >>>>
> >>>>> Now we're getting some precision. Let's talk about the "raw" Geode
> >>>>>> proprietary bad ass API!  Would that "raw" Geode proprietary bad ass
> >>>>>>
> >>>>> API
> >>>>
> >>>>> "raw"
> >>>>>> Geode proprietary bad ass API that we're talking about be centered
> >>>>>>
> >>>>> around
> >>>>
> >>>>> the commands found here:
> >>>>>>
> >>>>>> https://github.com/apache/geode/tree/rel/v1.1.1/geode-
> >>>>>>
> >>>>> core/src/main/java/org/apache/geode/management/internal/cli/commands
> >>>>>
> >>>>>> Or somewhere else?
> >>>>>>
> >>>>>> *Wes Williams | Pivotal Advisory **Data Engineer*
> >>>>>> 781.606.0325 <(781)%20606-0325>
> >>>>>> http://pivotal.io/big-data/pivotal-gemfire
> >>>>>>
> >>>>>> On Tue, Apr 25, 2017 at 11:41 PM, Jacob Barrett <
> jbarr...@pivotal.io>
> >>>>>> wrote:
> >>>>>>
> >>>>>> Java and its community have standards for all of these issue so why
> >>>>>>> re-invent the wheel. The market doesn't want proprietary anymore,
> >>>>>>>
> >>>>>> they
> >>>>
> >>>>> want
> >>>>>>
> >>>>>>> standards and mobility.
> >>>>>>>
> >>>>>>> Configuration of the server should happen through MBeans. You can
> >>>>>>>
> >>>>>> wrap
> >>>>
> >>>>> that
> >>>>>>
> >>>>>>> in gfsh for command line, REST for remote web based admin, use
> >>>>>>>
> >>>>>> JConsole
> >>>>
> >>>>> or
> >>>>>>
> >>>>>>> any other number of JMX based enterprise management tools. By using
> >>>>>>>
> >>>>>> MBeans
> >>>>>>
> >>>>>>> the server can easily expose new discovered services without the
> need
> >>>>>>>
> >>>>>> to
> >>>>>
> >>>>>> code specific gfsh commands, REST interfaces or APIs. There is no
> >>>>>>>
> >>>>>> reason
> >>>>>
> >>>>>> my
> >>>>>>
> >>>>>>> SDG can't be retooled to "discover" the configuration from these
> >>>>>>>
> >>>>>> MBeans
> >>>>
> >>>>> as
> >>>>>>
> >>>>>>> well rather than having to be touched every time we add or change
> >>>>>>> something. There are tools and books already written that
> >>>>>>>
> >>>>>> implementors
> >>>>
> >>>>> can
> >>>>>>
> >>>>>>> consult on MBeans. There isn't anything out there on gfsh commands.
> >>>>>>>
> >>>>>>> If we want to play in the Java community, especially J2EE (the
> other
> >>>>>>>
> >>>>>> 50%
> >>>>>
> >>>>>> of
> >>>>>>
> >>>>>>> Java that isn't Spring), then we had better have a JSR-107 answer
> no
> >>>>>>>
> >>>>>> matter
> >>>>>>
> >>>>>>> what the pain is to provide it. I can pull dozens of books of the
> >>>>>>>
> >>>>>> shelf
> >>>>
> >>>>> that teach me how to effectively use a JCache, how many can I pull
> >>>>>>>
> >>>>>> off
> >>>>
> >>>>> the
> >>>>>>
> >>>>>>> shelf that teach me Geode's API? How many engineers can I get
> >>>>>>>
> >>>>>> applications
> >>>>>>
> >>>>>>> form by saying "must have Geode API knowledge"? I can find people
> >>>>>>>
> >>>>>> with
> >>>>
> >>>>> JCache knowledge though. So from in implementor's perspective having
> >>>>>>> standards is a must. Now I don't think the JSR-107 interface should
> >>>>>>>
> >>>>>> be
> >>>>
> >>>>> the
> >>>>>>
> >>>>>>> root interface but rather a facade on the "raw" Geode proprietary
> bad
> >>>>>>>
> >>>>>> ass
> >>>>>
> >>>>>> API. That API should be 100% asynchronous (reactive, SEDA, whatever
> >>>>>>>
> >>>>>> the
> >>>>
> >>>>> current buzzword for asynchronous is today). Around that API we can
> >>>>>>>
> >>>>>> provide
> >>>>>>
> >>>>>>> facades for JSR 107, ConcurrentMap (our current yet not so well
> >>>>>>>
> >>>>>> behaving
> >>>>>
> >>>>>> API), List, Queue, etc. Maybe even JPA, JCA, etc. The thought of
> >>>>>>>
> >>>>>> putting
> >>>>>
> >>>>>> all those features into a single API makes my head exploded and they
> >>>>>>>
> >>>>>> don't
> >>>>>>
> >>>>>>> need to be like they are today.
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> On Tue, Apr 25, 2017 at 8:25 PM Wes Williams <wwilli...@pivotal.io
> >
> >>>>>>>
> >>>>>> wrote:
> >>>>>>
> >>>>>>> A couple of points to interact with John's points.
> >>>>>>>>
> >>>>>>>> GFSH as API
> >>>>>>>>
> >>>>>>>> We agree that GFSH is a DSL, and a really good and useful one. We
> >>>>>>>>
> >>>>>>> agree
> >>>>>
> >>>>>> that we don't want our API tied to GFSH syntax. I view the valuable
> >>>>>>>>
> >>>>>>> part
> >>>>>>
> >>>>>>> of
> >>>>>>>
> >>>>>>>> GemFire admin as the Java code underneath GFSH, or the "Commands."
> >>>>>>>>
> >>>>>>>> For example, to create a JAVA API to "Create Region",  why not
> >>>>>>>>
> >>>>>>> create a
> >>>>>
> >>>>>> Java API around CreateAlterDestroyRegionCommands? In this way,
> >>>>>>>>
> >>>>>>> GFSH
> >>>>
> >>>>> and
> >>>>>
> >>>>>> the
> >>>>>>>
> >>>>>>>> JAVA API share the same code. It seems too obvious yet I don't see
> >>>>>>>>
> >>>>>>> it
> >>>>
> >>>>> being
> >>>>>>>
> >>>>>>>> recommended.  Why not?  (Note: the hard-coded formatting would
> need
> >>>>>>>>
> >>>>>>> to
> >>>>>
> >>>>>> be
> >>>>>>
> >>>>>>> removed).
> >>>>>>>>
> >>>>>>>> Once you have the Java/GFSH/REST API as common code, you then
> >>>>>>>>
> >>>>>>> refactor
> >>>>>
> >>>>>> it.
> >>>>>>>
> >>>>>>>> What's the objection to this approach? Once you open Java API's to
> >>>>>>>>
> >>>>>>> do
> >>>>
> >>>>> everything that GFSH does, then you have now unshackled the power
> >>>>>>>>
> >>>>>>> of
> >>>>
> >>>>> the
> >>>>>>
> >>>>>>> developer (the JAVA API) and the admin (GFSH API).
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> REST API
> >>>>>>>>
> >>>>>>>> I've found that most don't want to use the Dev REST API because
> >>>>>>>>
> >>>>>>> it's
> >>>>
> >>>>> attached to a server rather than the cluster. HA?
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> *Wes Williams | Pivotal Advisory **Data Engineer*
> >>>>>>>> 781.606.0325 <(781)%20606-0325> <(781)%20606-0325>
> >>>>>>>> http://pivotal.io/big-data/pivotal-gemfire
> >>>>>>>>
> >>>>>>>> On Tue, Apr 25, 2017 at 7:01 PM, Fred Krone <fkr...@pivotal.io>
> >>>>>>>>
> >>>>>>> wrote:
> >>>>>
> >>>>>> Good feedback.
> >>>>>>>>>
> >>>>>>>>> This would use the new protocol.  I should have mentioned that.
> >>>>>>>>>
> >>>>>>>>> The original driver for this was the Region API needs either an
> >>>>>>>>>
> >>>>>>>> update
> >>>>>>
> >>>>>>> or
> >>>>>>>
> >>>>>>>> an alternative.  Updating has a few drawbacks: Region wasn't
> >>>>>>>>>
> >>>>>>>> designed
> >>>>>
> >>>>>> with
> >>>>>>>>
> >>>>>>>>> open source in-mind and as Swap mentioned it is naturally tightly
> >>>>>>>>>
> >>>>>>>> coupled.
> >>>>>>>>
> >>>>>>>>> Members of the community are already working to update Region but
> >>>>>>>>>
> >>>>>>>> something
> >>>>>>>>
> >>>>>>>>> gets fixed and it breaks something for someone else.  I think
> >>>>>>>>>
> >>>>>>>> it's
> >>>>
> >>>>> much
> >>>>>>
> >>>>>>> better to provide a new interface that implements the first part
> >>>>>>>>>
> >>>>>>>> of
> >>>>
> >>>>> JSR
> >>>>>>
> >>>>>>> 107
> >>>>>>>>
> >>>>>>>>> (javax.cache) and get the ball rolling for the community and,
> >>>>>>>>>
> >>>>>>>> perhaps,
> >>>>>>
> >>>>>>> over
> >>>>>>>>
> >>>>>>>>> time deprecate Region (although that's not a primary objective).
> >>>>>>>>>
> >>>>>>>>> A Java driver will probably get built regardless just to give the
> >>>>>>>>>
> >>>>>>>> new
> >>>>>
> >>>>>> protocol some legs. That driver also needs a decent caching
> >>>>>>>>>
> >>>>>>>> interface.
> >>>>>>
> >>>>>>> JSR
> >>>>>>>>
> >>>>>>>>> 107 has already solved that part.  So let's get started on it.
> >>>>>>>>>
> >>>>>>>> If
> >>>>
> >>>>> the
> >>>>>>
> >>>>>>> community wants to go the whole way and continue JSR 107
> >>>>>>>>>
> >>>>>>>> implementation
> >>>>>>
> >>>>>>> after that that's awesome.  Functions can also be added, etc.
> >>>>>>>>>
> >>>>>>>>> I intentionally did not mention anything about PCF as this
> >>>>>>>>>
> >>>>>>>> pertains
> >>>>
> >>>>> to
> >>>>>>
> >>>>>>> Geode itself as an open source offering and developer experience.
> >>>>>>>>>
> >>>>>>>> I'm
> >>>>>>
> >>>>>>> writing as a member of the community. Ie: I'm a developer who
> >>>>>>>>>
> >>>>>>>> would
> >>>>
> >>>>> like
> >>>>>>>
> >>>>>>>> to
> >>>>>>>>
> >>>>>>>>> add some caching to my application -- I can download either Geode
> >>>>>>>>>
> >>>>>>>> or
> >>>>>
> >>>>>> Hazelcast for free and right now it's a no brainer.  Not that we
> >>>>>>>>>
> >>>>>>>> wouldn't
> >>>>>>>
> >>>>>>>> keep PCF in-mind but it's out of scope for this thread.  I do
> >>>>>>>>>
> >>>>>>>> believe
> >>>>>
> >>>>>> getting started on a Java driver for the protocol and a
> >>>>>>>>>
> >>>>>>>> standardized
> >>>>>
> >>>>>> caching API are easily leveraged wins across the board.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> On Tue, Apr 25, 2017 at 3:20 PM, Swapnil Bawaskar <
> >>>>>>>>>
> >>>>>>>> sbawas...@pivotal.io>
> >>>>>>>
> >>>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>> I had looked at the JCache in the past and here are some of the
> >>>>>>>>>>
> >>>>>>>>> things
> >>>>>>>
> >>>>>>>> I
> >>>>>>>>
> >>>>>>>>> noted:
> >>>>>>>>>>
> >>>>>>>>>> Naming convention: Geode's region is a Cache in JSR-107, and
> >>>>>>>>>>
> >>>>>>>>> Geode's
> >>>>>>
> >>>>>>> Cache
> >>>>>>>>>
> >>>>>>>>>> is a CacheManager. I think it would be too confusing to change
> >>>>>>>>>>
> >>>>>>>>> the
> >>>>>
> >>>>>> meaning
> >>>>>>>>>
> >>>>>>>>>> of cache. Also, how do you document this given that Cache means
> >>>>>>>>>>
> >>>>>>>>> different
> >>>>>>>>
> >>>>>>>>> things if you are talking JCache vs Geode.
> >>>>>>>>>>
> >>>>>>>>>> The way to create a Cache in JSR-107 is:
> >>>>>>>>>> Cache<Integer, Date> cache = manager.createCache(cacheName,
> >>>>>>>>>>
> >>>>>>>>> Configuration
> >>>>>>>>
> >>>>>>>>> c);
> >>>>>>>>>> Where it is upto the implementation to extend Configuration.
> >>>>>>>>>>
> >>>>>>>>> Given
> >>>>>
> >>>>>> this,
> >>>>>>>>
> >>>>>>>>> users will not be able to switch from an existing
> >>>>>>>>>>
> >>>>>>>>> implementation
> >>>>
> >>>>> to
> >>>>>
> >>>>>> ours;
> >>>>>>>>
> >>>>>>>>> will have to write new code specially Configuration, making
> >>>>>>>>>>
> >>>>>>>>> callbacks
> >>>>>>
> >>>>>>> serializable etc.
> >>>>>>>>>>
> >>>>>>>>>> JSR-107 will not be limited to the client. Server side
> >>>>>>>>>>
> >>>>>>>>> callbacks
> >>>>
> >>>>> like
> >>>>>>
> >>>>>>> CacheLoader, CacheListener etc. will need handle on jsr-107
> >>>>>>>>>>
> >>>>>>>>> “cache”.
> >>>>>>
> >>>>>>> JSR-107 supports features like an EntryProcessor, which is a
> >>>>>>>>>>
> >>>>>>>>> function
> >>>>>>
> >>>>>>> invoked atomically on an entry operation. We will have to make
> >>>>>>>>>>
> >>>>>>>>> invasive
> >>>>>>>
> >>>>>>>> changes to Geode to support this.
> >>>>>>>>>>
> >>>>>>>>>> Given these, I don't think supporting JSR-107 is trivial.
> >>>>>>>>>>
> >>>>>>>>>> On Tue, Apr 25, 2017 at 2:55 PM Dan Smith <dsm...@pivotal.io>
> >>>>>>>>>>
> >>>>>>>>> wrote:
> >>>>>>
> >>>>>>> What transport are you planning on using? REST, or the
> >>>>>>>>>>>
> >>>>>>>>>> current
> >>>>
> >>>>> binary
> >>>>>>>
> >>>>>>>> protocol? Or is this just a wrapper around the existing java
> >>>>>>>>>>>
> >>>>>>>>>> client
> >>>>>>
> >>>>>>> APIs?
> >>>>>>>>>
> >>>>>>>>>> If this about creating a new API, I agree with what John is
> >>>>>>>>>>>
> >>>>>>>>>> saying
> >>>>>>
> >>>>>>> that
> >>>>>>>>
> >>>>>>>>> we
> >>>>>>>>>>
> >>>>>>>>>>> need reduce the number of APIs we have to do the same thing
> >>>>>>>>>>>
> >>>>>>>>>> in
> >>>>
> >>>>> java.
> >>>>>>>
> >>>>>>>> It
> >>>>>>>>
> >>>>>>>>> seems especially confusing if we end up with different APIs
> >>>>>>>>>>>
> >>>>>>>>>> that
> >>>>>
> >>>>>> support
> >>>>>>>>>
> >>>>>>>>>> distinct features - like being able to create a region on the
> >>>>>>>>>>>
> >>>>>>>>>> server
> >>>>>>>
> >>>>>>>> with
> >>>>>>>>>
> >>>>>>>>>> this new API but only being able to invoke a function with
> >>>>>>>>>>>
> >>>>>>>>>> the
> >>>>
> >>>>> old
> >>>>>>
> >>>>>>> API.
> >>>>>>>>
> >>>>>>>>> The other thing I think we need to avoid is being able to do
> >>>>>>>>>>>
> >>>>>>>>>> things
> >>>>>>
> >>>>>>> from
> >>>>>>>>>
> >>>>>>>>>> the client (or gfsh, or xml, ...) that don't have a java API
> >>>>>>>>>>>
> >>>>>>>>>> on
> >>>>
> >>>>> the
> >>>>>>
> >>>>>>> server.
> >>>>>>>>>>
> >>>>>>>>>>> I'm assuming your getOrCreateRegion region is supposed behave
> >>>>>>>>>>>
> >>>>>>>>>> like
> >>>>>>
> >>>>>>> the
> >>>>>>>>
> >>>>>>>>> gfsh
> >>>>>>>>>>
> >>>>>>>>>>> command and update the cluster configuration? +++1 to Wes's
> >>>>>>>>>>>
> >>>>>>>>>> suggestion
> >>>>>>>>
> >>>>>>>>> have
> >>>>>>>>>>
> >>>>>>>>>>> a public API for executing these gfsh operations.
> >>>>>>>>>>>
> >>>>>>>>>>> I really think we need to work on having *one* authoritative
> >>>>>>>>>>>
> >>>>>>>>>> public
> >>>>>>
> >>>>>>> API
> >>>>>>>>
> >>>>>>>>> that contains everything that we support on the server. The
> >>>>>>>>>>>
> >>>>>>>>>> protocols
> >>>>>>>
> >>>>>>>> we
> >>>>>>>>>
> >>>>>>>>>> support (REST, binary, ...) and the client drivers that use
> >>>>>>>>>>>
> >>>>>>>>>> those
> >>>>>
> >>>>>> protocols
> >>>>>>>>>>
> >>>>>>>>>>> should just be ways of accessing that API. The Java API on
> >>>>>>>>>>>
> >>>>>>>>>> the
> >>>>
> >>>>> server
> >>>>>>>
> >>>>>>>> right
> >>>>>>>>>>
> >>>>>>>>>>> now the closest thing we have to this, but there are things
> >>>>>>>>>>>
> >>>>>>>>>> you
> >>>>
> >>>>> can
> >>>>>>
> >>>>>>> do
> >>>>>>>>
> >>>>>>>>> with
> >>>>>>>>>>
> >>>>>>>>>>> gfsh and things you can do with the current client that have
> >>>>>>>>>>>
> >>>>>>>>>> no
> >>>>
> >>>>> java
> >>>>>>>
> >>>>>>>> API
> >>>>>>>>>
> >>>>>>>>>> equivalent. I think we really need to fix that!
> >>>>>>>>>>>
> >>>>>>>>>>> Also, preferably we won't have to hand code a bunch of stuff
> >>>>>>>>>>>
> >>>>>>>>>> in
> >>>>
> >>>>> every
> >>>>>>>
> >>>>>>>> client driver and protocol whenever we add a new feature. For
> >>>>>>>>>>>
> >>>>>>>>>> example
> >>>>>>>
> >>>>>>>> if
> >>>>>>>>>
> >>>>>>>>>> were to add a geode function to invoke each new API we add,
> >>>>>>>>>>>
> >>>>>>>>>> that
> >>>>>
> >>>>>> new
> >>>>>>>
> >>>>>>>> API
> >>>>>>>>>
> >>>>>>>>>> would be accessible from REST, gfsh, the java client etc.
> >>>>>>>>>>>
> >>>>>>>>>> Later
> >>>>
> >>>>> we
> >>>>>>
> >>>>>>> could
> >>>>>>>>>
> >>>>>>>>>> add syntatic sugar to make the new API prettier, but if we
> >>>>>>>>>>>
> >>>>>>>>>> had
> >>>>
> >>>>> a
> >>>>>
> >>>>>> low
> >>>>>>>
> >>>>>>>> level
> >>>>>>>>>>
> >>>>>>>>>>> API that automatically exposed all new features that would
> >>>>>>>>>>>
> >>>>>>>>>> make
> >>>>
> >>>>> adding
> >>>>>>>>
> >>>>>>>>> new
> >>>>>>>>>>
> >>>>>>>>>>> features much less painful.
> >>>>>>>>>>>
> >>>>>>>>>>> I do like the idea of adding a reactive API.
> >>>>>>>>>>>
> >>>>>>>>>>>   Supporting JSR-107 might be nice - but that could probably
> >>>>>>>>>>>
> >>>>>>>>>> be
> >>>>
> >>>>> written
> >>>>>>>>
> >>>>>>>>> just
> >>>>>>>>>>
> >>>>>>>>>>> as a wrapper around the current API without too much work. I
> >>>>>>>>>>>
> >>>>>>>>>> don't
> >>>>>>
> >>>>>>> think
> >>>>>>>>>
> >>>>>>>>>> we
> >>>>>>>>>>
> >>>>>>>>>>> should do anything for JSR-107 other than provide a JSR-107
> >>>>>>>>>>>
> >>>>>>>>>> compatible
> >>>>>>>>
> >>>>>>>>> wrapper - if someone wants additional geode specific features
> >>>>>>>>>>>
> >>>>>>>>>> they
> >>>>>>
> >>>>>>> should
> >>>>>>>>>
> >>>>>>>>>> drop into the existing API.
> >>>>>>>>>>>
> >>>>>>>>>>> I also like the idea of a smaller client jar and
> >>>>>>>>>>>
> >>>>>>>>>> dependencies,
> >>>>
> >>>>> but
> >>>>>>
> >>>>>>> I
> >>>>>>>
> >>>>>>>> think
> >>>>>>>>>>
> >>>>>>>>>>> there is a huge amount of room for improvement in our
> >>>>>>>>>>>
> >>>>>>>>>> existing
> >>>>
> >>>>> client
> >>>>>>>
> >>>>>>>> just
> >>>>>>>>>>
> >>>>>>>>>>> by refactoring the code a bit more and shinking geode-core
> >>>>>>>>>>>
> >>>>>>>>>> into a
> >>>>>
> >>>>>> bare
> >>>>>>>>
> >>>>>>>>> minimum.
> >>>>>>>>>>>
> >>>>>>>>>>> -Dan
> >>>>>>>>>>>
> >>>>>>>>>>> On Mon, Apr 24, 2017 at 8:20 PM, Fred Krone <
> >>>>>>>>>>>
> >>>>>>>>>> fkr...@pivotal.io
> >>>>
> >>>>> wrote:
> >>>>>>>>
> >>>>>>>>> That's great, Wes.  I will take a look.  Thanks.
> >>>>>>>>>>>>
> >>>>>>>>>>>> John -- good feedback to consider and I was hoping this
> >>>>>>>>>>>>
> >>>>>>>>>>> would
> >>>>
> >>>>> come
> >>>>>>>
> >>>>>>>> up.
> >>>>>>>>>
> >>>>>>>>>> "In my mind, there really are only 2 approaches... *Spring*
> >>>>>>>>>>>>
> >>>>>>>>>>> and
> >>>>>
> >>>>>> non-*Spring*,
> >>>>>>>>>>>> or rather PCF and non-PCF, and since PCF is primarily based
> >>>>>>>>>>>>
> >>>>>>>>>>> on
> >>>>>
> >>>>>> Boot
> >>>>>>>
> >>>>>>>> (given
> >>>>>>>>>>>
> >>>>>>>>>>>> Microservices/applications are the new concurrency), then I
> >>>>>>>>>>>>
> >>>>>>>>>>> am
> >>>>>
> >>>>>> really
> >>>>>>>>
> >>>>>>>>> saying the same thing."
> >>>>>>>>>>>>
> >>>>>>>>>>>> This would be cover non spring and attempt to give the
> >>>>>>>>>>>>
> >>>>>>>>>>> community
> >>>>>>
> >>>>>>> something
> >>>>>>>>>>>
> >>>>>>>>>>>> that had the same standardized experience as JSR 107 --
> >>>>>>>>>>>>
> >>>>>>>>>>> starting
> >>>>>>
> >>>>>>> with
> >>>>>>>>
> >>>>>>>>> the
> >>>>>>>>>>
> >>>>>>>>>>> Cache interface itself.  Although we don't necessarily have
> >>>>>>>>>>>>
> >>>>>>>>>>> to
> >>>>>
> >>>>>> implement
> >>>>>>>>>>
> >>>>>>>>>>> Cache, it's method signatures are essentially a (non
> >>>>>>>>>>>>
> >>>>>>>>>>> spring)
> >>>>
> >>>>> caching
> >>>>>>>>
> >>>>>>>>> standard for Java developers at this point.   We considered
> >>>>>>>>>>>>
> >>>>>>>>>>> full
> >>>>>>
> >>>>>>> blown
> >>>>>>>>>
> >>>>>>>>>> JSR
> >>>>>>>>>>>
> >>>>>>>>>>>> 107 implementation but thought it was too robust for the
> >>>>>>>>>>>>
> >>>>>>>>>>> needs
> >>>>>
> >>>>>> mentioned
> >>>>>>>>>>
> >>>>>>>>>>> (that's not to say we couldn't get there incrementally).  I
> >>>>>>>>>>>>
> >>>>>>>>>>> think
> >>>>>>
> >>>>>>> those
> >>>>>>>>>
> >>>>>>>>>> needs still exist open-source outside of PCF and don't
> >>>>>>>>>>>>
> >>>>>>>>>>> cannibalize.
> >>>>>>>
> >>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>> On Mon, Apr 24, 2017 at 7:44 PM, Real Wes <
> >>>>>>>>>>>>
> >>>>>>>>>>> thereal...@outlook.com>
> >>>>>>>
> >>>>>>>> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>> Here is a simple Java client _for enterprise use_ that I
> >>>>>>>>>>>>>
> >>>>>>>>>>>> developed
> >>>>>>>>
> >>>>>>>>> for
> >>>>>>>>>>
> >>>>>>>>>>> Geode and distributed to several enterprises. It has
> >>>>>>>>>>>>>
> >>>>>>>>>>>> similarities
> >>>>>>>
> >>>>>>>> and
> >>>>>>>>>
> >>>>>>>>>> differences for your goal. This project creates both
> >>>>>>>>>>>>>
> >>>>>>>>>>>> server
> >>>>
> >>>>> and
> >>>>>>
> >>>>>>> client
> >>>>>>>>>>
> >>>>>>>>>>> regions dynamically.  It lists regions, alters regions…
> >>>>>>>>>>>>>
> >>>>>>>>>>>> really
> >>>>>>
> >>>>>>> anything
> >>>>>>>>>>
> >>>>>>>>>>> that GFSH can do. It differs in that it calls GFSH to do
> >>>>>>>>>>>>>
> >>>>>>>>>>>> its
> >>>>>
> >>>>>> work
> >>>>>>>
> >>>>>>>> rather
> >>>>>>>>>>>
> >>>>>>>>>>>> than a Java interface. You can think of this as a Java
> >>>>>>>>>>>>>
> >>>>>>>>>>>> API
> >>>>
> >>>>> on
> >>>>>
> >>>>>> top
> >>>>>>>
> >>>>>>>> of
> >>>>>>>>>
> >>>>>>>>>> GFSH.
> >>>>>>>>>>>>
> >>>>>>>>>>>>> You can use this model and keep the similarities while
> >>>>>>>>>>>>>
> >>>>>>>>>>>> adjusting
> >>>>>>>
> >>>>>>>> for
> >>>>>>>>>
> >>>>>>>>>> the
> >>>>>>>>>>>
> >>>>>>>>>>>> Java interface.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Similarities
> >>>>>>>>>>>>> - Client uses SDG and complies with JSR-107
> >>>>>>>>>>>>>       [the Cache Manager is here:
> >>>>>>>>>>>>>
> >>>>>>>>>>>> https://github.com/Pivotal-
> >>>>>
> >>>>>> Data-Engineering/ClusterManagement/tree/master/
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> cluster-management-client/src/main/java/com/geode/cache/mana
> >>>>>> ger
> >>>>>>
> >>>>>>> ]
> >>>>>>>
> >>>>>>>> - After the server creates its region, client creates its
> >>>>>>>>>>>>>
> >>>>>>>>>>>> region
> >>>>>>>
> >>>>>>>>       [ see createRegions at: https://github.com/Pivotal-
> >>>>>>>>>>>>>
> >>>>>>>>>>>> Data-Engineering/
> >>>>>>>>>>>>
> >>>>>>>>>>>>> ClusterManagement/blob/master/cluster-management-
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> client/src/main/java/com/geode/cache/manager/
> >>>>>>>>>>>
> >>>>>>>>>> RegionCreator.java<https://
> >>>>>>>>>
> >>>>>>>>>> github.com/Pivotal-Data-Engineering/ClusterManagement/
> >>>>>>>>>>>>>
> >>>>>>>>>>>> blob/master/cluster-
> >>>>>>>>>>>>
> >>>>>>>>>>>>> management-client/src/main/java/com/geode/cache/manager/
> >>>>>>>>>>>>>
> >>>>>>>>>>>> RegionCreator.java>
> >>>>>>>>>>>>
> >>>>>>>>>>>>> ]
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Differences
> >>>>>>>>>>>>> Server dynamically calls GFSH to execute commands
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> How it works
> >>>>>>>>>>>>> - Whenever the client calls a region that does not exist,
> >>>>>>>>>>>>>
> >>>>>>>>>>>> the
> >>>>>
> >>>>>> client
> >>>>>>>>>
> >>>>>>>>>> looks
> >>>>>>>>>>>>
> >>>>>>>>>>>>> for a <region name>.properties file. If the properties
> >>>>>>>>>>>>>
> >>>>>>>>>>>> file
> >>>>
> >>>>> exists,
> >>>>>>>>
> >>>>>>>>> the
> >>>>>>>>>>
> >>>>>>>>>>> region is created with the dynamic properties.
> >>>>>>>>>>>>> - If <region name>.properties does not exist, default
> >>>>>>>>>>>>>
> >>>>>>>>>>>> region
> >>>>>
> >>>>>> properties
> >>>>>>>>>>
> >>>>>>>>>>> are loaded and used to create the region.
> >>>>>>>>>>>>> - properties are formed into a GFSH string and passed to
> >>>>>>>>>>>>>
> >>>>>>>>>>>> a
> >>>>
> >>>>> server
> >>>>>>>
> >>>>>>>> function
> >>>>>>>>>>>>
> >>>>>>>>>>>>> - The server function calls GFSH using internal calls. It
> >>>>>>>>>>>>>
> >>>>>>>>>>>> calls
> >>>>>>
> >>>>>>> the
> >>>>>>>>
> >>>>>>>>> GfshParser, executes the command, and then returns the
> >>>>>>>>>>>>>
> >>>>>>>>>>>> parsed
> >>>>>
> >>>>>> results.
> >>>>>>>>>>
> >>>>>>>>>>> [see https://github.com/Pivotal-Data-Engineering/
> >>>>>>>>>>>>> ClusterManagement/blob/master/
> >>>>>>>>>>>>>
> >>>>>>>>>>>> cluster-management-server/src/
> >>>>>
> >>>>>> main/java/com/geode/gfsh/GfshCommand.java]
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Limitations
> >>>>>>>>>>>>> It uses internal calls to call GFSH. I have made requests
> >>>>>>>>>>>>>
> >>>>>>>>>>>> to
> >>>>>
> >>>>>> make
> >>>>>>>
> >>>>>>>> this
> >>>>>>>>>>
> >>>>>>>>>>> a
> >>>>>>>>>>>
> >>>>>>>>>>>> stable public interface. Andrew Baker had a good idea to
> >>>>>>>>>>>>>
> >>>>>>>>>>>> return
> >>>>>>
> >>>>>>> gfsh
> >>>>>>>>>
> >>>>>>>>>> results in JSON format with a new —results=json property
> >>>>>>>>>>>>>
> >>>>>>>>>>>> to
> >>>>
> >>>>> pass
> >>>>>>>
> >>>>>>>> to
> >>>>>>>>
> >>>>>>>>> GFSH.
> >>>>>>>>>>>
> >>>>>>>>>>>> Strengths
> >>>>>>>>>>>>> That is uses GFSH can be viewed as a strength to keep a
> >>>>>>>>>>>>>
> >>>>>>>>>>>> consistent
> >>>>>>>>
> >>>>>>>>> API,
> >>>>>>>>>>
> >>>>>>>>>>> whether Java or GFSH
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> TESTS
> >>>>>>>>>>>>> You can start by running server tests at:
> >>>>>>>>>>>>>
> >>>>>>>>>>>> https://github.com/Pivotal-
> >>>>>>>>>>
> >>>>>>>>>>> Data-Engineering/ClusterManagement/tree/master/
> >>>>>>>>>>>>> cluster-management-server/src/test/java/com/geode/gfsh
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Client tests are at:
> >>>>>>>>>>>>>
> >>>>>>>>>>>> https://github.com/Pivotal-Data-Engineering/
> >>>>>>>>
> >>>>>>>>> ClusterManagement/tree/master/
> >>>>>>>>>>>>>
> >>>>>>>>>>>> cluster-management-client/src/
> >>>>>
> >>>>>> test/java/com/geode/management/client
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Regards,
> >>>>>>>>>>>>> Wes Williams
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On Apr 24, 2017, at 6:51 PM, Kirk Lund <kl...@apache.org
> >>>>>>>>>>>>>
> >>>>>>>>>>>> <mailto:
> >>>>>>>
> >>>>>>>> klund
> >>>>>>>>>>
> >>>>>>>>>>> @apache.org>> wrote:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> A couple things I'd like to see:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> 1) completely new API that doesn't reuse the old API
> >>>>>>>>>>>>>
> >>>>>>>>>>>> classes
> >>>>>
> >>>>>> (or
> >>>>>>>
> >>>>>>>> at
> >>>>>>>>
> >>>>>>>>> least
> >>>>>>>>>>>
> >>>>>>>>>>>> not the giant classes such as Cache and Region
> >>>>>>>>>>>>>
> >>>>>>>>>>>> interfaces)
> >>>>
> >>>>> 2) separation of API and Impl so that users can compile
> >>>>>>>>>>>>>
> >>>>>>>>>>>> their
> >>>>>
> >>>>>> code
> >>>>>>>>
> >>>>>>>>> against
> >>>>>>>>>>>>
> >>>>>>>>>>>>> a dedicated client API jar
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On Mon, Apr 24, 2017 at 3:03 PM, Fred Krone <
> >>>>>>>>>>>>>
> >>>>>>>>>>>> fkr...@pivotal.io
> >>>>>>
> >>>>>>> <mailto:
> >>>>>>>>>>
> >>>>>>>>>>> fkro
> >>>>>>>>>>>
> >>>>>>>>>>>
> >
>

Reply via email to