/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.api.core.rest; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerResponseContext; import javax.ws.rs.container.ContainerResponseFilter; import javax.ws.rs.core.Request; import java.io.IOException; import static javax.ws.rs.core.HttpHeaders.CONTENT_DISPOSITION; /** * JAX-RS implementation of download filter. * @author Florent Benoit */ public class JAXRSDownloadFileResponseFilter extends DownloadFileResponseFilter implements ContainerResponseFilter { /** * JAX-RS Filter method called after a response has been provided for a request * <p> * Filters in the filter chain are ordered according to their {@code javax.annotation.Priority} * class-level annotation value. * </p> * * @param requestContext * request context. * @param responseContext * response context. * @throws IOException * if an I/O exception occurs. */ @Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException { // Apply header if all if correct Request request = requestContext.getRequest(); String filename = getFileName(request, responseContext.getMediaType(), requestContext.getUriInfo(), responseContext.getStatus()); if (filename != null) { if (hasCompliantEntity(responseContext.getEntity())) { responseContext.getHeaders().putSingle(CONTENT_DISPOSITION, "attachment; filename=" + filename); } } } }