Ravi Nori has uploaded a new change for review. Change subject: engine: Add infrastructure code for removal of parameter classes ......................................................................
engine: Add infrastructure code for removal of parameter classes This patch adds the infrastructure code that is needed by subsequent patches to remove dependency on parameter classes. A new map Map<VdcQueryParameter, VdcQueryParameterValue> has been added to VdcQueryParametersBase. This map contains all the parameters required for the execution of the query. Eliminating the need for a specific QueryParameter class. Change-Id: I6a0970e492c0eff561888a46b02e47645ff68fc3 Signed-off-by: Ravi Nori <rn...@redhat.com> --- M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionParametersBase.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/InvalidParameterValueException.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryParametersBase.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VdcParameter.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VdcParameterValue.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VdcParametersMapBase.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendSubResource.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendBaseTest.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCollectionResourceTest.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/test/util/TestHelper.java M backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonObjectSerializer.java A backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonVdcParametersMapBaseMixIn.java M frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml 13 files changed, 367 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/14/20414/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionParametersBase.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionParametersBase.java index 12ae3aa..7ef40b5 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionParametersBase.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionParametersBase.java @@ -10,6 +10,9 @@ import org.ovirt.engine.core.common.businessentities.BusinessEntitiesDefinitions; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.utils.ValidationUtils; +import org.ovirt.engine.core.common.utils.VdcParameter; +import org.ovirt.engine.core.common.utils.VdcParameterValue; +import org.ovirt.engine.core.common.utils.VdcParametersMapBase; import org.ovirt.engine.core.common.validation.group.PreRun; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.TransactionScopeOption; @@ -61,6 +64,7 @@ private Guid jobId; private Guid stepId; + private VdcParametersMapBase paramsMap; public VdcActionParametersBase() { shouldbelogged = true; @@ -72,6 +76,7 @@ parentCommand = VdcActionType.Unknown; commandType = VdcActionType.Unknown; imagesParameters = new ArrayList<VdcActionParametersBase>(); + paramsMap = new VdcParametersMapBase(); } public Guid getCommandId() { @@ -248,6 +253,23 @@ executionIndex--; } + public <T> void addParameter(VdcParameter param, Object obj) { + VdcParameterValue<T> value = param.getVdcParameterHandler().createVdcParameterValue(obj); + addParameter(param, value); + } + + public <T> void addParameter(VdcParameter param, VdcParameterValue<T> value) { + paramsMap.addParameter(param, value); + } + + public <T> VdcParameterValue<T> getParameterValue(VdcParameter param) { + return paramsMap.getParameterValue(param); + } + + public VdcParametersMapBase getParamsHelper() { + return paramsMap; + } + @Override public int hashCode() { final int prime = 31; @@ -264,6 +286,7 @@ result = prime * result + executionIndex; result = prime * result + ((jobId == null) ? 0 : jobId.hashCode()); result = prime * result + ((stepId == null) ? 0 : stepId.hashCode()); + result = prime * result + ((paramsMap == null) ? 0 : paramsMap.hashCode()); return result; } @@ -321,6 +344,11 @@ return false; } else if (!stepId.equals(other.stepId)) return false; + if (paramsMap == null) { + if (other.getParamsHelper() != null) + return false; + } else if (!paramsMap.equals(other.getParamsHelper())) + return false; return true; } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/InvalidParameterValueException.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/InvalidParameterValueException.java new file mode 100644 index 0000000..6fc0b17 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/InvalidParameterValueException.java @@ -0,0 +1,10 @@ +package org.ovirt.engine.core.common.queries; + +public class InvalidParameterValueException extends IllegalArgumentException { + + static final String MSG_PREFIX = "Invalid value for VdcQueryParametersBase.addParameter. Expected value of type "; + public InvalidParameterValueException(Class expected, Class<? extends Object> actual) { + super(MSG_PREFIX+expected.getName()+" but actual class was "+actual.getName()); + } + +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryParametersBase.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryParametersBase.java index c16673d..98fe7a7 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryParametersBase.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryParametersBase.java @@ -1,6 +1,9 @@ package org.ovirt.engine.core.common.queries; +import org.ovirt.engine.core.common.utils.VdcParameter; +import org.ovirt.engine.core.common.utils.VdcParameterValue; import java.io.Serializable; +import org.ovirt.engine.core.common.utils.VdcParametersMapBase; public class VdcQueryParametersBase implements Serializable { private static final long serialVersionUID = -6766170283465888549L; @@ -25,8 +28,11 @@ */ private boolean isFiltered; + private VdcParametersMapBase paramsMap; + public VdcQueryParametersBase() { refresh = true; + paramsMap = new VdcParametersMapBase(); } public String getSessionId() { @@ -61,6 +67,19 @@ this.isFiltered = isFiltered; } + public <T> void addParameter(VdcParameter param, Object obj) { + VdcParameterValue<T> value = param.getVdcParameterHandler().createVdcParameterValue(obj); + addParameter(param, value); + } + + public <T> void addParameter(VdcParameter param, VdcParameterValue<T> value) { + paramsMap.addParameter(param, value); + } + + public <T> VdcParameterValue<T> getParameterValue(VdcParameter param) { + return paramsMap.getParameterValue(param); + } + @Override public String toString() { StringBuilder builder = new StringBuilder(25); diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VdcParameter.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VdcParameter.java new file mode 100644 index 0000000..758b5a2 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VdcParameter.java @@ -0,0 +1,51 @@ +package org.ovirt.engine.core.common.utils; + +import java.io.Serializable; +import org.ovirt.engine.core.compat.Guid; + + +public enum VdcParameter { + ClusterId(Guid.class, new VdcParameterHandler<Guid>()), + DataCenterId(Guid.class, new VdcParameterHandler<Guid>()), + RoleId(Guid.class, new VdcParameterHandler<Guid>()), + StorageDomainId(Guid.class, new VdcParameterHandler<Guid>()); + + public static enum Status { Active, Obsolete} + + private Class javaType; + private Status status; + private VdcParameterHandler parameterHandler; + + <T> VdcParameter(Class javaType, VdcParameterHandler<T> parameterHandler) { + this(javaType, Status.Active, parameterHandler); + } + + <T> VdcParameter(Class javaType, Status status, VdcParameterHandler<T> parameterHandler) { + this.javaType = javaType; + this.status = status; + this.parameterHandler = parameterHandler; + } + + public Class getJavaType() { + return javaType; + } + + public Status getStatus() { + return status; + } + + public static class VdcParameterHandler<T> implements Serializable { + public VdcParameterValue createVdcParameterValue(T obj) { + return new VdcParameterValue(obj); + } + + public T getVdcParameterValue(VdcParameterValue<T> paramValue) { + return paramValue.getValue(); + } + } + + public VdcParameterHandler getVdcParameterHandler() { + return parameterHandler; + } + +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VdcParameterValue.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VdcParameterValue.java new file mode 100644 index 0000000..27504bb --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VdcParameterValue.java @@ -0,0 +1,32 @@ +package org.ovirt.engine.core.common.utils; + +import java.io.Serializable; + +public class VdcParameterValue<T> implements Serializable { + + private T value; + + public VdcParameterValue(T value) { + this.value = value; + } + + public T getValue() { + return value; + } + + @Override + public boolean equals(Object other) { + if (other == null || !(other instanceof VdcParameterValue)) { + return false; + } + VdcParameterValue otherInstance = (VdcParameterValue) other; + return value.equals(otherInstance.getValue()); + } + + @Override + public int hashCode() { + int hash = 7; + hash = 31 * hash + (this.value != null ? this.value.hashCode() : 0); + return hash; + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VdcParametersMapBase.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VdcParametersMapBase.java new file mode 100644 index 0000000..5780e20 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VdcParametersMapBase.java @@ -0,0 +1,64 @@ +package org.ovirt.engine.core.common.utils; + +import java.io.Serializable; +import java.util.EnumMap; +import java.util.Map; +import java.util.Map.Entry; +import org.ovirt.engine.core.common.queries.InvalidParameterValueException; + +public class VdcParametersMapBase implements Serializable { + + private Map<VdcParameter, VdcParameterValue> paramsMap; + + public VdcParametersMapBase() { + paramsMap = new EnumMap<VdcParameter, VdcParameterValue>(VdcParameter.class); + } + + public <T> void addParameter(VdcParameter param, VdcParameterValue<T> value) { + if (!value.getValue().getClass().equals(param.getJavaType())) + throw new InvalidParameterValueException(param.getJavaType(), value.getValue().getClass()); + paramsMap.put(param, value); + } + + public <T> VdcParameterValue<T> getParameterValue(VdcParameter param) { + return paramsMap.get(param); + } + + public int getNumParameterValues() { + return paramsMap.size(); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + VdcParametersMapBase other = (VdcParametersMapBase) obj; + if (getNumParameterValues() != other.getNumParameterValues()) { + return false; + } + for (Entry<VdcParameter, VdcParameterValue> entry : paramsMap.entrySet()) { + VdcParameterValue otherValue = other.getParameterValue(entry.getKey()); + if (otherValue == null) { + return false; + } + if (!entry.getValue().equals(otherValue)) { + return false; + } + } + return true; + } + + @Override + public int hashCode() { + int hash = 7; + final int prime = 31; + for (Entry<VdcParameter, VdcParameterValue> entry : paramsMap.entrySet()) { + hash = prime * hash + entry.getValue().hashCode(); + } + return hash; + } +} diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendSubResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendSubResource.java index cbedaf4..15a7aa4 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendSubResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendSubResource.java @@ -12,11 +12,14 @@ import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.api.restapi.logging.Messages; +import org.ovirt.engine.core.utils.log.Log; +import org.ovirt.engine.core.utils.log.LogFactory; public abstract class AbstractBackendSubResource<R extends BaseResource, Q /* extends IVdcQueryable */> extends AbstractBackendResource<R, Q> { protected static final String[] STRICTLY_IMMUTABLE = { "id" }; + protected static final Log LOG = LogFactory.getLog(AbstractBackendSubResource.class); protected String id; protected Guid guid; diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendBaseTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendBaseTest.java index f7a8714..6c677c3 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendBaseTest.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendBaseTest.java @@ -49,6 +49,8 @@ import org.ovirt.engine.core.common.queries.GetTasksStatusesByTasksIDsParameters; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.SearchParameters; +import org.ovirt.engine.core.common.utils.VdcParameter; +import org.ovirt.engine.core.common.utils.VdcParameterValue; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; @@ -180,6 +182,27 @@ expect(queryResult.getReturnValue()).andReturn(entity).anyTimes(); } + protected <E> void setUpGetEntityExpectationsWithParamNames(VdcQueryType query, + Class<? extends VdcQueryParametersBase> clz, String[] names, Object[] values, VdcParameter[] queryParamNames, E entity) + throws Exception { + VdcQueryParametersBase paramsBase = control.createMock(VdcQueryParametersBase.class); + int i = 0; + for (VdcParameter param : queryParamNames) { + expect(paramsBase.getParameterValue(eq(param))).andReturn(getVdcQueryParameterValue(param, values[i])).anyTimes(); + i++; + } + + VdcQueryReturnValue queryResult = control.createMock(VdcQueryReturnValue.class); + expect(backend.RunQuery(eq(query), eqQueryParams(clz, addSession(names), addSession(values), queryParamNames))).andReturn( + queryResult).anyTimes(); + expect(queryResult.getSucceeded()).andReturn(true).anyTimes(); + expect(queryResult.getReturnValue()).andReturn(entity).anyTimes(); + } + + protected VdcParameterValue getVdcQueryParameterValue(VdcParameter param, Object value) { + return param.getVdcParameterHandler().createVdcParameterValue(value); + } + protected <E> void setUpGetEntityExpectations(String query, SearchType type, E entity) throws Exception { diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCollectionResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCollectionResourceTest.java index 0af5283..9929a3d 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCollectionResourceTest.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCollectionResourceTest.java @@ -233,6 +233,44 @@ boolean success, Object taskReturn, ArrayList<Guid> asyncTasks, + ArrayList<AsyncTaskStatus> asyncStatuses) { + VdcReturnValueBase taskResult = control.createMock(VdcReturnValueBase.class); + expect(taskResult.getCanDoAction()).andReturn(canDo).anyTimes(); + if (canDo) { + expect(taskResult.getSucceeded()).andReturn(success).anyTimes(); + if (success) { + expect(taskResult.getActionReturnValue()).andReturn(taskReturn).anyTimes(); + } else { + expect(taskResult.getExecuteFailedMessages()).andReturn(asList(FAILURE)).anyTimes(); + setUpL10nExpectations(asList(FAILURE)); + } + } else { + expect(taskResult.getCanDoActionMessages()).andReturn(asList(CANT_DO)).anyTimes(); + setUpL10nExpectations(asList(CANT_DO)); + } + expect(taskResult.getHasAsyncTasks()).andReturn(asyncTasks != null).anyTimes(); + if (asyncTasks != null) { + expect(taskResult.getVdsmTaskIdList()).andReturn(asyncTasks).anyTimes(); + VdcQueryReturnValue monitorResult = control.createMock(VdcQueryReturnValue.class); + expect(monitorResult.getSucceeded()).andReturn(success).anyTimes(); + expect(monitorResult.getReturnValue()).andReturn(asyncStatuses).anyTimes(); + expect(backend.RunQuery(eq(VdcQueryType.GetTasksStatusesByTasksIDs), + eqQueryParams(GetTasksStatusesByTasksIDsParameters.class, + addSession(new String[]{}), + addSession(new Object[]{})))).andReturn(monitorResult); + } + expect(backend.RunAction(eq(task), eqActionParams(taskClass, addSession(taskNames), addSession(taskValues)))) + .andReturn(taskResult); + control.replay(); + } + protected void setUpCreationExpectations(VdcActionType task, + Class<? extends VdcActionParametersBase> taskClass, + String[] taskNames, + Object[] taskValues, + boolean canDo, + boolean success, + Object taskReturn, + ArrayList<Guid> asyncTasks, ArrayList<AsyncTaskStatus> asyncStatuses, VdcQueryType query, Class<? extends VdcQueryParametersBase> queryClass, diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/test/util/TestHelper.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/test/util/TestHelper.java index 6402895..8c880ac 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/test/util/TestHelper.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/test/util/TestHelper.java @@ -11,6 +11,8 @@ import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.queries.SearchParameters; +import org.ovirt.engine.core.common.utils.VdcParameter; +import org.ovirt.engine.core.common.utils.VdcParameterValue; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; @Ignore @@ -26,6 +28,10 @@ return clz.getMethod("get" + name); } + protected static Method getMethodWithParam(Class<?> clz, String name, Class... param) throws NoSuchMethodException { + return clz.getMethod("get" + name, param); + } + protected static Method getMethod(Class<?> clz, String name, Object value) throws NoSuchMethodException { Method method = null; try { @@ -33,6 +39,20 @@ } catch (NoSuchMethodException nsme) { if (Boolean.class.equals(value.getClass())) { method = clz.getMethod("is" + name); + } else { + throw nsme; + } + } + return method; + } + + protected static Method getMethodWithParam(Class<?> clz, String name, Object value, Class... param) throws NoSuchMethodException { + Method method = null; + try { + method = getMethodWithParam(clz, name, param); + } catch (NoSuchMethodException nsme) { + if (Boolean.class.equals(value.getClass())) { + method = clz.getMethod("is" + name, param); } else { throw nsme; } @@ -70,6 +90,16 @@ name = subField(name); } return matches(value, getMethod(clz, name, value).invoke(instance)); + } catch (Exception e) { + System.out.println(e); + return false; + } + } + + protected static boolean matches(Class<?> clz, Object instance, String name, Object value, VdcParameter paramName) { + try { + VdcParameterValue paramValue = (VdcParameterValue) getMethodWithParam(clz, name, value, VdcParameter.class).invoke(instance, paramName); + return matches(value, paramValue.getValue()); } catch (Exception e) { System.out.println(e); return false; @@ -172,6 +202,12 @@ return null; } + public static VdcQueryParametersBase eqQueryParams(Class<? extends VdcQueryParametersBase> clz, + String[] names, Object[] values, VdcParameter[] queryParamNames) { + EasyMock.reportMatcher(new QueryParametersEqualsNew(clz, names, values, queryParamNames)); + return null; + } + /** * This generic matcher for QueryParameters is required because this types * don't override Object.equals() with a deep comparison @@ -211,4 +247,52 @@ buffer.append(")"); } } + + /** + * This generic matcher for QueryParameters is required because this types + * don't override Object.equals() with a deep comparison + */ + @Ignore + protected static class QueryParametersEqualsNew implements IArgumentMatcher { + Class<? extends VdcQueryParametersBase> clz; + String[] names; + Object[] values; + VdcParameter[] queryParamNames; + + public QueryParametersEqualsNew(Class<? extends VdcQueryParametersBase> clz, String[] names, + Object[] values, VdcParameter[] queryParamNames) { + this.clz = clz; + this.names = names; + this.values = values; + this.queryParamNames = queryParamNames; + } + + @Override + public boolean matches(Object actual) { + if (clz.isInstance(actual)) { + for (int i = 0; i < names.length; i++) { + if (i < queryParamNames.length) { + if (!TestHelper.matches(clz, actual, names[i], values[i], queryParamNames[i])) { + return false; + } + } else { + if (!TestHelper.matches(clz, actual, names[i], values[i])) { + return false; + } + } + } + return true; + } + return false; + } + + @Override + public void appendTo(StringBuffer buffer) { + buffer.append("eqQueryParams("); + for (String name : names) { + buffer.append(", field: " + name); + } + buffer.append(")"); + } + } } diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonObjectSerializer.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonObjectSerializer.java index 2f4ed92..271601d 100644 --- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonObjectSerializer.java +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonObjectSerializer.java @@ -19,6 +19,7 @@ import org.ovirt.engine.core.common.businessentities.VmBase; import org.ovirt.engine.core.common.businessentities.VmPayload; import org.ovirt.engine.core.common.businessentities.VmStatic; +import org.ovirt.engine.core.common.utils.VdcParametersMapBase; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.utils.SerializationExeption; import org.ovirt.engine.core.utils.Serializer; @@ -33,6 +34,8 @@ static { formattedMapper = new ObjectMapper(); formattedMapper.getSerializationConfig().addMixInAnnotations(Guid.class, JsonGuidMixIn.class); + formattedMapper.getSerializationConfig().addMixInAnnotations(VdcParametersMapBase.class, + JsonVdcParametersMapBaseMixIn.class); formattedMapper.getSerializationConfig().addMixInAnnotations(VdcActionParametersBase.class, JsonVdcActionParametersBaseMixIn.class); formattedMapper.getSerializationConfig().addMixInAnnotations(IVdcQueryable.class, JsonIVdcQueryableMixIn.class); diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonVdcParametersMapBaseMixIn.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonVdcParametersMapBaseMixIn.java new file mode 100644 index 0000000..0e2dc84 --- /dev/null +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonVdcParametersMapBaseMixIn.java @@ -0,0 +1,11 @@ +package org.ovirt.engine.core.utils.serialization.json; + +import org.codehaus.jackson.annotate.JsonTypeInfo; +import org.codehaus.jackson.annotate.JsonTypeInfo.As; +import org.codehaus.jackson.annotate.JsonTypeInfo.Id; +import org.ovirt.engine.core.common.action.VdcActionParametersBase; + +@SuppressWarnings("serial") +@JsonTypeInfo(use = Id.CLASS, include = As.PROPERTY) +public abstract class JsonVdcParametersMapBaseMixIn extends VdcActionParametersBase { +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml index 99619f8..23ff301 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml @@ -203,6 +203,7 @@ <!-- Sadly because VdcQueryParametersBase / VdcActionParametersBase :/ --> <include name="common/queries/*.java" /> <include name="common/action/*.java" /> + <include name="common/utils/VdcParameter*.java" /> <!-- Most custom field serializers match the two previous rules, but some dont, we need to include them explicitly: --> -- To view, visit http://gerrit.ovirt.org/20414 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6a0970e492c0eff561888a46b02e47645ff68fc3 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Ravi Nori <rn...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches