マニピュレータ用のパイプライン・コンポーネント構成クラスの作成

マニピュレータでは、拡張機能の構成を記述し、マニピュレータの構成を検証し、マニピュレータが完全取得を必要としているかどうかを判断するために、PipelineComponentConfigurationクラスが必要です。

マニピュレータ構成クラスを作成する手順は次のとおりです。

  1. Manipulator実装を含むJavaプロジェクトに、PipelineComponentConfigurationのサブクラスを作成します。
    たとえば、次のようになります。
    public class SubstringManipulatorConfig extends PipelineComponentConfiguration<SubstringManipulatorConfig> {
    
    }
  2. マニピュレータにおいて構成プロパティとして使用可能にする各フィールドを追加します。
    たとえば、次のようになります。
    private String mSourceProperty;
    	
    private String mTargetProperty;
    	
    private int mStartIndex;
  3. 各フィールドにアノテーションを追加します。アノテーション型は、フィールドのデータ型と一致する必要があります。どのアノテーションに必要な属性があるのかを判断し、どの属性がフィールドに適しているかを判断するには、IAS Extension API Reference (Javadoc)のパッケージcom.endeca.ias.extension.annotationを参照してください。「IASアノテーションについて」も参照してください。
    たとえば、次のようになります。
    @StringProperty(isRequired=true, name="sourceProperty", displayName="Source Property")
    	private String mSourceProperty;
    	
    	@StringProperty(isRequired=true, name="targetProperty", displayName="Target Property")
    	private String mTargetProperty;
    	
    	@IntegerProperty(isRequired=false, name="startIndex", displayName="Substring Start Index", 
    			description="Substring start index (zero based)", defaultValue="0")
    	private int mStartIndex;
  4. 1つのグループ内でフィールドの順序を付けるには、PipelineComponentConfigurationクラスに@ConfigurationGroupOrderアノテーションを追加し、ネストされた@ConfigurationGroupアノテーションを追加します。
    たとえば、sourcePropertytargetPropertylengthstartIndexの順に表示するフィールドのグループは次のようになります。
    @ConfigurationGroupOrder({
    	@ConfigurationGroup(propertyOrder={"sourceProperty", "targetProperty", "length", "startIndex"})
    })
    public class SubstringManipulatorConfig extends PipelineComponentConfiguration<SubstringManipulatorConfig> {
    
    }
  5. 複数のグループの順序を付けるには、順序を付ける各グループに対して、@ConfigurationGroupOrder内に@ConfigurationGroupアノテーションを追加します。
  6. オプションで、isFullAcquisitionRequired()のデフォルト実装をオーバーライドします。デフォルト実装では、構成の変更により次の取得を実行するときに完全取得を強制的に行うかどうかについて、equals()メソッドを使用して、古いPipelineComponentConfigurationと新しいPipelineComponentConfigurationを比較することによって判断します。equals()メソッドのデフォルト実装では、リフレクションを使用してすべての常駐フィールドの等価性を比較します。

    (PipelineComponentConfiguration全体をチェックするのではなく)特定のプロパティをチェックするコードを記述して、完全取得が必要かどうかを判断できます。完全取得を強制的に行うようにするには、常にtrueを返すコードを記述します。

  7. オプションで、validate()のデフォルト実装をオーバーライドします。IAS Serverがデータ型と制約を検証します(制約には、整数プロパティ用のminValueおよびmaxValueが含まれる場合があります)。validate()に記述するコードは、追加のカスタム検証を実行します。

    検証が失敗した場合、PipelineComponentConfiguration.validate()メソッドがコレクションValidationFailureオブジェクトを返します。

  8. 単体テストまたはマニピュレータ・ランタイムの実装で必要な場合には、追加した各フィールドに対して、getterメソッドおよびsetterメソッドを記述する必要がある場合もあります。

マニピュレータ用のパイプライン・コンポーネント構成の例

前述の手順の詳細は、<インストール・パス>\IAS\<バージョン>\sample\ias-extensions\src\main\com\endeca\ias\extension\sample\manipulator\substring\SubstringManipulatorConfig.javaのサンプル・データソース拡張機能を参照してください。