/*
* $Header: /cvshome/build/org.osgi.service.metatype/src/org/osgi/service/metatype/ObjectClassDefinition.java,v 1.11 2006/06/16 16:31:23 hargrave Exp $
*
* Copyright (c) OSGi Alliance (2001, 2006). 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.service.metatype;
import java.io.IOException;
import java.io.InputStream;
/**
* Description for the data type information of an objectclass.
*
* @version $Revision: 1.11 $
*/
public interface ObjectClassDefinition {
/**
* Argument for getAttributeDefinitions(int).
*
* REQUIRED indicates that only the required definitions are
* returned. The value is 1.
*/
public static final int REQUIRED = 1;
/**
* Argument for getAttributeDefinitions(int).
*
* OPTIONAL indicates that only the optional definitions are
* returned. The value is 2.
*/
public static final int OPTIONAL = 2;
/**
* Argument for getAttributeDefinitions(int).
*
* ALL indicates that all the definitions are returned. The value
* is -1.
*/
public static final int ALL = 0xFFFFFFFF;
/**
* Return the name of this object class.
*
* The name may be localized.
*
* @return The name of this object class.
*/
public String getName();
/**
* Return the id of this object class.
*
*
* ObjectDefintion objects share a global namespace in the
* registry. They share this aspect with LDAP/X.500 attributes. In these
* standards the OSI Object Identifier (OID) is used to uniquely identify
* object classes. If such an OID exists, (which can be requested at several
* standard organisations and many companies already have a node in the
* tree) it can be returned here. Otherwise, a unique id should be returned
* which can be a java class name (reverse domain name) or generated with a
* GUID algorithm. Note that all LDAP defined object classes already have an
* OID associated. It is strongly advised to define the object classes from
* existing LDAP schemes which will give the OID for free. Many such schemes
* exist ranging from postal addresses to DHCP parameters.
*
* @return The id of this object class.
*/
public String getID();
/**
* Return a description of this object class.
*
* The description may be localized.
*
* @return The description of this object class.
*/
public String getDescription();
/**
* Return the attribute definitions for this object class.
*
*
* Return a set of attributes. The filter parameter can distinguish between
* ALL,REQUIRED or the OPTIONAL
* attributes.
*
* @param filter ALL,REQUIRED,OPTIONAL
* @return An array of attribute definitions or null if no
* attributes are selected
*/
public AttributeDefinition[] getAttributeDefinitions(int filter);
/**
* Return an InputStream object that can be used to create an
* icon from.
*
*
* Indicate the size and return an InputStream object containing
* an icon. The returned icon maybe larger or smaller than the indicated
* size.
*
*
* The icon may depend on the localization.
*
* @param size Requested size of an icon, e.g. a 16x16 pixels icon then size =
* 16
* @return An InputStream representing an icon or null
* @throws IOException If the InputStream cannot be returned.
*/
public InputStream getIcon(int size) throws IOException;
}