001package org.opengion.hayabusa.io; 002 003import jakarta.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 * @since JDK7.0 016 */ 017public final 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( final Exception ex ) { 040 } catch( final Throwable th ) { // PMD : 6.9.9.4 (2018/10/01) 041 final StringBuilder sbErrMsg = new StringBuilder() 042 .append("クラウドストレージ用のクラス生成に失敗しました。storage:").append(storage) 043 .append(" container:").append(container) 044 .append(" errInfo:" ).append(th) 045 .append(" errCause:" ).append(th.getCause()); 046 throw new HybsSystemException(sbErrMsg.toString()); 047 } 048 return storageapi; 049 } 050}