Example usage for com.google.common.css SourceCode getFileName

List of usage examples for com.google.common.css SourceCode getFileName

Introduction

In this page you can find the example usage for com.google.common.css SourceCode getFileName.

Prototype

public String getFileName() 

Source Link

Usage

From source file:com.log4ic.compressor.utils.less.LessEngine.java

/**
 * less/*from  w w w .  j  av a2  s  . com*/
 *
 * @param codeList
 * @param conditions
 * @return
 * @throws GssParserException
 */
public static List<SourceCode> parseLess(List<SourceCode> codeList, List<String> conditions)
        throws LessException, CompressionException {
    final List<SourceCode> resultCodeList = new FastList<SourceCode>();
    StringBuilder conditionsBuilder = new StringBuilder();
    if (conditions != null) {
        for (String con : conditions) {
            conditionsBuilder.append("@").append(con).append(":true;");
        }
    }
    for (final SourceCode sourceCode : codeList) {
        if (Compressor.getFileType(sourceCode.getFileName()) != Compressor.FileType.LESS) {
            resultCodeList.add(new SourceCode(sourceCode.getFileName(), sourceCode.getFileContents()));
            continue;
        }
        final Object[] functionArgs = new Object[] {
                conditionsBuilder.toString() + sourceCode.getFileContents() };
        try {
            jsContextFactory.call(new ContextAction() {
                @Override
                public Object run(Context cx) {
                    cx.setLanguageVersion(Context.VERSION_1_8);
                    Object result = parseFn.call(cx, global, fnThisScopeObj, functionArgs);
                    resultCodeList.add(new SourceCode(sourceCode.getFileName(), Context.toString(result)));
                    return null;
                }
            });
        } catch (Exception e) {
            parseLessException(e);
        }
    }
    return resultCodeList;
}

From source file:com.log4ic.compressor.utils.Compressor.java

public static String parseGss(List<SourceCode> codeList, List<String> conditions)
        throws GssParserException, CompressionException {
    List<SourceCode> codes = Lists.newArrayList();
    for (SourceCode s : codeList) {
        if (getFileType(s.getFileName()) == FileType.GSS) {
            codes.add(s);/*  w ww. ja  va  2  s.c om*/
        }
    }
    JobDescriptionBuilder builder = buildJobDesBuilder(codes, null, conditions);
    builder.setProcessDependencies(false);
    builder.setSimplifyCss(false);
    builder.setEliminateDeadStyles(false);
    builder.setOptimizeStrategy(JobDescription.OptimizeStrategy.NONE);
    return parseGss(builder.getJobDescription());
}

From source file:com.log4ic.compressor.utils.Compressor.java

private static JobDescriptionBuilder buildJobDesBuilder(List<SourceCode> codeList,
        JobDescription.OutputFormat format, List<String> conditions, JobDescription.OptimizeStrategy level) {
    JobDescriptionBuilder builder = new JobDescriptionBuilder();
    builder.setAllowWebkitKeyframes(true);
    builder.setAllowKeyframes(true);//w  w  w. ja v  a 2  s  . c  o m
    builder.setAllowUnrecognizedFunctions(true);
    builder.setAllowUnrecognizedProperties(true);
    builder.setProcessDependencies(true);
    builder.setSimplifyCss(true);
    builder.setEliminateDeadStyles(true);
    builder.setOptimizeStrategy(level == null ? JobDescription.OptimizeStrategy.SAFE : level);
    for (SourceCode code : codeList) {
        builder.addInput(new SourceCode(code.getFileName(), fixIE9Hack(code.getFileContents())));
    }
    if (format != null) {
        builder.setOutputFormat(format);
    }
    //
    //builder.setGssFunctionMapProvider(gssFunctionMapProvider);
    //?
    if (conditions != null && conditions.size() > 0) {
        for (String con : conditions) {
            builder.addTrueConditionName(con);
        }
    }
    return builder;
}

From source file:com.log4ic.compressor.utils.Compressor.java

