/* * Copyright 2000-2016 Vaadin Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.vaadin.osgi.resources.impl; import org.osgi.service.http.HttpService; import org.osgi.service.http.NamespaceException; import com.vaadin.osgi.resources.VaadinResourceService; /** * Implementation of {@link VaadinResourceService}. Uses bundle version as a * prefix for the /VAADIN/ folder. * * @author Vaadin Ltd. * * @since 8.1 */ public class VaadinResourceServiceImpl implements VaadinResourceService { private static final String NAMESPACE_PREFIX = "vaadin-%s"; private String bundleVersion; private String pathPrefix; /** * Sets the version of the bundle managing this service. * * <p> * This needs to be called before any other method after the service is * created. * * @param bundleVersion * the version of the bundle managing this service */ public void setBundleVersion(String bundleVersion) { this.bundleVersion = bundleVersion; pathPrefix = String.format(NAMESPACE_PREFIX, bundleVersion); } @Override public void publishTheme(String themeName, HttpService httpService) throws NamespaceException { String themeAlias = PathFormatHelper.getThemeAlias(themeName, pathPrefix); String themePath = PathFormatHelper.getThemePath(themeName); httpService.registerResources(themeAlias, themePath, null); } @Override public void publishResource(String resource, HttpService httpService) throws NamespaceException { String alias = PathFormatHelper.getRootResourceAlias(resource, pathPrefix); String path = PathFormatHelper.getRootResourcePath(resource); httpService.registerResources(alias, path, null); } @Override public void publishWidgetset(String widgetset, HttpService httpService) throws NamespaceException { String widgetsetAlias = PathFormatHelper.getWidgetsetAlias(widgetset, pathPrefix); String widgetsetPath = PathFormatHelper.getWidgetsetPath(widgetset); httpService.registerResources(widgetsetAlias, widgetsetPath, null); } @Override public String getResourcePathPrefix() { return String.format(NAMESPACE_PREFIX, bundleVersion); } }