Alon Bar-Lev has posted comments on this change.

Change subject: engine: Add infrastructure code for removal of parameter classes
......................................................................


Patch Set 5:

(18 comments)

....................................................
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionParametersBase.java
Line 256:         paramsMap.<T>put(param, value);
Line 257:         return this;
Line 258:     }
Line 259: 
Line 260:     public <T> T getParameterValue(VdcParameter<T> param) {
getParameter() ? why do we need Value for?
Line 261:         return paramsMap.<T>get(param, param.getJavaType());
Line 262:     }
Line 263: 
Line 264:     public <T> T getParameterValue(VdcParameter<T> param, Class<T> 
retType) {


Line 257:         return this;
Line 258:     }
Line 259: 
Line 260:     public <T> T getParameterValue(VdcParameter<T> param) {
Line 261:         return paramsMap.<T>get(param, param.getJavaType());
why can't the get call the getJavaType()?
Line 262:     }
Line 263: 
Line 264:     public <T> T getParameterValue(VdcParameter<T> param, Class<T> 
retType) {
Line 265:         return paramsMap.<T>get(param, retType);


Line 264:     public <T> T getParameterValue(VdcParameter<T> param, Class<T> 
retType) {
Line 265:         return paramsMap.<T>get(param, retType);
Line 266:     }
Line 267: 
Line 268:     public VdcParametersMap getParamsHelper() {
getParameters() why do we need the Helper for?
Line 269:         return paramsMap;
Line 270:     }
Line 271: 
Line 272:     public void setParamsHelper(VdcParametersMap helper) {


Line 347:                 return false;
Line 348:         } else if (!stepId.equals(other.stepId))
Line 349:             return false;
Line 350:         if (paramsMap == null) {
Line 351:             if (other.getParamsHelper() != null)
other.paramsMap? why do you need to access via getter?
Line 352:                 return false;
Line 353:         } else if (!paramsMap.equals(other.getParamsHelper()))
Line 354:             return false;
Line 355: 


....................................................
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/GenericVdcParameter.java
Line 3: import org.ovirt.engine.core.compat.Guid;
Line 4: 
Line 5: public class GenericVdcParameter {
Line 6: 
Line 7:     public final static VdcParameter GUID_ID = 
VdcParameter.<Guid>create("GUID_ID", Guid.class, new 
Guid("00000000-0000-0000-0000-000000000001"));
why this has to be template?

Why do we need to construct GUID here and not do it within create?

Why can't it be:

 public final static VdcParameter GUID_ID = VdcParameter.create("GUID_ID", 
Guid.class, "00000000-0000-0000-0000-000000000001");
Line 8: 


....................................................
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/InvalidParameterGuidException.java
Line 2: 
Line 3: public class InvalidParameterGuidException extends 
IllegalArgumentException {
Line 4: 
Line 5:     public InvalidParameterGuidException(String guid) {
Line 6:         super("Invalid value for Guid of VdcParameter. A parameter with 
the same Guid already exists " + guid);
this is not helpful... please print what key one trying to add and where is the 
conflict. this is the reason we have names for parameters.
Line 7:     }
Line 8: 


....................................................
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/InvalidParameterRequestTypeException.java
Line 4: 
Line 5:     public InvalidParameterRequestTypeException(Class expected, Class<? 
extends Object> actual) {
Line 6:         super("Invalid return type requested for 
VdcQueryParametersBase.getParameter. Expected value of type "
Line 7:                 + expected.getName()
Line 8:                 + "but requested class was "
space before but?
Line 9:                 + actual.getName());
Line 10:     }
Line 11: 


....................................................
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/InvalidParameterValueException.java
Line 4: 
Line 5:     public InvalidParameterValueException(Class expected, Class<? 
extends Object> actual) {
Line 6:         super("Invalid value for VdcQueryParametersBase.addParameter. 
Expected value of type "
Line 7:                 + expected.getName()
Line 8:                 + "but actual class was "
space before but?
Line 9:                 + actual.getName());
Line 10:     }
Line 11: 


....................................................
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VdcParameter.java
Line 4: import java.util.ArrayList;
Line 5: import java.util.List;
Line 6: import org.ovirt.engine.core.compat.Guid;
Line 7: 
Line 8: public class VdcParameter<T> implements Serializable {
why does the class needs to be template?
Line 9: 
Line 10:     private String name;
Line 11:     private Class<T> javaType;
Line 12:     private Guid guid;


Line 7: 
Line 8: public class VdcParameter<T> implements Serializable {
Line 9: 
Line 10:     private String name;
Line 11:     private Class<T> javaType;
This can be simply Class no?
Line 12:     private Guid guid;
Line 13:     private static final List<Guid> guidsList = new ArrayList<Guid>();
Line 14: 
Line 15:     /**


Line 9: 
Line 10:     private String name;
Line 11:     private Class<T> javaType;
Line 12:     private Guid guid;
Line 13:     private static final List<Guid> guidsList = new ArrayList<Guid>();
I suggest HashMap to contain key guid and value parameter so we can tell user 
what is the conflict.
Line 14: 
Line 15:     /**
Line 16:      * Needed by Json Serialization/Deserialization
Line 17:      */


Line 17:      */
Line 18:     private VdcParameter() {
Line 19:     }
Line 20: 
Line 21:     private VdcParameter(String name, Class<T> javaType, Guid guid) {
Class should be enough.
Line 22:         this.name = name;
Line 23:         this.javaType = javaType;
Line 24:         this.guid = guid;
Line 25:     }


Line 49:     }
Line 50: 
Line 51:     @Override
Line 52:     public String toString() {
Line 53:         return getClass().getName() + "." + getName();
please also add the GUID which is important.
Line 54:     }
Line 55: 
Line 56:     public static <T> VdcParameter<T> create(String name, Class<T> 
javaType, Guid guid) {
Line 57:         if (guidsList.contains(guid)) {


Line 52:     public String toString() {
Line 53:         return getClass().getName() + "." + getName();
Line 54:     }
Line 55: 
Line 56:     public static <T> VdcParameter<T> create(String name, Class<T> 
javaType, Guid guid) {
This should be simple to use...

 public static VdcParameter create(String name, Class type, String guid)
Line 57:         if (guidsList.contains(guid)) {
Line 58:             throw new InvalidParameterGuidException(guid.toString());
Line 59:         }
Line 60:         guidsList.add(guid);


....................................................
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VdcParametersMap.java
Line 9: import org.ovirt.engine.core.compat.Guid;
Line 10: 
Line 11: public class VdcParametersMap implements Serializable {
Line 12: 
Line 13:     private Map<Guid, VdcParameterValue> paramsMap;
I still do not understand why can't we have VdcParameter as a key and Object as 
a value.

The equals method and the hash of VdcParameter can be based on the Guid.
Line 14: 
Line 15:     public VdcParametersMap() {
Line 16:         paramsMap = new HashMap<Guid, VdcParameterValue>();
Line 17:     }


Line 15:     public VdcParametersMap() {
Line 16:         paramsMap = new HashMap<Guid, VdcParameterValue>();
Line 17:     }
Line 18: 
Line 19:     public <T> void put(VdcParameter param, T value) {
I do not understand why is this template, I expect:

 public void put(VdcParameter param, Object value)
Line 20:         VdcParameterValue.raiseExceptionIfInvalidObjectType(param, 
value);
Line 21:         paramsMap.put(param.getGuid(), new VdcParameterValue<T>(param, 
value));
Line 22:     }
Line 23: 


Line 20:         VdcParameterValue.raiseExceptionIfInvalidObjectType(param, 
value);
Line 21:         paramsMap.put(param.getGuid(), new VdcParameterValue<T>(param, 
value));
Line 22:     }
Line 23: 
Line 24:     public <T> T get(VdcParameter<T> param) {
Why can't it be something like:

 public <T> T get(VdcParameter param) {
    VdcParameterValue.raiseExceptionIfInvalidReturnType(
        param.getJavaType(),
        T
    );
    return (T)paramsMap.get(param.getGuid()).getValue();
 }

and drop function bellow.
Line 25:         return get(param, param.getJavaType());
Line 26:     }
Line 27: 
Line 28:     /**


Line 37:         }
Line 38:         return paramValue.getValue();
Line 39:     }
Line 40: 
Line 41:     public int getNumParameterValues() {
size() ?
Line 42:         return paramsMap.size();
Line 43:     }
Line 44: 
Line 45:     @Override


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

Gerrit-MessageType: comment
Gerrit-Change-Id: I6a0970e492c0eff561888a46b02e47645ff68fc3
Gerrit-PatchSet: 5
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ravi Nori <rn...@redhat.com>
Gerrit-Reviewer: Alon Bar-Lev <alo...@redhat.com>
Gerrit-Reviewer: Barak Azulay <bazu...@redhat.com>
Gerrit-Reviewer: Liran Zelkha <liran.zel...@gmail.com>
Gerrit-Reviewer: Ravi Nori <rn...@redhat.com>
Gerrit-Reviewer: Yaniv Bronhaim <ybron...@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