Resource vs. Resource Hierarchy confusion

The ‘Resource’ interface (com.vaadin.server.Resource) defines a single method “public String getMIMEType();”.

In other words, based solely on the interface ‘Resource’ one may retrieve a MIME Type related to some implementation.

Vaadin has a ‘Resource Hierarchy’ that adds a lot of supplemental functionality. These are implementation classes like ExternalResource, ThemeResource, ClassResource, FileResource, StreamResource.

Let’s say someone wanted to know which of the following could be given as resources, as defined by the
interface (NOTE: the Resource interface is not the same thing as the Resource hierarchy):

  • URLs in hyperlinks
  • PDF documents
  • static images displayed in an image component

Which ones would seem the most qualified? (context: certain certification exams)