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(final String storage, final String container, final HttpSession hsession){ 032 StorageAPI storageapi; 033 try{ 034 // StorageAPIの実装クラスをstorage別に生成する 035 final 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 final StringBuilder sbErrMsg = new StringBuilder() 041 .append("クラウドストレージ用のクラス生成に失敗しました。storage:") 042 .append(storage) 043 .append(" container:") 044 .append(container) 045 .append(" errInfo:") 046 .append(e) 047 .append(" errCause:") 048 .append(e.getCause()); 049 throw new HybsSystemException(sbErrMsg.toString()); 050 } 051 return storageapi; 052 } 053}