// Path: core/src/main/java/cat/ppicas/cleanarch/repository/CityRepository.java
// public interface CityRepository {
// 
//     City getCity(String cityId);
// 
//     List<City> findCity(String name);
// 
// }
// 
// Path: core/src/main/java/cat/ppicas/cleanarch/repository/CurrentWeatherRepository.java
// public interface CurrentWeatherRepository {
// 
//     CurrentWeather getCityCurrentWeather(String cityId);
// 
// }
// 
// Path: core/src/main/java/cat/ppicas/cleanarch/repository/DailyForecastRepository.java
// public interface DailyForecastRepository {
// 
//     List<DailyForecast> getDailyForecasts(String cityId);
// 
// }
// 
// Path: core/src/main/java/cat/ppicas/framework/task/TaskExecutor.java
// public interface TaskExecutor {
// 
//     <R, E extends Exception> void execute(Task<R, E> task, TaskCallback<R, E> callback);
// 
//     boolean isRunning(Task<?, ?> task);
// 
// }


import cat.ppicas.cleanarch.repository.CityRepository;
import cat.ppicas.cleanarch.repository.CurrentWeatherRepository;
import cat.ppicas.cleanarch.repository.DailyForecastRepository;
import cat.ppicas.framework.task.TaskExecutor;
/*
 * Copyright (C) 2015 Pau Picas Sans <pau.picas@gmail.com>
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package cat.ppicas.cleanarch.app;


/**
 * Interface to be used as a repository of dependency or services required across the app.
 * The services provided by this container can be used to fulfill the dependencies from
 * other classes implementing the inversion of control principle.
 */
public interface ServiceContainer {

    CityRepository getCityRepository();

    CurrentWeatherRepository getCurrentWeatherRepository();

// Path: core/src/main/java/cat/ppicas/cleanarch/repository/CityRepository.java
// public interface CityRepository {
// 
//     City getCity(String cityId);
// 
//     List<City> findCity(String name);
// 
// }
// 
// Path: core/src/main/java/cat/ppicas/cleanarch/repository/CurrentWeatherRepository.java
// public interface CurrentWeatherRepository {
// 
//     CurrentWeather getCityCurrentWeather(String cityId);
// 
// }
// 
// Path: core/src/main/java/cat/ppicas/cleanarch/repository/DailyForecastRepository.java
// public interface DailyForecastRepository {
// 
//     List<DailyForecast> getDailyForecasts(String cityId);
// 
// }
// 
// Path: core/src/main/java/cat/ppicas/framework/task/TaskExecutor.java
// public interface TaskExecutor {
// 
//     <R, E extends Exception> void execute(Task<R, E> task, TaskCallback<R, E> callback);
// 
//     boolean isRunning(Task<?, ?> task);
// 
// }


// Path: app/src/main/java/cat/ppicas/cleanarch/app/ServiceContainer.java
import cat.ppicas.cleanarch.repository.CityRepository;
import cat.ppicas.cleanarch.repository.CurrentWeatherRepository;
import cat.ppicas.cleanarch.repository.DailyForecastRepository;
import cat.ppicas.framework.task.TaskExecutor;

/*
 * Copyright (C) 2015 Pau Picas Sans <pau.picas@gmail.com>
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package cat.ppicas.cleanarch.app;


/**
 * Interface to be used as a repository of dependency or services required across the app.
 * The services provided by this container can be used to fulfill the dependencies from
 * other classes implementing the inversion of control principle.
 */
public interface ServiceContainer {

    CityRepository getCityRepository();

    CurrentWeatherRepository getCurrentWeatherRepository();

    DailyForecastRepository getDailyForecastRepository();