blob: 28fc89481f607cc910da76428bcf8699b28b3d4e [file] [log] [blame]
/*
* 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.ArrayType;
import javax.management.openmbean.CompositeData;
import javax.management.openmbean.CompositeType;
import javax.management.openmbean.SimpleType;
public interface BlueprintMetadataMBean {
/**
* The object name for this MBean.
*/
String OBJECTNAME = JmxConstants.ARIES_BLUEPRINT+":service=blueprintMetadata,version=1.0";
///////////////////////////////////////////////////////////////
// Define <value>'s CompositeType
///////////////////////////////////////////////////////////////
/**
* The key STRING_VALUE, used in {@link #STRING_VALUE_ITEM}.
*/
String STRING_VALUE = "StringValue";
/**
* The item containing the un-converted string representation of the value.
* The key is {@link #STRING_VALUE}, and the type is {@link SimpleType#STRING}.
*/
Item STRING_VALUE_ITEM = new Item(
STRING_VALUE,
"The un-converted string representation of a value",
SimpleType.STRING);
/**
* The key TYPE, used in {@link #TYPE_ITEM}.
*/
String TYPE = "Type";
/**
* The item containing the name of the type to which the value should be converted.
* The key is {@link #TYPE}, and the type is {@link SimpleType#STRING}.
*/
Item TYPE_ITEM = new Item(
TYPE,
"The type of a value",
SimpleType.STRING);
/**
* The name of CompositeType for ValueMetadata objects, used in {@link #VALUE_METADATA_TYPE}.
*/
String VALUE_METADATA = "ValueMetadata";
/**
* The CompositeType encapsulates ValueMetadata objects. It contains the following items:
* <ul>
* <li>{@link #STRING_VALUE}</li>
* <li>{@link #TYPE}</li>
* </ul>
*/
CompositeType VALUE_METADATA_TYPE = Item.compositeType(
VALUE_METADATA,
"This type encapsulates ValueMetadata objects",
STRING_VALUE_ITEM,
TYPE_ITEM);
///////////////////////////////////////////////////////////////
// Define <null>'s CompositeType
///////////////////////////////////////////////////////////////
/**
* The key PLACEHOLDER, used in {@link #PLACEHOLDER_ITEM}.
*/
String PLACEHOLDER = "Placeholder";
/**
* The item is a placeholder in the null metadata type.
* The key is {@link #PLACEHOLDER}, and the type is {@link SimpleType#STRING}.
*/
Item PLACEHOLDER_ITEM = new Item(
PLACEHOLDER,
"This is a placeholder",
SimpleType.VOID);
/**
* The name of CompositeType for NullMetadata objects, used in {@link #NULL_METADATA_TYPE}.
*/
String NULL_METADATA = "NullMetadata";
/**
* The CompositeType for NullMetadata objects. A composite type requires at least one item, so we add a placeholder item.
*/
CompositeType NULL_METADATA_TYPE = Item.compositeType(
NULL_METADATA,
"This type encapsulates NullMetadata objects",
PLACEHOLDER_ITEM);
///////////////////////////////////////////////////////////////
// Define <ref>'s CompositeType
///////////////////////////////////////////////////////////////
/**
* The key COMPONENT_ID, used in {@link #COMPONENT_ID_ITEM}.
*/
String COMPONENT_ID = "ComponentId";
/**
* The item containing the component id to which the "ref" associates.
* The key is {@link #COMPONENT_ID}, and the type is {@link SimpleType#STRING}.
*/
Item COMPONENT_ID_ITEM = new Item(
COMPONENT_ID,
"The component id",
SimpleType.STRING);
/**
* The name of CompositeType for RefMetadata objects, used in {@link #REF_METADATA_TYPE}.
*/
String REF_METADATA = "RefMetadata";
/**
* The CompositeType for a RefMetadata object. It contains the following items:
* <ul>
* <li>{@link #COMPONENT_ID}</li>
* </ul>
*/
CompositeType REF_METADATA_TYPE = Item.compositeType(
REF_METADATA,
"This type encapsulates RefMetadata objects",
COMPONENT_ID_ITEM);
///////////////////////////////////////////////////////////////
// Define <idref>'s CompositeType
// COMPONENT_ID_ITEM defined in <ref>'s definition
///////////////////////////////////////////////////////////////
/**
* The name of CompositeType for IdRefMetadata objects, used in {@link #ID_REF_METADATA_TYPE}.
*/
String ID_REF_METADATA = "IdRefMetadata";
/**
* The CompositeType for an IdRefMetadata object. It contains the following items:
* <ul>
* <li>{@link #COMPONENT_ID}</li>
* </ul>
*/
CompositeType ID_REF_METADATA_TYPE = Item.compositeType(
ID_REF_METADATA,
"This type encapsulates IdRefMetadata objects",
COMPONENT_ID_ITEM);
///////////////////////////////////////////////////////////////
// Define <entry>'s CompositeType,
// used by MapMetadata, PropsMetadata, and Service properties
///////////////////////////////////////////////////////////////
/**
* The key KEY, used in {@link #KEY_ITEM}.
*/
String KEY = "Key";
/**
* The item containing the key of an entry.
* The key is {@link #KEY}, and the type is {@link SimpleType#STRING}.
*/
Item KEY_ITEM = new Item(
KEY,
"The key of an entry",
JmxConstants.BYTE_ARRAY_TYPE);
/**
* The key VALUE, used in {@link #VALUE_ITEM}.
*/
String VALUE = "Value";
/**
* The item containing a value and this will be used by
* BeanArgument, BeanProperty, MapEntry and CollectionMetadata.
* The key is {@link #VALUE}, and the type is {@link JmxConstants#BYTE_ARRAY_TYPE}.
*/
Item VALUE_ITEM = new Item(
VALUE,
"A value",
JmxConstants.BYTE_ARRAY_TYPE);
/**
* The name of CompositeType for MapEntry objects, used in {@link #MAP_ENTRY_TYPE}.
*/
String MAP_ENTRY = "MapEntry";
/**
* The CompositeType for a MapEntry object. It contains the following items:
* <ul>
* <li>{@link #KEY}</li>
* <li>{@link #VALUE}</li>
* </ul>
*/
CompositeType MAP_ENTRY_TYPE = Item.compositeType(
MAP_ENTRY,
"This type encapsulates MapEntry objects",
KEY_ITEM,
VALUE_ITEM);
///////////////////////////////////////////////////////////////
// Define <map>'s CompositeType
///////////////////////////////////////////////////////////////
/**
* The key ENTRIES, used in {@link #ENTRIES_ITEM}.
*/
String ENTRIES = "Entries";
/**
* The item containing an array of entries
* The key is {@link #ENTRIES}, and the type is {@link ArrayType}.
*/
Item ENTRIES_ITEM = new Item(
ENTRIES,
"An array of entries",
Item.arrayType(1, MAP_ENTRY_TYPE));
/**
* The key KEY_TYPE, used in {@link #KEY_TYPE_ITEM}.
*/
String KEY_TYPE = "KeyType";
/**
* The item containing the key type of the entries.
* The key is {@link #KEY_TYPE}, and the type is {@link SimpleType#STRING}.
*/
Item KEY_TYPE_ITEM = new Item(
KEY_TYPE,
"The key type of the entries",
SimpleType.STRING);
/**
* The key VALUE_TYPE, used in {@link #VALUE_TYPE_ITEM}.
*/
String VALUE_TYPE = "ValueType";
/**
* The item containing the value type that the value should be
* The key is {@link #VALUE_TYPE}, and the type is {@link SimpleType#STRING}.
*/
Item VALUE_TYPE_ITEM = new Item(
VALUE_TYPE,
"The value type",
SimpleType.STRING);
/**
* The name of CompositeType for MapMetadata objects, used in {@link #MAP_METADATA_TYPE}.
*/
String MAP_METADATA = "MapMetadata";
/**
* The CompositeType for a MapMetadata object. It contains the following items:
* <ul>
* <li>{@link #ENTRIES}</li>
* <li>{@link #KEY_TYPE}</li>
* <li>{@link #VALUE_TYPE}</li>
* </ul>
*/
CompositeType MAP_METADATA_TYPE = Item.compositeType(
MAP_METADATA,
"This type encapsulates MapMetadata objects",
ENTRIES_ITEM,
KEY_TYPE_ITEM,
VALUE_TYPE_ITEM);
///////////////////////////////////////////////////////////////
// Define <props>'s CompositeType
// ENTRIES_ITEM defined in <map>'s definition
///////////////////////////////////////////////////////////////
/**
* The name of CompositeType for PropsMetadata objects, used in {@link #PROPS_METADATA_TYPE}.
*/
String PROPS_METADATA = "PropsMetadata";
/**
* The CompositeType for a PropsMetadata object. It contains the following items:
* <ul>
* <li>{@link #ENTRIES}</li>
* </ul>
*/
CompositeType PROPS_METADATA_TYPE = Item.compositeType(
PROPS_METADATA,
"This type encapsulates PropsMetadata objects",
ENTRIES_ITEM);
///////////////////////////////////////////////////////////////
// Define <collection>'s CompositeType
// VALUE_TYPE_ITEM defined in <map>'s definition
///////////////////////////////////////////////////////////////
/**
* The key COLLECTION_CLASS, used in {@link #KEY_TYPE_ITEM}.
*/
String COLLECTION_CLASS = "CollectionClass";
/**
* The item containing the type of this collection
* The key is {@link #COLLECTION_CLASS}, and the type is {@link SimpleType#STRING}.
*/
Item COLLECTION_CLASS_ITEM = new Item(
COLLECTION_CLASS,
"The type of this collection",
SimpleType.STRING);
/**
* The key VALUES, used in {@link #VALUES_ITEM}.
*/
String VALUES = "Values";
/**
* The item containing all the values
* The key is {@link #VALUES}, and the type is {@link ArrayType}.
*/
Item VALUES_ITEM = new Item(
VALUES,
"All the values",
Item.arrayType(2, SimpleType.BYTE));
/**
* The name of CompositeType for CollectionMetadata objects, used in {@link #COLLECTION_METADATA_TYPE}.
*/
String COLLECTION_METADATA = "CollectionMetadata";
/**
* The CompositeType for a CollectionMetadata object. It contains the following items:
* <ul>
* <li>{@link #COLLECTION_CLASS}</li>
* <li>{@link #VALUES}</li>
* <li>{@link #VALUE_TYPE}</li>
* </ul>
*/
CompositeType COLLECTION_METADATA_TYPE= Item.compositeType(
COLLECTION_METADATA,
"This type encapsulates CollectionMetadata objects",
COLLECTION_CLASS_ITEM,
VALUES_ITEM,
VALUE_TYPE_ITEM);
///////////////////////////////////////////////////////////////
// Define <argument>'s CompositeType
// VALUE_TYPE_ITEM defined in <map>'s definition
///////////////////////////////////////////////////////////////
/**
* The key INDEX, used in {@link #INDEX_ITEM}.
*/
String INDEX = "Index";
/**
* The item containing the zero-based index into the parameter list of
* the factory method or constructor to be invoked for this argument.
* The key is {@link #INDEX}, and the type is {@link SimpleType#INTEGER}.
*/
Item INDEX_ITEM = new Item(
INDEX,
"The zero-based index",
SimpleType.INTEGER);
/**
* The name of CompositeType for BeanArgument objects, used in {@link #BEAN_ARGUMENT_TYPE}.
*/
String BEAN_ARGUMENT = "BeanArgument";
/**
* The CompositeType for a Argument object. It contains the following items:
* <ul>
* <li>{@link #INDEX}</li>
* <li>{@link #VALUE_TYPE}</li>
* <li>{@link #VALUE}</li>
* </ul>
*/
CompositeType BEAN_ARGUMENT_TYPE = Item.compositeType(
BEAN_ARGUMENT,
"This type encapsulates BeanArgument objects",
INDEX_ITEM,
VALUE_TYPE_ITEM,
VALUE_ITEM);
///////////////////////////////////////////////////////////////
// Define <property>'s CompositeType
///////////////////////////////////////////////////////////////
/**
* The key NAME, used in {@link #NAME_ITEM}.
*/
String NAME = "Name";
/**
* The item containing the name of the property to be injected.
* The key is {@link #NAME}, and the type is {@link SimpleType#STRING}.
*/
Item NAME_ITEM = new Item(
NAME,
"The name of the property",
SimpleType.STRING);
/**
* The name of CompositeType for BeanProperty objects, used in {@link #BEAN_PROPERTY_TYPE}.
*/
String BEAN_PROPERTY = "BeanProperty";
/**
* The CompositeType for property type. It contains the following items:
* <ul>
* <li>{@link #NAME}</li>
* <li>{@link #VALUE}</li>
* </ul>
*/
CompositeType BEAN_PROPERTY_TYPE = Item.compositeType(
BEAN_PROPERTY,
"This type encapsulates BeanProperty objects",
NAME_ITEM,
VALUE_ITEM);
///////////////////////////////////////////////////////////////
// Define Component's CompositeType
// <bean>, <service> & Service Reference's CompositeType will
// extend this.
///////////////////////////////////////////////////////////////
/**
* The key ID, used in {@link #ID_ITEM}.
*/
String ID = "Id";
/**
* The item containing the component id of a component.
* The key is {@link #ID}, and the type is {@link SimpleType#STRING}.
*/
Item ID_ITEM = new Item(
ID,
"The id of the component",
SimpleType.STRING);
/**
* The key ACTIVATION, used in {@link #ACTIVATION_ITEM}.
*/
String ACTIVATION = "Activation";
/**
* The item containing the activation strategy for a component.
* The key is {@link #ACTIVATION}, and the type is {@link SimpleType#INTEGER}.
*/
Item ACTIVATION_ITEM = new Item(
ACTIVATION,
"The activation strategy for a component",
SimpleType.INTEGER);
/**
* The key DEPENDS_ON, used in {@link #DEPENDS_ON_ITEM}.
*/
String DEPENDS_ON = "DependsOn";
/**
* The item containing the ids of any components listed in a <code>depends-on</code> attribute for the component.
* The key is {@link #DEPENDS_ON}, and the type is {@link JmxConstants#STRING_ARRAY_TYPE}.
*/
Item DEPENDS_ON_ITEM = new Item(
DEPENDS_ON,
"The ids of any components listed in a depends-on attribute",
JmxConstants.STRING_ARRAY_TYPE);
/**
* The name of CompositeType for ComponentMetadata objects, used in {@link #COMPONENT_METADATA_TYPE}.
*/
String COMPONENT_METADATA = "ComponentMetadata";
/**
* The CompositeType for a ComponentMetadata object, it contains
* the following items:
* <ul>
* <li>{@link #ID}</li>
* <li>{@link #ACTIVATION}</li>
* <li>{@link #DEPENDS_ON}</li>
* </ul>
*/
CompositeType COMPONENT_METADATA_TYPE = Item.compositeType(
COMPONENT_METADATA,
"This type encapsulates ComponentMetadata objects",
ID_ITEM,
ACTIVATION_ITEM,
DEPENDS_ON_ITEM);
///////////////////////////////////////////////////////////////
// Define <bean>'s CompositeType
///////////////////////////////////////////////////////////////
/**
* The key CLASS_NAME, used in {@link #CLASS_NAME_ITEM}.
*/
String CLASS_NAME = "ClassName";
/**
* The item containing the name of the class specified for the bean.
* The key is {@link #CLASS_NAME}, and the type is {@link SimpleType#STRING}.
*/
Item CLASS_NAME_ITEM = new Item(
CLASS_NAME,
"The name of the class specified for the bean",
SimpleType.STRING
);
/**
* The key INIT_METHOD, used in {@link #INIT_METHOD_ITEM}.
*/
String INIT_METHOD = "InitMethod";
/**
* The item containing the name of the init method specified for the bean.
* The key is {@link #INIT_METHOD}, and the type is {@link SimpleType#STRING}.
*/
Item INIT_METHOD_ITEM = new Item(
INIT_METHOD,
"The name of the init method specified for the bean",
SimpleType.STRING);
/**
* The key DESTROY_METHOD, used in {@link #DESTROY_METHOD_ITEM}.
*/
String DESTROY_METHOD = "DestroyMethod";
/**
* The item containing the name of the destroy method specified for the bean.
* The key is {@link #DESTROY_METHOD}, and the type is {@link SimpleType#STRING}.
*/
Item DESTROY_METHOD_ITEM = new Item(
DESTROY_METHOD,
"The name of the destroy method specified for the bean",
SimpleType.STRING);
/**
* The key FACTORY_METHOD, used in {@link #FACTORY_METHOD_ITEM}.
*/
String FACTORY_METHOD = "FactoryMethod";
/**
* The item containing the name of the factory method specified for the bean.
* The key is {@link #FACTORY_METHOD}, and the type is {@link SimpleType#STRING}.
*/
Item FACTORY_METHOD_ITEM = new Item(
FACTORY_METHOD,
"The name of the factory method specified for the bean",
SimpleType.STRING);
/**
* The key FACTORY_COMPONENT, used in {@link #FACTORY_COMPONENT_ITEM}.
*/
String FACTORY_COMPONENT = "FactoryComponent";
/**
* The item containing the id of the factory component on which to invoke the factory method for the bean.
* The key is {@link #FACTORY_COMPONENT}, and the type is {@link JmxConstants#BYTE_ARRAY_TYPE}.
*/
Item FACTORY_COMPONENT_ITEM = new Item(
FACTORY_COMPONENT,
"The factory component on which to invoke the factory method for the bean",
JmxConstants.BYTE_ARRAY_TYPE);
/**
* The key SCOPE, used in {@link #SCOPE_ITEM}.
*/
String SCOPE = "Scope";
/**
* The item containing the scope for the bean.
* The key is {@link #SCOPE}, and the type is {@link SimpleType#STRING}.
*/
Item SCOPE_ITEM = new Item(
SCOPE,
"The scope for the bean",
SimpleType.STRING);
/**
* The key ARGUMENT, used in {@link #ARGUMENTS_ITEM}.
*/
String ARGUMENTS = "Arguments";
/**
* The item containing the bean argument for the bean's compositeType.
* The key is {@link #ARGUMENTS}, and the type is {@link #BEAN_ARGUMENT_TYPE}.
*/
Item ARGUMENTS_ITEM = new Item(
ARGUMENTS,
"The bean argument",
Item.arrayType(1, BEAN_ARGUMENT_TYPE));
/**
* The key PROPERTY, used in {@link #PROPERTIES_ITEM}.
*/
String PROPERTIES = "Properties";
/**
* The item containing the bean property for the bean's compositeType.
* The key is {@link #PROPERTIES}, and the type is {@link #BEAN_PROPERTY_TYPE}.
*/
Item PROPERTIES_ITEM = new Item(
PROPERTIES,
"The bean property",
Item.arrayType(1, BEAN_PROPERTY_TYPE));
/**
* The name of CompositeType for BeanMetadata objects, used in {@link #BEAN_METADATA_TYPE}.
*/
String BEAN_METADATA = "BeanMetadata";
/**
* The CompositeType for a BeanMetadata object, it extends {@link #COMPONENT_METADATA_TYPE}
* and adds the following items:
* <ul>
* <li>{@link #CLASS_NAME}</li>
* <li>{@link #INIT_METHOD}</li>
* <li>{@link #DESTROY_METHOD}</li>
* <li>{@link #FACTORY_METHOD}</li>
* <li>{@link #FACTORY_COMPONENT}</li>
* <li>{@link #SCOPE}</li>
* <li>{@link #ARGUMENTS}</li>
* <li>{@link #PROPERTIES}</li>
* </ul>
*/
CompositeType BEAN_METADATA_TYPE = Item.extend(
COMPONENT_METADATA_TYPE,
BEAN_METADATA,
"This type encapsulates BeanMetadata objects",
CLASS_NAME_ITEM,
INIT_METHOD_ITEM,
DESTROY_METHOD_ITEM,
FACTORY_METHOD_ITEM,
FACTORY_COMPONENT_ITEM,
SCOPE_ITEM,
ARGUMENTS_ITEM,
PROPERTIES_ITEM);
///////////////////////////////////////////////////////////////
// Define <registration-listener>'s CompositeType
///////////////////////////////////////////////////////////////
/**
* The key LISTENER_COMPONENT, used in {@link #LISTENER_COMPONENT_ITEM}.
*/
String LISTENER_COMPONENT = "ListenerComponent";
/**
* The item containing the listener component.
* The key is {@link #LISTENER_COMPONENT}, and the type is {@link JmxConstants#BYTE_ARRAY_TYPE}.
*/
Item LISTENER_COMPONENT_ITEM = new Item(
LISTENER_COMPONENT,
"The listener component",
JmxConstants.BYTE_ARRAY_TYPE);
/**
* The key REGISTRATION_METHOD, used in {@link #REGISTRATION_METHOD_ITEM}.
*/
String REGISTRATION_METHOD = "RegistrationMethod";
/**
* The item containing the name of the registration method.
* The key is {@link #REGISTRATION_METHOD}, and the type is {@link SimpleType#STRING}.
*/
Item REGISTRATION_METHOD_ITEM = new Item(
REGISTRATION_METHOD,
"The name of the registration method",
SimpleType.STRING);
/**
* The key UNREGISTRATION_METHOD, used in {@link #UNREGISTRATION_METHOD_ITEM}.
*/
String UNREGISTRATION_METHOD = "UnregistrationMethod";
/**
* The item containing the name of the unregistration method.
* The key is {@link #UNREGISTRATION_METHOD}, and the type is {@link SimpleType#STRING}.
*/
Item UNREGISTRATION_METHOD_ITEM = new Item(
UNREGISTRATION_METHOD,
"The name of the unregistration method",
SimpleType.STRING);
/**
* The name of CompositeType for RegistrationListener objects, used in {@link #REGISTRATION_LISTENER_TYPE}.
*/
String REGISTRATION_LISTENER = "RegistrationListener";
/**
* The CompositeType for a registration listener, and it contains the following items:
* <ul>
* <li>{@link #LISTENER_COMPONENT}</li>
* <li>{@link #REGISTRATION_METHOD}</li>
* <li>{@link #UNREGISTRATION_METHOD}</li>
* </ul>
*/
CompositeType REGISTRATION_LISTENER_TYPE = Item.compositeType(
REGISTRATION_LISTENER,
"This type encapsulates RegistrationListener objects",
LISTENER_COMPONENT_ITEM,
REGISTRATION_METHOD_ITEM,
UNREGISTRATION_METHOD_ITEM);
///////////////////////////////////////////////////////////////
// Define <service>'s CompositeType
///////////////////////////////////////////////////////////////
/**
* The key INTERFACES, used in {@link #INTERFACES_ITEM}.
*/
String INTERFACES = "Interfaces";
/**
* The item containing the type names of the interfaces that the service should be advertised as supporting.
* The key is {@link #INTERFACES}, and the type is {@link JmxConstants#STRING_ARRAY_TYPE}.
*/
Item INTERFACES_ITEM = new Item(
INTERFACES,
"The type names of the interfaces",
JmxConstants.STRING_ARRAY_TYPE);
/**
* The key AUTO_EXPORT, used in {@link #AUTO_EXPORT_ITEM}.
*/
String AUTO_EXPORT = "AutoExport";
/**
* The item containing the auto-export mode for the service.
* The key is {@link #AUTO_EXPORT}, and the type is {@link SimpleType#INTEGER}.
*/
//TODO describe integer
Item AUTO_EXPORT_ITEM = new Item(
AUTO_EXPORT,
"The auto-export mode for the service",
SimpleType.INTEGER);
/**
* The key RANKING, used in {@link #RANKING_ITEM}.
*/
String RANKING = "Ranking";
/**
* The item containing the ranking value to use when advertising the service.
* The key is {@link #RANKING}, and the type is {@link SimpleType#INTEGER}.
*/
Item RANKING_ITEM = new Item(
RANKING,
"The ranking value when advertising the service",
SimpleType.INTEGER);
/**
* The key SERVICE_COMPONENT, used in {@link #SERVICE_COMPONENT_ITEM}.
*/
String SERVICE_COMPONENT = "ServiceComponent";
/**
* The item containing the id of the component to be exported as a service.
* The key is {@link #SERVICE_COMPONENT}, and the type is {@link JmxConstants#BYTE_ARRAY_TYPE}.
*/
Item SERVICE_COMPONENT_ITEM = new Item(
SERVICE_COMPONENT,
"The component to be exported as a service",
JmxConstants.BYTE_ARRAY_TYPE);
/**
* The key SERVICE_PROPERTIES, used in {@link #SERVICE_PROPERTIES_ITEM}.
*/
String SERVICE_PROPERTIES = "ServiceProperties";
/**
* The item containing the user declared properties to be advertised with the service.
* The key is {@link #SERVICE_COMPONENT}, and the type is {@link SimpleType#STRING}.
*/
Item SERVICE_PROPERTIES_ITEM = new Item(
SERVICE_PROPERTIES,
"The user declared properties to be advertised with the service",
Item.arrayType(1, MAP_ENTRY_TYPE));
/**
* The key REGISTRATION_LISTENERS, used in {@link #REGISTRATION_LISTENERS_ITEM}.
*/
String REGISTRATION_LISTENERS = "RegistrationListeners";
/**
* The item containing all the registration listeners.
* The key is {@link #REGISTRATION_LISTENERS}, and the type is {@link ArrayType}.
*/
Item REGISTRATION_LISTENERS_ITEM = new Item(
REGISTRATION_LISTENERS,
"All the registration listeners",
Item.arrayType(1, REGISTRATION_LISTENER_TYPE));
/**
* The name of CompositeType for ServiceMetadata objects, used in {@link #SERVICE_METADATA_TYPE}.
*/
String SERVICE_METADATA = "ServiceMetadata";
/**
* The CompositeType for a ServiceMetadata object, it extends {@link #COMPONENT_METADATA_TYPE}
* and adds the following items:
* <ul>
* <li>{@link #INTERFACES}</li>
* <li>{@link #AUTO_EXPORT}</li>
* <li>{@link #RANKING}</li>
* <li>{@link #SERVICE_COMPONENT}</li>
* <li>{@link #SERVICE_PROPERTIES}</li>
* <li>{@link #REGISTRATION_LISTENERS}</li>
* </ul>
*/
CompositeType SERVICE_METADATA_TYPE = Item.extend(
COMPONENT_METADATA_TYPE,
SERVICE_METADATA,
"This type encapsulates ServiceMetadata objects",
INTERFACES_ITEM,
AUTO_EXPORT_ITEM,
RANKING_ITEM,
SERVICE_COMPONENT_ITEM,
SERVICE_PROPERTIES_ITEM,
REGISTRATION_LISTENERS_ITEM);
///////////////////////////////////////////////////////////////
// Define <reference-listener>'s CompositeType
// LISTENER_COMPONENT_ITEM defined in the <registration-listener>
///////////////////////////////////////////////////////////////
/**
* The key BIND_METHOD, used in {@link #BIND_METHOD_ITEM}.
*/
String BIND_METHOD = "BindMethod";
/**
* The item containing the name of the bind method.
* The key is {@link #BIND_METHOD}, and the type is {@link SimpleType#STRING}.
*/
Item BIND_METHOD_ITEM = new Item(
BIND_METHOD,
"The name of the bind method",
SimpleType.STRING);
/**
* The key UNBIND_METHOD, used in {@link #UNBIND_METHOD_ITEM}.
*/
String UNBIND_METHOD = "UnbindMethod";
/**
* The item containing the name of the unbind method.
* The key is {@link #UNBIND_METHOD}, and the type is {@link SimpleType#STRING}.
*/
Item UNBIND_METHOD_ITEM = new Item(
UNBIND_METHOD,
"The name of the unbind method",
SimpleType.STRING);
/**
* The name of CompositeType for ReferenceListener objects, used in {@link #REFERENCE_LISTENER_TYPE}.
*/
String REFERENCE_LISTENER = "ReferenceListener";
/**
* The CompositeType for a reference listener, and it contains the following items:
* <ul>
* <li>{@link #LISTENER_COMPONENT}</li>
* <li>{@link #BIND_METHOD}</li>
* <li>{@link #UNBIND_METHOD}</li>
* </ul>
*/
CompositeType REFERENCE_LISTENER_TYPE = Item.compositeType(
REFERENCE_LISTENER,
"This type encapsulates ReferenceListener objects",
LISTENER_COMPONENT_ITEM,
BIND_METHOD_ITEM,
UNBIND_METHOD_ITEM);
///////////////////////////////////////////////////////////////
// Define Service Reference's CompositeType,
// <reference> & <reference-list> will extend this
///////////////////////////////////////////////////////////////
/**
* The key AVAILABILITY, used in {@link #AVAILABILITY_ITEM}.
*/
String AVAILABILITY = "Availability";
/**
* The item specify whether or not a matching service is required at all times.
* The key is {@link #AVAILABILITY}, and the type is {@link SimpleType#INTEGER}.
*
*/
//TODO add description for each int
Item AVAILABILITY_ITEM = new Item(
AVAILABILITY,
"To specify whether or not a matching service is required at all times",
SimpleType.INTEGER);
/**
* The key INTERFACE, used in {@link #INTERFACE_ITEM}.
*/
String INTERFACE = "Interface";
/**
* The item containing the name of the interface type that a matching service must support.
* The key is {@link #INTERFACE}, and the type is {@link SimpleType#STRING}.
*/
Item INTERFACE_ITEM = new Item(
INTERFACE,
"the name of the interface type",
SimpleType.STRING);
/**
* The key COMPONENT_NAME, used in {@link #COMPONENT_NAME_ITEM}.
*/
String COMPONENT_NAME = "ComponentName";
/**
* The item containing the value of the <code>component-name</code> attribute of the service reference.
* The key is {@link #INTERFACE}, and the type is {@link SimpleType#STRING}.
*/
Item COMPONENT_NAME_ITEM = new Item(
COMPONENT_NAME,
"The value of the component-name attribute of the service reference",
SimpleType.STRING);
/**
* The key FILTER, used in {@link #FILTER_ITEM}.
*/
String FILTER = "Filter";
/**
* The item containing the filter expression that a matching service must match.
* The key is {@link #FILTER}, and the type is {@link SimpleType#STRING}.
*/
Item FILTER_ITEM = new Item(
FILTER,
"The filter expression that a matching service must match",
SimpleType.STRING);
/**
* The key REFERENCE_LISTENERS, used in {@link #REFERENCE_LISTENERS_ITEM}.
*/
String REFERENCE_LISTENERS = "ReferenceListeners";
/**
* The item containing all the reference listeners.
* The key is {@link #REFERENCE_LISTENERS}, and the type is {@link ArrayType}.
*/
Item REFERENCE_LISTENERS_ITEM= new Item(
REFERENCE_LISTENERS,
"All the reference listeners",
Item.arrayType(1, REFERENCE_LISTENER_TYPE));
/**
* The name of CompositeType for ServiceReferenceMetadata objects, used in {@link #SERVICE_REFERENCE_METADATA_TYPE}.
*/
String SERVICE_REFERENCE_METADATA = "ServiceReferenceMetadata";
/**
* The CompositeType for a ServiceReferenceMetadata object, it extends
* {@link #COMPONENT_METADATA_TYPE} and adds the following items:
* <ul>
* <li>{@link #AVAILABILITY}</li>
* <li>{@link #INTERFACE}</li>
* <li>{@link #COMPONENT_NAME}</li>
* <li>{@link #FILTER}</li>
* <li>{@link #REFERENCE_LISTENERS}</li>
* </ul>
*/
CompositeType SERVICE_REFERENCE_METADATA_TYPE = Item.extend(
COMPONENT_METADATA_TYPE,
SERVICE_REFERENCE_METADATA,
"This type encapsulates ServiceReferenceMetadata objects",
AVAILABILITY_ITEM,
INTERFACE_ITEM,
COMPONENT_NAME_ITEM,
FILTER_ITEM,
REFERENCE_LISTENERS_ITEM);
///////////////////////////////////////////////////////////////
// Define <reference>'s CompositeType
///////////////////////////////////////////////////////////////
/**
* The key TIME_OUT, used in {@link #TIMEOUT_ITEM}.
*/
String TIMEOUT = "TimeOut";
/**
* The item containing the timeout for service invocations when a backing service is is unavailable.
* The key is {@link #TIMEOUT}, and the type is {@link SimpleType#LONG}.
*/
Item TIMEOUT_ITEM = new Item(
TIMEOUT,
"The timeout for service invocations when a backing service is is unavailable",
SimpleType.LONG);
/**
* The name of CompositeType for ReferenceMetadata objects, used in {@link #REFERENCE_METADATA_TYPE}.
*/
String REFERENCE_METADATA = "ReferenceMetadata";
/**
* The CompositeType for a ReferenceMetadata object, it extends
* {@link #SERVICE_REFERENCE_METADATA_TYPE} and adds the following items:
* <ul>
* <li>{@link #TIMEOUT}</li>
* </ul>
*/
CompositeType REFERENCE_METADATA_TYPE = Item.extend(
SERVICE_REFERENCE_METADATA_TYPE,
REFERENCE_METADATA,
"This type encapsulates ReferenceMetadata objects",
TIMEOUT_ITEM);
///////////////////////////////////////////////////////////////
// Define <reference-list>'s CompositeType
///////////////////////////////////////////////////////////////
/**
* The key MEMBER_TYPE, used in {@link #MEMBER_TYPE_ITEM}.
*/
String MEMBER_TYPE = "MemberType";
/**
* The item specify whether the List will contain service object proxies or ServiceReference objects.
* The key is {@link #MEMBER_TYPE}, and the type is {@link SimpleType#INTEGER}.
*/
Item MEMBER_TYPE_ITEM = new Item(
MEMBER_TYPE,
"To specify whether the List will contain service object proxies or ServiceReference objects",
SimpleType.INTEGER);
/**
* The name of CompositeType for ReferenceListMetadata objects, used in {@link #REFERENCE_LIST_METADATA_TYPE}.
*/
String REFERENCE_LIST_METADATA = "ReferenceListMetadata";
/**
* The CompositeType for a ReferenceListMetadata object, it extends
* {@link #SERVICE_REFERENCE_METADATA_TYPE} and adds the following items:
* <ul>
* <li>{@link #MEMBER_TYPE}</li>
* </ul>
*/
CompositeType REFERENCE_LIST_METADATA_TYPE = Item.extend(
SERVICE_REFERENCE_METADATA_TYPE,
REFERENCE_LIST_METADATA,
"This type encapsulates ReferenceListMetadata objects",
MEMBER_TYPE_ITEM);
/**
* Returns the list of component id.
*
* @param containerServiceId The blueprint container service id
* @return the array of component id
* @throws IOException if the operation fails
*/
String[] getComponentIds(long containerServiceId) throws IOException;
/**
* Returns all component ids of the specified component type
*
* @param containerServiceId The blueprint container service id
* @param type The string used to specify the type of component
* @return the array of component id
* @throws IOException if the operation fails
*/
String[] getComponentIdsByType(long containerServiceId, String type) throws IOException;
/**
* Returns the ComponentMetadata according to the its component id.
* The returned Composite Data's type is actually one of {@link #BEAN_METADATA_TYPE},
* {@link #SERVICE_METADATA_TYPE}, {@link #REFERENCE_METADATA_TYPE}, REFERENCE_LIST_METADATA_TYPE.
*
* @param containerServiceId The blueprint container service id
* @param componentId The component id
* @return the ComponentMetadata
* @throws IOException if the operation fails
*/
CompositeData getComponentMetadata(long containerServiceId, String componentId) throws IOException;
/**
* Returns all the blueprint containers' service IDs, which successfully
* created from blueprint bundles.
*
* @return the list of all the service IDs of the blueprint containers created by current extender
* @throws IOException if the operation fails
*/
long[] getBlueprintContainerServiceIds() throws IOException;
/**
* Returns the blueprint container's service id if the bundle specified
* by the bundle id is a blueprint bundle.
*
* @param bundleId The bundle id of a blueprint bundle
* @return the blueprint container's service id, or null if the blueprint bundle initialed failed.
* @throws IOException if the operation fails
* @throws IllegalArgumentException if the bundle is not a blueprint bundle
*/
long getBlueprintContainerServiceId(long bundleId) throws IOException;
}