Aufgabe dieses Skriptes ist das Erzeugen einer Datei, die Java Syntax besitzt und der Vererbungshierarchie der JMAPI Base Managed Object Classes genügt.
Aus jeder CIM-Klasse CIM_SomeClass, die ein Managed Object beschreibt, wird in JMAPI ein MO mit Remote Interface CIM_SomeClass und zugehöriger Implementierung CIM_SomeClassImpl.
Wurzel der JMAPI-MO-Klassenhierarchie bildet die Klasse ManagedObjectImpl mit Remote Interface ManagedObject. CIM-Klassen, die innerhalb von CIM keine Oberklassen besitzen, werden auf MOs abgebildet, die direkt von ManagedObjectImpl erben. Beispielsweise wird das aus CIM_ManagedSystemElement zu generierende JMAPI MO CIM_ManagedSystemElementImpl als Unterklasse von ManagedObjectImpl deklariert und erbt damit die Methoden für den JMAPI Transaktionsmechanismus, den Security Context und die Verwaltung von Associations.
Die restliche Vererbungshierarchie wird einfach auf JMAPI isomorph übertragen.
Enthält beispielsweise die Ausgabedatei des Skripts pass1.pl eine Zeile der Form
abstract class CIM_PhysicalElement:CIM_ManagedSystemElement
so muß diese transformiert werden in die Zeile
public abstract class CIM_PhysicalElementImpl
extends CIM_ManagedSystemElementImpl
implements CIM_PhysicalElement
Neben dem Aufbau einer Klassenhierarchie hat das Skript pass2.pl auch die Aufgabe, die CIM Datentypen auf entsprechende JMAPI Datentypen abzubilden.
Die Konvertierung der Datentypen ist in Tabelle 4.1 zusammengestellt. Da es in Java keine unsigned Datentypen gibt, ist es erforderlich, im Falle der Datentypen uint8, uint16 und uint32 jeweils auf den nächstgenaueren signed-Datentyp abzubilden. Eine Abbildung von uint32 ist ferner nur unter Verwendung der Klasse java.math.BigInteger möglich.
MOF | Java |
---|---|
bool | boolean |
string | String |
uint8 | short |
sint8 | byte |
uint16 | int |
sint16 | short |
uint32 | long |
sint32 | int |
uint64 | java.math.BigInteger |
sint64 | long |
real32 | float |
real64 | double |
char16 | char |
datetime | String |