/** * Return a filtered list of {@link CMAbstractCode codes} for the given list of codes and their * {@link CMAbstractCode#getInclude() includes}. Does not include {@link * CMAbstractCode#getDataUrl() external links} and {@link CMAbstractCode#getIeExpression() ie * specific links}. */ @Nonnull private static List<CMAbstractCode> getCodeListForHash( @Nullable List<? extends CMAbstractCode> codes, @Nullable List excludes, @Nonnull List<CMAbstractCode> results) { if (codes != null) { for (CMAbstractCode code : codes) { boolean excluded = excludes != null && excludes.contains(code); if (!excluded) { // get all included contents as well. Do not use includes of excluded contents. if (code.getInclude().size() != 0) { getCodeListForHash(code.getInclude(), excludes, results); } // only add resources that are not IeExcludes nor ExternalLinks boolean isIeExclude = code.getIeExpression().length() != 0; boolean isExternalLink = code.getDataUrl().length() != 0; if (!isIeExclude && !isExternalLink) { results.add(code); } } } } return results; }
/** * Return a filtered list of {@link CMAbstractCode codes} for the given list of codes and their * {@link CMAbstractCode#getInclude() includes}. * * @param codes The list of resources. * @return the codes. */ @Nonnull private static List<CMAbstractCode> getFilteredCodeList( @Nullable List<? extends CMAbstractCode> codes, @Nullable List excludes, @Nonnull List<CMAbstractCode> results, boolean onlyIeExcludes, boolean onlyExternalLinks) { if (codes != null) { for (CMAbstractCode code : codes) { // check if resource is excluded in config boolean excluded = excludes != null && excludes.contains(code); // only work on non-excluded resources if (!excluded) { // get all included contents as well. Do not use includes of excluded contents. if (code.getInclude().size() != 0) { getFilteredCodeList( code.getInclude(), excludes, results, onlyIeExcludes, onlyExternalLinks); } // add resource only if it's valid to do so. boolean add = shouldAddCode(code, onlyIeExcludes, onlyExternalLinks); if (add) { results.add(code); } } } } return results; }