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

open.source.exchange.parser.MediaTypeParser Maven / Gradle / Ivy

package open.source.exchange.parser;

import java.nio.charset.Charset;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;

import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import open.source.exchange.model.ExBase;
import open.source.exchange.model.ExCharset;
import open.source.exchange.model.ExMediaType;

@Log4j2
@Service
@RequiredArgsConstructor
public class MediaTypeParser {

	@Autowired
	private ObjectParser objectParser;

	@Autowired
	private CharsetParser charsetParser;

	private ExMediaType parseCore(MediaType mediaType) {

		log.trace("parse core -> (mediaType) {}", mediaType);
		ExMediaType exMediaType = null;

		if (null != mediaType) {
			ExBase exBase = objectParser.parse(mediaType);
			exMediaType = new ExMediaType(exBase);

			Charset charset = mediaType.getCharset();
			ExCharset exCharset = charsetParser.parse(charset);
			exMediaType.setCharset(exCharset);

			Map parameters = mediaType.getParameters();
			exMediaType.setParameters(parameters);

			double qualityValue = mediaType.getQualityValue();
			exMediaType.setQualityValue(qualityValue);

			String type = mediaType.getType();
			exMediaType.setType(type);

			String subtype = mediaType.getSubtype();
			exMediaType.setSubtype(subtype);

			boolean isConcrete = mediaType.isConcrete();
			exMediaType.setConcrete(isConcrete);

			boolean isWildcardType = mediaType.isWildcardType();
			exMediaType.setWildcardType(isWildcardType);

			boolean isWildcardSubtype = mediaType.isWildcardSubtype();
			exMediaType.setWildcardSubtype(isWildcardSubtype);
		}
		return exMediaType;
	}

	public ExMediaType parse(MediaType mediaType) {

		log.trace("parse -> (mediaType) {}", mediaType);
		ExMediaType exMediaType = parseCore(mediaType);

		if (null != exMediaType) {
			MediaType removeQualityValue = mediaType.removeQualityValue();
			ExMediaType exRemoveQualityValue = parseCore(removeQualityValue);
			exMediaType.setRemoveQualityValue(exRemoveQualityValue);
		}
		return exMediaType;
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy