001/* 002 * The contents of this file are subject to the license and copyright 003 * detailed in the LICENSE and NOTICE files at the root of the source 004 * tree. 005 */ 006package org.fcrepo.http.commons.domain; 007 008import static javax.ws.rs.core.Variant.mediaTypes; 009import static org.apache.jena.riot.WebContent.contentTypeJSONLD; 010import static org.apache.jena.riot.WebContent.contentTypeN3; 011import static org.apache.jena.riot.WebContent.contentTypeN3Alt2; 012import static org.apache.jena.riot.WebContent.contentTypeNTriples; 013import static org.apache.jena.riot.WebContent.contentTypeRDFXML; 014import static org.apache.jena.riot.WebContent.contentTypeTurtle; 015 016import java.util.List; 017 018import javax.ws.rs.core.MediaType; 019import javax.ws.rs.core.Variant; 020 021/** 022 * This is a convenience class carrying the various RDF content-type values as 023 * Strings and MediaTypes, after the fashion of the constants available on 024 * javax.ws.rs.core.MediaType 025 * 026 * @author ba2213 027 */ 028public abstract class RDFMediaType extends MediaType { 029 030 private static final String CHARSET_UTF8 = ";charset=utf-8"; 031 032 public static final String N3 = contentTypeN3; 033 034 public static final MediaType N3_TYPE = typeFromString(N3); 035 036 public static final String N3_WITH_CHARSET = N3 + CHARSET_UTF8; 037 038 public static final String N3_ALT2 = contentTypeN3Alt2; 039 040 public static final MediaType N3_ALT2_TYPE = typeFromString(N3_ALT2); 041 042 public static final String N3_ALT2_WITH_CHARSET = N3_ALT2 + CHARSET_UTF8; 043 044 public static final String TURTLE = contentTypeTurtle; 045 046 public static final MediaType TURTLE_TYPE = typeFromString(TURTLE); 047 048 public static final String TURTLE_WITH_CHARSET = TURTLE + CHARSET_UTF8; 049 050 public static final String RDF_XML = contentTypeRDFXML; 051 052 public static final MediaType RDF_XML_TYPE = typeFromString(RDF_XML); 053 054 public static final String NTRIPLES = contentTypeNTriples; 055 056 public static final MediaType NTRIPLES_TYPE = typeFromString(NTRIPLES); 057 058 public final static String JSON_LD = contentTypeJSONLD; 059 060 public final static MediaType JSON_LD_TYPE = typeFromString(JSON_LD); 061 062 public final static String TEXT_PLAIN_WITH_CHARSET = TEXT_PLAIN + CHARSET_UTF8; 063 064 public final static String TEXT_HTML_WITH_CHARSET = TEXT_HTML + CHARSET_UTF8; 065 066 public static final String APPLICATION_LINK_FORMAT = "application/link-format"; 067 068 public static final List<Variant> POSSIBLE_RDF_VARIANTS = mediaTypes( 069 RDF_XML_TYPE, TURTLE_TYPE, N3_TYPE, N3_ALT2_TYPE, NTRIPLES_TYPE, 070 TEXT_PLAIN_TYPE, JSON_LD_TYPE).add().build(); 071 072 public static final String[] POSSIBLE_RDF_RESPONSE_VARIANTS_STRING = { 073 TURTLE_WITH_CHARSET, N3_WITH_CHARSET, N3_ALT2_WITH_CHARSET, RDF_XML, NTRIPLES, 074 TEXT_PLAIN_WITH_CHARSET, JSON_LD }; 075 076 private static MediaType typeFromString(final String type) { 077 return new MediaType(type.split("/")[0], type.split("/")[1]); 078 } 079 080}