Alon Bar-Lev has posted comments on this change.

Change subject: engine : Validate parameter in canDoAction
......................................................................


Patch Set 1:

(7 comments)

....................................................
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
Line 2164:     }
Line 2165: 
Line 2166:     protected void setRequiredParameters(VdcParameter[] params) {
Line 2167:         this.requiredParameters = Arrays.asList(params);
Line 2168:     }
this is not good for inheritance. we should allow appending.

 C2         ->           C1       ->      CommandBase
 [p1, p2, p3]           [p1, p2]          []
Line 2169: 
Line 2170:     protected void setOptionalParameters(VdcParameter[] params) {
Line 2171:         this.optionalParameters = Arrays.asList(params);
Line 2172:     }


....................................................
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VdcParametersValidator.java
Line 16: import java.util.Set;
Line 17: 
Line 18: public class VdcParametersValidator {
Line 19:     private static final Log log = 
LogFactory.getLog(VdcParametersValidator.class);
Line 20:     private static final VdcParameter[] commonParametersArray = {
you can drop this temp variable
Line 21:             CoreVdcParameters.GUID_ID,
Line 22:             CoreVdcParameters.SESSION_ID,
Line 23:             CoreVdcParameters.PARAMETERS_CURRENT_USER,
Line 24:             CoreVdcParameters.SHOULD_BE_LOGGED,


Line 42:             CoreVdcParameters.FILTERED,
Line 43:             CoreVdcParameters.REFRESH};
Line 44:     private static final List<VdcParameter> commonParameters = 
Arrays.asList(commonParametersArray);
Line 45: 
Line 46:     public static <T extends VdcParametersMap> boolean 
validateParameters(
why is this function a template?
Line 47:             T parameters,
Line 48:             List<VdcParameter> requiredParameters,
Line 49:             List<VdcParameter> optionalParameters) {
Line 50:         Set<Map.Entry<VdcParameter, Serializable>> paramsSet = 
parameters.entrySet();


Line 51:         List<VdcParameter> paramNames = new ArrayList<VdcParameter>();
Line 52:         for (Map.Entry<VdcParameter, Serializable> param : paramsSet) {
Line 53:             paramNames.add(param.getKey());
Line 54:             try {
Line 55:                 if 
(!Class.forName(param.getKey().getJavaType()).isAssignableFrom(param.getValue().getClass()))
 {
I hope this will be required only for the canDoAction, and if it is, then after 
we validate parameters existence (required, optional) we should have another 
function to check the types and call it just from canDoAction.
Line 56:                     throw new 
InvalidParameterValueException(param.getKey().getName(), 
param.getKey().getJavaType(), param.getValue().getClass().getName());
Line 57:                 }
Line 58:             } catch (ClassNotFoundException e) {
Line 59:                 throw new 
InvalidParameterValueException(param.getKey().getName(), 
param.getKey().getJavaType());


Line 59:                 throw new 
InvalidParameterValueException(param.getKey().getName(), 
param.getKey().getJavaType());
Line 60:             }
Line 61:         }
Line 62:         if (requiredParameters.isEmpty()) {
Line 63:             return true;
please avoid return at middle of functions, and I am unsure it is required as 
the flow will handle this case as well.
Line 64:         }
Line 65:         if (!paramNames.containsAll(requiredParameters)) {
Line 66:             List<VdcParameter> copy = new 
ArrayList(requiredParameters);
Line 67:             copy.removeAll(paramNames);


Line 77:                     buf.append(" ,");
Line 78:                 }
Line 79:                 buf.append(param.getName());
Line 80:             }
Line 81:             log.warnFormat("Unknown parameters {0} found in command.", 
buf.toString());
I am unsure that warning is appropriate compared to debug, but for now during 
development it is usable.
Line 82:         }
Line 83:         return true;
Line 84:     }
Line 85: 


Line 79:                 buf.append(param.getName());
Line 80:             }
Line 81:             log.warnFormat("Unknown parameters {0} found in command.", 
buf.toString());
Line 82:         }
Line 83:         return true;
where do you return false?
Line 84:     }
Line 85: 


-- 
To view, visit http://gerrit.ovirt.org/21485
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I15566c9177da28b2d47bbb6018fbfb61defcf3da
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ravi Nori <rn...@redhat.com>
Gerrit-Reviewer: Alon Bar-Lev <alo...@redhat.com>
Gerrit-Reviewer: oVirt Jenkins CI Server
Gerrit-HasComments: Yes
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to