Well, I'm not sure about that because the help is about how to use @Inject in the Spring framework.
On Thu, Apr 3, 2014 at 12:49 PM, Alena Prokharchyk < alena.prokharc...@citrix.com> wrote: > Alex, please feel free to update Wiki docs related to the questions you > got Darren's help from. I think this info would be useful for all CS > committers. > > Thank you, > Alena. > > From: Alex Ough <alex.o...@sungardas.com> > Date: Thursday, April 3, 2014 at 9:22 AM > To: Chiradeep Vittal <chiradeep.vit...@citrix.com>, Alena Prokharchyk < > alena.prokharc...@citrix.com>, Darren Shepherd <darren.sheph...@citrix.com > > > Cc: "dev@cloudstack.apache.org" <dev@cloudstack.apache.org> > > Subject: Re: [DISCUSS]{BEHAVIORAL-CHANGE]Domain-Account-User Sync Up > Among Multiple Regions > > Forgot to mention this, but it was a great help from Darren. > Thanks again, Darren! > Alex Ough > > > On Thu, Apr 3, 2014 at 11:56 AM, Alex Ough <alex.o...@sungardas.com>wrote: > >> All, >> >> I updated the patches as per Alena's request. >> >> Let me know if there is anything missing/incorrect. >> Thanks >> Alex Ough >> >> >> On Wed, Mar 26, 2014 at 1:40 PM, Alex Ough <alex.o...@sungard.com> wrote: >> >>> Sorry, my bad. I mis-read your comment. >>> >>> Thanks for pointing it out. >>> Alex Ough >>> >>> >>> On Wed, Mar 26, 2014 at 12:25 PM, Chiradeep Vittal < >>> chiradeep.vit...@citrix.com> wrote: >>> >>>> I didn't say "do not use auto wiring". I said the convention is to >>>> use @Inject which you didn't have. >>>> >>>> From: Alena Prokharchyk <alena.prokharc...@citrix.com> >>>> Date: Wednesday, March 26, 2014 at 7:39 AM >>>> To: Alex Ough <alex.o...@sungard.com>, "dev@cloudstack.apache.org" < >>>> dev@cloudstack.apache.org> >>>> Cc: Chiradeep Vittal <chiradeep.vit...@citrix.com> >>>> >>>> Subject: Re: [DISCUSS]{BEHAVIORAL-CHANGE]Domain-Account-User Sync Up >>>> Among Multiple Regions >>>> >>>> Alex, I'm attending a conference today, will review the patch >>>> tomorrow. >>>> >>>> -Alena >>>> >>>> From: Alex Ough <alex.o...@sungard.com> >>>> Date: Wednesday, March 26, 2014 at 6:35 AM >>>> To: Alena Prokharchyk <alena.prokharc...@citrix.com> >>>> Cc: "dev@cloudstack.apache.org" <dev@cloudstack.apache.org>, Chiradeep >>>> Vittal <chiradeep.vit...@citrix.com> >>>> Subject: Re: [DISCUSS]{BEHAVIORAL-CHANGE]Domain-Account-User Sync Up >>>> Among Multiple Regions >>>> >>>> Alena, >>>> >>>> It took a little time to update the patch because I had a vacation >>>> last week. >>>> Now I uploaded the updated patch for review with below status, so >>>> please check them and let me know what you think. >>>> I hope it to be merged soon to wrap this up asap. >>>> >>>> 1. no change with waiting for comments on my recommendation. >>>> >>>> 2. The two things to turn on the sync-up among multiple regions is to >>>> change the class name of "eventNotificationBus" into "MultiRegionEventBus" >>>> from "RabbitMQEventBus" as below and change the value of >>>> 'region.full.scan.interval' in Global Settings. And the new classes are >>>> never used unless the feature is turned on, so I'm not sure if auto wiring >>>> is necessary here and Chiradeep asked not to use @inject in his initial >>>> review, so I removed them. >>>> <bean id="eventNotificationBus" >>>> class="org.apache.cloudstack.mom.rabbitmq.MultiRegionEventBus"> >>>> >>>> 3. They are not adaptors, but inherited classes to process >>>> domain/account/user objects separately. >>>> >>>> 4. Done >>>> >>>> 5. Same >>>> >>>> 6. I removed 'domain path' from AccountResponse & UserResponse. >>>> >>>> Thanks >>>> Alex Ough >>>> >>>> >>>> On Thu, Mar 13, 2014 at 9:48 PM, Alex Ough <alex.o...@sungard.com>wrote: >>>> >>>>> What I think based on your comments are >>>>> >>>>> 1. Well, I have a different thought. I'd rather have separated >>>>> classes instead of having a class with lots of methods, which makes the >>>>> maintenance easier. And as you show as an example, it is possible to >>>>> create >>>>> a method and merge them, but I think it is better to provide separate >>>>> methods that are exposed outside so that the callers can know what to call >>>>> with ease. >>>>> >>>>> 2. Let me look at that. >>>>> >>>>> 3. I'm not sure why you think they are adapters, but let me look at >>>>> that class. >>>>> >>>>> 4. OK, let me work on this. >>>>> >>>>> 5. The urls are stored in the region table along with username and >>>>> password. Please see 'RegionVO' under >>>>> 'engine/schema/src/org/apache/cloudstack/region'. >>>>> >>>>> Thanks >>>>> Alex Ough >>>>> >>>>> >>>>> On Thu, Mar 13, 2014 at 5:49 PM, Alena Prokharchyk < >>>>> alena.prokharc...@citrix.com> wrote: >>>>> >>>>>> Alex, >>>>>> >>>>>> There are so many classes, and it makes it hard to see/review the >>>>>> feature. >>>>>> Can you come up with some sort of visual diagram, so its easier to see >>>>>> which component is responsible for what task, and how they interact >>>>>> with >>>>>> each other. >>>>>> >>>>>> My suggestions: >>>>>> >>>>>> 1) I think it would make sense to merge all the classes doing utils >>>>>> tasks >>>>>> (forming and sending Apis to CS) - UserInterface, AccountInterface, >>>>>> DomainInterface - to a single util class. They do return generic types >>>>>> anyway - JsonArray/JsonObject, and they do perform a generic util >>>>>> task - >>>>>> forming and sending the request to the CS. I would merge them all >>>>>> with the >>>>>> BaseInterface and name it with the name indicating that this class is >>>>>> responsible for sending API calls against CS. And this would be your >>>>>> util >>>>>> class. >>>>>> >>>>>> >>>>>> You should also come up with some generic method that forms the >>>>>> requests >>>>>> to CS APIs to make the code cleaner. >>>>>> >>>>>> For example, look at these 2: >>>>>> >>>>>> >>>>>> public JSONObject lockUser(String userId) throws Exception { >>>>>> String paramStr = "command=lockUser&id=" + userId + >>>>>> "&response=json&sessionkey=" + URLEncoder.encode(getSessionKey(), >>>>>> "UTF-8"); >>>>>> return sendApacheGet(paramStr); >>>>>> } >>>>>> >>>>>> >>>>>> public JSONObject disableUser(String userId) throws Exception { >>>>>> >>>>>> String paramStr = "command=disableUser&id=" + userId + >>>>>> "&response=json&sessionkey=" + URLEncoder.encode(getSessionKey(), >>>>>> "UTF-8"); >>>>>> return sendApacheGet(paramStr); >>>>>> } >>>>>> >>>>>> >>>>>> You repeat appending json and session key in all of them. Why not >>>>>> create >>>>>> some generic method where you pass a) commandName 2) map of >>>>>> parameters, >>>>>> and make that method return JsonObject/JsonArray? >>>>>> >>>>>> >>>>>> 2) I would suggest you utilize Spring framework in your code and auto >>>>>> wire >>>>>> all the dependencies by using @Inject rather than locating them with >>>>>> the >>>>>> components lifecycle. Please refer to Apache Wiki: >>>>>> >>>>>> >>>>>> https://cwiki.apache.org/confluence/display/CLOUDSTACK/Using+Spring+in+Clou >>>>>> dStack >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> 3) AccountFullSyncProcessor/DomainFullSyncProcessor/<other >>>>>> processors>. >>>>>> These looks like adaptors to me. Have you looked at how AdapterBase is >>>>>> utilized in CS? You should take a look at it. >>>>>> >>>>>> >>>>>> 4) I see that you have a folder called "simulator". Does this folder >>>>>> contain Test classes used by some kind of simulator? Or would they be >>>>>> used >>>>>> in production? If its just for testing, please rename them by putting >>>>>> the >>>>>> word "Simulator" in the name. Look at how other simulator classes are >>>>>> named in CS (SimulatorImageStoreLifeCycleImpl.java for example) >>>>>> >>>>>> 5) In the code, I haven't noticed where you store/read the end point >>>>>> URL >>>>>> to the CS Management server - the server address you are gonna send >>>>>> your >>>>>> requests to. If for example, you have MS1 and MS2, will your plugin >>>>>> from >>>>>> MS1 ever sends a request to MS2? And if it sends the request only to >>>>>> MS1, >>>>>> what ip address it uses? >>>>>> >>>>>> >>>>>> >>>>>> -Alena. >>>>>> >>>>>> On 3/13/14, 2:58 PM, "Alex Ough" <alex.o...@sungard.com> wrote: >>>>>> >>>>>> >They are not called outside and only called from 'subscriber' >>>>>> classes and >>>>>> >FullScanner class. >>>>>> > >>>>>> >Do you think these name changes are ok? >>>>>> > >>>>>> > - BaseInterface - UserInterface, AccountInterface, >>>>>> DomainInterface >>>>>> > => APICaller - APIUserCaller, APIAccountCaller, >>>>>> APIDomainCaller >>>>>> > >>>>>> > - BaseService - UserService, AccountService, DomainService >>>>>> > => RemoteResourceProcessor - RemoteUserProcessor, >>>>>> >RemoteAccountProcessor, RemoteDomainProcessor >>>>>> > >>>>>> > - FullSyncProcessor - UserFullSyncProcessor, >>>>>> AccountFullSyncProcessor, >>>>>> >DomainFullSyncProcessor >>>>>> > => no change >>>>>> > >>>>>> > - RemoteEventProcessor - RemoteUserEventProcessor, >>>>>> >RemoteAccountEventProcessor, RemoteDomainEventProcessor >>>>>> > => no change >>>>>> > >>>>>> >Thanks >>>>>> >Alex Ough >>>>>> > >>>>>> > >>>>>> > >>>>>> >On Thu, Mar 13, 2014 at 3:58 PM, Alena Prokharchyk < >>>>>> >alena.prokharc...@citrix.com> wrote: >>>>>> > >>>>>> >> You extract stuff into interfaces when the methods are meant to be >>>>>> >>called >>>>>> >> from different classes/Managers. Do you implement to add APIs for >>>>>> your >>>>>> >> plugins? Can your plugin be used by any other CS manager - >>>>>> RegionManager >>>>>> >> for example? If the answer is yes, then you would need an >>>>>> interface. If >>>>>> >> not, abstract class is fine, just remove Interface/Service from the >>>>>> >>name. >>>>>> >> Also rename your classes to reflect the purpose they are developed >>>>>> for; >>>>>> >> account/user/domain is way too generic and already used in other CS >>>>>> >> packages. >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> >> On 3/13/14, 1:50 PM, "Alex Ough" <alex.o...@sungard.com> wrote: >>>>>> >> >>>>>> >> >Patch B, >>>>>> >> > >>>>>> >> >1. The reason why I use abstract classes instead of interfaces is >>>>>> >>because >>>>>> >> >there are some basic methods that are used among the inherited >>>>>> >>classes, so >>>>>> >> >I'm not sure why it has to be an interface. >>>>>> >> > >>>>>> >> >2. These are the abstract base classes along with their inherited >>>>>> >>classes >>>>>> >> >and they are grouped by their behavior. >>>>>> >> > - BaseInterface - UserInterface, AccountInterface, >>>>>> DomainInterface >>>>>> >> > - BaseService - UserService, AccountService, DomainService >>>>>> >> > - FullSyncProcessor - UserFullSyncProcessor, >>>>>> >>AccountFullSyncProcessor, >>>>>> >> >DomainFullSyncProcessor >>>>>> >> > - RemoteEventProcessor - RemoteUserEventProcessor, >>>>>> >> >RemoteAccountEventProcessor, RemoteDomainEventProcessor >>>>>> >> > >>>>>> >> > => Do you recommend to refactor them into defining interfaces >>>>>> and >>>>>> >> >creating one class implementing all methods related with each >>>>>> user, >>>>>> >> >account >>>>>> >> >and domain? >>>>>> >> > >>>>>> >> >3. Let me work on changing names. >>>>>> >> > >>>>>> >> >Thanks >>>>>> >> >Alex Ough >>>>>> >> > >>>>>> >> > >>>>>> >> > >>>>>> >> > >>>>>> >> >On Thu, Mar 13, 2014 at 3:14 PM, Alena Prokharchyk < >>>>>> >> >alena.prokharc...@citrix.com> wrote: >>>>>> >> > >>>>>> >> >> Alex, see inline. >>>>>> >> >> >>>>>> >> >> -Alena. >>>>>> >> >> >>>>>> >> >> From: Alex Ough <alex.o...@sungard.com> >>>>>> >> >> Date: Thursday, March 13, 2014 at 1:00 PM >>>>>> >> >> To: Alena Prokharchyk <alena.prokharc...@citrix.com> >>>>>> >> >> Cc: "dev@cloudstack.apache.org" <dev@cloudstack.apache.org>, >>>>>> >>Chiradeep >>>>>> >> >> Vittal <chirade...@gmail.com> >>>>>> >> >> >>>>>> >> >> Subject: Re: [DISCUSS]{BEHAVIORAL-CHANGE]Domain-Account-User >>>>>> Sync Up >>>>>> >> >> Among Multiple Regions >>>>>> >> >> >>>>>> >> >> Hi Alena, >>>>>> >> >> >>>>>> >> >> Patch B, >>>>>> >> >> I'm not quite familiar with java, so I have a little difficulty >>>>>> in >>>>>> >> >> following your recommendation. >>>>>> >> >> Can you send me an example using 'BaseInterface' and/or >>>>>> >> >>'AccountInterface'? >>>>>> >> >> >>>>>> >> >> >>>>>> >> >> - What is called an interface in java: >>>>>> >> >> >>>>>> >>http://docs.oracle.com/javase/tutorial/java/concepts/interface.html >>>>>> . >>>>>> >> >> Its a place where all your methods are defined w/o actual >>>>>> >> >>implementation. >>>>>> >> >> - Look at any of cloudStack Managers implementation. Take for >>>>>> >> >>example: >>>>>> >> >> >>>>>> >> >> >>>>>> >> >> 1. AcccountManagerImpl.java - class where all the methods are >>>>>> >> >> implemented. Part of the server package >>>>>> >> >> 2. AccountManagerImpl implements 2 interfaces - >>>>>> AccountManager and >>>>>> >> >> AccountService. If you want any of your methods to be used by >>>>>> >> >> plugins/services, define them in Service interface. If all >>>>>> of them >>>>>> >> >>are >>>>>> >> >> meant to be used just inside your plugin/or cloudstack >>>>>> >>core/server - >>>>>> >> >>define >>>>>> >> >> them in Manager interface. >>>>>> >> >> 3. I would suggest you rename your classes/interfaces by >>>>>> adding >>>>>> >>your >>>>>> >> >> feature specific keyword to the name. CloudStack already has >>>>>> >> >>AccountService >>>>>> >> >> interface. And BaseInterface name is way too generic. Plus >>>>>> you >>>>>> >> >>shouldn't >>>>>> >> >> really put an "Interface" to the name. >>>>>> >> >> >>>>>> >> >> >>>>>> >> >> >>>>>> >> >> It will be very helpful and appreciated. >>>>>> >> >> >>>>>> >> >> Patch A, >>>>>> >> >> To reduce the number of requests to the remote regions >>>>>> >> >> because the syncing is always using the api requests a lot to >>>>>> get >>>>>> >> >> information of domains/accounts/users from remote regions. >>>>>> >> >> >>>>>> >> >> >>>>>> >> >> >>>>>> >> >> - you can't ,modify cloudStack core/server code only to fix >>>>>> >>problem >>>>>> >> >> that is specific to your plugin/service. The solution for >>>>>> your >>>>>> >>case >>>>>> >> >>will be >>>>>> >> >> - create in memory data structure where you keep >>>>>> account/domain >>>>>> >> >> information. Account->domain relationship don't change along >>>>>> >>account >>>>>> >> >> lifecycle, as well as the domain path doesn't change for the >>>>>> >>domain >>>>>> >> >>once >>>>>> >> >> its created. And get the domain path from there. >>>>>> >> >> >>>>>> >> >> >>>>>> >> >> >>>>>> >> >> And let me change the concatenation into using StringBuilder. >>>>>> >> >> >>>>>> >> >> Thanks a lot for your reply. >>>>>> >> >> Alex Ough >>>>>> >> >> >>>>>> >> >> >>>>>> >> >> On Thu, Mar 13, 2014 at 2:41 PM, Alena Prokharchyk < >>>>>> >> >> alena.prokharc...@citrix.com> wrote: >>>>>> >> >> >>>>>> >> >>> Alex, I have some comments. >>>>>> >> >>> >>>>>> >> >>> Patch B. >>>>>> >> >>> >>>>>> >> >>> * You shouldn't make your service a part of cloud-mom-rabbitmq >>>>>> >>plugin. >>>>>> >> >>> Your subscribers/implementation are specific to your feature, >>>>>> and >>>>>> >>you >>>>>> >> >>>need >>>>>> >> >>> to introduce a special plugin just for your service. >>>>>> >> >>> * AccountInterface and BaseInterface are still regular >>>>>> classes. You >>>>>> >> >>>should >>>>>> >> >>> split them into Service interface /ManagerImpl or Manager >>>>>> interface >>>>>> >> >>> /ManagerImpl as Chiradeep suggested. >>>>>> >> >>> * Once you extract services interfaces, make sure you don't >>>>>> use VO >>>>>> >> >>>objects >>>>>> >> >>> in methods signatures. >>>>>> >> >>> * You should really get a use of @Manager interface and @Inject >>>>>> >> >>> annotations for autowiring your managers instead of setting >>>>>> them up >>>>>> >> >>>using >>>>>> >> >>> ComponentContext.getComponent() in each of your manager >>>>>> classes. >>>>>> >> >>> >>>>>> >> >>> >>>>>> >> >>> >>>>>> >> >>> Patch A. >>>>>> >> >>> >>>>>> >> >>> * AccountResponse. Why did you add domain path to the account >>>>>> >>response? >>>>>> >> >>> You can always retrieve it by a) get domain info from account >>>>>> >>response >>>>>> >> >>>b) >>>>>> >> >>> execute listDomains&domainId to get the domain path. Try not to >>>>>> >> >>>overload >>>>>> >> >>> the response with attributes that don't belong to response's >>>>>> first >>>>>> >> >>>class >>>>>> >> >>> object. >>>>>> >> >>> >>>>>> >> >>> >>>>>> >> >>> Generic comments. >>>>>> >> >>> >>>>>> >> >>> * I can see that you do a lot of string concatenation this way: >>>>>> >> >>>paramStr >>>>>> >> >>> += "&email=" + email + "&firstname=" + firstName + >>>>>> "&lastname=" + >>>>>> >> >>>lastName >>>>>> >> >>> + "&accounttype=" + accountType; >>>>>> >> >>> I would suggest to use StringBuilder instead. >>>>>> >> >>> >>>>>> >> >>> >>>>>> >> >>> >>>>>> >> >>> >>>>>> >> >>> On 3/13/14, 9:33 AM, "Alex Ough" <alex.o...@sungard.com> >>>>>> wrote: >>>>>> >> >>> >>>>>> >> >>> >Chiradeep, >>>>>> >> >>> > >>>>>> >> >>> >Any comments on them? >>>>>> >> >>> > >>>>>> >> >>> >Thanks >>>>>> >> >>> >Alex Ough >>>>>> >> >>> > >>>>>> >> >>> > >>>>>> >> >>> >On Wed, Mar 12, 2014 at 10:58 AM, Alex Ough < >>>>>> alex.o...@sungard.com> >>>>>> >> >>> wrote: >>>>>> >> >>> > >>>>>> >> >>> >> And I also uploaded the patch B that includes new >>>>>> implementation >>>>>> >>to >>>>>> >> >>> >> support multi regions. >>>>>> >> >>> >> >>>>>> >> >>> >> Thanks >>>>>> >> >>> >> Alex Ough >>>>>> >> >>> >> >>>>>> >> >>> >> >>>>>> >> >>> >> On Wed, Mar 12, 2014 at 10:17 AM, Alex Ough >>>>>> >><alex.o...@sungard.com> >>>>>> >> >>> >>wrote: >>>>>> >> >>> >> >>>>>> >> >>> >>> I uploaded the patch A that includes only core changes, so >>>>>> >>please >>>>>> >> >>> >>>review >>>>>> >> >>> >>> it and let me know if you have any comments. >>>>>> >> >>> >>> >>>>>> >> >>> >>> Thanks >>>>>> >> >>> >>> Alex Ough >>>>>> >> >>> >>> >>>>>> >> >>> >>> >>>>>> >> >>> >>> On Wed, Mar 12, 2014 at 8:24 AM, Alex Ough >>>>>> >><alex.o...@sungard.com> >>>>>> >> >>> >>>wrote: >>>>>> >> >>> >>> >>>>>> >> >>> >>>> Hi Chiradeep, >>>>>> >> >>> >>>> >>>>>> >> >>> >>>> Can you give me the example of the Singleton service >>>>>> class you >>>>>> >> >>> >>>>mentioned? >>>>>> >> >>> >>>> I'm not sure if you are asking the name changes or else >>>>>> because >>>>>> >> >>>those >>>>>> >> >>> >>>> classes are abstract classes and do not need to be >>>>>> singleton >>>>>> >> >>>class. >>>>>> >> >>> >>>> >>>>>> >> >>> >>>> And let me try the refactoring and ask confirmations to >>>>>> you, >>>>>> >>so I >>>>>> >> >>> >>>>hope I >>>>>> >> >>> >>>> can get the reply soon. >>>>>> >> >>> >>>> >>>>>> >> >>> >>>> Thanks >>>>>> >> >>> >>>> Alex Ough >>>>>> >> >>> >>>> >>>>>> >> >>> >>>> >>>>>> >> >>> >>>> On Wed, Mar 12, 2014 at 4:13 AM, Daan Hoogland >>>>>> >> >>> >>>><daan.hoogl...@gmail.com>wrote: >>>>>> >> >>> >>>> >>>>>> >> >>> >>>>> H Alex, I considder Chiradeeps comments quite valid and >>>>>> >>serious >>>>>> >> >>> >>>>>enough >>>>>> >> >>> >>>>> to anticipate not making friday 14:00 CET. That would >>>>>> mean no >>>>>> >> >>>merge >>>>>> >> >>> >>>>> before 4.4. Can you live with that? >>>>>> >> >>> >>>>> >>>>>> >> >>> >>>>> On Wed, Mar 12, 2014 at 6:40 AM, Chiradeep Vittal >>>>>> >> >>> >>>>> <chiradeep.vit...@citrix.com> wrote: >>>>>> >> >>> >>>>> > Hi Alex, >>>>>> >> >>> >>>>> > >>>>>> >> >>> >>>>> > If you look at the general design of CloudStack, there >>>>>> are >>>>>> >> >>> >>>>>Singleton >>>>>> >> >>> >>>>> > service interfaces which are then implemented with real >>>>>> >> >>>classes. >>>>>> >> >>> >>>>>This >>>>>> >> >>> >>>>> > facilitates easy testing by mocking the interface. In >>>>>> your >>>>>> >>new >>>>>> >> >>> >>>>>files >>>>>> >> >>> >>>>> > (BaseInterface, which by the way is NOT an interface, >>>>>> >> >>> >>>>>AccountService, >>>>>> >> >>> >>>>> > which is NOT a service like other CloudStack services, >>>>>> and >>>>>> >>so >>>>>> >> >>>on), >>>>>> >> >>> >>>>> this >>>>>> >> >>> >>>>> > design paradigm is not followed. Therefore it is >>>>>> >>incongruous to >>>>>> >> >>> the >>>>>> >> >>> >>>>> rest >>>>>> >> >>> >>>>> > of the code base. >>>>>> >> >>> >>>>> > >>>>>> >> >>> >>>>> > Furthermore this has been plopped right in the middle >>>>>> of >>>>>> >>other >>>>>> >> >>> core >>>>>> >> >>> >>>>> > CloudStack code (server/src/com/cloud/region/). If you >>>>>> look >>>>>> >>at >>>>>> >> >>>the >>>>>> >> >>> >>>>> > EventBus logic, it has been written as a plugin, >>>>>> thereby >>>>>> >> >>>enabling >>>>>> >> >>> >>>>> users >>>>>> >> >>> >>>>> > who do not need it to disable it. This level of >>>>>> >>configuration >>>>>> >> >>>is >>>>>> >> >>> >>>>> needed >>>>>> >> >>> >>>>> > and I can't find it. >>>>>> >> >>> >>>>> > >>>>>> >> >>> >>>>> > So, to summarize: >>>>>> >> >>> >>>>> > 1. Split it into patches. Patch A is the change to the >>>>>> core >>>>>> >> >>>DAOs, >>>>>> >> >>> >>>>>db >>>>>> >> >>> >>>>> > logic, schema upgrade code, etc. >>>>>> >> >>> >>>>> > 2. Patch B is the actual sync service written as an >>>>>> optional >>>>>> >> >>> plugin >>>>>> >> >>> >>>>> with >>>>>> >> >>> >>>>> > the package name space of org.apache. >>>>>> >> >>> >>>>> > >>>>>> >> >>> >>>>> > On 3/11/14, 3:09 PM, "Alex Ough" < >>>>>> alex.o...@sungard.com> >>>>>> >> wrote: >>>>>> >> >>> >>>>> > >>>>>> >> >>> >>>>> >>Hi Daan, >>>>>> >> >>> >>>>> >> >>>>>> >> >>> >>>>> >>I didn't update the patch after the couple of works >>>>>> because >>>>>> >>I >>>>>> >> >>> >>>>>wanted >>>>>> >> >>> >>>>> to do >>>>>> >> >>> >>>>> >>it with others Chiradeep asked if any. >>>>>> >> >>> >>>>> >>Let me know when you want me to. >>>>>> >> >>> >>>>> >> >>>>>> >> >>> >>>>> >>Thanks >>>>>> >> >>> >>>>> >>Alex Ough >>>>>> >> >>> >>>>> >> >>>>>> >> >>> >>>>> >> >>>>>> >> >>> >>>>> >>On Tue, Mar 11, 2014 at 4:37 PM, Daan Hoogland >>>>>> >> >>> >>>>> >><daan.hoogl...@gmail.com>wrote: >>>>>> >> >>> >>>>> >> >>>>>> >> >>> >>>>> >>> I will call the merge in a moment, but won't do it >>>>>> >> >>>immediately. >>>>>> >> >>> >>>>> >>> >>>>>> >> >>> >>>>> >>> Be there for me when any issues come up. If not I >>>>>> will >>>>>> >>revert >>>>>> >> >>> it. >>>>>> >> >>> >>>>> >>> >>>>>> >> >>> >>>>> >>> @Chiradeep: did Alex answer your concerns adequately? >>>>>> >> >>> >>>>> >>> >>>>>> >> >>> >>>>> >>> >>>>>> >> >>> >>>>> >>> kind regards, >>>>>> >> >>> >>>>> >>> >>>>>> >> >>> >>>>> >>> On Tue, Mar 11, 2014 at 6:43 PM, Alex Ough >>>>>> >> >>> >>>>><alex.o...@sungard.com> >>>>>> >> >>> >>>>> >>>wrote: >>>>>> >> >>> >>>>> >>> > I worked on a couple of items, so can you give me >>>>>> the >>>>>> >> >>> >>>>> confirmation for >>>>>> >> >>> >>>>> >>> the >>>>>> >> >>> >>>>> >>> > rest items so that I can wrap this up? >>>>>> >> >>> >>>>> >>> > I really want to include this into 4.4. >>>>>> >> >>> >>>>> >>> > >>>>>> >> >>> >>>>> >>> > Thanks >>>>>> >> >>> >>>>> >>> > Alex Ough >>>>>> >> >>> >>>>> >>> > >>>>>> >> >>> >>>>> >>> > >>>>>> >> >>> >>>>> >>> > On Mon, Mar 10, 2014 at 3:41 PM, Alex Ough >>>>>> >> >>> >>>>><alex.o...@sungard.com >>>>>> >> >>> >>>>> > >>>>>> >> >>> >>>>> >>> wrote: >>>>>> >> >>> >>>>> >>> > >>>>>> >> >>> >>>>> >>> >> Please see my reply/question in blue. >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >> Thanks >>>>>> >> >>> >>>>> >>> >> Alex Ough >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >> On Mon, Mar 10, 2014 at 1:25 PM, Chiradeep Vittal >>>>>> < >>>>>> >> >>> >>>>> >>> >> chiradeep.vit...@citrix.com> wrote: >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >>> I haven¹t looked at it because it is huge. But >>>>>> >> >>>preliminary >>>>>> >> >>> >>>>>scan: >>>>>> >> >>> >>>>> >>> >>> >>>>>> >> >>> >>>>> >>> >>> - there are unit tests missing for changes to >>>>>> core CS >>>>>> >> >>>code >>>>>> >> >>> >>>>> >>> >>> >>>>>> >> >>> >>>>> >>> >> Unit tests for only new classes were >>>>>> added >>>>>> >> >>>because I >>>>>> >> >>> >>>>> >>>couldn't >>>>>> >> >>> >>>>> >>> >> find unit tests of the ones I modified >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >>> - uses com.amazonaws.util.json (why?) >>>>>> >> >>> >>>>> >>> >>> >>>>>> >> >>> >>>>> >>> >> They are used to handle the json >>>>>> objects. Let >>>>>> >>me >>>>>> >> >>> know >>>>>> >> >>> >>>>> if you >>>>>> >> >>> >>>>> >>> >> want me to replace it with another. >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >> - code format does not follow coding convention ( >>>>>> >> >>>placement >>>>>> >> >>> of >>>>>> >> >>> >>>>> {}, >>>>>> >> >>> >>>>> >>>camel >>>>>> >> >>> >>>>> >>> >>> case api_interface ) >>>>>> >> >>> >>>>> >>> >>> >>>>>> >> >>> >>>>> >>> >> Done >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >>> - package namespace is com.cloud instead of >>>>>> org.apache >>>>>> >> >>>for >>>>>> >> >>> >>>>>new >>>>>> >> >>> >>>>> files >>>>>> >> >>> >>>>> >>> >>> >>>>>> >> >>> >>>>> >>> >> I didn't know that. So do I need to use >>>>>> >> >>>'org.apache' >>>>>> >> >>> >>>>> package >>>>>> >> >>> >>>>> >>> for >>>>>> >> >>> >>>>> >>> >> all new classes? >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >> - no file-level comments. What does >>>>>> LocalAccountManager >>>>>> >> >>>do? >>>>>> >> >>> >>>>>Why >>>>>> >> >>> >>>>> does >>>>>> >> >>> >>>>> >>>it >>>>>> >> >>> >>>>> >>> >>> exist? Etc. >>>>>> >> >>> >>>>> >>> >>> >>>>>> >> >>> >>>>> >>> >> Done. >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >>> - No interfaces, only abstract classes. No use of >>>>>> >> >>>@Inject. >>>>>> >> >>> >>>>>While >>>>>> >> >>> >>>>> >>>this >>>>>> >> >>> >>>>> >>> >>> might be OK, it does make it harder to test and >>>>>> does >>>>>> >>not >>>>>> >> >>> >>>>>follow >>>>>> >> >>> >>>>> the >>>>>> >> >>> >>>>> >>> rest >>>>>> >> >>> >>>>> >>> >>> of ACS conventions. >>>>>> >> >>> >>>>> >>> >>> >>>>>> >> >>> >>>>> >>> >> I don't think there is any interface, but >>>>>> let >>>>>> >>me >>>>>> >> >>>know >>>>>> >> >>> >>>>>if >>>>>> >> >>> >>>>> you >>>>>> >> >>> >>>>> >>> find >>>>>> >> >>> >>>>> >>> >> any. >>>>>> >> >>> >>>>> >>> >> Any recommendation to replace @inject? >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >>> >>>>>> >> >>> >>>>> >>> >>> I would urge the submitter to break up the >>>>>> submission. >>>>>> >> >>> >>>>> >>> >>> A) the changes to CS core, with explanations / >>>>>> >>comments >>>>>> >> >>>and >>>>>> >> >>> >>>>> tests >>>>>> >> >>> >>>>> >>> >>> B) the sync service should be an interface with >>>>>> >>concrete >>>>>> >> >>> >>>>> >>> implementations >>>>>> >> >>> >>>>> >>> >>> in its own package >>>>>> >> >>> >>>>> >>> >>> C) more tests >>>>>> >> >>> >>>>> >>> >>> >>>>>> >> >>> >>>>> >>> >> can you give me a little specific what >>>>>> kind of >>>>>> >> >>>tests >>>>>> >> >>> >>>>>you >>>>>> >> >>> >>>>> need >>>>>> >> >>> >>>>> >>> >> more? >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >>> On 3/10/14, 3:37 AM, "Daan Hoogland" >>>>>> >> >>> >>>>><daan.hoogl...@gmail.com> >>>>>> >> >>> >>>>> >>>wrote: >>>>>> >> >>> >>>>> >>> >>> >>>>>> >> >>> >>>>> >>> >>> >Hi everyody, >>>>>> >> >>> >>>>> >>> >>> > >>>>>> >> >>> >>>>> >>> >>> >The people at sungard have been making this >>>>>> change >>>>>> >>for >>>>>> >> >>>4.4 >>>>>> >> >>> >>>>>and >>>>>> >> >>> >>>>> I >>>>>> >> >>> >>>>> >>>want >>>>>> >> >>> >>>>> >>> >>> >to merge/apply it this week. It is more then a >>>>>> >> >>>screenfull >>>>>> >> >>> >>>>>and >>>>>> >> >>> >>>>> might >>>>>> >> >>> >>>>> >>> >>> >cause issue is a setup or two. >>>>>> >> >>> >>>>> >>> >>> > >>>>>> >> >>> >>>>> >>> >>> >have a look at >>>>>> https://reviews.apache.org/r/17790/ >>>>>> >> >>> >>>>> >>> >>> > >>>>>> >> >>> >>>>> >>> >>> >a ref to ticket and fs page are in the review >>>>>> >>request. >>>>>> >> >>> >>>>> >>> >>> > >>>>>> >> >>> >>>>> >>> >>> >kind regards, >>>>>> >> >>> >>>>> >>> >>> >-- >>>>>> >> >>> >>>>> >>> >>> >Daan >>>>>> >> >>> >>>>> >>> >>> >>>>>> >> >>> >>>>> >>> >>> >>>>>> >> >>> >>>>> >>> >>> >>>>>> >> >>> >>>>> >>> >> >>>>>> >> >>> >>>>> >>> >>>>>> >> >>> >>>>> >>> >>>>>> >> >>> >>>>> >>> >>>>>> >> >>> >>>>> >>> -- >>>>>> >> >>> >>>>> >>> Daan >>>>>> >> >>> >>>>> >>> >>>>>> >> >>> >>>>> >>> >>>>>> >> >>> >>>>> > >>>>>> >> >>> >>>>> >>>>>> >> >>> >>>>> >>>>>> >> >>> >>>>> >>>>>> >> >>> >>>>> -- >>>>>> >> >>> >>>>> Daan >>>>>> >> >>> >>>>> >>>>>> >> >>> >>>>> >>>>>> >> >>> >>>> >>>>>> >> >>> >>> >>>>>> >> >>> >> >>>>>> >> >>> >>>>>> >> >>> >>>>>> >> >> >>>>>> >> >>>>>> >> >>>>>> >>>>>> >>>>> >>>> >>> >> >