All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.osgi.jmx.framework.PackageStateMBean Maven / Gradle / Ivy

There is a newer version: 2024.11.18751.20241128T090041Z-241100
Show newest version
/*
 * Copyright (c) OSGi Alliance (2009, 2010). All Rights Reserved.
 * 
 * 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.jmx.framework;

import java.io.IOException;

import javax.management.openmbean.CompositeType;
import javax.management.openmbean.SimpleType;
import javax.management.openmbean.TabularData;
import javax.management.openmbean.TabularType;

import org.osgi.jmx.Item;
import org.osgi.jmx.JmxConstants;

/**
 * This MBean provides information about the package state of the framework.
 * 
 * @version $Revision: 919575 $
 * @ThreadSafe
 */
public interface PackageStateMBean {
	/**
	 * The fully qualified object name of this MBean.
	 */
	String			OBJECTNAME				= JmxConstants.OSGI_CORE
													+ ":type=packageState,version=1.5";

	/**
	 * The key EXPORTING_BUNDLE, used in {@link #EXPORTING_BUNDLES_ITEM}.
	 */
	String			EXPORTING_BUNDLES		= "ExportingBundles";

	/**
	 * The item containing the bundle identifier in {@link #PACKAGE_TYPE}. The
	 * key is {@link #EXPORTING_BUNDLES} and the type is
	 * {@link JmxConstants#LONG_ARRAY_TYPE}.
	 */
	Item			EXPORTING_BUNDLES_ITEM	= new Item(
													EXPORTING_BUNDLES,
													"The bundles the package belongs to",
													JmxConstants.LONG_ARRAY_TYPE);

	/**
	 * The key IMPORTING_BUNDLES, used in {@link #IMPORTING_BUNDLES_ITEM}.
	 */
	String			IMPORTING_BUNDLES		= "ImportingBundles";

	/**
	 * The item containing the bundle identifier in {@link #PACKAGE_TYPE}. The
	 * key is {@link #IMPORTING_BUNDLES} and the type is {@link JmxConstants#LONG_ARRAY_TYPE}.
	 */
	Item			IMPORTING_BUNDLES_ITEM	= new Item(
													IMPORTING_BUNDLES,
													"The importing bundles of the package",
													JmxConstants.LONG_ARRAY_TYPE);


	/**
	 * The key NAME, used in {@link #NAME_ITEM}.
	 */
	String			NAME					= "Name";

	/**
	 * The item containing the name of the package in {@link #PACKAGE_TYPE}.
	 * The key is {@link #NAME} and the type is {@link SimpleType#LONG}.
	 */
	Item			NAME_ITEM				= new Item(NAME,
													"The package name",
													SimpleType.STRING);

	/**
	 * The name of the item containing the pending removal status of the package
	 * in the CompositeData. Used
	 */
	String			REMOVAL_PENDING			= "RemovalPending";
	/**
	 * The item representing the removal pending status of a package. The key is
	 * {@link #REMOVAL_PENDING} and the type is {@link SimpleType#BOOLEAN}.
	 */
	Item			REMOVAL_PENDING_ITEM	= new Item(
													REMOVAL_PENDING,
													"Whether the package is pending removal",
													SimpleType.BOOLEAN);

	/**
	 * The name of the item containing the package version in the CompositeData.
	 * Used in {@link #VERSION_ITEM}.
	 */
	String			VERSION					= "Version";

	/**
	 * The item containing the version of the package in {@link #PACKAGE_TYPE}.
	 * The key is {@link #VERSION} and the type is {@link SimpleType#STRING}.
	 */
	Item			VERSION_ITEM			= new Item(
													VERSION,
													"The identifier of the bundle the service belongs to",
													SimpleType.STRING);

	/**
	 * The Composite Type for a CompositeData representing a package. This type
	 * consists of:
	 * 
    *
  • {@link #EXPORTING_BUNDLES_ITEM}
  • *
  • {@link #IMPORTING_BUNDLES_ITEM}
  • *
  • {@link #NAME_ITEM}
  • *
  • {@link #REMOVAL_PENDING_ITEM}
  • *
  • {@link #VERSION_ITEM}
  • *
* The key is defined as {@link #NAME} and {@link #EXPORTING_BUNDLES} */ CompositeType PACKAGE_TYPE = Item .compositeType( "PACKAGE", "This type encapsulates an OSGi package", EXPORTING_BUNDLES_ITEM, IMPORTING_BUNDLES_ITEM, NAME_ITEM, REMOVAL_PENDING_ITEM, VERSION_ITEM); /** * The Tabular Type used in {@link #listPackages()}. They key is * {@link #NAME}, {@link #VERSION}, and {@link #EXPORTING_BUNDLES}. */ TabularType PACKAGES_TYPE = Item.tabularType("PACKAGES", "A table of packages", PACKAGE_TYPE, NAME, VERSION, EXPORTING_BUNDLES); /** * Answer the identifier of the bundle exporting the package * * @param packageName - the package name * @param version - the version of the package * @return the bundle identifiers exporting such a package * @throws IOException if the operation fails * @throws IllegalArgumentException if the package indicated does not exist */ long[] getExportingBundles(String packageName, String version) throws IOException; /** * Answer the list of identifiers of the bundles importing the package * * @param packageName The package name * @param version The version of the package * @param exportingBundle The exporting bundle for the given package * @return the list of bundle identifiers * @throws IOException if the operation fails * @throws IllegalArgumentException if the package indicated does not exist * */ long[] getImportingBundles(String packageName, String version, long exportingBundle) throws IOException; /** * Answer the package state of the system in tabular form * * The Tabular Data is typed by {@link #PACKAGES_TYPE}, which has * {@link #PACKAGE_TYPE} as its Composite Type. * * @return the tabular representation of the package state * @throws IOException When fails */ TabularData listPackages() throws IOException; /** * Answer if this package is exported by a bundle which has been updated or * uninstalled * * @param packageName The package name * @param version The version of the package * @param exportingBundle The bundle exporting the package * @return true if this package is being exported by a bundle that has been * updated or uninstalled. * @throws IOException if the operation fails * @throws IllegalArgumentException if the package indicated does not exist */ boolean isRemovalPending(String packageName, String version, long exportingBundle) throws IOException; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy