Sun N1 Service Provisioning System 5.2 プラグイン開発ガイド

コンポーネント API

Java ベースのコンポーネント API によって、プラグインにエクスポート機能と一覧機能を提供できます。ユーザーは、Sun N1 Service Provisioning System のブラウザインタフェースでディレクトリ構造を表示し、ファイルをエクスポートできます。

com.sun.n1.sps.componentdb

このパッケージには、コンポーネントデータベースを操作するためのインタフェースが 2 つあります。

  • InstallMode – コンポーネントのインストールモードの強く型付けされた列挙

  • InstallMode.FactoryInstallMode 列挙のファクトリインタフェース

com.sun.n1.sps.plugin

このパッケージには、プラグイン関連の一般機能をサポートする 1 つのインタフェースと 3 つのクラスが含まれます。

  • AgentContext – このインタフェースは、リモートエージェントでプラグインのコードから使用可能なサービスを発行します。

  • Logger – このハイレベルのラッパークラスは、サービスプロビジョニングプロジェクトのログインに使用します。

  • PluginMessage – このクラスのインスタンスを使用して、プラグイン実装内のメッセージを国際化します。

  • PluginException – メッセージの解決に PluginMessage を使用する例外を表すクラスです。

com.sun.n1.sps.plugin.browse

このパッケージには、一覧機能を指定する 5 つのインタフェースと 4 つのクラスが含まれます。

  • Browser – このインタフェースは、一覧をサポートするリソースハンドラがエクスポートする必要がある一連の機能を定義します。

  • BrowserDisplay – このインタフェースは、表示をより有益かつ正確にするために階層マネージャの「UI Browsing」部分で使用されます。

  • BrowserFactory – このインタフェースは、ローダーが適切なブラウザの実際のインスタンスを取得するために使用するインタフェースです。

  • BrowserFilter – このインタフェースは、特定の条件に従ってノードにフィルタを適用する方法を示します。

  • BrowserNode – このインタフェースは、一覧可能な階層ノードの機能を定義します。

  • BrowserContext – このクラスは、クライアントが一覧セッションの初期パラメータを設定するためのコンテナを提供します。

  • BrowserInfo – このクラスは、ユーザーインタフェースでの表示とシステム内からの実際のインスタンスの取得に適切なブラウザを示します。

  • BrowserNodeBase – このクラスは、BrowserNode インタフェースのデフォルトの実装を提供します。

  • BrowserException – このクラスは、一覧セッションからスローする型付けされた例外を指定します。

一覧機能の詳細と例については、「一覧機能」を参照してください。

com.sun.n1.sps.plugin.export

このパッケージには、コンポーネントの定義と作成機能を指定するための 7 つのインタフェースと 1 つの例外クラスが含まれます。

  • ComponentExporter – 一覧プロセスからコンポーネントを作成するには、すべてのプラグインでこの基本インタフェースを実装する必要があります。

  • ComponentMonitor – システムによって作成され、特定のコンポーネントのコンポーネント作成プロセスを管理するモニターです。

  • ComponentToken – 包含コンポーネントを CompositeComponentMonitor に追加するためにコンポーネントを表すトークンです。

  • CompositeComponentMonitor – ほかのコンポーネントを含むコンポーネントのモニターです。

  • ResourceProcessor – リソースのイントロスペクションを可能にします。

  • SimpleComponentMonitor – リソースを含むコンポーネントのモニターです。

  • SystemData – 現在のエクスポートと一覧の処理に関連するさまざまな持続システムオブジェクトによって定義される変数へのアクセスを提供します。

  • ComponentExportException – コンポーネントのエクスポートに関連するエラーに使用する強く型付けされた例外です。

エクスポート機能の詳細と例については、「エクスポート機能」を参照してください。

com.sun.n1.sps.resource

