...
8. Write a command class that implements the correct annotations for a command: (Note: (1) by using authorized annotation, we can enabled this API by default for a given set of role types, (2) by using the validations annotation on @Parameter field we can perform ApiArgValidator.NotNullOrEmpty checks on string types and ApiArgValidator.PositiveNumber on number types such as short, int, long.)
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
package com.cloud.test; import javax.inject.Inject; import org.apache.log4j.Logger; import org.apache.cloudstack.api.ApiArgValidator; import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.acl.RoleType; @APICommand(name = "getTimeOfDay", description="Get Cloudstack's time of day", responseObject = GetTimeOfDayCmdResponse.class, includeInApiDoc=true, authorized = {RoleType.Admin, RoleType.ResourceAdmin, RoleType.DomainAdmin, RoleType.User}) public class GetTimeOfDayCmd extends BaseCmd { public static final Logger s_logger = Logger.getLogger(GetTimeOfDayCmd.class.getName()); private static final String s_name = "gettimeofdayresponse"; @Parameter(name="example", type=CommandType.STRING, required=false, description="Just an example string that will be uppercased", validations = {ApiArgValidator.NotNullOrEmpty}) private String example; public String getExample() { return this.example; } @Override public void execute() { GetTimeOfDayCmdResponse response = new GetTimeOfDayCmdResponse(); if ( this.example != null ) { response.setExampleEcho(example); } response.setObjectName("timeofday"); // the inner part of the json structure response.setResponseName(getCommandName()); // the outer part of the json structure this.setResponseObject(response); } @Override public String getCommandName() { return s_name; } @Override public long getEntityOwnerId() { return 0; } } |
...