/*
* Copyright (C) 2014 Intel Corporation
* All rights reserved.
*/
package com.intel.mtwilson.tls.policy.codec.impl;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.intel.mtwilson.jaxrs2.provider.JacksonObjectMapperProvider;
import com.intel.mtwilson.tls.policy.TlsPolicyDescriptor;
import com.intel.mtwilson.tls.policy.factory.TlsPolicyReader;
import java.io.IOException;
import java.nio.charset.Charset;
import javax.ws.rs.core.MediaType;
/**
*
* @author jbuhacoff
*/
public class JsonTlsPolicyReader implements TlsPolicyReader {
@Override
public boolean accept(String contentType) {
MediaType mediaType = MediaType.valueOf(contentType);
return mediaType.getType().equals("application") && mediaType.getSubtype().equals("json");
// return mediaType.isCompatible(MediaType.APPLICATION_JSON_TYPE);
// return contentType.startsWith("application/json"); // could also be application/json; charset=utf-8
}
@Override
public TlsPolicyDescriptor read(byte[] content) {
try {
JacksonObjectMapperProvider mapperProvider = new JacksonObjectMapperProvider();
ObjectMapper json = mapperProvider.createDefaultMapper();
TlsPolicyDescriptor tlsPolicyDescriptor = json.readValue(new String(content, Charset.forName("UTF-8")), TlsPolicyDescriptor.class);
return tlsPolicyDescriptor;
}
catch(IOException e) {
throw new IllegalArgumentException(e); // it's not TlsPolicyDescriptorInvalidException because we weren't able to read the content... there is no descriptor yet
}
}
}