このパッケージには、リソースを管理するための 7 つのインタフェースと 1 つの例外が含まれます。

  • CheckInMode – チェックインモードを表す強く型付けされた列挙です。

  • CheckInMode.FactoryCheckInMode 列挙のファクトリインタフェースです。

  • ResourceEntry – リソース内のエントリを表します。

  • ResourceEntryIteratorResourceEntry オブジェクトの反復子です。

  • ResourceManifest – リソースを表すマニフェストです。

  • ResourceType – リソースタイプを表す強く型付けされた列挙です。

  • ResourceType.FactoryResourceType 列挙のファクトリインタフェースです。

  • ResourceException – リソースに関連するエラー状態からスローされる型付けされた例外です。

com.sun.n1.util

このパッケージには、ユーティリティーを管理するための 1 つのインタフェースと 3 つの追加パッケージが含まれます。

  • RPCSerializable – このインタフェースは、RPC によって直列化できるオブジェクトを指定します。

  • com.sun.n1.util.enum – このパッケージには、2 つのインタフェースと 1 つの例外クラスが含まれます。

    • Enum – 強く型付けされた列挙用のインタフェースです。

    • Enum.Factory – クライアントが、特定の Enum サブクラスに定義された値をすべて検索し、また整数値または文字列値で特定の値を検索できるようにします。

    • NoSuchEnumException – 列挙の検索に失敗したことを示す例外クラスです。

  • com.sun.n1.util.message – このパッケージには、2 つのインタフェースが含まれます。

    • Severity – メッセージに関連付けられた重要度を表す強く型付けされた列挙です。

    • Severity.Factory – Severity 列挙のファクトリインタフェースです。

  • com.sun.n1.util.vars – このパッケージには、3 つのインタフェースと 3 つのクラスが含まれます。

    • DisplayMode – 表示モードの、強く型付けされた列挙です。

    • DisplayMode.FactoryDisplayMode 列挙のファクトリインタフェースです。

    • VariableSettingsSource – 変数設定のソースとして使用できるオブジェクトのインタフェースを定義します。

    • PromptParam – テキストのプロンプトと表示モードを含む、プロンプトの構造に関する情報を含むパラメータです。

    • PromptParamListPromptParam オブジェクトの一覧です。

    • VariableSettingsHolder – 変数の名前と値の組み合わせの指定に使用できる VariableSettingsSource インタフェースの実装です。

一覧機能

com.sun.n1.sps.plugin.browse パッケージには、一覧機能を指定する 5 つのインタフェースと 4 つのクラスが含まれます。

ブラウザ API の実装

ブラウザ実装には、次の主な API セグメントが含まれます。

BrowserFilter[] getAvailableFilters()

このブラウザがサポートするフィルタを返します。BrowserFilter インタフェースを使用して、特定の条件に基づいた BrowserNodes を選別します。たとえば、*.tmp ファイルだけを表示するフィルタを適用できます。

BrowserDisplay getDisplay()

このブラウザで使用する表示プロパティオブジェクトを取得します。

BrowserNode getNode(java.lang.String location)

階層内でこのブラウザが表すノードを返します。

void setFilterName(java.lang.String name)

一覧時に使用するフィルタを指定します。

BrowserNode クラス

BrowserNode クラスは、階層ツリー機能全体を実装します。この機能は次の 4 つの分野に分かれています。

BrowserFactory インタフェース

BrowserFactory インタフェースは、HierarchyBrowserLoader が適切な HierarchyBrowser の実際のインスタンスを取得するためのインタフェースです。

BrowserFactory インタフェースを実装するクラスを定義するには、次の例のような API 呼び出しを使用します。

Browser getBrowser(BrowserContext bContext,AgentContext aContext)

各オプションの意味は次のとおりです。

BrowserFactory の実装は、システムが指定する BrowserContext オブジェクトと AgentContext オブジェクトをパラメータとして getBrowser メソッドを定義します。

