/**
* Copyright (c) 2014-2017 by the respective copyright holders.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.eclipse.smarthome.config.xml;
import java.util.List;
import org.eclipse.smarthome.config.core.ConfigDescription;
import org.eclipse.smarthome.config.core.ConfigDescriptionProvider;
import org.eclipse.smarthome.config.core.i18n.ConfigI18nLocalizationService;
import org.eclipse.smarthome.config.xml.internal.ConfigDescriptionReader;
import org.eclipse.smarthome.config.xml.internal.ConfigDescriptionXmlProviderFactory;
import org.eclipse.smarthome.config.xml.osgi.XmlDocumentBundleTracker;
import org.eclipse.smarthome.config.xml.osgi.XmlDocumentProviderFactory;
import org.eclipse.smarthome.config.xml.util.XmlDocumentReader;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;
/**
* Provides {@link ConfigDescription}s for configurations which are read from XML files.
*
* @author Simon Kaufmann - initial contribution and API
*
*/
@Component(service = ConfigDescriptionProvider.class, immediate = true, property = { "esh.scope=core.xml.config" })
public class ConfigXmlConfigDescriptionProvider extends AbstractXmlConfigDescriptionProvider {
private static final String XML_DIRECTORY = "/ESH-INF/config/";
private XmlDocumentBundleTracker<List<ConfigDescription>> configDescriptionTracker;
private ConfigI18nLocalizationService configI18nLocalizerService;
@Activate
public void activate(ComponentContext componentContext) {
XmlDocumentReader<List<ConfigDescription>> configDescriptionReader = new ConfigDescriptionReader();
XmlDocumentProviderFactory<List<ConfigDescription>> configDescriptionProviderFactory = new ConfigDescriptionXmlProviderFactory(
this);
configDescriptionTracker = new XmlDocumentBundleTracker<>(componentContext.getBundleContext(), XML_DIRECTORY,
configDescriptionReader, configDescriptionProviderFactory);
configDescriptionTracker.open();
}
@Deactivate
public void deactivate() {
configDescriptionTracker.close();
}
@Reference
public void setConfigI18nLocalizerService(ConfigI18nLocalizationService configI18nLocalizerService) {
this.configI18nLocalizerService = configI18nLocalizerService;
}
public void unsetConfigI18nLocalizerService(ConfigI18nLocalizationService configI18nLocalizerService) {
this.configI18nLocalizerService = null;
}
@Override
protected ConfigI18nLocalizationService getConfigI18nLocalizerService() {
return configI18nLocalizerService;
}
}