Skip to content

Commit

Permalink
caching
Browse files Browse the repository at this point in the history
  • Loading branch information
luizkowalski committed Oct 27, 2017
1 parent b4bd907 commit 5e57148
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 68 deletions.
6 changes: 5 additions & 1 deletion contacts/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
Expand All @@ -88,7 +92,7 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>--add-modules java.xml.bind,java.xml.ws,java.xml.ws.annotation</jvmArguments>
<!--<jvmArguments>&#45;&#45;add-modules java.xml.bind,java.xml.ws,java.xml.ws.annotation</jvmArguments>-->
</configuration>
</plugin>
</plugins>
Expand Down
2 changes: 2 additions & 0 deletions contacts/src/main/java/com/inkdrop/ContactsApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
@EnableCaching
public class ContactsApplication {

public static void main(String[] args) {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,35 +1,25 @@
package com.inkdrop.app.components;

import java.io.IOException;
import java.util.ArrayList;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;

import com.inkdrop.app.models.Contact;
import com.inkdrop.app.repositories.ContactsRepository;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import java.io.IOException;
import java.util.Arrays;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class ContactsComponent extends BasicComponent {

@Autowired
ContactsRepository repository;

@HystrixCommand(fallbackMethod="getUsersFallback")
public Iterable<Contact> getContacts() throws IOException{
return repository.findAll();
}

public ResponseEntity<String> saveUserFallback(String user){
return new ResponseEntity<String>("error", HttpStatus.INTERNAL_SERVER_ERROR);
}
public class ContactsComponent {

public Iterable<Contact> getUsersFallback(){
return new ArrayList<>();
}
@Autowired
ContactsRepository repository;

@HystrixCommand(fallbackMethod = "getContactsFallback")
public Iterable<Contact> getContacts() throws IOException {
return repository.findAll();
}

public Iterable<Contact> getContactsFallback() {
return Arrays.asList(new Contact(0L, "Fallback user", "0000"));
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package com.inkdrop.app.controllers;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.inkdrop.app.components.ContactsComponent;
import com.inkdrop.app.models.Contact;
import com.inkdrop.app.repositories.ContactsRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.http.HttpStatus;
Expand All @@ -9,11 +13,6 @@
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.inkdrop.app.components.ContactsComponent;
import com.inkdrop.app.models.Contact;
import com.inkdrop.app.repositories.ContactsRepository;

@RestController
@EnableAutoConfiguration
public class ContactsController {
Expand All @@ -37,17 +36,8 @@ public ResponseEntity<String> saveUser(@RequestBody String user) throws Exceptio
}
}

@RequestMapping(method=RequestMethod.GET, path="/contacts")
public ResponseEntity<String> getUsers() throws Exception {
String users = mapper().writeValueAsString(component.getContacts());
return new ResponseEntity<String>(users, HttpStatus.OK);
}

public ResponseEntity<String> getUsersFallback(){
return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
}

private ObjectMapper mapper(){
return new ObjectMapper();
}
@RequestMapping(method = RequestMethod.GET, path = "/contacts")
public ResponseEntity<Iterable<Contact>> getUsers() throws Exception {
return new ResponseEntity<>(component.getContacts(), HttpStatus.OK);
}
}
24 changes: 6 additions & 18 deletions contacts/src/main/java/com/inkdrop/app/models/Contact.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,15 @@
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Entity
@Table(name="contacts")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Contact implements Serializable {

private static final long serialVersionUID = 7998626098964616778L;
Expand All @@ -18,24 +24,6 @@ public class Contact implements Serializable {
private Long id;
private String name;
private String phone;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}

@Override
public int hashCode() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
package com.inkdrop.app.repositories;

import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.repository.CrudRepository;

import com.inkdrop.app.models.Contact;

public interface ContactsRepository extends CrudRepository<Contact, Long>{}
public interface ContactsRepository extends CrudRepository<Contact, Long>{

@Override
@Cacheable("allContacts")
Iterable<Contact> findAll();

@Override
@CacheEvict(value = "allContacts", allEntries = true)
<S extends Contact> S save(S s);
}

0 comments on commit 5e57148

Please sign in to comment.