// Path: app/src/main/java/com/example/ericliu/weather2016/application/MyApplication.java
// public class MyApplication extends Application {
// 
//     private static RepoComponent component;
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
// 
//         RepoComponent repoComponent = DaggerRepoComponent.builder()
//                 .repoModule(new RepoModule())
//                 .appModule(new AppModule(this))
//                 .netModule(new NetModule())
//                 .build();
// 
//         component = repoComponent;
//     }
// 
//     public static  RepoComponent getComponent() {
//         return component;
//     }
// 
// 
// }
// 
// Path: app/src/main/java/com/example/ericliu/weather2016/common/NetworkConstants.java
// public interface NetworkConstants {
// 
//     String weatherApiBase = "http://api.openweathermap.org/data/2.5/weather";
// 
//     String apikey = "a1cf06c52e1cc8cd586382594c71ea0a";
// }
// 
// Path: app/src/main/java/com/example/ericliu/weather2016/framework/repository/Repository.java
// public interface Repository<T> {
//     T get(Specification specification) throws Exception;
// 
//     void add(T item) throws Exception;
// 
//     void add(Iterable<T> items) throws Exception;
// 
//     void update(T item) throws Exception;
// 
//     void remove(T item) throws Exception;
// 
//     void remove(Specification specification) throws Exception;
// 
//     List<T> query(Specification specification) throws Exception;
// }
// 
// Path: app/src/main/java/com/example/ericliu/weather2016/framework/repository/RepositoryResult.java
// public class RepositoryResult<T> {
//     private  Specification specification;
//     private T data;
//     private Throwable throwable;
// 
//     public Specification getSpecification() {
//         return specification;
//     }
// 
//     public void setSpecification(Specification specification) {
//         this.specification = specification;
//     }
// 
//     public T getData() {
//         return data;
//     }
// 
//     public void setData(T data) {
//         this.data = data;
//     }
// 
//     public Throwable getThrowable() {
//         return throwable;
//     }
// 
//     public void setThrowable(Throwable throwable) {
//         this.throwable = throwable;
//     }
// 
// 
// }
// 
// Path: app/src/main/java/com/example/ericliu/weather2016/framework/repository/Specification.java
// public interface Specification {
// }
// 
// Path: app/src/main/java/com/example/ericliu/weather2016/model/WeatherResult.java
// public class WeatherResult {
// 
//     public Weather[] weather;
//     public String name;
// }
// 
// Path: app/src/main/java/com/example/ericliu/weather2016/model/WeatherSpecification.java
// public class WeatherSpecification implements Specification, Serializable {
//     public static final String ARG_WEATHER_SPECIFICATION = "com.ericliu.arg.weather.specification";
// 
//     private String cityName;
// 
//     public String getCityName() {
//         return cityName;
//     }
// 
//     public void setCityName(String cityName) {
//         this.cityName = cityName;
//     }
// }


