org.seasar.util.io
クラス TraversalUtil

java.lang.Object
  上位を拡張 org.seasar.util.io.TraversalUtil

public abstract class TraversalUtil
extends Object

ファイルシステム上やJarファイル中に展開されている、クラスやリソースの集まりを横断的に処理するためのユーティリティです。

対象となるファイルシステム上のディレクトリや、Jarファイルの一などはURLによって与えられます。 URLのプロトコルに応じて適切な Traverserが返されるので、そのメソッドを呼び出すことでクラスやリソースをトラバースすることが出来ます。

次のプロトコルをサポートしています。

作成者:
koichik
関連項目:
URLUtil.toCanonicalProtocol(String), ClassTraversalUtil, ResourceTraversalUtil

入れ子のクラスの概要
static class TraversalUtil.FileSystemTraverser
          ファイルシステム上のリソースの集まりを扱うオブジェクトです。
static class TraversalUtil.JarFileTraverser
          Jarファイル中のリソースの集まりを扱うオブジェクトです。
static interface TraversalUtil.TraverserFactory
          Traverserのインスタンスを作成するファクトリです。
static class TraversalUtil.VfsZipTraverser
          JBossAS5のvfszipプロトコルで表されるリソースの集まりを扱うオブジェクトです。
 
フィールドの概要
protected static Traverser[] EMPTY_ARRAY
          空のTraverserの配列です。
protected static ConcurrentMap<String,TraversalUtil.TraverserFactory> traverserFactories
          URLのプロトコルをキー、TraversalUtil.TraverserFactoryを値とするマッピングです。
 
コンストラクタの概要
TraversalUtil()
           
 
メソッドの概要
static void addTraverserFactory(String protocol, TraversalUtil.TraverserFactory factory)
          TraversalUtil.TraverserFactoryを追加します。
protected static File getBaseDir(URL url, String baseName)
          ファイルを表すURLからルートパッケージの上位となるベースディレクトリを求めて返します。
static Traverser getTraverser(Class<?> referenceClass)
          指定のクラスを基点とする、リソースやクラスの集まりを扱うTraverserを返します。
static Traverser getTraverser(String rootDir)
          指定のディレクトリを基点とする、クラスやリソースの集まりを扱うTraverserを返します。
protected static Traverser getTraverser(URL url, String rootPackage, String rootDir)
          URLを扱うTraverserを作成して返します。
static Traverser[] getTraversers(String rootPackage)
          指定のルートパッケージを基点とする、クラスやリソースの集まりを扱うTraverserの配列を返します。
protected static String toClassFile(String className)
          クラス名をクラスファイルのパス名に変換して返します。
protected static String toDirectoryName(String packageName)
          パッケージ名をディレクトリ名に変換して返します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

EMPTY_ARRAY

protected static final Traverser[] EMPTY_ARRAY
空のTraverserの配列です。


traverserFactories

protected static final ConcurrentMap<String,TraversalUtil.TraverserFactory> traverserFactories
URLのプロトコルをキー、TraversalUtil.TraverserFactoryを値とするマッピングです。

コンストラクタの詳細

TraversalUtil

public TraversalUtil()
メソッドの詳細

addTraverserFactory

public static void addTraverserFactory(String protocol,
                                       TraversalUtil.TraverserFactory factory)
TraversalUtil.TraverserFactoryを追加します。

パラメータ:
protocol - URLのプロトコル。nullや空文字列であってはいけません
factory - プロトコルに対応するTraverserのファクトリ。nullであってはいけません

getTraverser

public static Traverser getTraverser(Class<?> referenceClass)
指定のクラスを基点とする、リソースやクラスの集まりを扱うTraverserを返します。

このメソッドが返すTraverserは、指定されたクラスをFQNで参照可能なパスをルートとします。 例えば指定されたクラスが foo.Barで、そのクラスファイルが classes/foo/Bar.classの場合、 このメソッドが返す Traverserclassesディレクトリ以下のリソースの集合を扱います。

パラメータ:
referenceClass - 基点となるクラス。nullであってはいけません
戻り値:
指定のクラスを基点とする、クラスやリソースの集まりを扱うTraverser

getTraverser

public static Traverser getTraverser(String rootDir)
指定のディレクトリを基点とする、クラスやリソースの集まりを扱うTraverserを返します。

パラメータ:
rootDir - ルートディレクトリ。nullや空文字列であってはいけません
戻り値:
指定のディレクトリを基点とする、クラスやリソースの集まりを扱うTraverser

getTraversers

public static Traverser[] getTraversers(String rootPackage)
指定のルートパッケージを基点とする、クラスやリソースの集まりを扱うTraverserの配列を返します。

パラメータ:
rootPackage - ルートパッケージ
戻り値:
指定のルートパッケージを基点とするリソースの集まりを扱うTraverserの配列

getTraverser

protected static Traverser getTraverser(URL url,
                                        String rootPackage,
                                        String rootDir)
URLを扱うTraverserを作成して返します。

URLのプロトコルが未知の場合はnullを返します。

パラメータ:
url - リソースのURL
rootPackage - ルートパッケージ
rootDir - ルートディレクトリ
戻り値:
URLを扱うTraverser

toDirectoryName

protected static String toDirectoryName(String packageName)
パッケージ名をディレクトリ名に変換して返します。

パラメータ:
packageName - パッケージ名
戻り値:
ディレクトリ名

toClassFile

protected static String toClassFile(String className)
クラス名をクラスファイルのパス名に変換して返します。

パラメータ:
className - クラス名
戻り値:
クラスファイルのパス名

getBaseDir

protected static File getBaseDir(URL url,
                                 String baseName)
ファイルを表すURLからルートパッケージの上位となるベースディレクトリを求めて返します。

パラメータ:
url - ファイルを表すURL
baseName - ベース名
戻り値:
ルートパッケージの上位となるベースディレクトリ


Copyright © 2010-2012 The Seasar Foundation. All Rights Reserved.