5.7 KiB
5.7 KiB
Project structure and files
- build.gradle – This contains the dependencies needed for the project.
- src/main
- java
-
com.droideparanoico.albumcatalog- ServletInitializer.java – this class extends SpringBootServletInitializer to make it eligible to deploy as a traditional WAR application.
- SpringBootAlbumCatalog.java – This class is annotated with @SpringBootApplication which does the auto-configuration of the application.
-
com.droideparanoico.albumcatalog.config- SwaggerConfiguration.java – This is a @Configuration annotated class that contains the beans that initialize Swagger for this application.
-
com.droideparanoico.albumcatalog.controller- ArtistController.java – This is a @Controller annotated classes that contains the request handler method for the following endpoints: GET / – The request handler method listArtistAndAlbums(Model) is called when we land on the root application.
-
com.droideparanoico.albumcatalog.controller.data- ArtistRestController.java – This is a @RestController annotated class that contains the request handler method for the following endpoints:
HTTP Method Endpoint Request Handling Method Description GET/artist/root()returns “application is working!” when called GET/artist/allgetAllArtists()returns Iterable<Artist>when calledGET/artist/{id}getArtistById(BigInteger)returns the Artistwith the given id when calledPOST/artist/{name}createArtist(String)for creating a new Artist with the given name and returns the same after creation DELETE/artist/{id}deleteArtist(BigInteger)for deleting an Artist by id GET/artist/{id}/albumsgetAlbumsByArtist(BigInteger)for fetching all the albums of the Artist with the given id DELETE/artist/{id}/albumsdeleteAllAlbumsFromArtist(BigInteger)for deleting all the albums of the Artist with the given id POST/artist/{id}/addaddAlbumToArtist(BigInteger, Album)for adding the given Album to the Artist with the given id and returns the created album GET/artist/albumsgetAllAlbums()returns List<Album>that fetches all the albums from all the artistsPUT/artist/albums/{id}/movemoveAlbumToDifferentArtist(BigInteger, BigInteger)for moving an album from one artist to another DELETE/artist/{id}/albums/{album_id}deleteFromArtist(BigInteger, BigInteger)for deleting an album from an artist ArtistRestController uses ArtistService for business logic and interacting with persistence layer.
-
com.droideparanoico.albumcatalog.database- ArtistRepository.java – this interface extends JpaRepository for interacting with artist database table.
- AlbumsRepository.java – this interface extends JpaRepository for interacting with album database table.
-
com.droideparanoico.albumcatalog.exception- ExceptionController.java – this class is annotated with @ControllerAdvice and contains @ExceptionHandler annotated method to handle exceptions.
- ArtistNotFoundException.java – a custom exception class for managing an invalid artist.
- AlbumNotFoundException.java – a custom exception class for managing an invalid album.
-
com.droideparanoico.albumcatalog.model- ErrorCodes.java – and enum that holds the error codes associated with our custom exceptions.
- Artist.java – a POJO class for saving the artist information.
- Album.java – a POJO class for saving the album information.
-
com.droideparanoico.albumcatalog.service- ArtistService.java – a Business Facade Service that controllers use to interact with the database repositories and contains the business logic to manipulate the data that is transferred between the controller and persistence layer.
-
- resources
templates- index.html – the HTML template with embedded Thymeleaf constructs for rendering the server-side response.
static- custom.css – a cascading stylesheet for our application.
- scripts.js – a Javascript file containing the method to interact with our backend RESTful APIs that we have built.
- application.properties – contains the Spring Boot configurations.
- application-dev.properties – contains the Spring Boot configurations for
devprofile. - data.sql – initializing database script that is executed at the time of application boot up.
- java