private static String mergeCode(List<SourceCode> codeList, HttpServletRequest request, FileType type)
        throws LessException, GssParserException, CompressionException, IOException {
    StringBuilder builder = new StringBuilder();
    List<String> con = buildTrueConditions(request);

    if (type == FileType.LESS || type == FileType.MSS) {
        codeList = LessEngine.parseLess(codeList, con);
        for (SourceCode code : codeList) {
            if (getFileType(code.getFileName()) == FileType.LESS) {
                builder.append(code.getFileContents()).append("\n");
            }// w  w w.  j  a v a 2  s . com
        }
    }

    if (type == FileType.GSS || type == FileType.MSS) {
        builder.append(parseGss(codeList, con));
    }

    if (type == FileType.JS || type == FileType.CSS) {
        for (SourceCode code : codeList) {
            if (FileType.TPL.contains(getFileTypeString(code.getFileName()))) {
                URI uri;
                //                    if (codeList.size() <= 1) {
                //                        uri = getTemplateUri(code.getFileName());
                //                    } else {
                uri = URI.create(code.getFileName());
                //                    }
                String tpl = JavascriptTemplateEngine.parse(uri, code.getFileContents());
                builder.append(tpl).append("\n");
            } else {
                if (type == FileType.JS && codeList.size() > 1) {
                    builder.append(
                            processAMDDefine(SourceFile.fromCode(code.getFileName(), code.getFileContents()))
                                    .getCode());
                } else {
                    builder.append(code.getFileContents());
                }
                builder.append("\n");
            }
        }
    }

    return builder.toString();
}

From source file:com.log4ic.compressor.utils.Compressor.java

public static String importCode(String code, String fileUrl, FileType type, HttpServletRequest request,
        HttpServletResponse response)/* ww w.j  a v  a2  s  .com*/
        throws CompressionException, LessException, GssParserException, IOException {
    StringBuilder codeBuilder = new StringBuilder();
    switch (type) {
    case GSS:
    case CSS:
    case LESS:
    case MSS:
        Matcher matcher = importPattern.matcher(code);
        String[] codeFragments = importPattern.split(code);
        String filePath = fileUrl.substring(0, fileUrl.lastIndexOf("/") + 1);
        FileType fileType = getFileType(fileUrl);
        int i = 0;
        while (matcher.find()) {

            String cssPath;
            String cssFile = matcher.group(1);
            if (!HttpUtils.isHttpProtocol(cssFile) && !cssFile.startsWith("/")) {
                cssPath = filePath + cssFile;
            } else {
                cssPath = cssFile;
            }

            if (StringUtils.isNotBlank(codeFragments[i])) {
                if (codeFragments[i].lastIndexOf("/*") > codeFragments[i].lastIndexOf("*/")
                        || codeFragments[i].lastIndexOf("//") > codeFragments[i].lastIndexOf("\n")) {
                    if (codeFragments.length > i + 1) {
                        codeFragments[i + 1] = codeFragments[i] + codeFragments[i + 1];
                        codeFragments[i] = null;
                        i++;
                    }
                    continue;
                } else {
                    codeBuilder.append(codeFragments[i]);
                }
            }

            if (request.getAttribute(cssPath) == null) {
                if (fileType == FileType.LESS) {
                    try {
                        if (!type.contains(getFileType(cssPath))) {
                            cssPath += ".less";
                        }
                    } catch (Exception e) {
                        cssPath += ".less";
                    }
                }
                logger.debug("[{}]", cssPath);
                request.setAttribute(cssPath, true);
                List<SourceCode> sourceCodes = mergeCode(new String[] { cssPath }, request, response, type);
                for (SourceCode s : sourceCodes) {
                    FileType t = getFileType(s.getFileName());
                    if (fileType.equals(t)) {
                        codeBuilder.append(s.getFileContents());
                    } else {
                        codeBuilder
                                .append(fixIE9Hack(mergeCode(Lists.<SourceCode>newArrayList(s), request, t)));
                    }
                }
            }
            i++;
        }
        if (i != 0) {
            if (codeFragments.length > i && StringUtils.isNotBlank(codeFragments[i])) {
                codeBuilder.append(codeFragments[i]);
            }
            break;
        }
    default:
        return code;
    }
    return codeBuilder.toString();
}

From source file:com.log4ic.compressor.utils.Compressor.java

/**
 * ??//from w  w  w.ja va2 s .c o  m
 *
 * @param type
 * @param queryString
 * @param cacheManager
 * @param request
 * @param response
 * @param fileDomain
 * @return
 * @throws com.log4ic.compressor.exception.CompressionException
 *
 * @throws com.google.common.css.compiler.ast.GssParserException
 *
 */
