001package org.apache.tapestry5.internal.services.assets; 002 003import java.util.Map; 004 005import org.apache.tapestry5.http.services.CompressionAnalyzer; 006 007public class CompressionAnalyzerImpl implements CompressionAnalyzer 008{ 009 private final Map<String, Boolean> configuration; 010 011 public CompressionAnalyzerImpl(Map<String, Boolean> configuration) 012 { 013 this.configuration = configuration; 014 } 015 016 public boolean isCompressable(String contentType) 017 { 018 if (contentType == null) { 019 throw new IllegalStateException("Content type provided to CompressionAnalyzer is null, which is not allowed."); 020 } 021 022 int x = contentType.indexOf(';'); 023 024 String key = x < 0 ? contentType : contentType.substring(0, x); 025 026 Boolean result = configuration.get(key); 027 028 if (result != null) { 029 return result; 030 } 031 032 // Now look for a wild card. 033 034 x = contentType.indexOf('/'); 035 036 String wildKey = contentType.substring(0, x) + "/*"; 037 038 result = configuration.get(wildKey); 039 040 return result == null ? true : result; 041 } 042}