org.osgi.jmx.framework.PackageStateMBean Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.apache.aries.jmx.api Show documentation
Show all versions of org.apache.aries.jmx.api Show documentation
This bundle contains the JMX 1.1.0 API
The 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;
}