Commit c46a24b5 by Kim Jinsung

Bug #55446【@Form】パスワード変更ができない

parent 43ab850c
...@@ -112,6 +112,7 @@ public class AcmsClient implements AcmsClientResponseListener { ...@@ -112,6 +112,7 @@ public class AcmsClient implements AcmsClientResponseListener {
private Date lastPresentTime = DateTimeUtil.getCurrentDate(); // 最後の通信時に取得したサーバの時間 private Date lastPresentTime = DateTimeUtil.getCurrentDate(); // 最後の通信時に取得したサーバの時間
private int mRetryCount;
/** /**
* {@link AcmsClient} のインスタンスを初期化します。 * {@link AcmsClient} のインスタンスを初期化します。
* @since 1.0.0 * @since 1.0.0
...@@ -832,14 +833,15 @@ public class AcmsClient implements AcmsClientResponseListener { ...@@ -832,14 +833,15 @@ public class AcmsClient implements AcmsClientResponseListener {
Logger.d(TAG, "[url : %s], [param : %s]", apiUrl, param==null?"":param.toHttpParameterString()); Logger.d(TAG, "[url : %s], [param : %s]", apiUrl, param==null?"":param.toHttpParameterString());
HttpTaskWorker<HttpParameterObject> httpTaskThread = null; HttpTaskWorker<HttpParameterObject> httpTaskThread = new HttpTaskWorker<HttpParameterObject>(methodName, apiUrl, param);
try { try {
long t = HttpRequestSender.DefaultConnectionTimeout * 2;
for (int i = 0; i < 3; i++, t *= 2) {
httpTaskThread = new HttpTaskWorker<HttpParameterObject>(methodName, apiUrl, param);
httpTaskThread.start(); httpTaskThread.start();
httpTaskThread.join(t); if (methodName.equals(AcmsApis.ApiGetMasterData)) { //マスタデータ取得失敗時、タイムアウト設定する
long connectionTimeout = HttpRequestSender.DefaultConnectionTimeout * (mRetryCount + 1);
Logger.i(TAG, "ApiGetMasterData mRetryCount = " + mRetryCount + ", time out = " + connectionTimeout);
httpTaskThread.join(connectionTimeout);
} else {
httpTaskThread.join(HttpRequestSender.DefaultConnectionTimeout);
} }
} catch (Exception e) { } catch (Exception e) {
Logger.e(TAG, e); Logger.e(TAG, e);
...@@ -884,14 +886,10 @@ public class AcmsClient implements AcmsClientResponseListener { ...@@ -884,14 +886,10 @@ public class AcmsClient implements AcmsClientResponseListener {
} }
String apiUrl = url; String apiUrl = url;
HttpMultipartTaskWorker<HttpMultipart> httpTaskThread = null; HttpMultipartTaskWorker<HttpMultipart> httpTaskThread = new HttpMultipartTaskWorker<HttpMultipart>(apiUrl, param);
try{ try {
long t = HttpRequestSender.DefaultConnectionTimeout * 2;
for (int i = 0; i < 3; i++, t *= 2) {
httpTaskThread = new HttpMultipartTaskWorker<HttpMultipart>(apiUrl, param);
httpTaskThread.start(); httpTaskThread.start();
httpTaskThread.join(t); httpTaskThread.join(HttpRequestSender.DefaultConnectionTimeout);
}
} catch (Exception e) { } catch (Exception e) {
Logger.d(TAG, ExceptionDetailMessage.SERVER_IS_DISCONNECTED); Logger.d(TAG, ExceptionDetailMessage.SERVER_IS_DISCONNECTED);
// サーバとの通信中、予期せぬ問題が発生しました。(1) // サーバとの通信中、予期せぬ問題が発生しました。(1)
...@@ -1041,11 +1039,13 @@ public class AcmsClient implements AcmsClientResponseListener { ...@@ -1041,11 +1039,13 @@ public class AcmsClient implements AcmsClientResponseListener {
/** /**
* ACMSから、マスタデータ情報を取得します。 * ACMSから、マスタデータ情報を取得します。
* @param param {@link AcmsParameters} オブジェクトです。 * @param param {@link AcmsParameters} オブジェクトです。
* @param retryCount 失敗カウント
* @return コンテンツバージョン情報を格納した {@link ContentDto} のリストを返します。 * @return コンテンツバージョン情報を格納した {@link ContentDto} のリストを返します。
* 情報の変更がない(HttpStatus 304)場合はnullを返す。 * 情報の変更がない(HttpStatus 304)場合はnullを返す。
* @since 1.0.0 * @since 1.0.0
*/ */
public MasterDataJSON masterData(AcmsParameters param) throws NetworkDisconnectedException, AcmsException { public MasterDataJSON masterData(AcmsParameters param, int retryCount) throws NetworkDisconnectedException, AcmsException {
this.mRetryCount = retryCount;
HttpResponse response = send(AcmsApis.ApiGetMasterData, param); HttpResponse response = send(AcmsApis.ApiGetMasterData, param);
MasterDataJSON json = new MasterDataJSON(response.httpResponseBody); MasterDataJSON json = new MasterDataJSON(response.httpResponseBody);
return json; return json;
......
...@@ -166,7 +166,22 @@ import jp.agentec.adf.util.DateTimeUtil; ...@@ -166,7 +166,22 @@ import jp.agentec.adf.util.DateTimeUtil;
Logger.d(TAG, "before fetchDate : " + ABVDataCache.getInstance().tempMasterDataFetchDate); Logger.d(TAG, "before fetchDate : " + ABVDataCache.getInstance().tempMasterDataFetchDate);
// CMSでメンテナンスされるHACCPマスタデータをアプリから取得できるようにJSONファイルを生成する。 // CMSでメンテナンスされるHACCPマスタデータをアプリから取得できるようにJSONファイルを生成する。
String fetchDate = masterDataLogic.initializeMasterData(ABVDataCache.getInstance().tempMasterDataFetchDate); String fetchDate = null;
//失敗時、3回リトライ処理
for (int i = 0; i < 3; i++) {
try {
fetchDate = masterDataLogic.initializeMasterData(ABVDataCache.getInstance().tempMasterDataFetchDate, i);
break;
} catch (Exception e) {
Logger.e(TAG, "initializeMasterData Exception", e);
if (i == 2) { //3回目に例外処理投げる。
throw e;
} else {
Thread.sleep(500); //0.5秒間隔でリトライ処理を実行
}
}
}
Logger.d(TAG, "after fetchDate : " + fetchDate); Logger.d(TAG, "after fetchDate : " + fetchDate);
if (fetchDate != null) { if (fetchDate != null) {
// マスタデータの最新更新された時のFetchDateを一時に保存する。 // マスタデータの最新更新された時のFetchDateを一時に保存する。
......
...@@ -8,6 +8,7 @@ import jp.agentec.abook.abv.bl.acms.client.json.MasterDataJSON; ...@@ -8,6 +8,7 @@ import jp.agentec.abook.abv.bl.acms.client.json.MasterDataJSON;
import jp.agentec.abook.abv.bl.acms.client.parameters.FetchDateParameters; import jp.agentec.abook.abv.bl.acms.client.parameters.FetchDateParameters;
import jp.agentec.abook.abv.bl.common.ABVEnvironment; import jp.agentec.abook.abv.bl.common.ABVEnvironment;
import jp.agentec.abook.abv.bl.common.exception.ABVException; import jp.agentec.abook.abv.bl.common.exception.ABVException;
import jp.agentec.abook.abv.bl.common.exception.ABVExceptionCode;
import jp.agentec.abook.abv.bl.common.exception.AcmsException; import jp.agentec.abook.abv.bl.common.exception.AcmsException;
import jp.agentec.abook.abv.bl.common.exception.NetworkDisconnectedException; import jp.agentec.abook.abv.bl.common.exception.NetworkDisconnectedException;
import jp.agentec.abook.abv.bl.common.log.Logger; import jp.agentec.abook.abv.bl.common.log.Logger;
...@@ -21,16 +22,18 @@ public class MasterDataLogic extends AbstractLogic { ...@@ -21,16 +22,18 @@ public class MasterDataLogic extends AbstractLogic {
* マスタデータ情報をサーバから受信し、ローカルにJSONで保存する。で、 * マスタデータ情報をサーバから受信し、ローカルにJSONで保存する。で、
* データ単位で項目はあるが要素が0件のデータは削除、 * データ単位で項目はあるが要素が0件のデータは削除、
* データ単位で項目が存在しないデータは変更無し * データ単位で項目が存在しないデータは変更無し
* @param lastFetchDate 最終実行日付
* @param retryCount 失敗カウント
* @throws ABVException キャッシュにユーザ情報がありません。再度ログインする必要があります。 * @throws ABVException キャッシュにユーザ情報がありません。再度ログインする必要があります。
* @throws AcmsException * @throws AcmsException
* @throws Exception その他、例外です。 * @throws Exception その他、例外です。
* @since 1.0.0 * @since 1.0.0
*/ */
public String initializeMasterData(String lastFetchDate) throws AcmsException, NetworkDisconnectedException, IOException { public String initializeMasterData(String lastFetchDate, int retryCount) throws AcmsException, NetworkDisconnectedException, IOException {
String fetchDate = null; String fetchDate = null;
try { try {
FetchDateParameters param = new FetchDateParameters(cache.getMemberInfo().sid, lastFetchDate); FetchDateParameters param = new FetchDateParameters(cache.getMemberInfo().sid, lastFetchDate);
MasterDataJSON masterDataJson = AcmsClient.getInstance(cache.getUrlPath(), networkAdapter).masterData(param); MasterDataJSON masterDataJson = AcmsClient.getInstance(cache.getUrlPath(), networkAdapter).masterData(param, retryCount);
// get MAP // get MAP
Map<String, String> masterDataMap = masterDataJson.masterDataMap; Map<String, String> masterDataMap = masterDataJson.masterDataMap;
......
...@@ -42,10 +42,10 @@ public class HttpRequestSender { ...@@ -42,10 +42,10 @@ public class HttpRequestSender {
/** /**
* ホストに接続するまでのタイムアウト時間をミリ秒で設定します。<br> * ホストに接続するまでのタイムアウト時間をミリ秒で設定します。<br>
* デフォルトは5,000ミリ秒(5秒)です。 * デフォルトは20,000ミリ秒(20秒)です。
* @since 1.0.0 * @since 1.0.0
*/ */
public static final int DefaultConnectionTimeout = 5 * 1000; public static final int DefaultConnectionTimeout = 20 * 1000;
/** /**
* 通信に利用する既定の文字セットです。UTF-8となります。 * 通信に利用する既定の文字セットです。UTF-8となります。
* @since 1.0.0 * @since 1.0.0
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment