JavaTM Platform
Standard Ed. 6

javax.management.openmbean
インタフェース CompositeDataView


public interface CompositeDataView

Java クラスは、このインタフェースを実装することにより、MXBean フレームワークを使って CompositeData に変換する方法を示すことができます。

このクラスの一般的な使用方法は、MXBean フレームワークの提供する CompositeType で宣言される項目に加えて、補足項目を CompositeData に追加することです。このためには、同一の項目を持ち、かつ補足項目も持つ別の CompositeType を作成する必要があります。

たとえば、units という名前の String と、longdouble のいずれかである value とで構成される Measure クラスを考えましょう。これは、次のようになります。

 public class Measure implements CompositeDataView {
     private String units;
     private Number value; // a Long or a Double

     public Measure(String units, Number value) {
         this.units = units;
         this.value = value;
     }

     public static Measure from(CompositeData cd) {
         return new Measure((String) cd.get("units"),
                            (Number) cd.get("value"));
     }

     public String getUnits() {
         return units;
     }

     // Can't be called getValue(), because Number is not a valid type
     // in an MXBean, so the implied "value" property would be rejected.
     public Number _getValue() {
         return value;
     }

     public CompositeData toCompositeData(CompositeType ct) {
         try {
             List<String> itemNames = new ArrayList<String>(ct.keySet());
             List<String> itemDescriptions = new ArrayList<String>();
             List<OpenType<?>> itemTypes = new ArrayList<OpenType<?>>();
             for (String item :itemNames) {
                 itemDescriptions.add(ct.getDescription(item));
                 itemTypes.add(ct.getType(item));
             }
             itemNames.add("value");
             itemDescriptions.add("long or double value of the measure");
             itemTypes.add((value instanceof Long) ?SimpleType.LONG :
                           SimpleType.DOUBLE);
             CompositeType xct =
                 new CompositeType(ct.getTypeName(),
                                   ct.getDescription(),
                                   itemNames.toArray(new String[0]),
                                   itemDescriptions.toArray(new String[0]),
                                   itemTypes.toArray(new OpenType<?>[0]));
             CompositeData cd =
                 new CompositeDataSupport(xct,
                                          new String[] {"units", "value"},
                                          new Object[] {units, value});
             assert ct.isValue(cd);  // check we've done it right
             return cd;
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
     }
 }
 

この属性型またはオペレーション型の DescriptoropenType フィールドに表示される CompositeType には、units 項目だけが示されます。ただし、生成される実際の CompositeData には、unitsvalue の両方が含まれます。

導入されたバージョン:
1.6
関連項目:
MXBean

メソッドの概要
 CompositeData toCompositeData(CompositeType ct)
          このオブジェクト内の値に対応する CompositeData を返します。
 

メソッドの詳細

toCompositeData

CompositeData toCompositeData(CompositeType ct)

このオブジェクト内の値に対応する CompositeData を返します。通常、戻り値は CompositeDataSupport のインスタンス、または writeReplace メソッドを介して CompositeDataSupport として直列化を行うクラスになります。それ以外の場合、オブジェクトを受信するリモートクライアントは、再構築を実行できない可能性があります。

パラメータ:
ct - 戻り値の 予想される CompositeType。戻り値が cd である場合、 cd.getCompositeType().equals(ct) は true になる。 通常、これは、cdctCompositeType として構築された CompositeDataSupport で あるため
戻り値:
CompositeData

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。