-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/17888/#review35542
-----------------------------------------------------------


Antonio, in general looks good to me. There are some minor fixes that need to 
be done though.

1) ApiServer.java

@Inject()
177
    protected DispatchChainFactory dispatchChainFactory = null;


Why do you use @Inject with ()?


2) ApiServlet.java

 domainIdArr = (String[])params.get(ApiConstants.DOMAIN__ID);

* Why do we have DOMAIN__ID and DOMAIN_ID as separate parameters?

public static final String DOMAIN_ID = "domainid";
public static final String DOMAIN__ID = "domainId";

The above doesn't look right to me. Why do we care about the case? the API 
parameter is always transformed to all lowercase letters


3)  CommandCreationWorker.java


  throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR,
50
                    "Trying to invoke creation on a Command that is not  
BaseAsyncCreateCmd");


* Don't hardcode the class name; retrieve it from the .simpleName method called 
on the class object


4) DispatchChain

for (final DispatchWorker worker : workers) {
        if (!worker.handle(task)) {
            break;
        }
    }

* Why do we just break when workder can't handle the task? Aren't we supposed 
to do something?
* Can you please add more logging? At least log in trace that some worker 
handled/coudln't handle the task



4) I can see that you do a lot of initialization like that for private 
variables:

    protected AccountManager _accountMgr = null;

its not necessary step as private variables are being initialized to NULL by 
default during declaration. Can you please clean it out?


- Alena Prokharchyk


On Feb. 26, 2014, 9:12 a.m., Antonio Fornie wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/17888/
> -----------------------------------------------------------
> 
> (Updated Feb. 26, 2014, 9:12 a.m.)
> 
> 
> Review request for cloudstack, Alena Prokharchyk, daan Hoogland, and Hugo 
> Trippaers.
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> Dispatcher corrections, refactoring and tests. Corrects problems from 
> previous attempts that were reverted by Alena. Most of the changes are the 
> same, but this one is not creating conflicts of Map types for Aync Commands 
> or for parameters as Lists or Maps.
> 
> 
> Diffs
> -----
> 
>   api/src/org/apache/cloudstack/api/ApiConstants.java 7b7f9ca 
>   api/src/org/apache/cloudstack/api/BaseCmd.java 0e83cee 
>   api/src/org/apache/cloudstack/api/BaseListCmd.java c1a4b4c 
>   api/src/org/apache/cloudstack/api/command/admin/user/GetUserCmd.java 
> 592b828 
>   api/src/org/apache/cloudstack/api/command/admin/user/UpdateUserCmd.java 
> de6e550 
>   
> api/src/org/apache/cloudstack/api/command/user/autoscale/CreateAutoScaleVmProfileCmd.java
>  06d86ec 
>   
> server/resources/META-INF/cloudstack/core/spring-server-core-misc-context.xml 
> fd2f5fb 
>   server/src/com/cloud/api/ApiAsyncJobDispatcher.java 71ac616 
>   server/src/com/cloud/api/ApiDispatcher.java ed95c72 
>   server/src/com/cloud/api/ApiServer.java d715db6 
>   server/src/com/cloud/api/ApiServlet.java 46f7eba 
>   server/src/com/cloud/api/dispatch/CommandCreationWorker.java PRE-CREATION 
>   server/src/com/cloud/api/dispatch/DispatchChain.java PRE-CREATION 
>   server/src/com/cloud/api/dispatch/DispatchChainFactory.java PRE-CREATION 
>   server/src/com/cloud/api/dispatch/DispatchTask.java PRE-CREATION 
>   server/src/com/cloud/api/dispatch/DispatchWorker.java PRE-CREATION 
>   server/src/com/cloud/api/dispatch/ParamGenericValidationWorker.java 
> PRE-CREATION 
>   server/src/com/cloud/api/dispatch/ParamProcessWorker.java PRE-CREATION 
>   server/src/com/cloud/api/dispatch/ParamSemanticValidationWorker.java 
> PRE-CREATION 
>   server/src/com/cloud/api/dispatch/ParamUnpackWorker.java PRE-CREATION 
>   server/src/com/cloud/network/as/AutoScaleManagerImpl.java ff2b2ea 
>   server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java 3159059 
>   server/test/com/cloud/api/ApiDispatcherTest.java 7314a57 
>   server/test/com/cloud/api/dispatch/CommandCreationWorkerTest.java 
> PRE-CREATION 
>   server/test/com/cloud/api/dispatch/DispatchChainFactoryTest.java 
> PRE-CREATION 
>   server/test/com/cloud/api/dispatch/ParamGenericValidationWorkerTest.java 
> PRE-CREATION 
>   server/test/com/cloud/api/dispatch/ParamProcessWorkerTest.java PRE-CREATION 
>   server/test/com/cloud/api/dispatch/ParamSemanticValidationWorkerTest.java 
> PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/17888/diff/
> 
> 
> Testing
> -------
> 
> Full build and test plus manually testing many features. Also including 
> CreateTagsCommand that failed in previous commit.
> 
> All unit and integration tests.
> 
> Test CS Web UI with the browser going through several use cases.
> 
> Also use the CS API by sending HTTP requests generated manually including 
> requests for Async Commands with Map parameters and during these tests apart 
> fromtesting correct functionality I also debugged to check that Maps created 
> correctly where they should but also that in the cases where the async 
> command must be persisted and later on retrieved and deserialized by gson 
> everything works ok and does what and where is expected. An example based on 
> the comment by Alena:
> http://localhost:8096/client/api?command=createTags&resourceids=ids&resourcetype=type&tags[0].key=region&tags[0].value=canada
> Also other examples like
> http://localhost:8096/client/api?command=createSecondaryStagingStore&url=httpbla&details[0].key=region&details[0].value=canada&details[1].key=element&details[1].value=fire
> 
> 
> Thanks,
> 
> Antonio Fornie
> 
>

Reply via email to