private ClientLibrary getClientLibrary(String path) { if (clientLibrariesCache == null) { clientLibrariesCache = Collections.unmodifiableMap(htmlLibraryManager.getLibraries()); } return clientLibrariesCache.get(path); }
private HtmlLibrary getLibrary(LibraryType libraryType, String libraryPath, ResourceResolver resourceResolver) { String resolvedLibraryPath = resolvePathIfProxied(libraryType, libraryPath, resourceResolver); return resolvedLibraryPath == null ? null : htmlLibraryManager.getLibrary(libraryType, resolvedLibraryPath); }
@Override public String call() throws Exception { return calculateMd5(htmlLibrary, htmlLibraryManager.isMinifyEnabled()); } });
public void handleEvent(Event event) { try { boolean minified = htmlLibraryManager.isMinifyEnabled(); String path = (String) event.getProperty(SlingConstants.PROPERTY_PATH); log.info("Client Library at {} invalidated. Sending reload.", path); ClientLibrary library = htmlLibraryManager.getLibraries().get(path); if (library != null) { for (LibraryType type : library.getTypes()) { String includePath = library.getIncludePath(type, minified); server.triggerReload(includePath); } } } catch (JSONException e) { log.info("Unable to send reload", e); } }
htmlLibraryManager.getLibraries(clientLibraryCategories.toArray(new String[clientLibraryCategories.size()]), null, false, false); HtmlLibrary currentJsLibrary = htmlLibraryManager.getLibrary(LibraryType.JS, currentClientLibrary.getPath());
@Override public void writeJsInclude(final SlingHttpServletRequest request, final Design design, final PageRegion pageRegion, final Writer writer) throws IOException { htmlLibraryManager.writeJsInclude(request, writer, this.getJsLibraries(design, pageRegion)); }
@Override public void writeCssInclude(final SlingHttpServletRequest request, final Design design, final PageRegion pageRegion, final Writer writer) throws IOException { htmlLibraryManager.writeCssInclude(request, writer, this.getCssLibraries(design, pageRegion)); }
public void handleEvent(Event event) { try { boolean minified = htmlLibraryManager.isMinifyEnabled(); String path = (String) event.getProperty(SlingConstants.PROPERTY_PATH); log.info("Client Library at {} invalidated. Sending reload.", path); ClientLibrary library = htmlLibraryManager.getLibraries().get(path); if (library != null) { for (LibraryType type : library.getTypes()) { String includePath = library.getIncludePath(type, minified); server.triggerReload(includePath); } } } catch (JSONException e) { log.info("Unable to send reload", e); } }
@Override public void writeJsInclude(final SlingHttpServletRequest request, final Design design, final PageRegion pageRegion, final Writer writer) throws IOException { htmlLibraryManager.writeJsInclude(request, writer, this.getJsLibraries(design, pageRegion)); }
@Override public void writeCssInclude(final SlingHttpServletRequest request, final Design design, final PageRegion pageRegion, final Writer writer) throws IOException { htmlLibraryManager.writeCssInclude(request, writer, this.getCssLibraries(design, pageRegion)); }
private List<String> getSortedDependentCategories(Set<String> originalCategories, LibraryType type, List<String> existingCategories) { final Collection<ClientLibrary> libraries = htmlLibraryManager.getLibraries( originalCategories.toArray(new String[0]), null, // always request all types (to also consider transitive embeds/dependencies of the required type) true, false); return getSortedDependentCategories(libraries, originalCategories, type, existingCategories); }
@Override protected void doGet(@Nonnull SlingHttpServletRequest request, @Nonnull SlingHttpServletResponse response) throws ServletException, IOException { ResourceResolver resourceResolver = request.getResourceResolver(); response.setContentType("application/json"); JsonWriter writer = new JsonWriter(response.getWriter()); writer.beginObject(); writer.name("js"); writer.beginArray(); if (!excludeAll) { Collection<ClientLibrary> libraries = htmlLibraryManager.getLibraries(categories, LibraryType.JS, true, true); for (ClientLibrary library : libraries) { writer.value(resourceResolver.map(request, library.getIncludePath(LibraryType.JS, htmlLibraryManager.isMinifyEnabled()))); } } writer.endArray(); writer.name("css"); writer.beginArray(); if (!excludeAll) { Collection<ClientLibrary> libraries = htmlLibraryManager.getLibraries(categories, LibraryType.CSS, true, true); for (ClientLibrary library : libraries) { writer.value(resourceResolver.map(request, library.getIncludePath(LibraryType.CSS, htmlLibraryManager.isMinifyEnabled()))); } } writer.endArray(); writer.endObject(); }
/** * Handles request to get clientlib info by path */ private void handlePathRequest(SlingHttpServletRequest request, SlingHttpServletResponse response, DumplibsParams p) throws IOException { HtmlLibrary lib = libraryManager.getLibrary(p.getType(), p.getPath()); response.setContentType(CONTENT_TYPE_JSON); JsonObject jsonObject = lib == null ? new JsonObject() : (JsonObject) htmlLibraryToJSON(lib); response.getWriter().print(jsonObject.toString()); }
md5FromCache = calculateMd5(uriInfo.htmlLibrary, htmlLibraryManager.isMinifyEnabled());
private List<Resource> getCategoryResourceList(@Nonnull SlingHttpServletRequest request, LibraryType libraryType) { List<Resource> categoryResourceList = new ArrayList<>(); HashSet<String> clientLibraryCategories = new HashSet<String>(); for (ClientLibrary library: htmlLibraryManager.getLibraries().values()) { for (String category: library.getCategories()) { clientLibraryCategories.add(category); } } if (libraryType != null) { Collection<ClientLibrary> clientLibraries = htmlLibraryManager .getLibraries(clientLibraryCategories.toArray(new String[clientLibraryCategories.size()]), libraryType, true, true); clientLibraryCategories.clear(); for (ClientLibrary library: clientLibraries) { for (String category: library.getCategories()) { clientLibraryCategories.add(category); } } } for (String category: clientLibraryCategories) { categoryResourceList.add(new CategoryResource(category, request.getResourceResolver())); } return categoryResourceList; }
private String getVersionedPath(final String originalPath, final LibraryType libraryType) { try { boolean appendMinSelector = false; String libraryPath = StringUtils.substringBeforeLast(originalPath, "."); if (libraryPath.endsWith(MIN_SELECTOR_SEGMENT)) { appendMinSelector = true; libraryPath = StringUtils.substringBeforeLast(libraryPath, "."); } final HtmlLibrary htmlLibrary = htmlLibraryManager.getLibrary(libraryType, libraryPath); if (htmlLibrary != null) { StringBuilder builder = new StringBuilder(); builder.append(htmlLibrary.getLibraryPath()); builder.append("."); if (appendMinSelector) { builder.append(MIN_SELECTOR).append("."); } builder.append(getMd5(htmlLibrary)); builder.append(libraryType.extension); return builder.toString(); } else { log.debug("Could not find HtmlLibrary at path: {}", libraryPath); return null; } } catch (Exception ex) { // Handle unexpected formats of the original path log.error("Attempting to get a versioned path for [ {} ] but could not because of: {}", originalPath, ex.getMessage()); return originalPath; } }
@PostConstruct protected void initModel() { super.initModel(); String resourcesClientLibrary = currentStyle.get(PN_APP_RESOURCES_CLIENTLIB, String.class); if (resourcesClientLibrary != null) { Collection<ClientLibrary> clientLibraries = htmlLibraryManager.getLibraries(new String[]{resourcesClientLibrary}, LibraryType.CSS, true, true); ArrayList<ClientLibrary> clientLibraryList = Lists.newArrayList(clientLibraries.iterator()); if (!clientLibraryList.isEmpty()) { appResourcesPath = getProxyPath(clientLibraryList.get(0)); } } populateClientLibCategoriesJs(); setRedirect(); }
private void inlineSheet(final String namespaceURI, String s) throws IOException, SAXException { InputStream inputStream = null; String withoutExtension = s.substring(0, s.indexOf(LibraryType.CSS.extension)); HtmlLibrary library = htmlLibraryManager.getLibrary(LibraryType.CSS, withoutExtension); if (library != null) { inputStream = library.getInputStream(); } else { Resource resource = slingRequest.getResourceResolver().getResource(s); if (resource != null) { inputStream = resource.adaptTo(InputStream.class); } } if (inputStream != null) { char[] chars = IOUtils.toCharArray(inputStream, "UTF-8"); getContentHandler().startElement(namespaceURI, STYLE, null, new AttributesImpl()); getContentHandler().characters(NEWLINE, 0, 1); getContentHandler().characters(chars, 0, chars.length); getContentHandler().endElement(namespaceURI, STYLE, null); } } }
/** * Handles request to get all clientlib info */ private void handleAllLibsRequest(SlingHttpServletRequest request, SlingHttpServletResponse response, DumplibsParams p) throws IOException { Map<String, ClientLibrary> libs = libraryManager.getLibraries(); JsonArray libsJSON = clientLibrariesMapToJSON(libs); // should never be null response.setContentType(CONTENT_TYPE_JSON); response.getWriter().print(libsJSON.toString()); }
Set<String> categories = new TreeSet<String>(); LibraryType libraryType = LibraryType.valueOf(type.toUpperCase()); Map<String, ClientLibrary> libraries = libraryManager.getLibraries(); for (ClientLibrary library : libraries.values()) { if (library.getTypes() != null && library.getTypes().contains(libraryType)) {