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 PhotoManagerImpl implements PhotoManager {
That is all it takes to register a service with the platform. The annotation specifies the metadata needed, and the build takes care of the rest. Let...