システムサービス内で、browserClassPathVar 変数にブラウザファクトリの完全指定のクラス名を宣言します。次のコードフラグメントでは、システムサービスに 2 つのブラウザファクトリを定義しています。

<var 
 access="PRIVATE" 
 name="EJBFileSystemBrowser" 
 default="com.raplix.rolloutexpress.plugins.weblogic.hierarchies.ejb.EJBFileBrowserFactory"
/> 
<var 
 access="PRIVATE" 
 name="EJBDomainBrowser" 
 default="com.raplix.rolloutexpress.plugins.weblogic.hierarchies.ejb.EJBDomainBrowserFactory"
/>

一覧機能のコード例


例 4–1 ブラウザフィルタ

次の例では、名前が *.tmp のファイルだけをフィルタします。

public class TmpFilter implements BrowserFilter, ExampleFilter {

    public String getName() {
        return "tmpFilter";
    }
    public String getDescription() {
        return "show only *.tmp files";
    }
    public boolean filter(ExampleBrowserNode node) {
        return node.getLocalName().endsWith(".tmp");
    }

}

エクスポート機能

com.sun.n1.sps.plugin.export パッケージには、コンポーネントの定義と作成機能を指定するための 7 つのインタフェースと 1 つの例外クラスが含まれます。

ComponentExporter プロセス

エクスポート機能を有効にするには、次のような手順に従います。

  1. コンポーネントタイプのバッキングコンポーネントで、exporterClass 変数で componentExporter の完全指定のクラス名を宣言します。

    <varList>
      <var name="exporterClassName" 
        default="com.sun.n1.sps.pluginimpl.sample.export.StaticCompExporter"/>
    </varList>
  2. ComponentExporter インタフェースを実装するクラスを定義します。

    ComponentExporterComponentMonitor 入力引数に対してさまざまなメソッドを呼び出し、コンポーネントを構築します。addComponentVar addSourceInfoParamsetComponentDescriptionsetComponentLabel などのメソッドを使用できます。

    ComponentExporter では get ルーチンを呼び出して ComponentMonitor から情報を取得することもできます。get ルーチンには、getPluginComponentVarsgetPluginHostVarsgetActiveBrowsergetSourceInfoParamgetLocation などがあります。

    ComponentExporter では exportResource を呼び出して、制御ブロック内で、コンポーネントをエクスポートするコンポーネントタイプに固有の機能を実行することもできます。

  3. コンポーネントの作成後、ComponentExporter では setResource を呼び出して、コンポーネントに含める物理リソースを設定し、エクスポートプロセスを完了できます。

ComponentExporter の例


例 4–2 ComponentExporter

public class  implements ComponentExporter {

    public ExampleExporter() {

    }

    public BrowserContext getBrowserContext() {
        return new BrowserContext();
    }

    public BrowserInfo[] getAvailableBrowsers() {
        return new BrowserInfo[] {
            new BrowserInfo("example",             //relevant comp type
                            "Example Browser",     //browser ui display name
                            "example ss",          //relevant ss
                            null,                  //valid for all platforms
                            null,                  //no host set restriction
                            new PromptParamList()) //no checkin params
        };
    }

    public String getBrowserClassPath(BrowserInfo browser) {
        return null;
    }
public void constructComponent(ComponentMonitor mon) 
        throws ComponentExportException {

        //It's the responsibility of the infrastructure to  identify the type
        //of component and construct the component with the appropriate monitor
        SimpleComponentMonitor sMon = (SimpleComponentMonitor)mon;

      sMon.setComponentDescription("This is an example component");
        sMon.setComponentLabel("What the hell is a label for?");
        
        sMon.setResource(ResourceType.FILE,  //our sample type is a file
                         sMon.getLocation(), //get the location specified
                         false,              //do not use differential checkin
                         false,              //not a config template
                         false,              //file->symlinks meaningless
                         true,               //capture permissions
                         null,               //file->checkinmode meaningless
                         null);              //no special processing of rsrc
    }    
}