Coverage report

  %line %branch
tsukuba_bunko.resource.DeserializerMapping
81% 
93% 

 1  
 /*
 2  
  * Common Library for TBAS Softwares
 3  
  *
 4  
  * All Rights Reserved.
 5  
  * (c) Copyright 2002 by Tsukuba Bunko.
 6  
  *
 7  
  * $Id: DeserializerMapping.java,v 1.1 2005/07/11 12:49:18 ppoi Exp $
 8  
  */
 9  
 package tsukuba_bunko.resource;
 10  
 
 11  
 import	java.util.Enumeration;
 12  
 import	java.util.Map;
 13  
 import	java.util.ResourceBundle;
 14  
 
 15  
 
 16  
 /**
 17  
  * データ型名と <code>ResourceDeserializer</code> のマップを管理します。このクラスは thread-safe ではありませんので、malti-thread
 18  
  * 環境で使用する場合は、同期の制御を行ってください。
 19  
  * @author	$Author: ppoi $
 20  
  * @version	$Revision: 1.1 $
 21  
  */
 22  
 public class DeserializerMapping	{
 23  
 
 24  
 	/**
 25  
 	 * データ型名 - ResourceDeserializer マップ
 26  
 	 */
 27  80
 	private Map	_registry = new java.util.HashMap( 89 );
 28  
 
 29  
 
 30  
 	/**
 31  
 	 * <code>DeserializerMapping</code> のインスタンスを作成します。
 32  
 	 */
 33  
 	public DeserializerMapping()
 34  
 	{
 35  80
 		super();
 36  80
 	}
 37  
 
 38  
 
 39  
 	/**
 40  
 	 * データ型 <code>dataType</code> に <code>ResourceDeserializer</code> クラス
 41  
 	 * <code>deserializerClass</code> を関連づけます。
 42  
 	 * @param	typeName	データ型名
 43  
 	 * @param	deserializer	使用する <code>ResourceDeserializer</code>
 44  
 	 * @exception	IllegalArgumentException	<code>deserializerClass</code> が妥当な <code>ResourceDeserializer</code> サブクラスではない場合
 45  
 	 */
 46  
 	public void register( String typeName, ResourceDeserializer deserializer )
 47  
 	{
 48  720
 		deserializer.setDeserializerMapping( this );
 49  720
 		deserializer.setTypeName( typeName );
 50  720
 		_registry.put( typeName, deserializer );
 51  720
 	}
 52  
 
 53  
 	/**
 54  
 	 * データ型 <code>typeName</code> に関連づけられた <code>ResourceDeserializer</code> クラスを削除します。
 55  
 	 * @param	typeName
 56  
 	 */
 57  
 	public void unregister( String typeName )
 58  
 	{
 59  0
 		_registry.remove( typeName );
 60  0
 	}
 61  
 
 62  
 	/**
 63  
 	 * <code>dataType</code> に関連づけられた <code>ResourceDeserializer</code> を取得します。
 64  
 	 * @param	dataType	データ型名
 65  
 	 * @return	関連づけられている <code>ResourceDeserializer</code>
 66  
 	 * @exception	IllegalStateException	<code>ValueDeserialzier</code> の取得に失敗した場合
 67  
 	 */
 68  
 	public ResourceDeserializer getResourceDeserializer( String dataType )
 69  
 	{
 70  170
 		return (ResourceDeserializer)_registry.get( dataType );
 71  
 	}
 72  
 
 73  
 	/**
 74  
 	 * 指定された reosurce bundle を使用して <code>DeserializerMapping</code> のインスタンスを作成します。
 75  
 	 * @param	bundleName	ResourceBundle のベースクラス名
 76  
 	 * @return	作成された <code>DeserializerMapping</code> のインスタンス
 77  
 	 */
 78  
 	public static DeserializerMapping newInstance( String bundleName )
 79  
 	{
 80  80
 		DeserializerMapping	mapping = new DeserializerMapping();
 81  
 
 82  80
 		ResourceBundle	source = ResourceBundle.getBundle( bundleName );
 83  115
 		ClassLoader	cl = DeserializerMapping.class.getClassLoader();
 84  
 
 85  80
 		Enumeration	keys = source.getKeys();
 86  80
 		String	key = null;
 87  800
 		while( keys.hasMoreElements() )	{
 88  720
 			key = (String)keys.nextElement();
 89  720
 			String	className = source.getString( key );
 90  
 			try	{
 91  720
 				mapping.register( key, (ResourceDeserializer)cl.loadClass(className).newInstance() );
 92  
 			}
 93  0
 			catch( Exception e )	{
 94  0
 				System.err.println( "[libtbas] ERROR : illegal class \"" + className + "\"" );
 95  0
 				e.printStackTrace();
 96  720
 			}
 97  720
 		}
 98  
 
 99  80
 		return mapping;
 100  
 	}
 101  
 
 102  
 	/**
 103  
 	 * リソースで指定された内容から <code>DeserializerMapping</code> のインスタンスを作成します。
 104  
 	 * @return	作成された <code>DeserializerMapping</code> のインスタンス
 105  
 	 */
 106  
 	public static DeserializerMapping newInstance()
 107  
 	{
 108  70
 		return newInstance( System.getProperty("libtbas.resource.mapping", "tsukuba_bunko.resource.mapping") );
 109  
 	}
 110  
 }

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