private static String buildCode(final FileType type, final String queryString, final CacheManager cacheManager,
        HttpServletRequest request, HttpServletResponse response, String fileDomain)
        throws CompressionException, GssParserException, LessException {
    Cache cache = null;
    try {
        //???
        if (cacheManager != null) {
            byte[] cacheLock;
            //??
            synchronized (progressCacheLock) {
                cacheLock = progressCacheLock.get(queryString);
            }
            if (cacheLock != null) {
                //??
                synchronized (cacheLock) {
                    logger.debug("?");
                    cacheLock.wait();
                }
                //
                cache = cacheManager.get(queryString);
            } else {
                //?queryString?
                cacheLock = new byte[0];
                synchronized (progressCacheLock) {
                    progressCacheLock.put(queryString, cacheLock);
                }
            }
        }
        String code;
        //??cache??
        if (cache == null || cache.isExpired()) {
            //???
            List<SourceCode> codeList = mergeCode(queryString.split("&"), request, response, type);
            List<SourceCode> sourceCodeList = Lists.newArrayList();
            //css?
            for (SourceCode source : codeList) {
                SourceCode s = new SourceCode(source.getFileName(),
                        fixUrlPath(request, source.getFileContents(), source.getFileName(), type, fileDomain));
                sourceCodeList.add(s);
            }
            //
            code = HttpUtils.getBooleanParam(request, "nocompress") ? mergeCode(sourceCodeList, request, type)
                    : compressCode(sourceCodeList, request, type);
            if (cacheManager != null) {
                final String finalCode = code;
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            cacheManager.put(queryString, finalCode, type);
                        } catch (Exception e) {
                            logger.error("", e);
                        } finally {
                            byte[] cacheLock;
                            synchronized (progressCacheLock) {
                                cacheLock = progressCacheLock.remove(queryString);
                            }
                            synchronized (cacheLock) {
                                cacheLock.notifyAll();
                            }
                        }
                    }
                }).start();
            }
            return code;
        } else {
            return cache.getContent();
        }
    } catch (Exception e) {
        if (cacheManager != null) {
            byte[] cacheLock;
            synchronized (progressCacheLock) {
                cacheLock = progressCacheLock.remove(queryString);
            }
            synchronized (cacheLock) {
                cacheLock.notifyAll();
            }
        }
        throw new CompressionException(e);
    }
}

From source file:com.log4ic.compressor.utils.Compressor.java

/**
 * //w w  w. ja  v  a2s.c  o m
 *
 * @param fileSourceList
 * @param request
 * @param type
 * @return
 * @throws com.google.common.css.compiler.ast.GssParserException
 *
 * @throws com.log4ic.compressor.exception.CompressionException
 *
 */
public static String compressCode(List<SourceCode> fileSourceList, HttpServletRequest request, FileType type)
        throws GssParserException, CompressionException, LessException, IOException {
    //
    boolean isDebug = HttpUtils.getBooleanParam(request, "debug");
    String code = "";
    if (fileSourceList.size() > 0) {
        String levelParam = request.getParameter("level");
        switch (type) {
        case JS:
            CompilationLevel level = CompilationLevel.SIMPLE_OPTIMIZATIONS;
            if (StringUtils.isNotBlank(levelParam)) {
                try {
                    level = CompilationLevel.values()[Integer.parseInt(levelParam)];
                } catch (Exception e) {
                    try {
                        level = CompilationLevel.valueOf(levelParam);
                    } catch (IllegalArgumentException ae) {
                        //
                    }
                }
            }
            List<SourceFile> sourceFiles = Lists.newArrayList();
            for (SourceCode source : fileSourceList) {
                //??
                SourceFile jsSource = SourceFile.fromCode(source.getFileName(), source.getFileContents());
                if (FileType.TPL.contains(getFileTypeString(source.getFileName()))) {
                    URI uri;
                    //                            if (fileSourceList.size() <= 1) {
                    //                                uri = getTemplateUri(source.getFileName());
                    //                            } else {
                    uri = URI.create(source.getFileName());
                    //                            }
                    String tpl = JavascriptTemplateEngine.compress(uri, source.getFileContents());
                    jsSource = SourceFile.fromCode(source.getFileName(), tpl);
                } else if (fileSourceList.size() > 1) {
                    jsSource = processAMDDefine(jsSource);
                }
                sourceFiles.add(jsSource);
            }
            code = Compressor.compressJS(sourceFiles, level, isDebug);
            break;
        case CSS:
            code = Compressor.compressGss(fileSourceList, getGssFormat(isDebug, request),
                    getCompressGssOptimizeStrategy(levelParam));
            break;
        case GSS:
            code = Compressor.compressGss(fileSourceList, getGssFormat(isDebug, request),
                    buildTrueConditions(request), getCompressGssOptimizeStrategy(levelParam));
            break;
        case LESS:
        case MSS:
            //??
            code = Compressor.compressLess(fileSourceList, getGssFormat(isDebug, request),
                    buildTrueConditions(request), getCompressGssOptimizeStrategy(levelParam));
            break;
        }
    }
    return code;
}