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/manager
>>>>>
>>>>>> ]
>>>>>>
>>>>>>> - 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