import android.app.Application;
import android.util.Log;
import com.example.ericliu.weather2016.application.MyApplication;
import com.example.ericliu.weather2016.common.NetworkConstants;
import com.example.ericliu.weather2016.framework.repository.Repository;
import com.example.ericliu.weather2016.framework.repository.RepositoryResult;
import com.example.ericliu.weather2016.framework.repository.Specification;
import com.example.ericliu.weather2016.model.WeatherResult;
import com.example.ericliu.weather2016.model.WeatherSpecification;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.List;
import javax.inject.Inject;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
        return null;
    }

    @Override
    public void add(WeatherResult item) {

    }

    @Override
    public void add(Iterable<WeatherResult> items) {

    }

    @Override
    public void update(WeatherResult item) {

    }

    @Override
    public void remove(WeatherResult item) {

    }

    @Override
    public void remove(Specification specification) {

    }

    @Override
    public List<WeatherResult> query(Specification specification) {
// Path: app/src/main/java/com/example/ericliu/weather2016/application/MyApplication.java
// public class MyApplication extends Application {
// 
//     private static RepoComponent component;
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
// 
//         RepoComponent repoComponent = DaggerRepoComponent.builder()
//                 .repoModule(new RepoModule())
//                 .appModule(new AppModule(this))
//                 .netModule(new NetModule())
//                 .build();
// 
//         component = repoComponent;
//     }
// 
//     public static  RepoComponent getComponent() {
//         return component;
//     }
// 
// 
// }
// 
// Path: app/src/main/java/com/example/ericliu/weather2016/common/NetworkConstants.java
// public interface NetworkConstants {
// 
//     String weatherApiBase = "http://api.openweathermap.org/data/2.5/weather";
// 
//     String apikey = "a1cf06c52e1cc8cd586382594c71ea0a";
// }
// 
// Path: app/src/main/java/com/example/ericliu/weather2016/framework/repository/Repository.java
// public interface Repository<T> {
//     T get(Specification specification) throws Exception;
// 
//     void add(T item) throws Exception;
// 
//     void add(Iterable<T> items) throws Exception;
// 
//     void update(T item) throws Exception;
// 
//     void remove(T item) throws Exception;
// 
//     void remove(Specification specification) throws Exception;
// 
//     List<T> query(Specification specification) throws Exception;
// }
// 
// Path: app/src/main/java/com/example/ericliu/weather2016/framework/repository/RepositoryResult.java
// public class RepositoryResult<T> {
//     private  Specification specification;
//     private T data;
//     private Throwable throwable;
// 
//     public Specification getSpecification() {
//         return specification;
//     }
// 
//     public void setSpecification(Specification specification) {
//         this.specification = specification;
//     }
// 
//     public T getData() {
//         return data;
//     }
// 
//     public void setData(T data) {
//         this.data = data;
//     }
// 
//     public Throwable getThrowable() {
//         return throwable;
//     }
// 
//     public void setThrowable(Throwable throwable) {
//         this.throwable = throwable;
//     }
// 
// 
// }
// 
// Path: app/src/main/java/com/example/ericliu/weather2016/framework/repository/Specification.java
// public interface Specification {
// }
// 
// Path: app/src/main/java/com/example/ericliu/weather2016/model/WeatherResult.java
// public class WeatherResult {
// 
//     public Weather[] weather;
//     public String name;
// }
// 
// Path: app/src/main/java/com/example/ericliu/weather2016/model/WeatherSpecification.java
// public class WeatherSpecification implements Specification, Serializable {
//     public static final String ARG_WEATHER_SPECIFICATION = "com.ericliu.arg.weather.specification";
// 
//     private String cityName;
// 
//     public String getCityName() {
//         return cityName;
//     }
// 
//     public void setCityName(String cityName) {
//         this.cityName = cityName;
//     }
// }


// Path: app/src/main/java/com/example/ericliu/weather2016/repo/RemoteWeatherRepo.java
import android.app.Application;
import android.util.Log;
import com.example.ericliu.weather2016.application.MyApplication;
import com.example.ericliu.weather2016.common.NetworkConstants;
import com.example.ericliu.weather2016.framework.repository.Repository;
import com.example.ericliu.weather2016.framework.repository.RepositoryResult;
import com.example.ericliu.weather2016.framework.repository.Specification;
import com.example.ericliu.weather2016.model.WeatherResult;
import com.example.ericliu.weather2016.model.WeatherSpecification;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.List;
import javax.inject.Inject;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

        return null;
    }

    @Override
    public void add(WeatherResult item) {

    }

    @Override
    public void add(Iterable<WeatherResult> items) {

    }

    @Override
    public void update(WeatherResult item) {

    }

    @Override
    public void remove(WeatherResult item) {

    }

    @Override
    public void remove(Specification specification) {

    }

    @Override
    public List<WeatherResult> query(Specification specification) {
        return null;