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