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

net.oauth2.jackson.WhitespaceDelimitedScopeSerializer Maven / Gradle / Ivy

The newest version!
/* 
 * 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.jackson;

import java.io.IOException;
import java.util.Collection;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.type.TypeFactory;

public class WhitespaceDelimitedScopeSerializer extends StdSerializer> {

	private static final long serialVersionUID = -1463700179768817262L;

	private static final String SP = " ";
	
	private static final ToStringSerializer stringSerializer = ToStringSerializer.instance;

	protected WhitespaceDelimitedScopeSerializer(JavaType type) {
		super(type);
	}
	
	@Override
	public void serialize(Collection model, JsonGenerator jsonGen, final SerializerProvider serializer)
			throws IOException, JsonProcessingException {
		if (model == null) {
			return;
		}
		final StringBuilder scopesBuilder = new StringBuilder();
		model.stream().forEach((e) -> {
			scopesBuilder.append(e).append(SP);
		});
		String scopeString = scopesBuilder.toString();
		scopeString = scopeString.trim();
		stringSerializer.serialize(scopeString, jsonGen, serializer);
	}
	
	public static final SimpleModule REGISTER(SimpleModule module){
		WhitespaceDelimitedScopeSerializer ser = new WhitespaceDelimitedScopeSerializer(TypeFactory.defaultInstance().constructCollectionType(Collection.class, String.class));
		module.addSerializer(ser.handledType(), ser);
		return module;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy