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

org.broadleafcommerce.common.web.util.PrecompressedHttpServletResponse Maven / Gradle / Ivy

package org.broadleafcommerce.common.web.util;

import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import java.util.Collection;

import eu.medsea.mimeutil.MimeType;
import eu.medsea.mimeutil.MimeUtil;
import eu.medsea.mimeutil.detector.ExtensionMimeDetector;
import eu.medsea.mimeutil.detector.MagicMimeMimeDetector;
import org.apache.commons.lang.StringUtils;

/**
 * @author Jeff Fischer
 */
public class PrecompressedHttpServletResponse extends HttpServletResponseWrapper {

    static {
        MimeUtil.registerMimeDetector(ExtensionMimeDetector.class.getName());
        MimeUtil.registerMimeDetector(MagicMimeMimeDetector.class.getName());
    }

    private final String originalPath;
    private final String contentType;

    public PrecompressedHttpServletResponse(HttpServletResponse response, String originalPath) {
        super(response);
        this.originalPath = originalPath;
        Collection mimeTypes = MimeUtil.getMimeTypes(originalPath);
        if (!mimeTypes.isEmpty()) {
            MimeType mimeType = (MimeType) mimeTypes.iterator().next();
            contentType = mimeType.toString();
        } else {
            contentType = null;
        }
    }

    @Override
    public String getContentType() {
        String contentType = super.getContentType();
        if (!StringUtils.isEmpty(contentType) && !StringUtils.isEmpty(this.contentType) && contentType.contains("zip")) {
            return this.contentType;
        }

        return contentType;
    }

    @Override
    public void setContentType(String type) {
        if (type.contains("zip") && this.contentType != null) {
            super.setContentType(this.contentType);
        } else {
            super.setContentType(type);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy