// Path: retrofitcachelibrx2/src/main/java/ren/yale/android/retrofitcachelibrx2/bean/CacheConfig.java
// public class CacheConfig {
// 
//     private TimeUnit timeUnit = TimeUnit.NANOSECONDS;
//     private Long time = 0L;
//     private boolean forceCacheNoNet = true;
// 
//     public TimeUnit getTimeUnit() {
//         return timeUnit;
//     }
// 
//     public void setTimeUnit(TimeUnit timeUnit) {
//         this.timeUnit = timeUnit;
//     }
// 
//     public Long getTime() {
//         return time;
//     }
// 
//     public void setTime(Long time) {
//         this.time = time;
//     }
// 
//     public boolean isForceCacheNoNet() {
//         return forceCacheNoNet;
//     }
// 
//     public void setForceCacheNoNet(boolean forceCacheNoNet) {
//         this.forceCacheNoNet = forceCacheNoNet;
//     }
// }
// 
// Path: retrofitcachelibrx2/src/main/java/ren/yale/android/retrofitcachelibrx2/util/LogUtil.java
// public class LogUtil {
//    private static String TAG="retrofitcache";
//     private static final  boolean DEBUG = false;
//     public static void d(String text){
//             android.util.Log.d(TAG,text);
//     }
//     public static void w(String text){
//         android.util.Log.w(TAG,text);
//     }
// 
//     public static void l(Exception e){
//         if (DEBUG){
//            e.printStackTrace();
//         }else{
//             android.util.Log.w(TAG,e.toString());
//         }
//     }
// }


import android.content.Context;
import android.text.TextUtils;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.Vector;
import java.util.concurrent.TimeUnit;
import okhttp3.Request;
import ren.yale.android.retrofitcachelibrx2.anno.Cache;
import ren.yale.android.retrofitcachelibrx2.anno.Mock;
import ren.yale.android.retrofitcachelibrx2.bean.CacheConfig;
import ren.yale.android.retrofitcachelibrx2.util.LogUtil;
import retrofit2.Retrofit;
        if (mUrlMap!=null){
            CacheConfig config = mUrlMap.get(url);
            if (config!=null){
                return config;
            }
        }
        for (Map serviceMethodCache:mVector) {

            for (Object entry:serviceMethodCache.keySet()){
                Object o = serviceMethodCache.get(entry);
                try {

                    if (mUrlAragsMap.containsKey(url)){
                        Object[] args = (Object[]) mUrlAragsMap.get(url);
                        String reqUrl =  buildRequestUrl(o,args);
                        if (reqUrl.equals(url)){
                            Method m = (Method) entry;
                            Cache cache =  m.getAnnotation(Cache.class);
                            if (cache!=null){
                                TimeUnit timeUnit =  mDefaultTimeUnit;
                                if (cache.timeUnit() != TimeUnit.NANOSECONDS){
                                    timeUnit = cache.timeUnit();
                                }
                                long t = mDefaultTime;
                                if (cache.time() != -1){
                                    t = cache.time();
                                }
                                long tm =  timeUnit.toSeconds(t);
                                cacheConfig.setTime(tm);
                                cacheConfig.setForceCacheNoNet(cache.forceCacheNoNet());
// Path: retrofitcachelibrx2/src/main/java/ren/yale/android/retrofitcachelibrx2/bean/CacheConfig.java
// public class CacheConfig {
// 
//     private TimeUnit timeUnit = TimeUnit.NANOSECONDS;
//     private Long time = 0L;
//     private boolean forceCacheNoNet = true;
// 
//     public TimeUnit getTimeUnit() {
//         return timeUnit;
//     }
// 
//     public void setTimeUnit(TimeUnit timeUnit) {
//         this.timeUnit = timeUnit;
//     }
// 
//     public Long getTime() {
//         return time;
//     }
// 
//     public void setTime(Long time) {
//         this.time = time;
//     }
// 
//     public boolean isForceCacheNoNet() {
//         return forceCacheNoNet;
//     }
// 
//     public void setForceCacheNoNet(boolean forceCacheNoNet) {
//         this.forceCacheNoNet = forceCacheNoNet;
//     }
// }
// 
// Path: retrofitcachelibrx2/src/main/java/ren/yale/android/retrofitcachelibrx2/util/LogUtil.java
// public class LogUtil {
//    private static String TAG="retrofitcache";
//     private static final  boolean DEBUG = false;
//     public static void d(String text){
//             android.util.Log.d(TAG,text);
//     }
//     public static void w(String text){
//         android.util.Log.w(TAG,text);
//     }
// 
//     public static void l(Exception e){
//         if (DEBUG){
//            e.printStackTrace();
//         }else{
//             android.util.Log.w(TAG,e.toString());
//         }
//     }
// }


// Path: retrofitcachelibrx2/src/main/java/ren/yale/android/retrofitcachelibrx2/RetrofitCache.java
import android.content.Context;
import android.text.TextUtils;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.Vector;
import java.util.concurrent.TimeUnit;
import okhttp3.Request;
import ren.yale.android.retrofitcachelibrx2.anno.Cache;
import ren.yale.android.retrofitcachelibrx2.anno.Mock;
import ren.yale.android.retrofitcachelibrx2.bean.CacheConfig;
import ren.yale.android.retrofitcachelibrx2.util.LogUtil;
import retrofit2.Retrofit;

        if (mUrlMap!=null){
            CacheConfig config = mUrlMap.get(url);
            if (config!=null){
                return config;
            }
        }
        for (Map serviceMethodCache:mVector) {

            for (Object entry:serviceMethodCache.keySet()){
                Object o = serviceMethodCache.get(entry);
                try {

                    if (mUrlAragsMap.containsKey(url)){
                        Object[] args = (Object[]) mUrlAragsMap.get(url);
                        String reqUrl =  buildRequestUrl(o,args);
                        if (reqUrl.equals(url)){
                            Method m = (Method) entry;
                            Cache cache =  m.getAnnotation(Cache.class);
                            if (cache!=null){
                                TimeUnit timeUnit =  mDefaultTimeUnit;
                                if (cache.timeUnit() != TimeUnit.NANOSECONDS){
                                    timeUnit = cache.timeUnit();
                                }
                                long t = mDefaultTime;
                                if (cache.time() != -1){
                                    t = cache.time();
                                }
                                long tm =  timeUnit.toSeconds(t);
                                cacheConfig.setTime(tm);
                                cacheConfig.setForceCacheNoNet(cache.forceCacheNoNet());
                                getUrlMap().put(url, cacheConfig);