"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
>>>>>> 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>
>>>>>>>> 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