Coverage report

  %line %branch
tsukuba_bunko.util.ResourceLocator
0% 
0% 

 1  
 /*
 2  
  * Common Library for TBAS Softwares
 3  
  * Language: Java
 4  
  *
 5  
  * All Rights Reserved.
 6  
  * (c) Copyright 2003 by Tsukuba Bunko.
 7  
  *
 8  
  * $Id: ResourceLocator.java,v 1.1 2005/07/11 12:49:19 ppoi Exp $
 9  
  */
 10  
 package tsukuba_bunko.util;
 11  
 
 12  
 import	java.io.File;
 13  
 
 14  
 
 15  
 /**
 16  
  * リソースのファイルシステム上での位置(ファイルパス)を取得する機能を提供します。
 17  
  * @author	$Author: ppoi $
 18  
  * @version	$Revision: 1.1 $
 19  
  */
 20  
 public abstract class ResourceLocator	{
 21  
 
 22  
 	/**
 23  
 	 * インスタンス化する <code>ResourceLocator</code> 実装クラスを指定するシステムプロパティ:"tsukuba_bunko.util.ResourceLocator.impl"
 24  
 	 */
 25  
 	public static final String	IMPL_CLASS_PROPERTY = "tsukuba_bunko.util.ResourceLocator.impl";
 26  
 
 27  
 
 28  
 	/**
 29  
 	 * <code>ResourceLocator</code> のインスタンスを生成します。
 30  
 	 */
 31  
 	protected ResourceLocator()
 32  
 	{
 33  0
 		super();
 34  0
 	}
 35  
 
 36  
 
 37  
 	/**
 38  
 	 * <code>resourceName</code> で指定されるリソースを現在のスレッドのコンテクストで検索し、そのファイルシステム上での位置を取得します。
 39  
 	 * @param	resourceName	ファイルパスを取得するリソースのリソース名
 40  
 	 * @return	リソースのファイルパス。検出不能な場合 <code>null</code>
 41  
 	 * @throws	ResourceDetectionException	リソースの検出に失敗した場合
 42  
 	 */
 43  
 	public File findLocation( String resourceName )
 44  
 		throws ResourceDetectionException
 45  
 	{
 46  0
 		return findLocation( resourceName, Thread.currentThread().getContextClassLoader() );
 47  
 	}
 48  
 
 49  
 	/**
 50  
 	 * <code>resourceName</code> で指定されるリソースを指定されたクラスローダで検索し、そのファイルシステム上での位置を取得します。
 51  
 	 * @param	resourceName	ファイルパスを取得するリソースのリソース名
 52  
 	 * @param	classLoader	リソースを検索するクラスローダ
 53  
 	 * @return	リソースのファイルパス
 54  
 	 * @throws	ResourceDetectionException	リソースの検出に失敗した場合
 55  
 	 */
 56  
 	public abstract File findLocation( String resourceName, ClassLoader classLoader )
 57  
 		throws ResourceDetectionException;
 58  
 
 59  
 
 60  
 //
 61  
 //	ファクトリ
 62  
 //
 63  
 	/**
 64  
 	 * <code>ResourceLocator</code> インスタンスを生成します。
 65  
 	 * 生成される <code>ResourceLocator</code> インスタンスのクラスはシステムプロパティを元に決定されます。プロパティ名は {@link #IMPL_CLASS_PROPERTY} を参照してください。
 66  
 	 * システムプロパティが設定されていない場合、デフォルトの <code>ResourceLocator</code> 実装クラスが使用されます。
 67  
 	 * @return	生成された <code>ResourceLocator</code> インスタンス
 68  
 	 * @throws	ClassNotFoundException	指定されたクラスが現在のスレッドのコンテクストで見つからなかった場合
 69  
 	 * @throws	InstantiationException	実装クラスのインスタンス化に失敗した場合
 70  
 	 * @throws	IllegalAccessException	実装クラス、またはそのコンストラクタのアクセス権が public でない場合
 71  
 	 */
 72  
 	public static ResourceLocator newInstance()
 73  
 		throws ClassNotFoundException, InstantiationException, IllegalAccessException
 74  
 	{
 75  0
 		String	className = System.getProperty( ResourceLocator.IMPL_CLASS_PROPERTY, "tsukuba_bunko.util.locator.ResourceLocatorImpl" );
 76  0
 		return newInstance( Thread.currentThread().getContextClassLoader().loadClass(className) );
 77  
 	}
 78  
 
 79  
 	/**
 80  
 	 * <code>ResourceLocator</code> インスタンスを生成します。
 81  
 	 * @param	implClass	<code>ResourceLocator</code> 実装クラス
 82  
 	 * @return	生成された <code>ResourceLocator</code> インスタンス
 83  
 	 * @throws	InstantiationException	実装クラスのインスタンス化に失敗した場合
 84  
 	 * @throws	IllegalAccessException	実装クラス、またはそのコンストラクタのアクセス権が public でない場合
 85  
 	 */
 86  
 	public static ResourceLocator newInstance( Class implClass )
 87  
 		throws InstantiationException, IllegalAccessException
 88  
 	{
 89  0
 		if( implClass == null )	{
 90  0
 			throw new IllegalArgumentException( "implement class is not specified." );
 91  
 		}
 92  0
 		else if( !ResourceLocator.class.isAssignableFrom(implClass) )	{
 93  0
 			throw new IllegalArgumentException( implClass.getName() + " is not extends from ResourceLocator." );
 94  
 		}
 95  
 
 96  0
 		return (ResourceLocator)implClass.newInstance();
 97  
 	}
 98  
 }

This report is generated by jcoverage, Maven and Maven JCoverage Plugin.