Package org.osgi.impl.bundle.jmx.framework

Source Code of org.osgi.impl.bundle.jmx.framework.PackageState

/*
* Copyright 2008 Oracle Corporation
*
* 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.osgi.impl.bundle.jmx.framework;

import java.io.IOException;
import java.util.ArrayList;

import javax.management.openmbean.TabularData;

import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Version;
import org.osgi.jmx.codec.OSGiPackage;
import org.osgi.jmx.framework.PackageStateMBean;
import org.osgi.service.packageadmin.ExportedPackage;
import org.osgi.service.packageadmin.PackageAdmin;

/**
*
*/
public class PackageState implements PackageStateMBean {
  public PackageState(BundleContext bc, PackageAdmin admin) {
    this.bc = bc;
    this.admin = admin;
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * org.osgi.jmx.core.PackageStateMBean#getExportingBundle(java.lang.String,
   * java.lang.String)
   */
  public long getExportingBundle(String packageName, String version)
      throws IOException {
    Version v = Version.parseVersion(version);
    for (ExportedPackage pkg : admin.getExportedPackages(packageName)) {
      if (pkg.getVersion().equals(v)) {
        return pkg.getExportingBundle().getBundleId();
      }
    }
    return -1;
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * org.osgi.jmx.core.PackageStateMBean#getImportingBundles(java.lang.String,
   * java.lang.String)
   */
  public long[] getImportingBundles(String packageName, String version)
      throws IOException {
    Version v = Version.parseVersion(version);
    for (ExportedPackage pkg : admin.getExportedPackages(packageName)) {
      if (pkg.getVersion().equals(v)) {
        Bundle[] bundles = pkg.getImportingBundles();
        long[] ids = new long[bundles.length];
        for (int i = 0; i < bundles.length; i++) {
          ids[i] = bundles[i].getBundleId();
        }
        return ids;
      }
    }
    return new long[0];
  }

  /*
   * (non-Javadoc)
   *
   * @see org.osgi.jmx.core.PackageStateMBean#getPackages()
   */
  public TabularData getPackages() {
    ArrayList<OSGiPackage> packages = new ArrayList<OSGiPackage>();
    for (Bundle bundle : bc.getBundles()) {
      ExportedPackage[] pkgs = admin.getExportedPackages(bundle);
      if (pkgs != null) {
        for (ExportedPackage pkg : pkgs) {
          packages.add(new OSGiPackage(pkg));
        }
      }
    }
    return OSGiPackage.tableFrom(packages);
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * org.osgi.jmx.core.PackageStateMBean#isRemovalPending(java.lang.String,
   * java.lang.String)
   */
  public boolean isRemovalPending(String packageName, String version)
      throws IOException {
    Version v = Version.parseVersion(version);
    for (ExportedPackage pkg : admin.getExportedPackages(packageName)) {
      if (pkg.getVersion().equals(v)) {
        return pkg.isRemovalPending();
      }
    }
    return false;
  }

  protected BundleContext bc;
  protected PackageAdmin admin;
}
TOP

Related Classes of org.osgi.impl.bundle.jmx.framework.PackageState

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.