|  | @@ -0,0 +1,67 @@
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * Copyright 2002-2018 the original author or authors.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * 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
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *      https://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 org.springframework.security.oauth2.server.authorization.http.converter;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import org.springframework.http.converter.GenericHttpMessageConverter;
 | 
	
		
			
				|  |  | +import org.springframework.http.converter.HttpMessageConverter;
 | 
	
		
			
				|  |  | +import org.springframework.http.converter.json.GsonHttpMessageConverter;
 | 
	
		
			
				|  |  | +import org.springframework.http.converter.json.JsonbHttpMessageConverter;
 | 
	
		
			
				|  |  | +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
 | 
	
		
			
				|  |  | +import org.springframework.util.ClassUtils;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * TODO
 | 
	
		
			
				|  |  | + * This class is a straight copy from Spring Security.
 | 
	
		
			
				|  |  | + * It should be consolidated when merging this codebase into Spring Security.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * Utility methods for {@link HttpMessageConverter}'s.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * @author Joe Grandja
 | 
	
		
			
				|  |  | + * @since 5.1
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +final class HttpMessageConverters {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	private static final boolean jackson2Present;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	private static final boolean gsonPresent;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	private static final boolean jsonbPresent;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	static {
 | 
	
		
			
				|  |  | +		ClassLoader classLoader = HttpMessageConverters.class.getClassLoader();
 | 
	
		
			
				|  |  | +		jackson2Present = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader)
 | 
	
		
			
				|  |  | +				&& ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", classLoader);
 | 
	
		
			
				|  |  | +		gsonPresent = ClassUtils.isPresent("com.google.gson.Gson", classLoader);
 | 
	
		
			
				|  |  | +		jsonbPresent = ClassUtils.isPresent("javax.json.bind.Jsonb", classLoader);
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	private HttpMessageConverters() {
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	static GenericHttpMessageConverter<Object> getJsonMessageConverter() {
 | 
	
		
			
				|  |  | +		if (jackson2Present) {
 | 
	
		
			
				|  |  | +			return new MappingJackson2HttpMessageConverter();
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if (gsonPresent) {
 | 
	
		
			
				|  |  | +			return new GsonHttpMessageConverter();
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if (jsonbPresent) {
 | 
	
		
			
				|  |  | +			return new JsonbHttpMessageConverter();
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		return null;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 |