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

net.oauth2.gson.GsonDataBindingProvider Maven / Gradle / Ivy

/* 
 * Copyright (c) 2017 Georgi Pavlov ([email protected]).
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the MIT license which accompanies 
 * this distribution, and is available at 
 * https://github.com/tengia/oauth-2/blob/master/LICENSE
 */
package net.oauth2.gson;

import java.io.IOException;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonParseException;

import net.oauth2.AccessToken;
import net.oauth2.ProtocolError;
import net.oauth2.client.http.DataBindingProvider;

public class GsonDataBindingProvider implements DataBindingProvider {

	public static GsonBuilder DEFAULT_BUILDER;
	static {
		GsonBuilder builder = new GsonBuilder();
		WhitespaceDelimitedCollectionTypeAdapterFactory.REGISTER(builder);
		AccessTokenTypeAdapter.REGISTER(builder);
		ProtocolErrorTypeAdapter.REGISTER(builder);
		DEFAULT_BUILDER = builder;
	}

	private static final Gson DEFAULT_MAPPER;
	static {
		DEFAULT_MAPPER = DEFAULT_BUILDER.create();
	}
	
	private Gson mapper;
	
	public GsonDataBindingProvider() {
		this(DEFAULT_MAPPER);
	}
	
	public GsonDataBindingProvider(GsonBuilder builder) {
		this(builder.create());
	}
	
	public GsonDataBindingProvider(final Gson mapper) {
		this.mapper = mapper;
	}

	@Override
	public  T parseToken(String payload, Class tokenType) throws JsonParseException, IOException {
		T token = this.mapper.fromJson(payload, tokenType);
		return token;
	}

	@Override
	public  T parseError(String payload, Class errorType) throws JsonParseException,  IOException {
		T error = this.mapper.fromJson(payload, errorType);
		return error;
	}

	@Override
	public Gson raw() {
		return this.mapper;
	}

	@Override
	public void with(Gson mapper) {
		this.mapper = mapper;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy