1 package rydeen.spi;
2
3 import rydeen.Arguments;
4 import rydeen.Processor;
5 import rydeen.ProcessorBuildException;
6 import rydeen.utils.Author;
7 import rydeen.utils.Organization;
8 import rydeen.utils.Provider;
9
10 /**
11 * {@link Processor <code>Processor</code>}を提供するためのSPIです.
12 *
13 * @author Haruaki Tamada
14 */
15 public interface ProcessorService{
16 /**
17 * このSPIが返す{@link Processor <code>Processor</code>}の初期設定値を返します.
18 * 返された{@link Arguments <code>Arguments</code>}オブジェクトを変更しても他に影響を与えません.
19 * @return 初期設定値
20 */
21 public Arguments getDefaultArguments();
22
23 /**
24 * このSPIが返す{@link Processor <code>Processor</code>}の解説を返します.
25 * @return このSPIが対応するProcessorの解説
26 */
27 public String getDescription();
28
29 /**
30 * {@link Processor <code>Processor</code>}を返します.
31 * 返されるProcessorのメソッドは並行して呼び出される可能性があります.
32 * そのため,並行して呼び出されても影響を受けないよう,実装しておかなければなりません.
33 * @return 作成されたProcessorオブジェクト
34 */
35 public Processor getProcessor() throws ProcessorBuildException;
36
37 /**
38 * このSPIが対応する{@link Processor <code>Processor</code>}の名前を返します.
39 * @return 対応するProcessorの名前
40 */
41 public String getProcessorName();
42
43 /**
44 * このSPI並びに{@link Processor <code>Processor</code>}
45 * の作成者のリストを返します.
46 * @return 作成者のリスト
47 */
48 public Author[] getAuthors();
49
50 /**
51 * このSPI並びに{@link Processor <code>Processor</code>}
52 * の作成者の団体を返します.
53 * @return 作成者の所属する団体
54 */
55 public Organization getOrganization();
56
57 /**
58 * このSPI並びに{@link Processor <code>Processor</code>}
59 * の作成者のリストとその団体のオブジェクトを返します.
60 * @return 作成者とその団体を収めたオブジェクト
61 */
62 public Provider getProvider();
63 }