次の表で、AssociatorProvider インタフェースのメソッドについて説明します。これらのメソッドに渡す引数についての詳細は、関連メソッドを参照してください。
表 5–5 AssociatorProvider インタフェースのメソッド
メソッド |
説明 |
---|---|
Vector associators(CIMObjectPath assocName, CIMObjectPath objectName, String role, String resultRole, boolean includeQualifiers, boolean includeClassOrigin, String[] propertyList) |
objectName によって指定されたインスタンスに関連付けられている CIM インスタンスのベクトルを返す。 |
Vector associatorNames(CIMObjectPath assocName, CIMObjectPath objectName, String role, String resultRole) |
objectName によって指定された CIM インスタンスに関連付けられている CIM インスタンスの名前のベクトルを返す。 |
Vector references(CIMObjectPath assocName, CIMObjectPath objectName, String role, boolean includeQualifiers, boolean includeClassOrigin, String[] propertyList) |
objectName によって指定された CIM インスタンスが関与する関連ベクトルを返す。 |
Vector referenceNames(CIMObjectPath assocName, CIMObjectPath objectName, String role) |
objectName によって指定された CIM インスタンスが関与する関連の名前のベクトルを返す。 |
完全な関連付けプロバイダには、すべての AssociatorProvider メソッドを実装する必要があります。わかりやすくするために、次のコード例には、associators メソッドだけを実装しています。CIM Object Manager は、assocName、 objectName、 role、 resultRole、 includeQualifiers、 includeClassOrigin、 propertyList のそれぞれの値を関連付けプロバイダに渡します。
例 5–4 では、CIM 関連付けクラスの名前と、返される関連付けされたオブジェクトが属する CIM クラスまたはインスタンスを出力します。このプロバイダは、example_teacher クラスと example_student クラスのインスタンスを扱います。
public Vector associators(CIMObjectPath assocName, CIMObjectPath objectName, String role, String resultRole, boolean includeQualifiers, boolean includeClassOrigin, String propertyList[]) throws CIMException { System.out.println("Associators "+assocName+" "+objectName); if (objectName.getObjectName()equalsIgnoreCase("example_teacher")) { Vector v = new Vector(); if ((role != null) && (!role.equalsIgnoreCase("teaches"))) { // teacher は teaches という役割だけを担う return v; } // teacher のアソシエータを取得する CIMProperty nameProp = (CIMProperty)objectName.getKeys().elementAt(0); String name = (String)nameProp.getValue().getValue(); // student クラスを取得する CIMObjectPath tempOp = new CIMObjectPath("example_student"); tempOp.setNameSpace(assocName.getNameSpace()); CIMClass cc = cimom.getClass(tempOp, false); // objectName によって渡されたインスタンス名をテストし、 // student クラスの関連付けされたインスタンスを返す if(name.equals("teacher1")) { // teacher1 の student (複数) を取得する CIMInstance ci = cc.newInstance(); ci.setProperty("name", new CIMValue("student1")); v.addElement(ci.filterProperties(propertyList, includeQualifiers, includeClassOrigin)); ci = cc.newInstance(); ci.setProperty("name", new CIMValue("student2")); v.addElement(ci.filterProperties(propertyList, includeQualifiers, includeClassOrigin)); return v; } }