File tree Expand file tree Collapse file tree 15 files changed +411
-0
lines changed
test/java/com/ndevs/fridge Expand file tree Collapse file tree 15 files changed +411
-0
lines changed Original file line number Diff line number Diff line change
1
+ .settings /
2
+
3
+ target /
4
+ .classpath
Original file line number Diff line number Diff line change
1
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
2
+ <projectDescription >
3
+ <name >spring-boot-rest-design</name >
4
+ <comment ></comment >
5
+ <projects >
6
+ </projects >
7
+ <buildSpec >
8
+ <buildCommand >
9
+ <name >org.eclipse.jdt.core.javabuilder</name >
10
+ <arguments >
11
+ </arguments >
12
+ </buildCommand >
13
+ <buildCommand >
14
+ <name >org.springframework.ide.eclipse.core.springbuilder</name >
15
+ <arguments >
16
+ </arguments >
17
+ </buildCommand >
18
+ <buildCommand >
19
+ <name >org.eclipse.m2e.core.maven2Builder</name >
20
+ <arguments >
21
+ </arguments >
22
+ </buildCommand >
23
+ </buildSpec >
24
+ <natures >
25
+ <nature >org.springframework.ide.eclipse.core.springnature</nature >
26
+ <nature >org.eclipse.jdt.core.javanature</nature >
27
+ <nature >org.eclipse.m2e.core.maven2Nature</nature >
28
+ </natures >
29
+ </projectDescription >
Original file line number Diff line number Diff line change
1
+ <project xmlns =" http://maven.apache.org/POM/4.0.0" xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
2
+ xsi:schemaLocation=" http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
3
+ <modelVersion >4.0.0</modelVersion >
4
+
5
+ <groupId >com.nishanthd</groupId >
6
+ <artifactId >spring-boot-rest-design</artifactId >
7
+ <version >0.0.1-SNAPSHOT</version >
8
+ <packaging >jar</packaging >
9
+
10
+ <name >spring-boot-rest-design</name >
11
+ <url >http://maven.apache.org</url >
12
+
13
+ <parent >
14
+ <groupId >org.springframework.boot</groupId >
15
+ <artifactId >spring-boot-starter-parent</artifactId >
16
+ <version >2.0.1.RELEASE</version >
17
+ </parent >
18
+
19
+ <properties >
20
+ <project .build.sourceEncoding>UTF-8</project .build.sourceEncoding>
21
+ <java .version>1.8</java .version>
22
+ </properties >
23
+
24
+ <dependencies >
25
+ <dependency >
26
+ <groupId >org.springframework.boot</groupId >
27
+ <artifactId >spring-boot-starter-web</artifactId >
28
+ </dependency >
29
+ <dependency >
30
+ <groupId >junit</groupId >
31
+ <artifactId >junit</artifactId >
32
+ <version >3.8.1</version >
33
+ <scope >test</scope >
34
+ </dependency >
35
+ </dependencies >
36
+ <build >
37
+ <plugins >
38
+ <plugin >
39
+ <groupId >org.springframework.boot</groupId >
40
+ <artifactId >spring-boot-maven-plugin</artifactId >
41
+ </plugin >
42
+ </plugins >
43
+ </build >
44
+
45
+ </project >
Original file line number Diff line number Diff line change
1
+ package com .ndevs .fridge ;
2
+
3
+ import org .springframework .boot .SpringApplication ;
4
+ import org .springframework .boot .autoconfigure .SpringBootApplication ;
5
+
6
+ /**
7
+ *
8
+ * @author Nishanth Dharmaraju
9
+ *
10
+ */
11
+ @ SpringBootApplication
12
+ public class App {
13
+ public static void main (String [] args ) {
14
+ SpringApplication .run (App .class , args );
15
+ }
16
+ }
Original file line number Diff line number Diff line change
1
+ package com .ndevs .fridge ;
2
+
3
+ import org .springframework .http .ResponseEntity ;
4
+ import org .springframework .web .bind .annotation .ControllerAdvice ;
5
+ import org .springframework .web .bind .annotation .ExceptionHandler ;
6
+ import org .springframework .web .method .annotation .MethodArgumentTypeMismatchException ;
7
+
8
+ import com .ndevs .fridge .dto .ErrorResponse ;
9
+ import com .ndevs .fridge .exception .NoItemFoundException ;
10
+
11
+ /**
12
+ *
13
+ * @author Nishanth Dharmaraju
14
+ *
15
+ */
16
+ @ ControllerAdvice
17
+ public class FridgeControllerAdvice {
18
+
19
+ /**
20
+ * Called when no handler defined for a corresponding exception
21
+ *
22
+ * @param exception
23
+ * @return
24
+ */
25
+ @ ExceptionHandler (Exception .class )
26
+ public ResponseEntity <ErrorResponse > globalException (Exception exception ) {
27
+ return ResponseEntity .unprocessableEntity ().body (new ErrorResponse ("serverError" , "Internal server error" ));
28
+ }
29
+
30
+ @ ExceptionHandler (NoItemFoundException .class )
31
+ public ResponseEntity <ErrorResponse > noItemFound (NoItemFoundException exception ) {
32
+
33
+ return ResponseEntity .ok (new ErrorResponse (exception .getErrorCode (), exception .getMessage ()));
34
+
35
+ }
36
+
37
+ @ ExceptionHandler (MethodArgumentTypeMismatchException .class )
38
+ public ResponseEntity <ErrorResponse > mismatch (MethodArgumentTypeMismatchException exception ) {
39
+
40
+ return ResponseEntity .badRequest ()
41
+ .body (new ErrorResponse (exception .getErrorCode (), exception .getLocalizedMessage ()));
42
+
43
+ }
44
+
45
+ }
Original file line number Diff line number Diff line change
1
+ package com .ndevs .fridge .controller ;
2
+
3
+ import java .util .List ;
4
+
5
+ import org .springframework .beans .factory .annotation .Autowired ;
6
+ import org .springframework .http .ResponseEntity ;
7
+ import org .springframework .web .bind .annotation .PathVariable ;
8
+ import org .springframework .web .bind .annotation .RequestMapping ;
9
+ import org .springframework .web .bind .annotation .RestController ;
10
+
11
+ import com .ndevs .fridge .dto .FridgeItem ;
12
+ import com .ndevs .fridge .exception .NoItemFoundException ;
13
+ import com .ndevs .fridge .service .FridgeService ;
14
+
15
+ /**
16
+ *
17
+ * @author Nishanth Dharmaraju
18
+ *
19
+ */
20
+ @ RestController
21
+ @ RequestMapping ("/fridge" )
22
+ public class FridgeController {
23
+
24
+ @ Autowired
25
+ FridgeService fridgeService ;
26
+
27
+ @ RequestMapping ("/" )
28
+ public ResponseEntity <List <FridgeItem >> getAllItems () {
29
+
30
+ return ResponseEntity .ok (fridgeService .getAllItems ());
31
+ }
32
+
33
+ @ RequestMapping ("/{id}" )
34
+ public ResponseEntity <FridgeItem > getItemById (@ PathVariable ("id" ) Integer itemId ) throws NoItemFoundException {
35
+
36
+ return ResponseEntity .ok (fridgeService .getItemByType (itemId ));
37
+ }
38
+
39
+ }
Original file line number Diff line number Diff line change
1
+ package com .ndevs .fridge .dto ;
2
+
3
+ public class ErrorResponse {
4
+
5
+ private String error ;
6
+ private String description ;
7
+
8
+ public ErrorResponse (String error , String description ) {
9
+ super ();
10
+ this .error = error ;
11
+ this .description = description ;
12
+ }
13
+
14
+ public String getError () {
15
+ return error ;
16
+ }
17
+
18
+ public void setError (String error ) {
19
+ this .error = error ;
20
+ }
21
+
22
+ public String getDescription () {
23
+ return description ;
24
+ }
25
+
26
+ public void setDescription (String description ) {
27
+ this .description = description ;
28
+ }
29
+
30
+ }
Original file line number Diff line number Diff line change
1
+ package com .ndevs .fridge .dto ;
2
+
3
+ public class FridgeItem {
4
+
5
+ private Integer itemType ;
6
+
7
+ private String name ;
8
+
9
+ private Integer quantity ;
10
+
11
+ public Integer getItemType () {
12
+ return itemType ;
13
+ }
14
+
15
+ public void setItemType (Integer itemType ) {
16
+ this .itemType = itemType ;
17
+ }
18
+
19
+ public String getName () {
20
+ return name ;
21
+ }
22
+
23
+ public void setName (String name ) {
24
+ this .name = name ;
25
+ }
26
+
27
+ public Integer getQuantity () {
28
+ return quantity ;
29
+ }
30
+
31
+ public void setQuantity (Integer quantity ) {
32
+ this .quantity = quantity ;
33
+ }
34
+
35
+ }
Original file line number Diff line number Diff line change
1
+ package com .ndevs .fridge .exception ;
2
+
3
+ /**
4
+ * Abstract superclass for all exceptions thrown in the controller package and
5
+ * subpackages.
6
+ *
7
+ * This class is to force every exception class to define
8
+ * {@code:getErrorCode()} method.
9
+ *
10
+ * @author Nishanth Dharmaraju
11
+ *
12
+ */
13
+ public abstract class NestedException extends Exception {
14
+
15
+ NestedException (String message ) {
16
+ super (message );
17
+ }
18
+
19
+ /**
20
+ * Returns error code of the exception
21
+ */
22
+ public abstract String getErrorCode ();
23
+
24
+ }
Original file line number Diff line number Diff line change
1
+ package com .ndevs .fridge .exception ;
2
+
3
+ /**
4
+ * Exception thrown when finding zero item.
5
+ *
6
+ * @author Nishanth Dharmaraju
7
+ *
8
+ */
9
+ public class NoItemFoundException extends NestedException {
10
+
11
+ public static final String ERROR_CODE = "noItemFound" ;
12
+
13
+ public NoItemFoundException (String message ) {
14
+ super (message );
15
+ }
16
+
17
+ @ Override
18
+ public String getErrorCode () {
19
+ return ERROR_CODE ;
20
+ }
21
+
22
+ }
You can’t perform that action at this time.
0 commit comments