checkRetrieveStatus()
宣言的なメタデータコール retrieve() の状況を確認し、zip ファイルのコンテンツを返します。
構文
すべての API バージョン:
1RetrieveResult = metadatabinding.checkRetrieveStatus(ID id);API バージョン 34.0 以降では、このコールで省略可能な includeZip boolean パラメータを取ります。
1RetrieveResult = metadatabinding.checkRetrieveStatus(ID id, boolean includeZip);使用方法
checkRetrieveStatus() を使用して、メタデータ retrieve() 操作の進行状況を確認します。このメソッドが返す RetrieveResult オブジェクトは、非同期 retrieve() コールが完了したタイミングを示します。取得が完了している場合、RetrieveResult には zip ファイルコンテンツが含まれます。retrieve() コールを使用してメタデータコンポーネントを取得するには、次のプロセスを使用します。
- retrieve() コールを発行し、非同期的な取得を開始すると、AsyncResult オブジェクトが返されます。id 項目の値をメモし、次のステップで使用します。
- checkRetrieveStatus() コールを発行して、最初のステップの AsyncResult オブジェクトから id 値を渡します。返された RetrieveResult の done 項目の値をチェックします。true の場合、コールが完了して、次のステップに進むことを意味します。それ以外の場合は、done 項目が true になるまで、このステップを繰り返して checkRetrieveStatus() を再度コールします。
- 前のステップの checkRetrieveStatus() への最後のコールで返された RetrieveResult から zip ファイル (zipFile 項目) および他の必要な項目を取得します。
API バージョン 31.0 以降では、retrieve() コールを実行するプロセスが簡略化されました。取得操作の状況を取得する場合、retrieve() をコールしてから checkStatus() をコールする必要がなくなりました。代わりに、checkRetrieveStatus() のみをコールします。取得操作が進行中の場合、取得操作が完了するまで checkRetrieveStatus() を再コールします。checkStatus() コールは、API バージョン 30.0 以前では引き続きサポートされますが、API バージョン 31.0 以降では使用できません。
2 番目のプロセスでの Zip ファイルの取得
デフォルトでは、checkRetrieveStatus() は、取得が完了すると (RetrieveResult.isDone() == true)、この操作に対する最後のコールで zip ファイルを返してサーバから zip ファイルを削除します。削除後、後続の checkRetrieveStatus() へのコールで同じ取得操作を行っても zip ファイルは取得できません。API バージョン 34.0 以降、2 番目の boolean パラメータを checkRetrieveStatus() に渡して、zip ファイルを取得するかどうかを指定できます。こうすることで、取得操作の完了後に別のプロセスでファイルを取得できます。true を boolean パラメータに渡して zip ファイルを取得した後、zip ファイルはサーバから削除されます。たとえば、バックグラウンドファイル転送サービスは checkRetrieveStatus(id, true) をコールして zip ファイルを取得できます。このサービスは、ループで checkRetrieveStatus(id, false) をコールして取得状況をポーリングするもう 1 つのプロセスとは別個のものです。
1// First process: Poll the retrieval but don’t retrieve the zip file.
2AsyncResult asyncResult = metadataConnection.retrieve(retrieveRequest);
3String asyncResultId = asyncResult.getId();
4// Wait for the retrieve to complete
5int poll = 0;
6long waitTimeMilliSecs = ONE_SECOND;
7RetrieveResult result = null;
8do {
9 Thread.sleep(waitTimeMilliSecs);
10 // Check the status but don’t retrieve zip file.
11 result = metadataConnection.checkRetrieveStatus(asyncResultId, false);
12} while (!result.isDone());
13
14// Second process: Retrieve the zip file.
15// For example, this process can be a background file transfer service.
16// Retrieve the zip file.
17result = metadataConnection.checkRetrieveStatus(asyncResultId, true);
18// Get the zip file from the RetrieveResult (result) variable
19if (result.getStatus() == RetrieveStatus.Succeeded) {
20 ByteArrayInputStream bais = new ByteArrayInputStream(result.getZipFile());
21 // ...
22}サンプルコード —Java
このコールの使用例は、retrieve() のサンプルコードを参照してください。
引数
| 名前 | 型 | 説明 |
|---|---|---|
| id | ID | retrieve() コールによって返される AsyncResult オブジェクト、または checkRetrieveStatus() コールによって返される後続の RetrieveResult オブジェクトから取得した ID。 |
| includeZip | boolean | 省略可能。zip ファイルを取得するには、true に設定します。取得操作の完了後にのみ zip ファイルを取得できます。zip ファイルを取得した後、zip ファイルはサーバから削除されます。zip ファイルの取得を試行せずに取得の状況をチェックするには、false に設定します。省略すると、この引数はデフォルトの true に設定されます。つまり、取得が完了すると、checkRetrieveStatus() に対する最後のコールで zip ファイルが取得されます。 この引数は API バージョン 34.0 以降で使用できます。 |