spring boot test (#1322)

* spring boot test

* testing in spring boot article
This commit is contained in:
Ahmed-Saied
2017-03-07 18:01:44 +02:00
committed by Grzegorz Piwowarek
parent 6fbf90fd27
commit a7bafc0775
13 changed files with 337 additions and 1 deletions
@@ -0,0 +1,58 @@
package org.baeldung.boot.components;
import org.baeldung.boot.exceptions.CommonException;
import org.baeldung.boot.exceptions.FooNotFoundException;
import org.baeldung.boot.model.Foo;
import org.baeldung.boot.repository.FooRepository;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.google.common.base.Preconditions;
@Component
public class FooComponent {
@Autowired
private FooRepository fooRepository;
private final static Logger logger = org.slf4j.LoggerFactory.getLogger(FooComponent.class);
public Foo getFooWithId(Integer id) {
Foo foo = null;
try {
foo = fooRepository.findOne(id);
Preconditions.checkNotNull(foo);
logger.info("Foo with Id {} found",id);
}catch(NullPointerException ex){
logger.error("Foo with Id {} was not found",id);
throw new FooNotFoundException("The given foo Id was not found");
} catch (Exception ex) {
logger.error("Error while retrieving Foo with Id {} found",id,ex);
throw new CommonException("Error while retrieving foo");
}
return foo;
}
public Foo getFooWithName(String name) {
Foo foo = null;
try {
foo = fooRepository.findByName(name);
Preconditions.checkNotNull(foo);
logger.info("Foo with name {} found",name);
}catch(NullPointerException ex){
logger.error("Foo with name {} was not found",name);
throw new FooNotFoundException("The given foo name was not found");
} catch (Exception ex) {
logger.error("Error while retrieving Foo with name {} found",name,ex);
throw new CommonException("Error while retrieving foo");
}
return foo;
}
}
@@ -0,0 +1,13 @@
package org.baeldung.boot.exceptions;
public class CommonException extends RuntimeException{
/**
*
*/
private static final long serialVersionUID = 3080004140659213332L;
public CommonException(String message){
super(message);
}
}
@@ -0,0 +1,13 @@
package org.baeldung.boot.exceptions;
public class FooNotFoundException extends RuntimeException{
/**
*
*/
private static final long serialVersionUID = 9042200028456133589L;
public FooNotFoundException(String message){
super(message);
}
}
@@ -21,6 +21,13 @@ public class Foo implements Serializable {
this.name = name;
}
public Foo(Integer id, String name) {
super();
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
@@ -0,0 +1,52 @@
package org.baeldung.boot.service;
import org.baeldung.boot.components.FooComponent;
import org.baeldung.boot.exceptions.CommonException;
import org.baeldung.boot.exceptions.FooNotFoundException;
import org.baeldung.boot.model.Foo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class FooService {
@Autowired
private FooComponent fooComponent;
@RequestMapping(value = "/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> getFooWithId(@PathVariable Integer id) {
Foo foo = fooComponent.getFooWithId(id);
return new ResponseEntity<Foo>(foo, HttpStatus.OK);
}
@RequestMapping(value = "/", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> getFooWithName(@RequestParam String name) {
Foo foo = fooComponent.getFooWithName(name);
return new ResponseEntity<Foo>(foo, HttpStatus.OK);
}
@ExceptionHandler(value = FooNotFoundException.class)
@ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "Foo not found")
public void handleFooNotFoundException() {
}
@ExceptionHandler(value = CommonException.class)
@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR, reason = "Common exception")
public void handleCommonException() {
}
}