Package org.apache.sling.distribution.packaging

## Interface DistributionPackageBuilder

All Known Implementing Classes:
  `VaultDistributionPackageBuilderFactory`

    @ProviderType
    public interface DistributionPackageBuilder

A builder for `DistributionPackage`s

### Method Summary

All Methods Instance Methods Abstract Methods
`@Nullable DistributionPackage` `createPackage​(@NotNull org.apache.sling.api.resource.ResourceResolver resourceResolver, @NotNull org.apache.sling.distribution.DistributionRequest request)` creates a `DistributionPackage` for a specific `DistributionRequest`
`@Nullable DistributionPackage` `getPackage​(@NotNull org.apache.sling.api.resource.ResourceResolver resourceResolver, @NotNull String id)` get an already created (and saved into the repository) `DistributionPackage` by its id
`String` `getType()` returns the type of a package.
`@NotNull DistributionPackageInfo` `installPackage​(@NotNull org.apache.sling.api.resource.ResourceResolver resourceResolver, @NotNull InputStream stream)` install a stream and returns the associated to a `DistributionPackageInfo` this provider can read and install
`boolean` `installPackage​(@NotNull org.apache.sling.api.resource.ResourceResolver resourceResolver, @NotNull DistributionPackage distributionPackage)` Installs the given distributionPackage into the repository
`@NotNull DistributionPackage` `readPackage​(@NotNull org.apache.sling.api.resource.ResourceResolver resourceResolver, @NotNull InputStream stream)` reads a stream and tries to convert it to a `DistributionPackage` this provider can read and install

### Method Detail

#### getType

    String getType()

returns the type of a package. Only packages of this type will be accepted by the package builder.

Returns:
  the package type.

#### createPackage

    @Nullable
    @Nullable DistributionPackage createPackage​(@NotNull
                                                @NotNull org.apache.sling.api.resource.ResourceResolver resourceResolver,
                                                @NotNull
                                                @NotNull org.apache.sling.distribution.DistributionRequest request)
                                         throws DistributionException

creates a `DistributionPackage` for a specific `DistributionRequest`

Parameters:
  `resourceResolver` - the resource resolver used to access the resources to be packaged
  `request` - the `DistributionRequest` to create the package for
Returns:
  a `DistributionPackage` or `null` if it could not be created
Throws:
  `DistributionException` - if any error occurs while creating the package, or if the resource resolver is not authorized to do that

#### readPackage

    @NotNull
    @NotNull DistributionPackage readPackage​(@NotNull
                                             @NotNull org.apache.sling.api.resource.ResourceResolver resourceResolver,
                                             @NotNull
                                             @NotNull InputStream stream)
                                      throws DistributionException

reads a stream and tries to convert it to a `DistributionPackage` this provider can read and install

Parameters:
  `resourceResolver` - resource resolver used to store the eventually created package
  `stream` - the `InputStream` of the package to read
Returns:
  a `DistributionPackage` if it can read it from the stream
Throws:
  `DistributionException` - when the stream cannot be read as a `DistributionPackage`

#### getPackage

    @Nullable
    @Nullable DistributionPackage getPackage​(@NotNull
                                             @NotNull org.apache.sling.api.resource.ResourceResolver resourceResolver,
                                             @NotNull
                                             @NotNull String id)
                                      throws DistributionException

get an already created (and saved into the repository) `DistributionPackage` by its id

Parameters:
  `resourceResolver` - resource resolver used to access the package with the given id
  `id` - the unique identifier of an already created `DistributionPackage`
Returns:
  a `DistributionPackage` if one with such an id exists, `null` otherwise
Throws:
  `DistributionException` - when the stream the package with that id cannot be retrieved

#### installPackage

    boolean installPackage​(@NotNull
                           @NotNull org.apache.sling.api.resource.ResourceResolver resourceResolver,
                           @NotNull
                           @NotNull DistributionPackage distributionPackage)
                    throws DistributionException

Installs the given distributionPackage into the repository

Parameters:
  `resourceResolver` - the resource resolver used to install the packaged resources
  `distributionPackage` - the distribution package to install
Returns:
  `true` if the package was installed successfully
Throws:
  `DistributionException` - when installation fails

#### installPackage

    @NotNull
    @NotNull DistributionPackageInfo installPackage​(@NotNull
                                                    @NotNull org.apache.sling.api.resource.ResourceResolver resourceResolver,
                                                    @NotNull
                                                    @NotNull InputStream stream)
                                             throws DistributionException

install a stream and returns the associated to a `DistributionPackageInfo` this provider can read and install

Parameters:
  `resourceResolver` - resource resolver used to store the eventually created package
  `stream` - the `InputStream` of the package to read
Returns:
  a `DistributionPackage` if it can read it from the stream
Throws:
  `DistributionException` - when the stream cannot be read as a `DistributionPackage`