// Path: api-gateway/src/main/java/com/apssouza/clients/TodoClient.java
// @FeignClient("todo")
// public interface TodoClient {
// 
//     @RequestMapping(value = "/todos", method = RequestMethod.GET)
//     public List<User> getAll();
// 
//     @RequestMapping(value = "/todos/search", method = RequestMethod.GET)
//     public List<Todo> getTodoByUserEmaill(@RequestParam("email") String email);
// 
//     @RequestMapping(
//             value = "/todos",
//             method = RequestMethod.POST
//     )
//     Todo createTodo(Todo todo);
// }
// 
// Path: api-gateway/src/main/java/com/apssouza/pojos/Todo.java
// public class Todo {
// 
//     private long id;
// 
//     private String caption;
// 
//     private String userEmail;
// 
//     private String description;
// 
//     private int priority;
// 
//     public int getPriority() {
//         return priority;
//     }
// 
//     public void setPriority(int priority) {
//         this.priority = priority;
//     }
// 
//     public long getId() {
//         return id;
//     }
// 
//     public void setId(long id) {
//         this.id = id;
//     }
// 
//     public String getCaption() {
//         return caption;
//     }
// 
//     public void setCaption(String caption) {
//         this.caption = caption;
//     }
// 
//     public String getUserEmail() {
//         return userEmail;
//     }
// 
//     public void setUserEmail(String userEmail) {
//         this.userEmail = userEmail;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// 
// }
// 
// Path: oauth-server/src/main/java/com/apssouza/pojos/User.java
// public class User {
// 
//     private long id;
// 
//     private String email;
//     
//     private String password;
// 
//     public User() {
//     }
// 
//     public User(long id, String email, String password) {
//         this.id = id;
//         this.email = email;
//         this.password = password;
//     }
// 
//     public long getId() {
//         return id;
//     }
// 
//     public void setId(long id) {
//         this.id = id;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getPassword() {
//         return password;
//     }
// 
//     public void setPassword(String password) {
//         this.password = password;
//     }
// 
// }


import com.apssouza.clients.TodoClient;
import com.apssouza.pojos.Todo;
import com.apssouza.pojos.User;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import java.util.Collections;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
package com.apssouza.services;


/**
 * ToDo service 
 * @author apssouza
 */
@Component
public class TodoServiceImpl implements TodoService {

    @Autowired
    TodoClient todoClient;

    @Override
    public List<User> getAll() {
        return todoClient.getAll();
    }

    @Override
    @HystrixCommand(fallbackMethod = "getFallbackTodos")
    public List<Todo> getTodoByUserEmaill(String email) {
        return todoClient.getTodoByUserEmaill(email);
    }

    @Override
// Path: api-gateway/src/main/java/com/apssouza/clients/TodoClient.java
// @FeignClient("todo")
// public interface TodoClient {
// 
//     @RequestMapping(value = "/todos", method = RequestMethod.GET)
//     public List<User> getAll();
// 
//     @RequestMapping(value = "/todos/search", method = RequestMethod.GET)
//     public List<Todo> getTodoByUserEmaill(@RequestParam("email") String email);
// 
//     @RequestMapping(
//             value = "/todos",
//             method = RequestMethod.POST
//     )
//     Todo createTodo(Todo todo);
// }
// 
// Path: api-gateway/src/main/java/com/apssouza/pojos/Todo.java
// public class Todo {
// 
//     private long id;
// 
//     private String caption;
// 
//     private String userEmail;
// 
//     private String description;
// 
//     private int priority;
// 
//     public int getPriority() {
//         return priority;
//     }
// 
//     public void setPriority(int priority) {
//         this.priority = priority;
//     }
// 
//     public long getId() {
//         return id;
//     }
// 
//     public void setId(long id) {
//         this.id = id;
//     }
// 
//     public String getCaption() {
//         return caption;
//     }
// 
//     public void setCaption(String caption) {
//         this.caption = caption;
//     }
// 
//     public String getUserEmail() {
//         return userEmail;
//     }
// 
//     public void setUserEmail(String userEmail) {
//         this.userEmail = userEmail;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// 
// }
// 
// Path: oauth-server/src/main/java/com/apssouza/pojos/User.java
// public class User {
// 
//     private long id;
// 
//     private String email;
//     
//     private String password;
// 
//     public User() {
//     }
// 
//     public User(long id, String email, String password) {
//         this.id = id;
//         this.email = email;
//         this.password = password;
//     }
// 
//     public long getId() {
//         return id;
//     }
// 
//     public void setId(long id) {
//         this.id = id;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getPassword() {
//         return password;
//     }
// 
//     public void setPassword(String password) {
//         this.password = password;
//     }
// 
// }


// Path: api-gateway/src/main/java/com/apssouza/services/TodoServiceImpl.java
import com.apssouza.clients.TodoClient;
import com.apssouza.pojos.Todo;
import com.apssouza.pojos.User;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import java.util.Collections;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

package com.apssouza.services;


/**
 * ToDo service 
 * @author apssouza
 */
@Component
public class TodoServiceImpl implements TodoService {

    @Autowired
    TodoClient todoClient;

    @Override
    public List<User> getAll() {
        return todoClient.getAll();
    }

    @Override
    @HystrixCommand(fallbackMethod = "getFallbackTodos")
    public List<Todo> getTodoByUserEmaill(String email) {
        return todoClient.getTodoByUserEmaill(email);
    }

    @Override
    public Todo createTodo(Todo todo) {