##### Coverage Report - org.seasar.cubby.plugin.Plugin

Classes in this File | Line Coverage | Branch Coverage | Complexity
Plugin |
N/A | N/A
N/A | N/A
| 1.0;1

1 |  |
     /*
2 |  |
      * Copyright 2004-2009 the Seasar Foundation and the Others.
3 |  |
      *
4 |  |
      * Licensed under the Apache License, Version 2.0 (the "License");
5 |  |
      * you may not use this file except in compliance with the License.
6 |  |
      * You may obtain a copy of the License at
7 |  |
      *
8 |  |
      *     http://www.apache.org/licenses/LICENSE-2.0
9 |  |
      *
10 |  |
      * Unless required by applicable law or agreed to in writing, software
11 |  |
      * distributed under the License is distributed on an "AS IS" BASIS,
12 |  |
      * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 |  |
      * either express or implied. See the License for the specific language
14 |  |
      * governing permissions and limitations under the License.
15 |  |
      */
16 |  |
     package org.seasar.cubby.plugin;
17 |  |
18 |  |
     import java.util.Set;
19 |  |
20 |  |
     import javax.servlet.ServletContext;
21 |  |
22 |  |
     import org.seasar.cubby.action.ActionResult;
23 |  |
     import org.seasar.cubby.spi.Provider;
24 |  |
25 |  |
     /**
26 |  |
      * プラグインを表すインターフェイスです。
27 |  |
      * <p>
28 |  |
      * プラグインは所属する Web アプリケーションのサーブレットに対する変更の通知を受け取ることができます。
29 |  |
      * </p>
30 |  |
      *
31 |  |
      * @author baba
32 |  |
      */
33 |  |
     public interface Plugin {
34 |  |
35 |  |
             // プラグインのライフサイクル
36 |  |
37 |  |
             /**
38 |  |
              * このプラグインを初期化します。
39 |  |
              * <p>
40 |  |
              * <code>CubbyFilter</code> がサービスを提供できるようになった時に実行されます。
41 |  |
              * </p>
42 |  |
              *
43 |  |
              * @param servletContext
44 |  |
              *            呼び出し元が現在実行している {@link ServletContext} への参照
45 |  |
              * @throws Exception
46 |  |
              *             プラグインの初期化に失敗した場合
47 |  |
              * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
48 |  |
              */
49 |  |
             void initialize(ServletContext servletContext) throws Exception;
50 |  |
51 |  |
             /**
52 |  |
              * このプラグインが提供するサービスプロバイダを取得します。
53 |  |
              * <p>
54 |  |
              * このプラグインが指定されたサービスを提供しない場合は <code>null</code> を返します。
55 |  |
              * </p>
56 |  |
              *
57 |  |
              * @param <S>
58 |  |
              *            サービスの型
59 |  |
              * @param service
60 |  |
              *            サービス
61 |  |
              * @return サービスプロバイダ
62 |  |
              */
63 |  |
             <S extends Provider> S getProvider(Class<S> service);
64 |  |
65 |  |
             /**
66 |  |
              * このプラグインが提供するサービスプロバイダのセットを返します。
67 |  |
              *
68 |  |
              * @return このプラグインが提供するサービスプロバイダのセット
69 |  |
              */
70 |  |
             Set<Class<? extends Provider>> getSupportedServices();
71 |  |
72 |  |
             /**
73 |  |
              * このプラグインを準備します。
74 |  |
              * <p>
75 |  |
              * プラグインの準備が完了した時に実行されます。
76 |  |
              * </p>
77 |  |
              *
78 |  |
              * @throws Exception
79 |  |
              *             プラグインの準備に失敗した場合
80 |  |
              */
81 |  |
             void ready() throws Exception;
82 |  |
83 |  |
             /**
84 |  |
              * このプラグインを破棄します。
85 |  |
              * <p>
86 |  |
              * <code>CubbyFilter</code> がサービスの提供を停止するときに実行されます。
87 |  |
              * </p>
88 |  |
              *
89 |  |
              * @see javax.servlet.Filter#destroy()
90 |  |
              */
91 |  |
             void destroy();
92 |  |
93 |  |
             // サーブレット要求の処理
94 |  |
95 |  |
             /**
96 |  |
              * 要求に対する処理を実行します。
97 |  |
              * <p>
98 |  |
              * このメソッドをオーバーライドすることで、要求に対する処理の実行をインターセプトすることができます。
99 |  |
              * </p>
100 |  |
              * <p>
101 |  |
              * このメソッド内で {@link RequestProcessingInvocation#proceed()}
102 |  |
              * メソッドを実行することで、別のプラグインの
103 |  |
              * {@link #invokeRequestProcessing(RequestProcessingInvocation)}
104 |  |
              * または要求に対する処理が実行されます。
105 |  |
              * </p>
106 |  |
              *
107 |  |
              * @param invocation
108 |  |
              *            要求に対する処理の実行情報
109 |  |
              * @throws Exception
110 |  |
              *             要求に対する処理の実行時に例外が発生した場合
111 |  |
              */
112 |  |
             void invokeRequestProcessing(RequestProcessingInvocation invocation)
113 |  |
                             throws Exception;
114 |  |
115 |  |
             /**
116 |  |
              * アクションメソッドを実行します。
117 |  |
              * <p>
118 |  |
              * このメソッドをオーバーライドすることで、アクションメソッドの実行をインターセプトすることができます。
119 |  |
              * </p>
120 |  |
              * <p>
121 |  |
              * このメソッド内で {@link ActionInvocation#proceed()} メソッドを実行することで、別のプラグインの
122 |  |
              * {@link #invokeAction(ActionInvocation)} またはアクションメソッドが実行されます。
123 |  |
              * </p>
124 |  |
              *
125 |  |
              * @param invocation
126 |  |
              *            アクションメソッドの実行情報
127 |  |
              * @return アクションの実行結果
128 |  |
              * @throws Exception
129 |  |
              *             アクションメソッドの実行時に例外が発生した場合
130 |  |
              */
131 |  |
             ActionResult invokeAction(ActionInvocation invocation) throws Exception;
132 |  |
133 |  |
             /**
134 |  |
              * アクションの実行結果を実行します。
135 |  |
              * <p>
136 |  |
              * このメソッドをオーバーライドすることで、アクションの実行結果の実行をインターセプトすることができます。
137 |  |
              * </p>
138 |  |
              * <p>
139 |  |
              * このメソッド内で {@link ActionResultInvocation#proceed()} メソッドを実行することで、別のプラグインの
140 |  |
              * {@link #invokeActionResult(ActionResultInvocation)} またはアクションの実行結果が実行されます。
141 |  |
              * </p>
142 |  |
              *
143 |  |
              * @param invocation
144 |  |
              *            アクションの実行結果の実行情報
145 |  |
              * @throws Exception
146 |  |
              *             アクションの実行結果の実行時に例外が発生した場合
147 |  |
              */
148 |  |
             void invokeActionResult(ActionResultInvocation invocation) throws Exception;
149 |  |
150 |  |
     }