diff --git a/server/src/com/cloud/api/ApiGsonHelper.java b/server/src/com/cloud/api/ApiGsonHelper.java index fe75283ced4..7a48f49a0aa 100644 --- a/server/src/com/cloud/api/ApiGsonHelper.java +++ b/server/src/com/cloud/api/ApiGsonHelper.java @@ -25,8 +25,7 @@ public class ApiGsonHelper { static { s_gBuilder = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); s_gBuilder.setVersion(1.3); - s_gBuilder.registerTypeAdapter(ResponseObject.class, new ResponseObjectTypeAdapter()); - s_gBuilder.registerTypeAdapter(String.class, new EncodedStringTypeAdapter()); + s_gBuilder.registerTypeAdapter(ResponseObject.class, new ResponseObjectTypeAdapter()); } public static GsonBuilder getBuilder() { diff --git a/server/src/com/cloud/api/ApiResponseGsonHelper.java b/server/src/com/cloud/api/ApiResponseGsonHelper.java new file mode 100644 index 00000000000..852e52c3664 --- /dev/null +++ b/server/src/com/cloud/api/ApiResponseGsonHelper.java @@ -0,0 +1,41 @@ +/** + * Copyright (C) 2010 Cloud.com, Inc. All rights reserved. + * + * This software is licensed under the GNU General Public License v3 or later. + * + * It is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + + +/** + * The ApiResonseGsonHelper is different from ApiGsonHelper - it registeres one more adapter for String type required for api response encoding + */ + + +package com.cloud.api; + +import com.google.gson.GsonBuilder; + +public class ApiResponseGsonHelper { + private static final GsonBuilder s_gBuilder; + static { + s_gBuilder = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); + s_gBuilder.setVersion(1.3); + s_gBuilder.registerTypeAdapter(ResponseObject.class, new ResponseObjectTypeAdapter()); + s_gBuilder.registerTypeAdapter(String.class, new EncodedStringTypeAdapter()); + } + + public static GsonBuilder getBuilder() { + return s_gBuilder; + } +} \ No newline at end of file diff --git a/server/src/com/cloud/api/ResponseObjectTypeAdapter.java b/server/src/com/cloud/api/ResponseObjectTypeAdapter.java index 72b8a40c4b4..c5c061cf8fe 100644 --- a/server/src/com/cloud/api/ResponseObjectTypeAdapter.java +++ b/server/src/com/cloud/api/ResponseObjectTypeAdapter.java @@ -45,7 +45,7 @@ public class ResponseObjectTypeAdapter implements JsonSerializer obj.addProperty("errortext", ((ExceptionResponse) responseObj).getErrorText()); return obj; } else { - obj.add(responseObj.getObjectName(), ApiGsonHelper.getBuilder().create().toJsonTree(responseObj)); + obj.add(responseObj.getObjectName(), ApiResponseGsonHelper.getBuilder().create().toJsonTree(responseObj)); return obj; } } diff --git a/server/src/com/cloud/api/response/ApiResponseSerializer.java b/server/src/com/cloud/api/response/ApiResponseSerializer.java index 3e7dd310cac..41a87a0a63f 100644 --- a/server/src/com/cloud/api/response/ApiResponseSerializer.java +++ b/server/src/com/cloud/api/response/ApiResponseSerializer.java @@ -31,7 +31,7 @@ import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; import com.cloud.api.ApiDBUtils; -import com.cloud.api.ApiGsonHelper; +import com.cloud.api.ApiResponseGsonHelper; import com.cloud.api.BaseCmd; import com.cloud.api.ResponseObject; import com.cloud.configuration.Config; @@ -78,7 +78,7 @@ public class ApiResponseSerializer { private static String toJSONSerializedString(ResponseObject result) { if (result != null) { - Gson gson = ApiGsonHelper.getBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).create(); + Gson gson = ApiResponseGsonHelper.getBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).create(); StringBuilder sb = new StringBuilder(); sb.append("{ \"" + result.getResponseName() + "\" : ");