Services - exposing decoupled functionality

Before looking at the definition of our TopComponent, let's look at PhotoManager, and learn a bit about its services. The PhotoManager interface itself is pretty simple:

    public interface PhotoManager extends Lookup.Provider { 
      void scanSourceDirs(); 
      List<String> getYears(); 
      List<String> getMonths(int year); 
      List<String> getPhotos(int year, int month); 
    } 

There is little of interest in the preceding code beyond the extends Lookup.Provider portion. Adding this here, we can force implementations to implement the lone method on that interface, as we'll need that later. The interesting part comes from the implementation, which is as follows:

 @ServiceProvider(service = PhotoManager.class) public class ...

Get Java 9: Building Robust Modular Applications now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.