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.routing; 17 18 import java.util.Collection; 19 import java.util.Map; 20 21 import org.seasar.cubby.action.RequestMethod; 22 23 /** 24 * パスに対応するアクションメソッドを解決するためのクラスです。 25 * 26 * @author baba 27 */ 28 public interface PathResolver { 29 30 /** 31 * 指定されたパスとメソッドからフォワードするための情報を抽出します。 32 * <p> 33 * パスにマッチするパターンがない場合は <code>null</code> を返します。 34 * </p> 35 * 36 * @param path 37 * パス 38 * @param requestMethod 39 * HTTPメソッド 40 * @param characterEncoding 41 * URI のエンコーディング 42 * @return フォワード情報 43 */ 44 PathInfo getPathInfo(String path, String requestMethod, 45 String characterEncoding); 46 47 /** 48 * ルーティング情報の一覧を取得します。 ルーティング情報は優先度順にソートされています。 49 * 50 * @return ルーティング情報の一覧 51 */ 52 Collection<Routing> getRoutings(); 53 54 /** 55 * 指定されたアクションクラスのルーティング情報を登録します。 56 * 57 * @param actionClass 58 * アクションクラス 59 * @throws RoutingException 60 * ルーティング情報の登録に失敗した場合 61 */ 62 void add(Class<?> actionClass); 63 64 /** 65 * 指定されたアクションクラスのコレクションからすべてのルーティング情報を登録します。 66 * 67 * @param actionClasses 68 * アクションクラスのコレクション 69 * @throws RoutingException 70 * ルーティング情報の登録に失敗した場合 71 */ 72 void addAll(Collection<Class<?>> actionClasses); 73 74 /** 75 * ルーティング情報を手動登録します。 76 * 77 * @param actionPath 78 * アクションのパス 79 * @param actionClass 80 * アクションクラス 81 * @param actionMethodName 82 * アクションメソッド名 83 * @param requestMethod 84 * 要求メソッド 85 * @param onSubmit 86 * アクションメソッドへ振り分けるための要求パラメータ名 87 * @param priority 88 * プライオリティ 89 * @throws RoutingException 90 * ルーティング情報の登録に失敗した場合 91 */ 92 void add(String actionPath, Class<?> actionClass, String actionMethodName, 93 RequestMethod requestMethod, String onSubmit, int priority); 94 95 /** 96 * 登録されたルーティング情報をクリアします。 97 */ 98 void clear(); 99 100 /** 101 * 指定されたアクションクラス、メソッド名、パラメータからパスを逆引きします。 102 * 103 * @param actionClass 104 * アクションクラス 105 * @param methodName 106 * メソッド名 107 * @param parameters 108 * パラメータ 109 * @param characterEncoding 110 * URI のエンコーディング 111 * @return リダイレクト用のパス 112 * @throws RoutingException 113 * ルーティング情報の逆引きに失敗した場合 114 */ 115 String reverseLookup(Class<?> actionClass, String methodName, 116 Map<String, String[]> parameters, String characterEncoding); 117 118 }