##### Coverage Report - org.seasar.cubby.action.Path

Classes in this File | Line Coverage | Branch Coverage | Complexity
Path |
N/A | N/A
N/A | N/A
| 0.0;0

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.action;
17 |  |
18 |  |
     import java.lang.annotation.ElementType;
19 |  |
     import java.lang.annotation.Retention;
20 |  |
     import java.lang.annotation.RetentionPolicy;
21 |  |
     import java.lang.annotation.Target;
22 |  |
23 |  |
     /**
24 |  |
      * アクションメソッドのパス。
25 |  |
      * <p>
26 |  |
      * アクションメソッドを起動するためのパスを指定するアノテーションです。
27 |  |
      * </p>
28 |  |
      * <p>
29 |  |
      * 使用例
30 |  |
      *
31 |  |
      * <pre>
32 |  |
      * &#064;Path(&quot;fuga&quot;)
33 |  |
      * public class HogeAction {
34 |  |
      *         // -&gt; &quot;/fuga/index&quot;
35 |  |
      *         public ActionResult index() {
36 |  |
      *         }
37 |  |
      *
38 |  |
      *         // -&gt; &quot;/fuga/m1&quot;
39 |  |
      *         public ActionResult m1() {
40 |  |
      *         }
41 |  |
      *
42 |  |
      *         &#064;Path(&quot;list&quot;)
43 |  |
      *         // -&gt; &quot;/fuga/list&quot;
44 |  |
      *         public ActionResult m2() {
45 |  |
      *         }
46 |  |
      *
47 |  |
      *         &#064;Path(&quot;/xxx/yyy&quot;)
48 |  |
      *         // -&gt; &quot;/xxx/yyy&quot;
49 |  |
      *         public ActionResult m3() {
50 |  |
      *         }
51 |  |
      *
52 |  |
      *         &#064;Path(&quot;/{id}/edit&quot;)
53 |  |
      *         // {id}部分を要求パラメータに追加。
54 |  |
      *  // {id}部分の正規表現は省略されているためデフォルトの「[0-9a-zA-Z]+」。
55 |  |
      *  //　priority(優先度)はデフォルト値の「Integer.MAX_VALUE」。
56 |  |
      *         public ActionResult m4() {
57 |  |
      *         }
58 |  |
      *
59 |  |
      *         &#064;Path(&quot;/{userId,[a-z]+}/edit&quot;, priprity=0)
60 |  |
      *         // {userId}部分を要求パラメータに追加。
61 |  |
      *  // {userId}部分の正規表現は「[a-z]+」のため小文字アルファベットのみ。
62 |  |
      *  //　priority(優先度)は「0」のため、m4メソッドよりも先に適用される。
63 |  |
      *         public ActionResult m5() {
64 |  |
      *         }
65 |  |
      * }
66 |  |
      *
67 |  |
      * &#064;Path(&quot;/&quot;)
68 |  |
      * public class RootAction {
69 |  |
      *         // -&gt; &quot;/&quot;
70 |  |
      *         public ActionResult index() {
71 |  |
      *         }
72 |  |
      *
73 |  |
      *         // -&gt; &quot;/m1&quot;
74 |  |
      *         public ActionResult m1() {
75 |  |
      *         }
76 |  |
      *
77 |  |
      *         &#064;Path(&quot;list&quot;)
78 |  |
      *         // -&gt; &quot;/list&quot;
79 |  |
      *         public ActionResult m2() {
80 |  |
      *         }
81 |  |
      *
82 |  |
      *         &#064;Path(&quot;/xxx/yyy&quot;)
83 |  |
      *         // -&gt; &quot;/xxx/yyy&quot;
84 |  |
      *         public ActionResult m3() {
85 |  |
      *         }
86 |  |
      * }
87 |  |
      * </pre>
88 |  |
      *
89 |  |
      * </p>
90 |  |
      *
91 |  |
      * @author agata
92 |  |
      * @author baba
93 |  |
      */
94 |  |
     @Retention(RetentionPolicy.RUNTIME)
95 |  |
     @Target( { ElementType.METHOD, ElementType.TYPE })
96 |  |
     public @interface Path {
97 |  |
98 |  |
             /**
99 |  |
              * アクションメソッドのバインディング用パスを指定します。
100 |  |
              * <p>
101 |  |
              * URLはアクションクラスのパス＋アクションメソッドのパスで決定されます。
102 |  |
              * ただし、先頭が『/』の場合コンテキストルートからの絶対パスとして解釈されます。
103 |  |
              * </p>
104 |  |
              * <p>
105 |  |
              * {パラメータ名,正規表現}でプレースホルダーの指定ができます。
106 |  |
              * </p>
107 |  |
              * <p>
108 |  |
              * 正規表現にマッチした場合、マッチした箇所が指定されたパラメータ名に追加され、アクションメソッドが実行されます。
109 |  |
              * 正規表現は省略可能です。省略した場合「[a-zA-Z0-9]+」と同じ意味になります。
110 |  |
              * </p>
111 |  |
              * <p>
112 |  |
              * アクションメソッドのパスは「パスの正規表現+{@link Accept 要求メソッド}」で一意に特定できなければいけません。
113 |  |
              * 実行時に重複が発見されると例外が発生します。
114 |  |
              * </p>
115 |  |
              *
116 |  |
              * @return アクションメソッドのバインディング用パス
117 |  |
              * @see Accept
118 |  |
              */
119 |  |
             String value() default "";
120 |  |
121 |  |
             /**
122 |  |
              * アクションメソッドのバインディング時の優先度を設定します。
123 |  |
              * <p>
124 |  |
              * この値が小さいほど、優先度が高く先に適用されます。デフォルト値は{@link Integer#MAX_VALUE}です。
125 |  |
              * </p>
126 |  |
              * <p>
127 |  |
              * 手動でバインディングの設定が追加された場合、優先度は0から順番に振られます。手動追加よりも自動設定の優先度を上げたい場合は、
128 |  |
              * 負の値を設定してください。
129 |  |
              * </p>
130 |  |
              *
131 |  |
              * @return アクションメソッドのバインディング時の優先度
132 |  |
              */
133 |  |
             int priority() default Integer.MAX_VALUE;
134 |  |
135 |  |
     }