| 
OSGi™ Service Platform Release 4 Version 4.2  | 
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
public interface MetaNode
The MetaNode contains meta data as standardized by OMA DM but extends it (without breaking the compatibility) to provide for better DMT data quality in an environment where many software components manipulate this data.
The interface has several types of functions to describe the nodes in the DMT. Some methods can be used to retrieve standard OMA DM metadata such as access type, cardinality, default, etc., others are for data extensions such as valid names and values. In some cases the standard behaviour has been extended, for example it is possible to provide several valid MIME types, or to differentiate between normal and automatic dynamic nodes.
 Most methods in this interface receive no input, just return information
 about some aspect of the node. However, there are two methods that behave
 differently, isValidName(java.lang.String) and isValidValue(info.dmtree.DmtData). These validation
 methods are given a potential node name or value (respectively), and can
 decide whether it is valid for the given node. Passing the validation methods
 is a necessary condition for a name or value to be used, but it is not
 necessarily sufficient: the plugin may carry out more thorough (more
 expensive) checks when the node is actually created or set.
 
 If a MetaNode is available for a node, the DmtAdmin must use the
 information provided by it to filter out invalid requests on that node.
 However, not all methods on this interface are actually used for this
 purpose, as many of them (e.g. getFormat() or getValidNames())
 can be substituted with the validating methods. For example,
 isValidValue(info.dmtree.DmtData) can be expected to check the format, minimum, maximum,
 etc. of a given value, making it unnecessary for the DmtAdmin to call
 getFormat(), getMin(), getMax() etc. separately.
 It is indicated in the description of each method if the DmtAdmin does not
 enforce the constraints defined by it - such methods are only for external
 use, for example in user interfaces.
 
 Most of the methods of this class return null if a certain piece
 of meta information is not defined for the node or providing this information
 is not supported. Methods of this class do not throw exceptions.
| Field Summary | |
|---|---|
static int | 
AUTOMATIC
Constant for representing an automatic node in the tree.  | 
static int | 
CMD_ADD
Constant for the ADD access type.  | 
static int | 
CMD_DELETE
Constant for the DELETE access type.  | 
static int | 
CMD_EXECUTE
Constant for the EXECUTE access type.  | 
static int | 
CMD_GET
Constant for the GET access type.  | 
static int | 
CMD_REPLACE
Constant for the REPLACE access type.  | 
static int | 
DYNAMIC
Constant for representing a dynamic node in the tree.  | 
static int | 
PERMANENT
Constant for representing a permanent node in the tree.  | 
| Method Summary | |
|---|---|
 boolean | 
can(int operation)
Check whether the given operation is valid for this node.  | 
 DmtData | 
getDefault()
Get the default value of this node if any.  | 
 java.lang.String | 
getDescription()
Get the explanation string associated with this node.  | 
 java.lang.Object | 
getExtensionProperty(java.lang.String key)
Returns the value for the specified extension property key.  | 
 java.lang.String[] | 
getExtensionPropertyKeys()
Returns the list of extension property keys, if the provider of this MetaNode provides proprietary extensions to node meta
 data. | 
 int | 
getFormat()
Get the node's format, expressed in terms of type constants defined in DmtData. | 
 double | 
getMax()
Get the maximum allowed value associated with a node of numeric format.  | 
 int | 
getMaxOccurrence()
Get the number of maximum occurrences of this type of nodes on the same level in the DMT.  | 
 java.lang.String[] | 
getMimeTypes()
Get the list of MIME types this node can hold.  | 
 double | 
getMin()
Get the minimum allowed value associated with a node of numeric format.  | 
 java.lang.String[] | 
getRawFormatNames()
Get the format names for any raw formats supported by the node.  | 
 int | 
getScope()
Return the scope of the node.  | 
 java.lang.String[] | 
getValidNames()
Return an array of Strings if valid names are defined for the node, or null if no valid name list is defined or if this piece of
 meta info is not supported. | 
 DmtData[] | 
getValidValues()
Return an array of DmtData objects if valid values are defined for the node, or null otherwise. | 
 boolean | 
isLeaf()
Check whether the node is a leaf node or an internal one.  | 
 boolean | 
isValidName(java.lang.String name)
Checks whether the given name is a valid name for this node.  | 
 boolean | 
isValidValue(DmtData value)
Checks whether the given value is valid for this node.  | 
 boolean | 
isZeroOccurrenceAllowed()
Check whether zero occurrence of this node is valid.  | 
| Field Detail | 
|---|
static final int CMD_ADD
can(int) returns
 true for this operation, this node can potentially be
 added to its parent. Nodes with PERMANENT or AUTOMATIC
 scope typically do not have this access type.
static final int CMD_DELETE
can(int) returns
 true for this operation, the node can potentially be
 deleted.
static final int CMD_EXECUTE
can(int) returns
 true for this operation, the node can potentially be
 executed.
static final int CMD_REPLACE
can(int) returns
 true for this operation, the value and other properties of
 the node can potentially be modified.
static final int CMD_GET
can(int) returns
 true for this operation, the value, the list of child nodes
 (in case of interior nodes) and the properties of the node can
 potentially be retrieved.
static final int PERMANENT
getScope() if the node cannot be added, deleted or
 modified in any way through tree operations. Permanent nodes cannot have
 non-permanent nodes as parents.
static final int DYNAMIC
getScope() for all nodes that are not permanent and
 are not created automatically by the management object.
static final int AUTOMATIC
getScope() for all nodes that are created
 automatically by the management object. Automatic nodes represent a
 special case of dynamic nodes, so this scope should be mapped to
 DYNAMIC when used in an OMA DM context.
 An automatic node is usually created instantly when its parent is created, but it is also valid if it only appears later, triggered by some other condition. The exact behaviour must be defined by the Management Object.
| Method Detail | 
|---|
boolean can(int operation)
operation - One of the MetaNode.CMD_... constants.
false if the operation is not valid for this node
         or the operation code is not one of the allowed constantsboolean isLeaf()
true if the node is a leaf nodeint getScope()
MetaNode.PERMANENT, MetaNode.DYNAMIC
 and MetaNode.AUTOMATIC. Note that a permanent node is
 not the same as a node where the DELETE operation is not allowed.
 Permanent nodes never can be deleted, whereas a non-deletable node can
 disappear in a recursive DELETE operation issued on one of its parents.
 If no meta-data is provided for a node, it can be assumed to be a dynamic
 node.
PERMANENT for permanent nodes, AUTOMATIC for
         nodes that are automatically created, and DYNAMIC
         otherwisejava.lang.String getDescription()
null if no description is provided for this node.
null for no descriptionint getMaxOccurrence()
Integer.MAX_VALUE if there is no
 upper limit. Note that if the occurrence is greater than 1 then this node
 can not have siblings with different metadata. In other words, if
 different types of nodes coexist on the same level, their occurrence can
 not be greater than 1. If no meta-data is provided for a node, there is
 no upper limit on the number of occurrences.
boolean isZeroOccurrenceAllowed()
true if zero occurrence of this node is validDmtData getDefault()
null if not definedjava.lang.String[] getMimeTypes()
 All MIME types are considered valid if no meta-data is provided for a
 node or if null is returned by this method. In this case
 the default MIME type cannot be retrieved from the meta-data, but the
 node may still have a default. This hidden default (if it exists) can be
 utilized by passing null as the type parameter of
 DmtSession.setNodeType(String, String) or
 DmtSession.createLeafNode(String, DmtData, String).
null if all types are
         alloweddouble getMax()
double type, as this can be
 used to denote both integer and float limits with full precision. The
 actual maximum should be the largest integer or float number that does
 not exceed the returned value.
 
 The information returned by this method is not checked by DmtAdmin, it
 is only for external use, for example in user interfaces. DmtAdmin only
 calls isValidValue(info.dmtree.DmtData) for checking the value, its behaviour should
 be consistent with this method.
Double.MAX_VALUE if there
         is no upper limit defined or the node's format is not integer or
         floatdouble getMin()
double type, as this can be
 used to denote both integer and float limits with full precision. The
 actual minimum should be the smallest integer or float number that is
 larger than the returned value.
 
 The information returned by this method is not checked by DmtAdmin, it
 is only for external use, for example in user interfaces. DmtAdmin only
 calls isValidValue(info.dmtree.DmtData) for checking the value, its behaviour should
 be consistent with this method.
Double.MIN_VALUE if there
         is no lower limit defined or the node's format is not integer or
         floatDmtData[] getValidValues()
null otherwise. If no meta-data is provided for a
 node, all values are considered valid.
 
 The information returned by this method is not checked by DmtAdmin, it
 is only for external use, for example in user interfaces. DmtAdmin only
 calls isValidValue(info.dmtree.DmtData) for checking the value, its behaviour should
 be consistent with this method.
null if not
         definedint getFormat()
DmtData. If there are multiple formats allowed for the node then
 the format constants are OR-ed. Interior nodes must have
 DmtData.FORMAT_NODE format, and this code must not be returned
 for leaf nodes. If no meta-data is provided for a node, all applicable
 formats are considered valid (with the above constraints regarding
 interior and leaf nodes).
 Note that the 'format' term is a legacy from OMA DM, it is more customary to think of this as 'type'.
 The formats returned by this method are not checked by DmtAdmin, they
 are only for external use, for example in user interfaces. DmtAdmin only
 calls isValidValue(info.dmtree.DmtData) for checking the value, its behaviour should
 be consistent with this method.
java.lang.String[] getRawFormatNames()
getFormat() contains DmtData.FORMAT_RAW_STRING or
 DmtData.FORMAT_RAW_BINARY: it specifies precisely which raw
 format(s) are actually supported.  If the node cannot contain data in one
 of the raw types, this method must return null.
 
 The format names returned by this method are not checked by DmtAdmin,
 they are only for external use, for example in user interfaces. DmtAdmin
 only calls isValidValue(info.dmtree.DmtData) for checking the value, its behaviour
 should be consistent with this method.
null if raw formats are not supportedboolean isValidValue(DmtData value)
getFormat(), getValidValues(),
 getMin() and getMax() methods (if applicable), as the Dmt
 Admin only calls this method for value validation.
 
 This method may return true even if not all aspects of the
 value have been checked, expensive operations (for example those that
 require external resources) need not be performed here. The actual value
 setting method may still indicate that the value is invalid.
value - the value to check for validity
false if the specified value is found to be
         invalid for the node described by this meta-node,
         true otherwisejava.lang.String[] getValidNames()
null if no valid name list is defined or if this piece of
 meta info is not supported. If no meta-data is provided for a node, all
 names are considered valid.
 
 The information returned by this method is not checked by DmtAdmin, it
 is only for external use, for example in user interfaces. DmtAdmin only
 calls isValidName(java.lang.String) for checking the name, its behaviour should be
 consistent with this method.
null if
         not definedboolean isValidName(java.lang.String name)
getValidNames() (if any), the DmtAdmin only calls this method for
 name validation.
 
 This method may return true even if not all aspects of the
 name have been checked, expensive operations (for example those that
 require external resources) need not be performed here. The actual node
 creation may still indicate that the node name is invalid.
name - the node name to check for validity
false if the specified name is found to be invalid
         for the node described by this meta-node, true
         otherwisejava.lang.String[] getExtensionPropertyKeys()
MetaNode provides proprietary extensions to node meta
 data. The method returns null if the node doesn't provide
 such extensions.
java.lang.Object getExtensionProperty(java.lang.String key)
MetaNode provides
 proprietary extensions to node meta data.
key - the key for the extension property
null
java.lang.IllegalArgumentException - if the specified key is not supported by
         this MetaNode
  | 
OSGi™ Service Platform Release 4 Version 4.2  | 
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||