/** * @deprecated since 7.4: use {@link #getConfigurationApplyingToAll()} instead. */ public PageDescriptor getConfigurationApplyingToAllThemes() { return getConfigurationApplyingToAll(); }
@Override public synchronized void removeContribution(PageDescriptor contrib) { removeContribution(contrib, true); }
@Override public synchronized void removeContribution(NegotiationDescriptor contrib) { removeContribution(contrib, true); }
@Override public void activate(ComponentContext context) { super.activate(context); pageReg = new PageRegistry(); flavorReg = new FlavorRegistry(); negReg = new NegotiationRegistry(); }
@Override public void unregisterContribution(Object contribution, String extensionPoint, ComponentInstance contributor) { if (contribution instanceof FlavorDescriptor) { FlavorDescriptor flavor = (FlavorDescriptor) contribution; flavorReg.removeContribution(flavor); } else if (contribution instanceof Resource) { Resource resource = (Resource) contribution; unregisterResource(resource); } else if (contribution instanceof SimpleStyle) { SimpleStyle style = (SimpleStyle) contribution; unregisterResource(getResourceFromStyle(style)); } else if (contribution instanceof PageDescriptor) { PageDescriptor page = (PageDescriptor) contribution; if (page.hasResources()) { WebResourceManager wrm = Framework.getService(WebResourceManager.class); wrm.unregisterResourceBundle(page.getComputedResourceBundle()); } pageReg.removeContribution(page); } else if (contribution instanceof NegotiationDescriptor) { NegotiationDescriptor neg = (NegotiationDescriptor) contribution; negReg.removeContribution(neg); } else { log.error(String.format( "Unknown contribution to the theme " + "styling service, extension point '%s': '%s", extensionPoint, contribution)); } }
@Override public List<PageDescriptor> getPages() { List<PageDescriptor> pages = new ArrayList<>(); List<String> names = pageReg.getPageNames(); PageDescriptor globalPage = pageReg.getPage("*"); for (String name : names) { if ("*".equals(name)) { continue; } PageDescriptor page = pageReg.getPage(name); if (page != null) { // merge with global resources mergePage(page, globalPage); } pages.add(page); } return pages; }
@Override public List<String> getFlavorNames(String themePageName) { if (pageReg != null) { PageDescriptor themePage = pageReg.getPage(themePageName); if (themePage != null) { List<String> flavors = new ArrayList<>(); List<String> localFlavors = themePage.getFlavors(); if (localFlavors != null) { flavors.addAll(localFlavors); } // add flavors from theme for all pages PageDescriptor forAllPage = pageReg.getConfigurationApplyingToAll(); if (forAllPage != null) { localFlavors = forAllPage.getFlavors(); if (localFlavors != null) { flavors.addAll(localFlavors); } } // add default flavor if it's not listed there String defaultFlavor = themePage.getDefaultFlavor(); if (defaultFlavor != null) { if (!flavors.contains(defaultFlavor)) { flavors.add(0, defaultFlavor); } } return flavors; } } return null; }
wrm.registerResourceBundle(page.getComputedResourceBundle()); pageReg.addContribution(page); log.info(String.format("Done registering page '%s'", page.getName())); } else if (contribution instanceof ResourceDescriptor) { NegotiationDescriptor neg = (NegotiationDescriptor) contribution; log.info(String.format("Register negotiation for '%s'", neg.getTarget())); negReg.addContribution(neg); log.info(String.format("Done registering negotiation for '%s'", neg.getTarget())); } else {
/** * @deprecated since 7.4: use {@link #getPage(String)} instead. */ @Deprecated public PageDescriptor getThemePage(String id) { return getPage(id); }
@Override public synchronized void removeContribution(FlavorDescriptor contrib) { removeContribution(contrib, true); }
/** * @deprecated since 7.4: use {@link #getPages()} instead. */ @Deprecated public List<PageDescriptor> getThemePages() { return getPages(); }
@Override public FlavorDescriptor getFlavor(String flavorName) { if (flavorReg != null) { FlavorDescriptor flavor = flavorReg.getFlavor(flavorName); if (flavor != null) { FlavorDescriptor clone = flavor.clone(); clone.setLogo(computeLogo(flavor, new ArrayList<>())); clone.setPalettePreview(computePalettePreview(flavor, new ArrayList<>())); clone.setFavicons(computeIcons(flavor, new ArrayList<>())); return clone; } } return null; }
@Override public String negotiate(String target, Object context) { String res = null; NegotiationDescriptor negd = negReg.getNegotiation(target); if (negd != null) { List<NegotiatorDescriptor> nds = negd.getNegotiators(); for (NegotiatorDescriptor nd : nds) { Class<Negotiator> ndc = nd.getNegotiatorClass(); try { Negotiator neg = ndc.newInstance(); neg.setProperties(nd.getProperties()); res = neg.getResult(target, context); if (res != null) { break; } } catch (IllegalAccessException | InstantiationException e) { throw new RuntimeException(e); } } } return res; }
flavorReg.addContribution(flavor);
@Override public String getDefaultFlavorName(String themePageName) { if (pageReg != null) { PageDescriptor themePage = pageReg.getPage(themePageName); if (themePage != null) { return themePage.getDefaultFlavor(); } } return null; }