package tr.com.srdc.mdr.web.html.util;
import java.util.List;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Variant;
import javax.ws.rs.core.Response.Status;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import eu.salusproject.securityprivacy.authentication.AuthenticationException;
import eu.salusproject.securityprivacy.authentication.AuthenticationManager;
import eu.salusproject.securityprivacy.authentication.User;
/**
* @author anil
*
*/
public class WebUtil {
private static final Logger logger = LoggerFactory.getLogger(WebUtil.class);
/**
* This function is used by some Resource classes to check the sessionID by
* retrieving the associated user.
*
* @param sessionID
* @return
*/
public static User getUser(String sessionID) throws WebApplicationException {
User user = null;
try {
user = AuthenticationManager.getInstance().getUserFromSession(
sessionID);
} catch (AuthenticationException e) {
logger.error("Cannot retrieve user from sessionID", e);
throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
}
if (user == null) {
throw new WebApplicationException(Response
.status(Status.UNAUTHORIZED).entity("Session Not valid.")
.build());
}
return user;
}
/**
* This function is used by some Resource classes to check the validity of
* the user session ID.
*
* @param sessionID
* @return
*/
public static void checkUserSession(String sessionID)
throws WebApplicationException {
getUser(sessionID);
}
/**
* This method is to determine serialization language of the model according
* to the media type given
*
* @param mediaType
* media type given in HTTP request
* @return serialization type supported by Jena Writers
*/
public static String getSerializationLanguage(String mediaType) {
if (mediaType == null)
return "RDF/XML";
else if (mediaType.toLowerCase().contains("RDF+XML-ABBREV".toLowerCase()))
return "RDF/XML-ABBREV";
else if (mediaType.toLowerCase().contains("RDF+XML".toLowerCase()))
return "RDF/XML";
else if (mediaType.toLowerCase().contains("N-TRIPLE".toLowerCase()))
return "N-TRIPLE";
else if (mediaType.toLowerCase().contains("N3".toLowerCase()))
return "N3";
else if (mediaType.toLowerCase().contains("TURTLE".toLowerCase()))
return "TURTLE";
else if (mediaType.toLowerCase().contains("TTL".toLowerCase()))
return "TTL";
else if (mediaType.toLowerCase().contains("RDF+JSON".toLowerCase()))
return "RDF/JSON";
else
return "RDF/XML";
}
public static final String MEDIA_TYPE_APPLICATION_NTRIPLE = "application/n-triple";
public static final String MEDIA_TYPE_APPLICATION_RDFJSON = "application/rdf+json";
public static final String MEDIA_TYPE_APPLICATION_RDFXML = "application/rdf+xml";
public static final String MEDIA_TYPE_TEXT_N3 = "text/n3";
public static final String MEDIA_TYPE_TEXT_TURTLE = "text/turtle";
public static final String MEDIA_TYPE_APPLICATION_RDFXML_ABBREV = "application/rdf+xml-abbrev";
public static final MediaType MEDIA_TYPE_APPLICATION_NTRIPLE_TYPE = new MediaType(
"application", "n-triple");
public static final MediaType MEDIA_TYPE_APPLICATION_RDFJSON_TYPE = new MediaType(
"application", "rdf+json");
public static final MediaType MEDIA_TYPE_APPLICATION_RDFXML_TYPE = new MediaType(
"application", "rdf+xml");
public static final MediaType MEDIA_TYPE_TEXT_N3_TYPE = new MediaType(
"text", "n3");
public static final MediaType MEDIA_TYPE_TEXT_TURTLE_TYPE = new MediaType(
"text", "turtle");
public static final MediaType MEDIA_TYPE_APPLICATION_RDFXML_ABBREV_TYPE = new MediaType(
"application", "rdf+xml-abbrev");
private static final MediaType[] supportedTypes = new MediaType[] {
MEDIA_TYPE_APPLICATION_NTRIPLE_TYPE,
MEDIA_TYPE_APPLICATION_RDFJSON_TYPE,
MEDIA_TYPE_APPLICATION_RDFXML_TYPE, MEDIA_TYPE_TEXT_N3_TYPE,
MEDIA_TYPE_TEXT_TURTLE_TYPE,
MEDIA_TYPE_APPLICATION_RDFXML_ABBREV_TYPE,
MediaType.TEXT_PLAIN_TYPE };
public static final List<Variant> VARIANTS = Variant.VariantListBuilder.newInstance()
.mediaTypes(WebUtil.supportedTypes).add().build();
}