Likewise, Alex. Will review the patch tomorrow.
Thank you! Alena. On 4/16/14, 12:11 PM, "Alex Ough" <alex.o...@sungardas.com> wrote: >Hi Alena, > > >It was a nice to actually meet you during the conference and I updated >the review requests, so please review them and let me know if there is >anything not expected. > > >Thanks >Alex Ough > > > >On Thu, Apr 3, 2014 at 1:01 PM, Alex Ough ><alex.o...@sungardas.com> wrote: > >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+Clo >u >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 <mailto: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/ <https://reviews.apache.org/r/17790/> >>> >>> >>>>> >>> >>> > >>> >>> >>>>> >>> >>> >a ref to ticket and fs page are in the review >>>request. >>> >>> >>>>> >>> >>> > >>> >>> >>>>> >>> >>> >kind regards, >>> >>> >>>>> >>> >>> >-- >>> >>> >>>>> >>> >>> >Daan >>> >>> >>>>> >>> >>> >>> >>> >>>>> >>> >>> >>> >>> >>>>> >>> >>> >>> >>> >>>>> >>> >> >>> >>> >>>>> >>> >>> >>> >>>>> >>> >>> >>> >>>>> >>> >>> >>> >>>>> >>> -- >>> >>> >>>>> >>> Daan >>> >>> >>>>> >>> >>> >>> >>>>> >>> >>> >>> >>>>> > >>> >>> >>>>> >>> >>> >>>>> >>> >>> >>>>> >>> >>> >>>>> -- >>> >>> >>>>> Daan >>> >>> >>>>> >>> >>> >>>>> >>> >>> >>>> >>> >>> >>> >>> >>> >> >>> >>> >>> >>> >>> >> >>> >>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >