Creating JavaBeans Using the MOF Compiler
This chapter provides an overview of the Managed Object Format (MOF) Compiler, and describes how to create JavaBeans using the -j option with the mofcomp command. This chapter covers the following topics.
Note - For more information on the MOF Compiler, see mofcomp(1M).
About The MOF Compiler
Managed Object Format (MOF) is a compiled language developed by the Distributed Management Task Force (DMTF) to define static and dynamic classes and instances for CIM and WBEM. You can use the CIM and Solaris MOFs that are included with Solaris WBEM Services, and you can create your own MOFs. For more information on creating your own MOFs using the DMTF's MOF language, see the DMTF Website at http://www.dmtf.org.
The MOF Compiler, mofcomp(1M), parses MOF files, converts the classes and instances to Java classes, and then adds the classes to the CIM Object Manager Repository in the default (root\cimv2) or other specified namespace. Because you can easily convert MOF files to Java, Java-based applications can interpret and exchange the data contained within MOF files on any machine that runs a Java Virtual Machine.
During a Solaris installation, the MOF Compiler automatically compiles the bundled MOF files that describe the CIM and Solaris Schema and adds them to the CIM Object Manager Repository.
Generating JavaBeans Using mofcomp
In the context of WBEM, JavaBeansTM or beans, define methods and instances for accessing and manipulating CIM classes and data elements. To simplify your development efforts, you can use the -j option with the mofcomp command to automatically generate JavaBeans that represent the CIM classes defined in your MOF files. These automatically-generated JavaBeans define the interfaces; it is up to you to add the implementation code.
Note - To safeguard your program from changes that you make to the underlying JavaBeans implementation, use the interfaces rather than the original JavaBeans.
When you specify the -j option with mofcomp, a base Java interface named CIMBean.java and a base bean that implements the interface named CIMBeanImpl.java is generated. CIMBeanImpl.java contains all of the code that is common to the generated beans. All generated Java interfaces inherit from CIMBean.java and all generated beans inherit from CIMBeanImpl.java, consequently inheriting the base implementation.
For each CIM class that is defined in a MOF file, The MOF Compiler JavaBeans Generation Feature generates a Java interface that contains the following:
Accessor and mutator methods for the properties that are defined in the MOF file
Methods that are comparable to the invokeMethods that are defined in the MOF file
For each invokeMethod that contains an OUT qualified parameter in a CIM class, a container interface that holds the output that the invoking of the method generates is generated. These interfaces are named CIMClass_MethodNameOutput.java. An instance of this CIMClass_MethodNameOutput.java container interface is required as the last parameter of the bean's method. This container interface is required because the Object datatype or datatypes that the bean's method takes as parameters are not mutatable, and therefore they cannot be used to hold both input and output data.
MOF File Elements
You must include the PACKAGE element in your MOF file to take advantage of the -j option. In addition, you can specify the IMPORTS and EXCEPTIONS elements, in the following format:
PACKAGE=NameOfJavaPackage IMPORTS=JavaClassName1:JavaClassName2:... EXCEPTIONS=Exception1:Exception2:... |
Th following table describes these elements.
Table 2-1 MOF File Elements
Element | Description |
---|---|
PACKAGE | Required. Specifies the name of the Java package that contains the source files generated by the MOF Compiler. |
IMPORTS | Optional. Specifies the name(s) of the Java classes to import into the generated source files, separated with a colon (:). You can specify as many Java classes as you want, on as many lines as you want. |
EXCEPTIONS | Optional. Specifies the name(s) of the Java exceptions included in the generated source files, separated with a colon (:). You can specify as many Java class exceptions as you want, on as many lines as you want. Note - If you specify EXCEPTIONS, you must specify IMPORTS. |
How CIM Maps to Java
The following table describes how CIM elements map to Java elements.
Table 2-2 How CIM Elements Map to Java Elements
CIM Element | Java Element |
---|---|
Class | The CIM class name is used as the basis for the name of the generated Java source files. The generated Java classes follow the same inheritance as defined in the class-subclass relationships in the MOF. |
Property | An accessor and a mutator method is created for each CIM property. The CIM property name is used as the basis for the related accessor and mutator methods. |
Method | For each CIM method, a comparable Java method is created. The method name is used as the basis for the related Java method name. The return value is the same, accounting for the Java data type mapping. Input and output parameters are used as arguments to the Java method. Output parameters are not directly included in the method signature, but rather are encapsulated in an output container object which is included as a method parameter. |
Qualifier | |
Association | Nothing specific required. |
Indication | Nothing specific required. |
Reference | For each CIM reference, a reference to a generated Java interface is created. |
Trigger | Nothing specific required. |
Schema | Nothing specific required. |
The following table describes how CIM data types map to Java data types.
Table 2-3 How CIM Data Types Map to Java Data Elements
CIM Data Type | Java Data Type | Accessor Method | Mutator Method |
---|---|---|---|
uint8 X | UnsignedInt8 | UnsignedInt8 getX(); | void setX(UnsignedInt8 x); |
sint8 X | Byte | Byte getX(); | void setX(Byte x); |
uint16 X | UnsignedInt16 | UnsignedInt16 getX(); | void setX(UnsignedInt16 x); |
sint16 X | Short | Short getX(); | void setX(Short x); |
uint32 X | UnsignedInt32 | UnsignedInt32 getX(); | void setX(UnsignedInt32 x); |
sint32 X | Integer | Integer getX(); | void setX(Integer x); |
uint64 X | UnsignedInt64 | UnsignedInt64 getX(); | void setX(UnsignedInt64 x); |
sint64 X | Long | Long getX(); | void setX(Long x); |
String X | String | String getX(); | void setX(String x); |
Boolean X | Boolean | Boolean isX(); | void setX(Boolean x); |
real32 X | Float | Float getX(); | void setX(Float x); |
real64 X | Double | Double getX(); | void setX(Double x); |
DateTime X | CIMDateTime | CIMDateTime getX(); | void setX(CIMDateTime x); |
Reference X | CIMObjectPath | CIMObjectPath getX(); | void setX(CIMObjectPath x); |
char16 X | Character | Character getX(); | void setX(Character x); |
The following table lists the meta qualifiers that refine the definition of the meta constructs in the model. These qualifiers are mutually exclusive and are used to refine the actual usage of an object class or property declaration within the MOF syntax.
Table 2-4 Meta Qualifiers
Qualifier | Scope | Type | Meaning |
---|---|---|---|
Association | class | Boolean | No affect on mapping |
Indication | class | Boolean | Class is abstract |
The following table lists the standard qualifiers and the affect that they have on the mapping of a CIM object to a bean. There is no support for optional qualifiers. JavaDoc is produced for each interface and class based on this mapping.
Table 2-5 Standard Qualifiers
Qualifier | Scope | Meaning |
---|---|---|
ABSTRACT | Class, Association, Indication | The class is abstract and has no effect on the Java interfaces |
DESCRIPTION | Any | The information provided generates JavaDoc comments in the source file |
DISPLAYNAME | Property | An accessor method for the display name is created: public String displayNameForProperty(); |
IN | Parameter | Determines the method signature |
OUT | Parameter | Determines the Method Parameter signature and return values |
TERMINAL | Class | Class or Interface is Final |
UNITS | Property, Method, Parameter | Another accessor method is created: public String getpropertyUnits(); |
VALUMAP | Property, Method, Parameter | Beans contain generated constants for each property in a CIM class that has a CIM ValueMap or a Values qualifier. How the constant name and constant value is obtained to generate these class variables depends on the data type of the property and which of the qualifiers the property possesses. Note - The ValueMap and Values qualifiers as defined in the CIM specification have meanings contrary to what the qualifier names might imply. ValueMap defines the legal set of values for a property and Values provides translation between an integer value and a string. |
VALUES | Property, Method, Parameter | Beans contain generated constants for each property in a CIM class that has a CIM ValueMap or a Values qualifier. How the constant name and constant value is obtained to generate these class variables depends on the data type of the property and which of these qualifiers the property possesses. Note - The ValueMap and Values qualifiers as defined in the CIM specification have meanings contrary to what the qualifier names might imply. ValueMap defines the legal set of values for a property and Values provides translation between an integer value and a string. |
VERSION | Class, Schema, Association, Indication | Class possesses a getClassVersion() method |
The following table describes how MOF elements map to Java elements.
Table 2-6 How MOF Elements Map to Java Elements
MOF Element | Java Element |
---|---|
Description Qualifier | Description of the class, property, or method |
Complete MOF representation of the class | The class JavaDoc description for both the Java interface and the implementing bean |