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

Reply via email to