| /******************************************************************************* |
| * Copyright (c) 2010 SAP. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * and Apache License v2.0 which accompanies this distribution. |
| * The Eclipse Public License is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * and the Apache License v2.0 is available at |
| * http://www.opensource.org/licenses/apache2.0.php. |
| * You may elect to redistribute this code under either of these licenses. |
| * |
| * Contributors: |
| * SAP employees |
| ******************************************************************************/ |
| package org.eclipse.gemini.mgmt.framework; |
| |
| import java.io.IOException; |
| |
| import javax.management.openmbean.CompositeData; |
| 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.framework.BundleStateMBean; |
| |
| public interface CustomBundleStateMBean extends BundleStateMBean{ |
| |
| /** |
| * Mask for listBundles method, that requires bundle location attribute to be |
| * included in the returned data. |
| * |
| */ |
| public final static int LOCATION = 1; |
| |
| /** |
| * Mask for listBundles method, that requires bundle id attribute to be |
| * included in the returned data. |
| */ |
| public final static int IDENTIFIER = 2; |
| |
| /** |
| * Mask for listBundles method, that requires bundle symbolic name attribute to be |
| * included in the returned data. |
| */ |
| public final static int SYMBOLIC_NAME = 2 << 1; |
| |
| /** |
| * Mask for listBundles method, that requires bundle version attribute to be |
| * included in the returned data. |
| */ |
| public final static int VERSION = 2 << 2; |
| |
| /** |
| * Mask for listBundles method, that requires bundle start level attribute to be |
| * included in the returned data. |
| */ |
| public final static int START_LEVEL = 2 << 3; |
| |
| /** |
| * Mask for listBundles method, that requires bundle state attribute to be |
| * included in the returned data. |
| */ |
| public final static int STATE = 2 << 4; |
| |
| /** |
| * Mask for listBundles method, that requires bundle last modified attribute to be |
| * included in the returned data. |
| */ |
| public final static int LAST_MODIFIED = 2 << 5; |
| |
| /** |
| * Mask for listBundles method, that requires bundle persistently started attribute to be |
| * included in the returned data. |
| */ |
| public final static int PERSISTENTLY_STARTED = 2 << 6; |
| |
| /** |
| * Mask for listBundles method, that requires bundle removal pending attribute to be |
| * included in the returned data. |
| */ |
| public final static int REMOVAL_PENDING = 2 << 7; |
| |
| /** |
| * Mask for listBundles method, that requires bundle required attribute to be |
| * included in the returned data. |
| */ |
| public final static int REQUIRED = 2 << 8; |
| |
| /** |
| * Mask for listBundles method, that requires bundle fragment attribute to be |
| * included in the returned data. |
| */ |
| public final static int FRAGMENT = 2 << 9; |
| |
| /** |
| * Mask for listBundles method, that requires bundle registered services attribute to be |
| * included in the returned data. |
| */ |
| public final static int REGISTERED_SERVICES = 2 << 10; |
| |
| /** |
| * Mask for listBundles method, that requires bundle services in use attribute to be |
| * included in the returned data. |
| */ |
| public final static int SERVICES_IN_USE = 2 << 11; |
| |
| /** |
| * Mask for listBundles method, that requires bundle headers attribute to be |
| * included in the returned data. |
| */ |
| public final static int HEADERS = 2 << 12; |
| |
| /** |
| * Mask for listBundles method, that requires bundle exported packages attribute to be |
| * included in the returned data. |
| */ |
| public final static int EXPORTED_PACKAGES = 2 << 13; |
| |
| /** |
| * Mask for listBundles method, that requires bundle imported packages attribute to be |
| * included in the returned data. |
| */ |
| public final static int IMPORTED_PACKAGES = 2 << 14; |
| |
| /** |
| * Mask for listBundles method, that requires bundle fragments attribute to be |
| * included in the returned data. |
| */ |
| public final static int FRAGMENTS = 2 << 15; |
| |
| /** |
| * Mask for listBundles method, that requires bundle hosts attribute to be |
| * included in the returned data. |
| */ |
| public final static int HOSTS = 2 << 16; |
| |
| /** |
| * Mask for listBundles method, that requires bundle "requiring bundles" attribute to be |
| * included in the returned data. |
| */ |
| public final static int REQUIRING_BUNDLES = 2 << 17; |
| |
| /** |
| * Mask for listBundles method, that requires bundle "required bundles" attribute to be |
| * included in the returned data. |
| */ |
| public final static int REQUIRED_BUNDLES = 2 << 18; |
| |
| /** |
| * Mask for listBundles method, that requires bundle "activation policy used" attribute to be |
| * included in the returned data. |
| */ |
| public final static int ACTIVATION_POLICY = 2 << 19; |
| |
| /** |
| * Mask for listBundles method, that returns all available data. Equivalent to listBundles() |
| */ |
| public final static int DEFAULT = LOCATION + IDENTIFIER |
| + SYMBOLIC_NAME + VERSION + START_LEVEL + STATE + LAST_MODIFIED |
| + PERSISTENTLY_STARTED + ACTIVATION_POLICY + REMOVAL_PENDING + REQUIRED + FRAGMENT + REGISTERED_SERVICES |
| + SERVICES_IN_USE + HEADERS + EXPORTED_PACKAGES + IMPORTED_PACKAGES + FRAGMENTS |
| + HOSTS + REQUIRING_BUNDLES + REQUIRED_BUNDLES; |
| |
| /** |
| * Answer the bundle state of the system in tabular form depending on the mask. |
| * |
| * Each row of the returned table represents a single bundle. The Tabular |
| * Data consists of Composite Data that is type by {@link #BUNDLES_TYPE}. |
| * |
| * @param mask - representing the information that will be contained in the result |
| * @return the tabular representation of the bundle state |
| * @throws IOException |
| */ |
| TabularData listBundles(int mask) throws IOException; |
| |
| //New methods from the JMX Update RFC 169 |
| |
| /** |
| * The key PERSISTENTLY_STARTED, used in {@link #PERSISTENTLY_STARTED_ITEM}. |
| */ |
| String ACTIVATION_POLICY_USED = "ActivationPolicyUsed"; |
| |
| /** |
| * The item containing the indication of persistently started in |
| * {@link #BUNDLE_TYPE}. The key is {@link #PERSISTENTLY_STARTED} and the |
| * the type is {@link SimpleType#BOOLEAN}. |
| */ |
| Item ACTIVATION_POLICY_ITEM = new Item(ACTIVATION_POLICY_USED, "Whether the bundle is using an activation policy", SimpleType.BOOLEAN); |
| |
| CompositeType CUSTOM_BUNDLE_TYPE = Item.compositeType("BUNDLE", |
| "This type encapsulates OSGi bundles", EXPORTED_PACKAGES_ITEM, |
| FRAGMENT_ITEM, FRAGMENTS_ITEM, HEADERS_ITEM, HOSTS_ITEM, |
| IDENTIFIER_ITEM, IMPORTED_PACKAGES_ITEM, LAST_MODIFIED_ITEM, |
| LOCATION_ITEM, PERSISTENTLY_STARTED_ITEM, ACTIVATION_POLICY_ITEM, |
| REGISTERED_SERVICES_ITEM, REMOVAL_PENDING_ITEM, REQUIRED_ITEM, |
| REQUIRED_BUNDLES_ITEM, REQUIRING_BUNDLES_ITEM, START_LEVEL_ITEM, |
| STATE_ITEM, SERVICES_IN_USE_ITEM, SYMBOLIC_NAME_ITEM, VERSION_ITEM); |
| |
| /** |
| * The Tabular Type for a list of bundles. The row type is |
| * {@link #BUNDLE_TYPE}. |
| */ |
| TabularType CUSTOM_BUNDLES_TYPE = Item.tabularType("BUNDLES", "A list of bundles", |
| BUNDLE_TYPE, new String[] { BundleStateMBean.IDENTIFIER }); |
| |
| /** |
| * |
| * @param bundleId |
| * @return |
| * @throws IOException |
| */ |
| CompositeData getBundle(long bundleId) throws IOException; |
| |
| /** |
| * |
| * @param bundleTypeItems |
| * @return |
| * @throws IOException |
| */ |
| TabularData listBundles(String... bundleTypeItems) throws IOException; |
| |
| /** |
| * |
| * @return |
| */ |
| boolean isActivationPolicyUsed(long bundleId) throws IOException; |
| |
| /** |
| * |
| * @param bundleId |
| * @param key |
| * @return |
| * @throws IOException |
| */ |
| String getHeader(long bundleId, String key) throws IOException; |
| |
| /** |
| * |
| * @param bundleId |
| * @param locale |
| * @return |
| * @throws IOException |
| */ |
| TabularData getHeaders(long bundleId, String locale) throws IOException; |
| |
| /** |
| * |
| * @param bundleId |
| * @param key |
| * @param locale |
| * @return |
| * @throws IOException |
| */ |
| CompositeData getHeaders(long bundleId, String key, String locale) throws IOException; |
| } |