All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alibaba.ocean.rawsdk.client.imp.serialize.Json2Deserializer Maven / Gradle / Ivy

There is a newer version: 1.1.0
Show newest version
/**
 * Project: ocean.client.java.basic
 *
 * File Created at 2011-10-27
 * $Id: Json2HttpResponseParser.java 311300 2013-12-23 06:15:28Z yichun.wangyc $
 *
 * Copyright 2008 Alibaba.com Croporation Limited.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of
 * Alibaba Company. ("Confidential Information").  You shall not
 * disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license agreement you entered into
 * with Alibaba.com.
 */
package com.alibaba.ocean.rawsdk.client.imp.serialize;

import java.util.LinkedHashMap;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.ocean.rawsdk.client.entity.ResponseWrapper;
import com.alibaba.ocean.rawsdk.client.policy.Protocol;
import com.alibaba.ocean.rawsdk.client.serialize.DeSerializerListener;
import com.alibaba.ocean.rawsdk.client.util.ExceptionParser;

/**
 * 
 * @author hongbang.hb
 *
 */
public class Json2Deserializer extends AbstractJsonDeserializer {

	private Map, DeSerializerListener> listnerList = new LinkedHashMap, DeSerializerListener>();

	public String supportedContentType() {
		return Protocol.json2.name();
	}

	@Override
	public  ResponseWrapper deSerialize(String content, Class resultType) {
		for (DeSerializerListener deSerializerListener : listnerList.values()) {
			deSerializerListener.onResponseDeSerialized(content);
		}
		JSONObject json = JSON.parseObject(content);
		T result = this.parseResult(json, resultType);
		ResponseWrapper responseWrapper = new ResponseWrapper();
		responseWrapper.setResult(result);
		return responseWrapper;
	}

	@Override
	public Throwable buildException(String content, int statusCode) {
		for (DeSerializerListener deSerializerListener : listnerList.values()) {
			deSerializerListener.onResponseExceptioned(content);
		}
		Map result = JSON.parseObject(content, Map.class);
		return ExceptionParser.buildException4Json2(result);
	}

	public void registeDeSerializerListener(DeSerializerListener listner) {
		if (!listnerList.containsKey(listner.getClass())) {
			listnerList.put(listner.getClass(), listner);
		}
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy