diff --git a/api/src/com/cloud/api/BaseAsyncCmd.java b/api/src/com/cloud/api/BaseAsyncCmd.java index e102d0b8cd3..37a1a342be8 100644 --- a/api/src/com/cloud/api/BaseAsyncCmd.java +++ b/api/src/com/cloud/api/BaseAsyncCmd.java @@ -57,7 +57,7 @@ public abstract class BaseAsyncCmd extends BaseCmd { public ResponseObject getResponse(long jobId) { AsyncJobResponse response = new AsyncJobResponse(); - response.setId(jobId); + response.setJobId(jobId); response.setResponseName(getCommandName()); return response; } diff --git a/api/src/com/cloud/api/response/AsyncJobResponse.java b/api/src/com/cloud/api/response/AsyncJobResponse.java index 4afdfba1665..036e23ef497 100644 --- a/api/src/com/cloud/api/response/AsyncJobResponse.java +++ b/api/src/com/cloud/api/response/AsyncJobResponse.java @@ -59,14 +59,6 @@ public class AsyncJobResponse extends BaseResponse { @SerializedName(ApiConstants.CREATED) @Param(description=" the created date of the job") private Date created; - public Long getId() { - return getJobId(); - } - - public void setId(Long id) { - setJobId(id); - } - public Long getAccountId() { return accountId.getValue(); } diff --git a/core/src/com/cloud/storage/VMTemplateVO.java b/core/src/com/cloud/storage/VMTemplateVO.java index 98866bddf32..63f6aea5d68 100755 --- a/core/src/com/cloud/storage/VMTemplateVO.java +++ b/core/src/com/cloud/storage/VMTemplateVO.java @@ -126,6 +126,7 @@ public class VMTemplateVO implements VirtualMachineTemplate, Identity { @Column(name="sort_key") int sortKey; + @Transient Map details; @Override diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index 031fe776a21..0f023710df3 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -1874,7 +1874,7 @@ public class ApiResponseHelper implements ResponseGenerator { jobResponse.setAccountId(job.getAccountId()); jobResponse.setCmd(job.getCmd()); jobResponse.setCreated(job.getCreated()); - jobResponse.setId(job.getId()); + jobResponse.setJobId(job.getId()); if (job.getInstanceType() != null && job.getInstanceId() != null) { jobResponse.setJobInstanceType(job.getInstanceType().toString()); @@ -2165,7 +2165,7 @@ public class ApiResponseHelper implements ResponseGenerator { AsyncJobResult result = ApiDBUtils._asyncMgr.queryAsyncJobResult(cmd); AsyncJobResponse response = new AsyncJobResponse(); - response.setId(result.getJobId()); + response.setJobId(result.getJobId()); response.setJobStatus(result.getJobStatus()); response.setJobProcStatus(result.getProcessStatus()); response.setJobResultCode(result.getResultCode()); diff --git a/server/src/com/cloud/api/response/ApiResponseSerializer.java b/server/src/com/cloud/api/response/ApiResponseSerializer.java index 4e1e896161b..06e3f74475f 100644 --- a/server/src/com/cloud/api/response/ApiResponseSerializer.java +++ b/server/src/com/cloud/api/response/ApiResponseSerializer.java @@ -22,6 +22,8 @@ import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.regex.Matcher; @@ -158,12 +160,22 @@ public class ApiResponseSerializer { } } + public static Field[] getFlattenFields(Class clz) { + List fields = new ArrayList(); + fields.addAll(Arrays.asList(clz.getDeclaredFields())); + if (clz.getSuperclass() != null) { + fields.addAll(Arrays.asList(getFlattenFields(clz.getSuperclass()))); + } + return fields.toArray(new Field[] {}); + } + private static void serializeResponseObjFieldsXML(StringBuilder sb, ResponseObject obj) { boolean isAsync = false; if (obj instanceof AsyncJobResponse) isAsync = true; - Field[] fields = obj.getClass().getDeclaredFields(); + //Field[] fields = obj.getClass().getDeclaredFields(); + Field[] fields = getFlattenFields(obj.getClass()); for (Field field : fields) { if ((field.getModifiers() & Modifier.TRANSIENT) != 0) { continue; // skip transient fields @@ -214,7 +226,8 @@ public class ApiResponseSerializer { IdentityDao identityDao = new IdentityDaoImpl(); id = identityDao.getIdentityUuid(idProxy.getTableName(), id); } - sb.append("<" + serializedName.value() + ">" + id + ""); + if(id != null && !id.isEmpty()) + sb.append("<" + serializedName.value() + ">" + id + ""); } else { String resultString = escapeSpecialXmlChars(fieldValue.toString()); if (!(obj instanceof ExceptionResponse)) {