• R/O
  • SSH
  • HTTPS

opengion: 提交


Commit MetaInfo

修訂1713 (tree)
時間2019-03-23 10:12:27
作者chatrun

Log Message

(empty log message)

Change Summary

  • delete: trunk/opengionV7/uap/webapps/ge/WEB-INF/lib/penguin7.0.2.1.jar
  • delete: trunk/opengionV7/uap/webapps/ge/WEB-INF/lib/fukurou7.0.2.1.jar
  • delete: trunk/opengionV7/uap/webapps/ge/WEB-INF/lib/resourceGE7.0.2.1.jar
  • delete: trunk/opengionV7/uap/webapps/ge/WEB-INF/lib/hayabusa7.0.2.1.jar
  • delete: trunk/opengionV7/uap/webapps/ge/WEB-INF/lib/jspCommon7.0.2.1.jar
  • delete: trunk/opengionV7/uap/webapps/ge/WEB-INF/lib/plugin7.0.2.1.jar
  • delete: trunk/opengionV7/uap/webapps/gf/WEB-INF/lib/penguin7.0.2.1.jar
  • delete: trunk/opengionV7/uap/webapps/gf/WEB-INF/lib/fukurou7.0.2.1.jar
  • delete: trunk/opengionV7/uap/webapps/gf/WEB-INF/lib/resourceGF7.0.2.1.jar
  • delete: trunk/opengionV7/uap/webapps/gf/WEB-INF/lib/hayabusa7.0.2.1.jar
  • delete: trunk/opengionV7/uap/webapps/gf/WEB-INF/lib/jspCommon7.0.2.1.jar
  • delete: trunk/opengionV7/uap/webapps/gf/WEB-INF/lib/plugin7.0.2.1.jar
  • delete: trunk/opengionV7/uap/webapps/gf/src/org/opengion/plugin/cloud/StorageAPI_bluemix.java

差異

--- trunk/opengionV7/uap/webapps/gf/src/org/opengion/plugin/cloud/StorageAPI_bluemix.java (revision 1712)
+++ trunk/opengionV7/uap/webapps/gf/src/org/opengion/plugin/cloud/StorageAPI_bluemix.java (nonexistent)
@@ -1,469 +0,0 @@
1-package org.opengion.plugin.cloud;
2-
3- // import java.io.IOException;
4- // import java.text.SimpleDateFormat;
5- // import java.util.Iterator;
6-import java.io.InputStream;
7-import java.util.ArrayList;
8-import java.util.HashMap;
9-import java.util.List;
10-import java.util.Map;
11-
12-import javax.servlet.http.HttpSession;
13-
14-import org.opengion.hayabusa.io.StorageAPI;
15- // import org.opengion.fukurou.system.Closer;
16- // import org.opengion.fukurou.util.FileUtil;
17- // import org.opengion.hayabusa.common.HybsSystemException;
18- // 5.9.25.0 (2017/10/06) とりあえず、拡張jar は入れていません。
19- // import org.openstack4j.api.OSClient.OSClientV3;
20- // import org.openstack4j.api.storage.ObjectStorageService;
21- // import org.openstack4j.model.common.DLPayload;
22- // import org.openstack4j.model.common.Identifier;
23- // import org.openstack4j.model.common.Payload;
24- // import org.openstack4j.model.storage.object.SwiftObject;
25- // import org.openstack4j.model.storage.object.options.ObjectListOptions;
26- // import org.openstack4j.model.storage.object.options.ObjectLocation;
27- // import org.openstack4j.openstack.OSFactory;
28- // import org.openstack4j.openstack.internal.OSClientSession;
29-
30- // import com.fasterxml.jackson.databind.JsonNode;
31- // import com.fasterxml.jackson.databind.ObjectMapper;
32-
33-/**
34- * bluemix用のクラウドストレージ操作実装
35- *
36- * bluemix上での利用を想定しているため、ユーザ情報は環境変数VCAP_SERVICESから取得可能という前提です。
37- * この環境変数はbluemix上でオブジェクトストレージを接続設定する事で自動設定されます。
38- *
39- * このクラスのコンパイルには
40- * openstack4j-core及び openstack4j-okhttpが必要です。
41- * 実行にはそれ以外に以下のモジュールが必要です。(バージョンは作成時のもの)
42- * btf-1.2.jar ,guava-20.0.jar, jackson-coreutils-1.6.jar, jackson-dataformat-yaml-2.8.8.jar, json-patch-1.9.jar, jsr305-2.0.0.jar
43- * ,msg-simple-1.1.jar, okhttp-3.2.0.jar, okio-1.6.0.jar, slf4j-api-1.7.21.jar, slf4j-simple-1.7.21.jar, snakeyaml-1.15.jar
44- *
45- *
46- * @og.group クラウド
47- * @og.rev 5.9.25.0 (2017/10/06) 新規作成
48- *
49- * @version 5.0
50- * @author T.OTA
51- * @since JDK7.0
52- */
53-public class StorageAPI_bluemix implements StorageAPI {
54-
55- // // クラス変数
56- // /** コンテナ名 */
57- // private final String container ;
58- // /* ユーザ名 */
59- // private final String username ;
60- // /** パスワード */
61- // private final String password ;
62- // /** ドメインID */
63- // private final String domainId ;
64- // /** プロジェクトID */
65- // private final String projectId ;
66- // /** 認証URL */
67- // private final String auth_url ;
68-
69- /**
70- * コンストラクタ。
71- *
72- * bluemixに設定されているユーザ情報の取得。
73- * システムIDを名称としたコンテナを作成する。
74- *
75- * @param container コンテナ
76- * @param hsession セッション
77- */
78- public StorageAPI_bluemix( final String container, final HttpSession hsession) {
79-/***********
80- // クラス変数に設定
81- this.container = container;
82- // CloudFoundryの環境変数から、接続情報を取得します。
83- String env = System.getenv("VCAP_SERVICES");
84- ObjectMapper mapper = new ObjectMapper();
85- try {
86- JsonNode node = mapper.readTree(env);
87- Iterator<JsonNode> userNode = node.get("Object-Storage").elements();
88- JsonNode cred = (JsonNode) userNode.next().get("credentials");
89-
90- // ユーザ名
91- username = cred.get("username").textValue();
92- // パスワード
93- password = cred.get("password").textValue();
94- // ドメインID
95- domainId = cred.get("domainId").textValue();
96- // プロジェクトID
97- projectId = cred.get("projectId").textValue();
98- // 認証url
99- auth_url = cred.get("auth_url").textValue() + "/v3";
100- } catch (Exception e) {
101- String errMsg = "VCAP_SERVICESの取得に失敗しました。ストレージと接続されているか確認して下さい。" + e;
102- throw new HybsSystemException(errMsg);
103- }
104-
105- // コンテナの作成(既に存在する場合は、そのまま通過する)
106- try{
107- ObjectStorageService objectStorage = auth(hsession);
108- objectStorage.containers().create(container);
109- }catch(Exception e){
110- StringBuilder sbErrMsg = new StringBuilder();
111- sbErrMsg.append("コンテナの作成に失敗しました。container:");
112- sbErrMsg.append(container);
113- sbErrMsg.append(" errInfo:");
114- sbErrMsg.append(e);
115- throw new HybsSystemException(sbErrMsg.toString());
116- }
117-*************/
118- }
119-
120- /**
121- * 認証処理
122- * @param hsession セッション
123- * @return ObjectStorageService
124- */
125-/***********
126- private ObjectStorageService auth(HttpSession hsession) {
127- OSClientSession<?, ?> session = OSClientSession.getCurrent();
128- if (session != null) {
129- // 既に認証されている場合は、認証情報を返却
130- return session.objectStorage();
131- } else {
132- // セッションから認証トークンを取得
133- String token = (String) hsession.getAttribute(SESSION_CLOUD_TOKEN);
134- // 認証トークンがある場合は、トークンによる認証を行う
135- if (token != null && !"".equals(token)) {
136- // トークンによる認証
137- OSClientV3 os = OSFactory.builderV3().endpoint(auth_url).token(token)
138- .scopeToProject(Identifier.byId(projectId))
139- .authenticate();
140- return os.objectStorage();
141- }
142- }
143-
144- // ユーザによる認証(スレッド間はOSClientSessionに保持される)
145- Identifier domainIdentifier = Identifier.byId(domainId);
146- OSClientV3 os = OSFactory.builderV3().endpoint(auth_url).credentials(username, password, domainIdentifier)
147- .scopeToProject(Identifier.byId(projectId))
148- .authenticate();
149-
150- // 認証トークンの保持
151- hsession.setAttribute(SESSION_CLOUD_TOKEN, os.getToken().getId());
152-
153- ObjectStorageService objectStorage = os.objectStorage();
154-
155- return objectStorage;
156- }
157-*************/
158-
159- /**
160- * アップロード。
161- *
162- * @param partInputStream アップロード対象のストリーム
163- * @param updFolder アップロードフォルタ名
164- * @param updFileName アップロードファイル名
165- * @param hsession セッション
166- */
167- @Override
168- public void add( final InputStream partInputStream, final String updFolder, final String updFileName, final HttpSession hsession) {
169-/***********
170- // 認証
171- ObjectStorageService objectStorage = auth(hsession);
172- // アップロードストレーム
173- Payload<InputStream> payload = new InputPayload<InputStream>(partInputStream);
174- try {
175- // アップロード処理
176- objectStorage.objects().put(this.container, updFolder + updFileName, payload);
177- } catch (Exception e) {
178- StringBuilder sbErrMsg = new StringBuilder();
179- sbErrMsg.append("ストレージへのファイルアップロードに失敗しました。updFolder:");
180- sbErrMsg.append(updFolder);
181- sbErrMsg.append(" updFileName:");
182- sbErrMsg.append(updFileName);
183- sbErrMsg.append(" errInfo:");
184- sbErrMsg.append(e);
185- throw new HybsSystemException(sbErrMsg.toString());
186- } finally {
187- // クローズ処理
188- Closer.ioClose(partInputStream);
189- Closer.ioClose(payload);
190- }
191-*************/
192- }
193-
194- /**
195- * ダウンロード。
196- *
197- * @param filePath ダウンロード対象のファイルパス
198- * @param hsession セッション
199- * @return ストリーム
200- */
201- @Override
202- public InputStream get( final String filePath, final HttpSession hsession) {
203-/***********
204- // 認証
205- ObjectStorageService objectStorage = auth(hsession);
206- DLPayload payload = null;
207- // ダウンロード
208- try {
209- SwiftObject swiftObject = objectStorage.objects().get(ObjectLocation.create(this.container, filePath));
210- payload = swiftObject.download();
211- } catch (Exception e) {
212- StringBuilder sbErrMsg = new StringBuilder();
213- sbErrMsg.append("ストレージからのファイルダウンロードに失敗しました。filePath:");
214- sbErrMsg.append(filePath);
215- sbErrMsg.append(" errInfo:");
216- sbErrMsg.append(e);
217- throw new HybsSystemException(sbErrMsg.toString());
218- }
219-
220- return payload.getInputStream();
221-*************/
222- return null;
223- }
224-
225- /**
226- * コピー。
227- *
228- * @param oldFilePath コピー元ファイルパス
229- * @param newFilePath コピー先ファイルパス
230- * @param hsession セッション
231- */
232- @Override
233- public void copy( final String oldFilePath, final String newFilePath, final HttpSession hsession) {
234-/***********
235- // コピー処理
236- Payload<InputStream> payload = null;
237- InputStream is = null;
238- try {
239- // openstack4jにcopyメソッドは実装されているが、全角文字が利用できないため、
240- // ダウンロード・アップロードで対応
241- // コピー元情報の取得
242- is = get(oldFilePath, hsession);
243- // コピー先に登録
244- payload = new InputPayload<InputStream>(is);
245-
246- // 認証
247- ObjectStorageService objectStorage = auth(hsession);
248- objectStorage.objects().put(this.container, newFilePath, payload);
249- } catch (Exception e) {
250- StringBuilder sbErrMsg = new StringBuilder();
251- sbErrMsg.append("ストレージのファイルコピー処理に失敗しました。oldFilePath:");
252- sbErrMsg.append(oldFilePath);
253- sbErrMsg.append(" newFilePath:");
254- sbErrMsg.append(newFilePath);
255- sbErrMsg.append(" errInfo:");
256- sbErrMsg.append(e);
257- throw new HybsSystemException(sbErrMsg.toString());
258- }finally{
259- // クローズ処理
260- Closer.ioClose(payload);
261- Closer.ioClose(is);
262- }
263-*************/
264- }
265-
266- /**
267- * 削除。
268- *
269- * @param filePath 削除ファイルのパス
270- * @param hsession セッション
271- */
272- @Override
273- public void delete( final String filePath, final HttpSession hsession) {
274-/***********
275- // 認証
276- ObjectStorageService objectStorage = auth(hsession);
277- // 削除
278- try {
279- objectStorage.objects().delete(ObjectLocation.create(this.container, filePath));
280- } catch (Exception e) {
281- StringBuilder sbErrMsg = new StringBuilder();
282- sbErrMsg.append("ストレージのファイル削除に失敗しました。filePath:");
283- sbErrMsg.append(filePath);
284- sbErrMsg.append(" errInfo:");
285- sbErrMsg.append(e);
286- throw new HybsSystemException(sbErrMsg.toString());
287- }
288-*************/
289- }
290-
291- /**
292- * ファイル名変更。
293- *
294- * @param filePath ファイルパス
295- * @param oldFileName 変更前ファイル名
296- * @param newFileName 変更後ファイル名
297- * @param useBackup 変更後ファイル名が既に存在する場合のバックアップ作成フラグ
298- * @param hsession セッション
299- */
300- public void rename( final String filePath, final String oldFileName, final String newFileName, final boolean useBackup,final HttpSession hsession) {
301-/***********
302- String newFilePath = filePath + newFileName;
303- String oldFilePath = filePath + oldFileName;
304-
305- // 変更先のファイルが存在した場合の処理
306- if (exists(newFilePath, hsession)) {
307- // バックアップ作成する場合
308- if (useBackup) {
309- // バックアップファイル名は、元のファイル名(拡張子含む) + "_" + 現在時刻のlong値 + "." +
310- // 元のファイルの拡張子
311- String bkupPath = filePath + "_backup/" + newFileName + "_" + System.currentTimeMillis()
312- + FileUtil.EXTENSION_SEPARATOR + FileUtil.getExtension(newFileName);
313- // バックアップフォルダに移動
314- copy(newFilePath, bkupPath, hsession);
315- }
316- }
317-
318- // コピー
319- copy(oldFilePath, newFilePath, hsession);
320- // 削除
321- delete(oldFilePath, hsession);
322-*************/
323- }
324-
325- /**
326- * ファイル存在チェック。
327- *
328- * @param filePath ファイルパス
329- * @param hsession セッション
330- * @return true:存在 false:存在しない
331- */
332- @Override
333- public boolean exists( final String filePath, final HttpSession hsession) {
334- boolean blnRtn = true;
335-/***********
336-
337- // 認証
338- ObjectStorageService objectStorage = auth(hsession);
339-
340- try {
341- SwiftObject so = objectStorage.objects().get(ObjectLocation.create(this.container, filePath));
342-
343- if (so == null) {
344- // ファイルが取得できなかった場合は、falseを設定
345- blnRtn = false;
346- }
347- } catch (Exception e) {
348- StringBuilder sbErrMsg = new StringBuilder();
349- sbErrMsg.append("ストレージのファイル取得に失敗しました。filePath:");
350- sbErrMsg.append(filePath);
351- sbErrMsg.append(" errInfo:");
352- sbErrMsg.append(e);
353- throw new HybsSystemException(sbErrMsg.toString());
354- }
355-
356-*************/
357- return blnRtn;
358- }
359-
360- /**
361- * ファイル一覧取得。
362- *
363- * @param startsWith パスの前方一致
364- * @param hsession セッション
365- * @return ファイルパス一覧
366- */
367- @Override
368- public String[] list( final String startsWith, final HttpSession hsession) {
369- final List<String> rtnList = new ArrayList<String>();
370-/***********
371- // 認証
372- ObjectStorageService objectStorage = auth(hsession);
373- List<? extends SwiftObject> list = null;
374- try{
375- // オプションの指定
376- ObjectListOptions olo = ObjectListOptions.create().startsWith(startsWith);
377- // 一覧の取得
378- list = objectStorage.objects().list(this.container, olo);
379- for(SwiftObject so: list){
380- rtnList.add(so.getName());
381- }
382- } catch (Exception e){
383- StringBuilder sbErrMsg = new StringBuilder();
384- sbErrMsg.append("ファイル一覧の取得に失敗しました。startsWith:");
385- sbErrMsg.append(startsWith);
386- sbErrMsg.append(" errInfo:");
387- sbErrMsg.append("e");
388- throw new HybsSystemException(sbErrMsg.toString());
389- }
390-*************/
391- return rtnList.toArray(new String[rtnList.size()]);
392- }
393-
394- /**
395- * ファイル情報取得。
396- *
397- * @param path ファイルパス
398- * @param hsession セッション
399- * @return ファイル情報格納Map
400- */
401- @Override
402- public Map<String, String> getInfo( final String path, final HttpSession hsession) {
403- final Map<String, String> rtnMap = new HashMap<String,String>();
404-/***********
405-
406- // 認証
407- ObjectStorageService objectStorage = auth(hsession);
408-
409- SwiftObject so = null;
410- try{
411- // ファイルオブジェクトの取得
412- so = objectStorage.objects().get(ObjectLocation.create(this.container, path));
413- }catch(Exception e){
414- StringBuilder sbErrMsg = new StringBuilder();
415- sbErrMsg.append("ファイルの取得に失敗しました。path:");
416- sbErrMsg.append(path);
417- sbErrMsg.append(" errInfo:");
418- sbErrMsg.append(e);
419- throw new HybsSystemException(sbErrMsg.toString());
420- }
421- SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
422-
423- // ファイルサイズ
424- rtnMap.put(FILEINFO_SIZE, String.valueOf(so.getSizeInBytes()));
425- // 最終更新時刻
426- rtnMap.put(FILEINFO_LASTMODIFIED, sdf.format(so.getLastModified()));
427-
428-*************/
429- return rtnMap;
430- }
431-
432-
433- /**
434- * payloadを利用するための内部クラス。
435- * (AWSやAzureで利用するか不明なので、とりあえず内部クラスとしておきます)
436- *
437- * @param <T>
438- */
439- // public class InputPayload<T extends InputStream> implements Payload<T>{
440- // private T stream = null;
441- //
442- // /**
443- // * @param stream
444- // */
445- // public InputPayload(T stream) {
446- // this.stream = stream;
447- // }
448- //
449- // @Override
450- // public void close() throws IOException {
451- // stream.close();
452- // }
453- //
454- // @Override
455- // public T open() {
456- // return stream;
457- // }
458- //
459- // @Override
460- // public void closeQuietly() {
461- // Closer.ioClose(stream);
462- // }
463- //
464- // @Override
465- // public T getRaw() {
466- // return stream;
467- // }
468- // }
469-}
Show on old repository browser