Kaynağa Gözat

Task #1297 [Android] 에러 처리 관련 소스 정리

http://www.junstarok.com/redmine/issues/1297
sanghoonkwon 7 yıl önce
ebeveyn
işleme
95e846663b

+ 22 - 16
app/src/main/java/kr/co/hanwha/hifive/network/HFNetworkUtil.java

@@ -909,22 +909,7 @@ public class HFNetworkUtil extends HanwhaNetworkUtil implements HFNetworkContrac
     HanwhaNetworkCallback mCommonHanwhaNetworkCallback = new HanwhaNetworkCallback() {
         @Override
         public void onSuccess(Object response) {
-            if (mHanwhaNetworkCallback != null) {
-                if (response != null && response instanceof BaseData) {
-                    BaseData baseData = (BaseData) response;
-                    if (baseData != null) {
-                        if (baseData.getRtn_code() == RESULT_SUCCESS) {
-                            mHanwhaNetworkCallback.onSuccess(response);
-                        } else {
-                            mHanwhaNetworkCallback.onFailure(new HanwhaNetworkError(baseData.getRtn_code(), baseData.getRtn_message()));
-                        }
-                    } else {
-                        mHanwhaNetworkCallback.onFailure(new HanwhaNetworkError());
-                    }
-                } else {
-                    mHanwhaNetworkCallback.onFailure(new HanwhaNetworkError());
-                }
-            }
+            onCommonSuccess(response);
         }
 
         @Override
@@ -943,6 +928,27 @@ public class HFNetworkUtil extends HanwhaNetworkUtil implements HFNetworkContrac
         }
     };
 
+    private void onCommonSuccess(Object response) {
+        if (mHanwhaNetworkCallback == null) return;
+
+        if (response != null && response instanceof BaseData) {
+            BaseData baseData = (BaseData) response;
+            if (baseData != null) {
+                if (baseData.getRtn_code() == RESULT_SUCCESS) {
+                    mHanwhaNetworkCallback.onSuccess(response);
+                } else if (baseData.getRtn_code() == HanwhaNetworkError.CODE_SYSTEM_EXCEPTION) {
+                    mHanwhaNetworkCallback.onFailure(new HanwhaNetworkError());
+                } else {
+                    mHanwhaNetworkCallback.onFailure(new HanwhaNetworkError(baseData.getRtn_code(), baseData.getRtn_message()));
+                }
+            } else {
+                mHanwhaNetworkCallback.onFailure(new HanwhaNetworkError());
+            }
+        } else {
+            mHanwhaNetworkCallback.onFailure(new HanwhaNetworkError());
+        }
+    }
+
     /**************************************************
      * Header
      **************************************************/

+ 64 - 51
app/src/main/java/kr/co/hanwha/hifive/network/hanwha/HanwhaNetworkClient.java

@@ -268,65 +268,78 @@ public class HanwhaNetworkClient<T> {
             }
 
             @Override
-            public void onResponse(Call call, final Response response) throws IOException {
+            public void onResponse(Call call, final Response response) {
                 if (BuildConfig.DEBUG) {
                     Log.i(getClass().getSimpleName(), "onResponse");
                     Log.i(getClass().getSimpleName(), response.toString());
                     Log.i(getClass().getSimpleName(), "########################################");
                 }
+
                 if (response.code() == HanwhaNetworkError.CODE_SUCCESS) {
-                    try {
-                        String result = response.body().string();
-                        final Object data = new Gson().fromJson(result, object);
-                        if (BuildConfig.DEBUG) {
-                            Log.i(getClass().getSimpleName(), "HanwhaNetworkClient = response:" + result);
-                            Log.i(getClass().getSimpleName(), "HanwhaNetworkClient = JSON: " + data.toString());
-                        }
-                        runOnUiThread(new Runnable() {
-                            @Override
-                            public void run() {
-                                callback.onSuccess(data);
-                                callback.onPostExecute();
-                            }
-                        });
-
-                    } catch (final IOException e) {
-                        e.printStackTrace();
-                        runOnUiThread(new Runnable() {
-                            @Override
-                            public void run() {
-                                callback.onFailure(new HanwhaNetworkError(e));
-                                callback.onPostExecute();
-                            }
-                        });
-                    } catch (final IllegalArgumentException e2) {
-                        e2.printStackTrace();
-                        runOnUiThread(new Runnable() {
-                            @Override
-                            public void run() {
-                                callback.onFailure(new HanwhaNetworkError(e2));
-                                callback.onPostExecute();
-                            }
-                        });
-                    } catch (final JsonSyntaxException e3) {
-                        e3.printStackTrace();
-                        runOnUiThread(new Runnable() {
-                            @Override
-                            public void run() {
-                                callback.onFailure(new HanwhaNetworkError(e3));
-                                callback.onPostExecute();
-                            }
-                        });
-                    }
+                    onResponseSuccess(object, response, callback);
                 } else {
-                    runOnUiThread(new Runnable() {
-                        @Override
-                        public void run() {
-                            callback.onFailure(new HanwhaNetworkError(response.code(), response.message(), response));
-                            callback.onPostExecute();
-                        }
-                    });
+                    onResponseFailure(response, callback);
+                }
+            }
+        });
+    }
+
+    private void onResponseSuccess(@NonNull final Class<T> object, final Response response, @Nullable final HanwhaNetworkCallback callback) {
+        try {
+            String result = response.body().string();
+            final Object data = new Gson().fromJson(result, object);
+            if (BuildConfig.DEBUG) {
+                Log.i(getClass().getSimpleName(), "HanwhaNetworkClient = response:" + result);
+                Log.i(getClass().getSimpleName(), "HanwhaNetworkClient = JSON: " + data.toString());
+            }
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    callback.onSuccess(data);
+                    callback.onPostExecute();
                 }
+            });
+
+        } catch (final IOException e) {
+            e.printStackTrace();
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    callback.onFailure(new HanwhaNetworkError(e));
+                    callback.onPostExecute();
+                }
+            });
+        } catch (final IllegalArgumentException e2) {
+            e2.printStackTrace();
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    callback.onFailure(new HanwhaNetworkError(e2));
+                    callback.onPostExecute();
+                }
+            });
+        } catch (final JsonSyntaxException e3) {
+            e3.printStackTrace();
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    callback.onFailure(new HanwhaNetworkError(e3));
+                    callback.onPostExecute();
+                }
+            });
+        }
+    }
+
+    private void onResponseFailure(final Response response, @NonNull final HanwhaNetworkCallback callback) {
+        onResponseFailure(new HanwhaNetworkError(response.code(), response.message(), response), callback);
+    }
+
+    private void onResponseFailure(@NonNull final HanwhaNetworkError error, @NonNull final HanwhaNetworkCallback callback) {
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                callback.onFailure(error);
+                callback.onPostExecute();
             }
         });
     }