Implementing an event in CDI

As an example of implementing an event in CDI, we think about asynchronous CDI and imagine a scene in which we want to create an application that makes it possible to upload three types (or extensions) of fileā€”this includes ZIP, JPG, and PDF extensions. Depending on the extension received at the request, it is intended that one event is launched and one observer will save its file on a disk using an asynchronous process. Each extension will have an observer, which will have an algorithm making it possible to save the file on a disk. To develop this example, we have the following classes:

  • FileUploadResource: This is a class that represents the resource that receives all the requests in order to upload and launches respective events according to the file extension. 
  • FileEvent: This is a bean that contains the file data and is sent to an event. 
  • FileHandler: This is an interface of all the observers. In this example, all classes that react to FileEvent need to implement FileHandler.
  • JpgHandler: This is an implementation of FileHandler that saves a JPG file on a disk. This class is an observer that reacts with FileEvent launched to a JPG file.
  • PdfHandler: This is an implementation of FileHandler that saves a PDF file on a disk. This class is an observer that reacts with FileEvent launched to a PDF file.
  • ZipHandler: This is an implementation of FileHandler that saves a ZIP file on a disk. This class is an observer that reacts with FileEvent launched to a ZIP file.
  • Jpg: This is a qualifier used to establish that the JpgHandler observers need to react to an event.
  • Pdf: This is a qualifier used to establish that the PdfHandler observer needs to react to an event.
  • Zip: This is a qualifier used to establish that the ZipHandler observer needs to react to an event.
  • FileSystemUtils: This is a utility class to treat issues on a filesystem.
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.191.181.252