001package org.opengion.hayabusa.io; 002 003import javax.servlet.http.HttpSession; 004 005import org.opengion.hayabusa.common.HybsSystemException; 006 007/** 008 * クラウド別のクラス生成 009 * 010 * @og.rev 5.9.25.0 (2017/10/06) 新規作成 011 * @og.group 012 * 013 * @version 5.0 014 * @author T.OTA 015 * @sinse JDK7.0 016 */ 017public class StorageAPIFactory { 018 /** 019 * デフォルトコンストラクタを private 化しておきます。 020 */ 021 private StorageAPIFactory(){}; 022 023 /** 024 * 指定されたクラウド対象クラスを生成する 025 * 026 * @param storage クラウド種別 027 * @param container コンテナ 028 * @param hsession セッション 029 * @return StorageAPIを継承したクラス 030 */ 031 public static StorageAPI newStorageAPI(String storage, String container, HttpSession hsession){ 032 StorageAPI storageapi; 033 try{ 034 // StorageAPIの実装クラスをstorage別に生成する 035 Object[] args = new Object[]{container, hsession}; 036 storageapi = (StorageAPI)Class.forName( "org.opengion.plugin.cloud.StorageAPI_" + storage ) 037 .getConstructor(String.class, HttpSession.class) 038 .newInstance(args); 039 }catch(Exception e){ 040 StringBuilder sbErrMsg = new StringBuilder(); 041 sbErrMsg.append("クラウドストレージ用のクラス生成に失敗しました。storage:"); 042 sbErrMsg.append(storage); 043 sbErrMsg.append(" container:"); 044 sbErrMsg.append(container); 045 sbErrMsg.append(" errInfo:"); 046 sbErrMsg.append(e); 047 sbErrMsg.append(" errCause:"); 048 sbErrMsg.append(e.getCause()); 049 throw new HybsSystemException(sbErrMsg.toString()); 050 } 051 return storageapi; 052 } 053}