| /* |
| * Copyright 2005 The Apache Software Foundation |
| * |
| * 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.osgi.service.bundlerepository; |
| |
| import java.io.PrintStream; |
| |
| /** |
| * This interface defines a simple bundle repository service. |
| **/ |
| public interface BundleRepository |
| { |
| /** |
| * Get URL list of repositories. |
| * @return a space separated list of URLs to use or <tt>null</tt> |
| * to refresh the cached list of bundles. |
| **/ |
| public String[] getRepositoryURLs(); |
| |
| /** |
| * Set URL list of repositories. |
| * @param url a space separated list of URLs to use or <tt>null</tt> |
| * to refresh the cached list of bundles. |
| **/ |
| public void setRepositoryURLs(String[] urls); |
| |
| /** |
| * Returns an array of the bundle symbolic names available |
| * in the repository. |
| * @return An arry of available bundle symbolic names. |
| **/ |
| public BundleRecord[] getBundleRecords(); |
| |
| /** |
| * Get the specified bundle record from the repository. |
| * @param i the bundle record index to retrieve. |
| * @return the associated bundle record or <tt>null</tt>. |
| **/ |
| public BundleRecord[] getBundleRecords(String symname); |
| |
| /** |
| * Get bundle record for the bundle with the specified name |
| * and version from the repository. |
| * @param name the bundle record name to retrieve. |
| * @param version three-interger array of the version associated with |
| * the name to retrieve. |
| * @return the associated bundle record or <tt>null</tt>. |
| **/ |
| public BundleRecord getBundleRecord(String symname, int[] version); |
| |
| /** |
| * Deploys the bundle in the repository that corresponds to |
| * the specified update location. The action taken depends on |
| * whether the specified bundle is already installed in the local |
| * framework. If the bundle is already installed, then this |
| * method will attempt to update it. If the bundle is not already |
| * installed, then this method will attempt to install it. |
| * @param out the stream to use for informational messages. |
| * @param err the stream to use for error messages. |
| * @param symname the symbolic name of the bundle to deploy. |
| * @param isResolve a flag to indicates whether dependencies should |
| * should be resolved. |
| * @param isStart a flag to indicate whether installed bundles should |
| * be started. |
| * @return <tt>true</tt> if successful, <tt>false</tt> otherwise. |
| **/ |
| public boolean deployBundle( |
| PrintStream out, PrintStream err, String symname, int[] version, |
| boolean isResolve, boolean isStart); |
| |
| /** |
| * Returns an array containing all bundle records in the |
| * repository that resolve the transitive closure of the |
| * passed in array of package declarations. |
| * @param pkgs an array of package declarations to resolve. |
| * @return an array containing all bundle records in the |
| * repository that resolve the transitive closure of |
| * the passed in array of package declarations. |
| * @throws ResolveException if any packages in the transitive |
| * closure of packages cannot be resolved. |
| **/ |
| public BundleRecord[] resolvePackages(IPackage[] pkgs) |
| throws ResolveException; |
| } |