/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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.aries.jmx.blueprint; 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; /** * This MBean provides the management interface to the OSGi Blueprint Service. * * This MBean also emits events that clients can use to get notified of the * changes in the blueprint containers state in the framework. * * @version $Revision$ */ public interface BlueprintStateMBean { /** * The object name for this MBean. */ String OBJECTNAME = JmxConstants.ARIES_BLUEPRINT+":service=blueprintState,version=1.0"; /////////////////////////////////////////////////////////////// // Define Event's CompositeType /////////////////////////////////////////////////////////////// /** * The key BUNDLE_ID, used in {@link #BUNDLE_ID_ITEM}. */ String BUNDLE_ID = "BundleId"; /** * The item containing the Blueprint bundle id associated with this event. * The key is {@link #BUNDLE_ID}, and the type is {@link SimpleType#LONG}. */ Item BUNDLE_ID_ITEM = new Item( BUNDLE_ID, "the Blueprint bundle id associated with this event.", SimpleType.LONG); /** * The key EXTENDER_BUNDLE_ID, used in {@link #EXTENDER_BUNDLE_ID_ITEM}. */ String EXTENDER_BUNDLE_ID = "ExtenderBundleId"; /** * The item containing the Blueprint extender bundle id that is generating this event. * The key is {@link #EXTENDER_BUNDLE_ID}, and the type is {@link SimpleType#LONG}. */ Item EXTENDER_BUNDLE_ID_ITEM = new Item( EXTENDER_BUNDLE_ID, "the Blueprint extender bundle id that is generating this event.", SimpleType.LONG); /** * The key REPLAY, used in {@link #REPLAY_ITEM}. */ String REPLAY = "Replay"; /** * The item containing the flag that represents whether this event is a replay event. * The key is {@link #REPLAY}, and the type is {@link SimpleType#BOOLEAN}. */ Item REPLAY_ITEM = new Item( REPLAY, "the flag that represents whether this event is a replay event.", SimpleType.BOOLEAN); /** * The key EVENT_TYPE, used in {@link #EVENT_TYPE_ITEM}. */ String EVENT_TYPE = "EventType"; /** * The item containing the type of this event. * The key is {@link #EVENT_TYPE}, and the type is {@link SimpleType#STRING}. */ Item EVENT_TYPE_ITEM = new Item( EVENT_TYPE, "The type of the event: {CREATING=1, CREATED=2, DESTROYING=3, DESTROYED=4, FAILURE=5, GRACE_PERIOD=6, WAITING=7}", SimpleType.INTEGER); /** * The key TIMESTAMP, used in {@link #TIMESTAMP_ITEM}. */ String TIMESTAMP = "Timestamp"; /** * The item containing the time at which this event was created. * The key is {@link #TIMESTAMP}, and the type is {@link SimpleType#LONG}. */ Item TIMESTAMP_ITEM = new Item( TIMESTAMP, "the time at which this event was created.", SimpleType.LONG); /** * The key DEPENDENCIES, used in {@link #DEPENDENCIES_ITEM}. */ String DEPENDENCIES = "Dependencies"; /** * The item containing the filters identifying the missing dependencies that caused the WAITING, GRACE_PERIOD or FAILURE event. * The key is {@link #DEPENDENCIES}, and the type is {@link JmxConstants#STRING_ARRAY_TYPE}. */ Item DEPENDENCIES_ITEM = new Item( DEPENDENCIES, "the filters identifying the missing dependencies that caused the WAITING, GRACE_PERIOD or FAILURE event.", JmxConstants.STRING_ARRAY_TYPE); /** * The key EXCEPTION_MESSAGE, used in {@link #ERROR_MESSAGE_ITEM}. */ String EXCEPTION_MESSAGE = "ExceptionMessage"; /** * The item containing the exception message that cause this FAILURE event. * The key is {@link #EXCEPTION_MESSAGE}, and the type is {@link SimpleType#STRING}. */ Item EXCEPTION_MESSAGE_ITEM = new Item( EXCEPTION_MESSAGE, "the exception message that cause this FAILURE event.", SimpleType.STRING); /** * The CompositeType for a blueprint event. It contains the following items: * <ul> * <li>{@link #BUNDLE_ID}</li> * <li>{@link #EXTENDER_BUNDLE_ID}</li> * <li>{@link #EVENT_TYPE}</li> * <li>{@link #REPLAY}</li> * <li>{@link #TIMESTAMP}</li> * <li>{@link #DEPENDENCIES}</li> * <li>{@link #EXCEPTION_MESSAGE}</li> * </ul> */ CompositeType OSGI_BLUEPRINT_EVENT_TYPE = Item.compositeType( "OSGI_BLUEPRINT_EVENT", "Blueprint event", BUNDLE_ID_ITEM, EXTENDER_BUNDLE_ID_ITEM, EVENT_TYPE_ITEM, REPLAY_ITEM, TIMESTAMP_ITEM, DEPENDENCIES_ITEM, EXCEPTION_MESSAGE_ITEM); /** * The Tabular Type for A list of blueprint events. The row type is * {@link #OSGI_BLUEPRINT_EVENT_TYPE}. */ TabularType OSGI_BLUEPRINT_EVENTS_TYPE = Item.tabularType( "BUNDLES", "A list of blueprint events", OSGI_BLUEPRINT_EVENT_TYPE, new String[] { BUNDLE_ID }); /** * Returns the BlueprintEvent associated with this blueprint container. * The returned Composite Data is typed by {@link #OSGI_BLUEPRINT_EVENT_TYPE}. * * @param bundleId The bundle id of a blueprint bundle * @return the last event associated with the blueprint bundle, see {@link #OSGI_BLUEPRINT_EVENT_TYPE} * @throws IOException if the operation fails * @throws IllegalArgumentException if the bundle is not a blueprint bundle */ public CompositeData getLastEvent(long bundleId) throws IOException; /** * Returns all the last events associated with the blueprint bundles. * * @return the tabular representation of all the last events associated with the blueprint bundles see {@link #OSGI_BLUEPRINT_EVENTS_TYPE} * @throws IOException if the operation fails */ public TabularData getLastEvents() throws IOException; /** * Returns all the blueprint bundles' IDs, which are either * successfully created or not by current extender. * * @return the list of all the blueprint bundles's IDs (either successfully created or not by current extender) * @throws IOException if the operation fails */ public long[] getBlueprintBundleIds() throws IOException; }