/* * 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; }