blob: 4df4dc69abcc77e6fbe20a01007a376ca8943f30 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
/**
* The <i>Feature Flags</i> feature allows applications to dynamically
* provide features to clients and consumers depending on various criteria such as
* <ul>
* <li>Time of Day</li>
* <li>Static Configuration</li>
* <li>Request Parameter</li>
* <li>Some Resource</li>
* </ul>
* <p>
* Feature flag support consists of two parts: The feature flag itself represented
* by the {@link org.apache.sling.featureflags.Feature Feature} interface and the
* the application providing a feature guarded by a feature flag. Such applications
* make use of the {@link org.apache.sling.featureflags.Features Features} service to
* query feature flags.
* <p>
* Feature flags can be provided by registering
* {@link org.apache.sling.featureflags.Feature Feature} services. Alternatively
* feature flags can be provided by factory configuration with factory PID
* {@code org.apache.sling.featureflags.Feature} as follows:
* <table>
* <tr>
* <td>{@code name}</td>
* <td>Short name of the feature. This name is used to refer to the feature
* when checking for it to be enabled or not. This property is required
* and defaults to a name derived from the feature's class name and object
* identity. It is strongly recommended to define a useful and unique name
* for the feature</td>
* </tr>
* <tr>
* <td>{@code description}</td>
* <td>Description for the feature. The intent is to describe the behavior
* of the application if this feature would be enabled. It is recommended
* to define this property. The default value is the name of the feature
* as derived from the {@code name} property.</td>
* </tr>
* <tr>
* <td>{@code enabled}</td>
* <td>Boolean flag indicating whether the feature is enabled or not by
* this configuration</td>
* </tr>
* </table>
*
* @version 1.1
* @see <a href="http://sling.apache.org/documentation/the-sling-engine/featureflags.html">Feature Flags</a>
*/
@org.osgi.annotation.versioning.Version("1.1.0")
package org.apache.sling.featureflags;