| /* |
| * Licensed 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. |
| */ |
| package org.apache.aries.subsystem; |
| |
| import java.io.InputStream; |
| import java.util.Collection; |
| |
| import org.apache.aries.util.filesystem.IDirectory; |
| import org.osgi.resource.Requirement; |
| import org.osgi.service.subsystem.Subsystem; |
| import org.osgi.service.subsystem.SubsystemException; |
| import org.osgi.service.subsystem.SubsystemPermission; |
| |
| public interface AriesSubsystem extends Subsystem { |
| /** |
| * Adds the specified requirements to this subsystem's sharing policy. |
| * <p> |
| * The sharing policy of this subsystem's region is updated with the |
| * specified requirements (i.e. imports). Requirements already part of the |
| * sharing policy are ignored. Upon return, constituents of this subsystem |
| * will be allowed to resolve against matching capabilities that are visible |
| * to the parent subsystems. |
| * |
| * @param requirement The requirement to add to the sharing policy. |
| * @throws SubsystemException If the requirement did not already exist and |
| * could not be added. |
| * @throws UnsupportedOperationException If this is the root subsystem or |
| * the type does not support additional requirements. |
| */ |
| void addRequirements(Collection<Requirement> requirements); |
| |
| @Override |
| AriesSubsystem install(String location); |
| |
| @Override |
| AriesSubsystem install(String location, InputStream content); |
| |
| @Override |
| AriesSubsystem install(String location, InputStream content, InputStream deploymentManifest); |
| |
| /** |
| * Installs a subsystem from the specified location identifier and content. |
| * <p> |
| * This method performs the same function as calling |
| * {@link #install(String, IDirectory, InputStream)} with a null deployment |
| * manifest. |
| * |
| * @param location The location identifier of the subsystem to install. |
| * @param content The directory from which this subsystem will be read or |
| * {@code null} to indicate the directory must be created from the |
| * specified location identifier. |
| * @return The installed subsystem. |
| * @throws IllegalStateException If this subsystem's state is in |
| * {@link State#INSTALLING INSTALLING}, {@link State#INSTALL_FAILED |
| * INSTALL_FAILED}, {@link State#UNINSTALLING UNINSTALLING}, |
| * {@link State#UNINSTALLED UNINSTALLED}. |
| * @throws SubsystemException If the installation failed. |
| * @throws SecurityException If the caller does not have the appropriate |
| * {@link SubsystemPermission}[installed subsystem,LIFECYCLE], and |
| * the runtime supports permissions. |
| * @see #install(String, IDirectory, InputStream) |
| */ |
| AriesSubsystem install(String location, IDirectory content); |
| |
| /** |
| * Installs a subsystem from the specified location identifier and content |
| * but uses the provided deployment manifest, if any, rather than the |
| * computed one or the one provided as part of the content. |
| * <p> |
| * This method performs the same function as calling |
| * {@link #install(String, InputStream, InputStream)} except the content is |
| * retrieved from the specified {@link IDirectory} instead. |
| * |
| * @param location The location identifier of the subsystem to install. |
| * @param content The directory from which this subsystem will be read or |
| * {@code null} to indicate the directory must be created from the |
| * specified location identifier. |
| * @param deploymentManifest The deployment manifest to use in lieu of any |
| * others. |
| * @return The installed subsystem. |
| * @throws IllegalStateException If this subsystem's state is in |
| * {@link State#INSTALLING INSTALLING}, {@link State#INSTALL_FAILED |
| * INSTALL_FAILED}, {@link State#UNINSTALLING UNINSTALLING}, |
| * {@link State#UNINSTALLED UNINSTALLED}. |
| * @throws SubsystemException If the installation failed. |
| * @throws SecurityException If the caller does not have the appropriate |
| * {@link SubsystemPermission}[installed subsystem,LIFECYCLE], and |
| * the runtime supports permissions. |
| * @see #install(String, InputStream, InputStream) |
| */ |
| AriesSubsystem install(String location, IDirectory content, InputStream deploymentManifest); |
| } |