Hi All, In working with Udo, I moved the needed public API into a helper class. The RegionFactory copy constructor still remains in RegionFactory but is protected. The only way to use the method now is by creating a helper class that extends RegionFactory.
Thanks for you all your help. I think this resolves the discussion. Thanks, Mark > On Dec 16, 2019, at 12:56 PM, Owen Nichols <onich...@pivotal.io> wrote: > > A -1 vote on a code change should be framed as a “request for change”. Udo, > you’ve made it clear what you don’t want, but not what it would take to make > PR #4409 acceptable to you. > > “Management V2 API” is unlikely to solve all problems in the near term, and > even to do so, it needs a sound underlying API to build on. Can you suggest > a way to resolve this that makes sense both for the current codebase as well > as paving the eventual way for the future? > >> On Dec 16, 2019, at 12:13 PM, Mark Hanson <mhan...@pivotal.io> wrote: >> >> It has been said I have a negative vote which is counter intuitive. >> >> VOTE SUBJECT: >> >> Should we continue migrating from AttributesFactory usage to RegionFactory >> usage and merge the RegionFactory copy constructor. >> >> >> +1 to Migrate to RegionFactory from AttributesFactory and merge the >> RegionFactory copy constructor >> 0 don’t care >> -1 stop migrating from AttributesFactory to RegionFactory and wait for >> Management V2 API. >> >> >>> On Dec 16, 2019, at 11:08 AM, Mark Hanson <mhan...@pivotal.io >>> <mailto:mhan...@pivotal.io>> wrote: >>> >>> Actually, I would say that it would not be necessary to have a copy >>> constructor if it were not for the way the tests are written that assume an >>> AttributesFactory. I think the discussion boils down to this… >>> >>> Do we migrate to the RegionFactory API from AttributesFactory or do we wait >>> for the Management V2 API. I would heartily support the V2 API, I have used >>> the REST version of it and it was great. That said, when will that arrive. >>> >>> We currently have a deprecated API and a current (wrapper) API. The >>> Management V2 is an expected, but not realized API at this point. >>> >>> As a community, I would like to decide if I should revert my changes to >>> modernize the test, but going to RegionFactory and just put in the core >>> fixes. I can do that. I am fine with that. I just don’t want to sit in the >>> middle. I don’t see how I can move to RegionFactory API without a >>> significant test restructuring without the copy constructor. >>> >>> VOTE SUBJECT: >>> >>> Stop migrating from AttributesFactory to RegionFactory and wait for >>> Management V2 API. >>> >>> Again, I am 100% fine either way, I just want a clear direction. :) >>> >>> This would mean reverting my changes to update, (totally fine) and then >>> putting in only the fixes. In the near future, we would also stop migrating >>> from AttributesFactory to RegionFactory while we wait for the Management V2 >>> API. >>> >>> >>> Thanks, >>> Mark >>> >>> >>> >>>> On Dec 16, 2019, at 10:47 AM, Udo Kohlmeyer <ukohlme...@pivotal.io >>>> <mailto:ukohlme...@pivotal.io> <mailto:ukohlme...@pivotal.io >>>> <mailto:ukohlme...@pivotal.io>>> wrote: >>>> >>>> -1 to adding a copy constructor onto any /**Factory*/ classes. >>>> >>>> I have never seen a copy constructor on a Factory pattern in the wild. >>>> >>>> That said, having done some Googling, this is something that people talk >>>> about, so it cannot be THAT foreign. >>>> >>>> There is one thing I want to point out here. There is work currently being >>>> done on the new Management/Configuration V2 API's. One of the goals of >>>> this project is to have a single API to create/update/delete and >>>> management the configuration and creation (realization of configuration). >>>> I'm advocating that new Management/Configuration v2 API's need to be >>>> interacting with it, rather than a user directly. This, adding a "copy >>>> constructor" of configuration should be added onto the v2 API's rather >>>> than on the /**Factory*/ classes. >>>> >>>> That said, having */*Factories/* as public API's that are use to create a >>>> /*Region*/, that is correct for the module. But any utility capability to >>>> copy configuration needs to be addressed by the Management API and not the >>>> /*Factory*/ classes. >>>> >>>> --Udo >>>> >>>> >>>> On 12/13/19 10:01 AM, Darrel Schneider wrote: >>>>> The v2 management api allows regions to be created remotely in cluster >>>>> configuration and on running servers. But it does not allow you to create >>>>> a >>>>> region on a client. Non-spring applications can use RegionFactory to >>>>> create >>>>> the region on the client side. >>>>> >>>>> >>>>> On Fri, Dec 13, 2019 at 9:56 AM Dan Smith <dsm...@pivotal.io >>>>> <mailto:dsm...@pivotal.io> <mailto:dsm...@pivotal.io >>>>> <mailto:dsm...@pivotal.io>>> wrote: >>>>> >>>>>> +1 to adding a way to copy the RegionAttributes. >>>>>> >>>>>> BTW, I really wish this RegionFactory was an interface. I don't know if >>>>>> adding a copy constructor makes it harder to migrate to an interface >>>>>> later, >>>>>> but maybe just having this single public method might be better? >>>>>> >>>>>> + <K, V> RegionFactory<K, V> createRegionFactory(RegionFactory<K, V> >>>>>> regionFactory); >>>>>> >>>>>> On Fri, Dec 13, 2019 at 9:35 AM Mark Hanson <mhan...@pivotal.io >>>>>> <mailto:mhan...@pivotal.io> <mailto:mhan...@pivotal.io >>>>>> <mailto:mhan...@pivotal.io>>> wrote: >>>>>> >>>>>>> Hi Udo, >>>>>>> >>>>>>> I disagree. I believe the currently published best practice is to use >>>>>>> RegionFactory. As a part of the work I have been doing, I have been >>>>>>> migrating code from the AttributesFactory pattern to the RegionFactory >>>>>>> pattern. To support that, I believe a copy constructor for RegionFactory >>>>>> is >>>>>>> necessary. And thus a createRegionFactory >>>>>>> >>>>>>> Hence my changes. >>>>>>> >>>>>>> Thanks, >>>>>>> Mark >>>>>>> >>>>>>>> On Dec 11, 2019, at 4:41 PM, Udo Kohlmeyer <ukohlme...@pivotal.io >>>>>>>> <mailto:ukohlme...@pivotal.io> <mailto:ukohlme...@pivotal.io >>>>>>>> <mailto:ukohlme...@pivotal.io>>> >>>>>>> wrote: >>>>>>>> I think at this point I'd be looking at the new V2 Management API's for >>>>>>> Regions. >>>>>>>> I think any new "public" effort that we'd be adding to the product >>>>>>> should be done through the Management API's for Regions, rather than >>>>>>> exposing new public API's that in reality should not be made "public". >>>>>>>> --Udo >>>>>>>> >>>>>>>> On 12/11/19 3:53 PM, Mark Hanson wrote: >>>>>>>>> Basically the point is to allow a use to copy a RegionFactory because >>>>>>> under certain circumstances it is necessary. I found that when migrating >>>>>>> from AttributesFactory. >>>>>>>>> Thanks, >>>>>>>>> Mark >>>>>>>>> >>>>>>>>>> On Dec 11, 2019, at 3:48 PM, Anthony Baker <aba...@pivotal.io >>>>>>>>>> <mailto:aba...@pivotal.io> <mailto:aba...@pivotal.io >>>>>>>>>> <mailto:aba...@pivotal.io>>> >>>>>> wrote: >>>>>>>>>> Mark, >>>>>>>>>> >>>>>>>>>> Can you share how the API changes will help the user? >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> Anthony >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> On Dec 11, 2019, at 2:57 PM, Mark Hanson <mhan...@pivotal.io >>>>>>>>>>> <mailto:mhan...@pivotal.io> <mailto:mhan...@pivotal.io >>>>>>>>>>> <mailto:mhan...@pivotal.io>>> >>>>>> wrote: >>>>>>>>>>> Hi All, >>>>>>>>>>> >>>>>>>>>>> There was a suggestion that since I am making a couple user visible >>>>>>> API changes that I might want to ask the dev list. >>>>>>>>>>> Basically I was migrating code from AttributesFactory to >>>>>>> RegionFactory and hit a few snags along the way. >>>>>>>>>>> Please see https://github.com/apache/geode/pull/4409 >>>>>>>>>>> <https://github.com/apache/geode/pull/4409> >>>>>>>>>>> <https://github.com/apache/geode/pull/4409 >>>>>>>>>>> <https://github.com/apache/geode/pull/4409>> < >>>>>>> https://github.com/apache/geode/pull/4409 >>>>>>> <https://github.com/apache/geode/pull/4409> >>>>>>> <https://github.com/apache/geode/pull/4409 >>>>>>> <https://github.com/apache/geode/pull/4409>>> specifically Cache.java, >>>>>>> RegionFactory.java, and for extra credit GemfireCacheImpl.java >>>>>>>>>>> I have commented at the relevant changes. >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> Mark >