com.cloudcontrolled.api.client.json.JsonDeserializer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cctrl-api-client Show documentation
Show all versions of cctrl-api-client Show documentation
Java cloudControl API client
The newest version!
/*
* Copyright 2012 Denis Neuling
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.cloudcontrolled.api.client.json;
import com.cloudcontrolled.api.client.exception.SerializationException;
import com.cloudcontrolled.api.client.util.StandardizationUtil;
import com.cloudcontrolled.api.response.Response;
import com.google.gson.ExclusionStrategy;
import com.google.gson.FieldAttributes;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonSyntaxException;
/**
*
* JsonDeserializer class.
*
*
* @author Denis Neuling ([email protected])
*
*/
public class JsonDeserializer {
protected Gson gson;
/**
*
* Constructor for JsonDeserializer.
*
*/
public JsonDeserializer() {
initializeGson();
}
/**
*
*/
private void initializeGson() {
gson = new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {
public boolean shouldSkipField(FieldAttributes fieldAttributes) {
if (fieldAttributes.getName().equalsIgnoreCase("serialVersionUUID")) {
return true;
}
return false;
}
public boolean shouldSkipClass(Class> arg0) {
return false;
}
}).create();
}
/**
*
* fromJSON.
*
*
* @param response
* a {@link java.lang.String} object.
* @param target
* a {@link com.cloudcontrolled.api.response.Response} object.
* @param
* a T object.
* @return a {@link com.cloudcontrolled.api.response.Response} object.
*/
@SuppressWarnings("unchecked")
public Response fromJSON(String response, Response target) {
try {
response = StandardizationUtil.getJSONStandardizer(target).normalize(response);
} catch (Exception e) {
throw new SerializationException(e);
}
try {
Response fromJson = gson.fromJson(response, target.getClass());
if (fromJson == null) {
fromJson = target;
}
return fromJson;
} catch (JsonSyntaxException jse) {
throw new SerializationException(jse);
}
}
}