/**
* 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.core;
import org.osgi.framework.Constants;
import org.osgi.service.component.ComponentConstants;
/**
* <p>
* {@link ConfigurableService} can be used as a marker interface for configurable services. But the interface itself is
* not relevant for the runtime. Each service which has the property
* {@link ConfigurableService#SERVICE_PROPERTY_DESCRIPTION_URI} set will be considered as a configurable service. The
* properties {@link ConfigurableService#SERVICE_PROPERTY_LABEL} and
* {@link ConfigurableService#SERVICE_PROPERTY_CATEGORY} are optional.
* </p>
*
* <p>
* The services are configured through the OSGi configuration admin. Therefore each service must provide a PID or a
* component name service property if the configuration is done by declarative services. If the
* {@link Constants#SERVICE_PID} property is not set the
* {@link ComponentConstants#COMPONENT_NAME} property will be used as fallback.
* </p>
*
* @author Dennis Nobel - Initial contribution
*
*/
public interface ConfigurableService {
/**
* The config description URI for the configurable service. See also {@link ConfigDescription}.
*/
public static final String SERVICE_PROPERTY_DESCRIPTION_URI = "service.config.description.uri";
/**
* The label of the service to be configured.
*/
public static final String SERVICE_PROPERTY_LABEL = "service.config.label";
/**
* The category of the service to be configured (e.g. binding).
*/
public static final String SERVICE_PROPERTY_CATEGORY = "service.config.category";
}