Package org.apache.sling.feature.builder

# Class FeatureBuilder

java.lang.Object
org.apache.sling.feature.builder.FeatureBuilder

public abstract class FeatureBuilder extends Object

## Constructor Summary

Constructors
Constructor
Description
`FeatureBuilder()`

## Method Summary

Modifier and Type
Method
Description
`static Feature`
`assemble(ArtifactId featureId, BuilderContext context, Feature... features)`
Assemble a feature based on the provided features.
`static Feature`
`assemble(Feature feature, BuilderContext context)`
Assemble the full feature by processing its prototype.
`static Feature[]`
`deduplicate(BuilderContext context, Feature... features)`
Remove duplicate and prototype features.
`static Feature[]`
`resolve(BuilderContext context, String... featureIds)`
Resolve a set of features based on their ids.
`static void`
`resolveVariables(Feature feature, Map<String,String> additionalVariables)`
Resolve variables in the feature.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### FeatureBuilder

public FeatureBuilder()

## Method Details

### assemble

public static Feature assemble(Feature feature, BuilderContext context)
Assemble the full feature by processing its prototype.

Parameters:
  `feature` - The feature to start
  `context` - The builder context
Returns:
  The assembled feature.
Throws:
  `IllegalArgumentException` - If feature or context is `null`
  `IllegalStateException` - If a prototype feature can't be provided or merged.

### resolve

public static Feature[] resolve(BuilderContext context, String... featureIds)
Resolve a set of features based on their ids.

Parameters:
  `context` - The builder context
  `featureIds` - The feature ids
Returns:
  An array of features, the array has the same order as the provided ids
Throws:
  `IllegalArgumentException` - If context or featureIds is `null`
  `IllegalStateException` - If the provided ids are invalid, or the feature can't be provided

### deduplicate

public static Feature[] deduplicate(BuilderContext context, Feature... features)
Remove duplicate and prototype features. If a feature with the same id but different version is contained several times, only the one with the highest version is kept in the result list. If a feature has another feature as prototype from the provided set, the prototype feature is removed from the set.

Parameters:
  `context` - The builder context
  `features` - A list of features
Returns:
  A list of features without duplicates.

### assemble

public static Feature assemble(ArtifactId featureId, BuilderContext context, Feature... features)
Assemble a feature based on the provided features. The features are processed in the order they are provided. If the same feature is included more than once only the feature with the highest version is used. The others are ignored.

Parameters:
  `featureId` - The feature id to use.
  `context` - The builder context
  `features` - The features
Returns:
  The application
Throws:
  `IllegalArgumentException` - If featureId, context or featureIds is `null`
  `IllegalStateException` - If a feature can't be provided or the feature can't be assembled

### resolveVariables

public static void resolveVariables(Feature feature, Map<String,String> additionalVariables)
Resolve variables in the feature. Variables are allowed in the values of framework properties and in the values of configuration properties.

Parameters:
  `feature` - The feature
  `additionalVariables` - Optional additional variables