How is MimeLookup composed?
In order to get MimeLookup you have to supply
MimePath. With the default MimeLookup
implementation provided by Netbeans the contents of MimeLookup is defined by
a hierarchical structure of folders on the system FileSystem. The structure
starts in the Editors folder and then follows all the components of the MimePath you
have supplied.
For example if you ask for MimeLookup for the following MimePath of
text/x-java you will get Lookup with contents from the following
folders:
Editors/text/x-java
Editors
As you can see MimeLookup for text/x-java contains not only editor
features registered for the text/x-java mime type itself, but it also
inherits general features registered for an empty MimePath (i.e. in the
root of the hierarchy).
The inheritence algorithm used for composing MimeLookup for a given
MimePath supports more than just simple inheritance from the root. It also
supports compound mime types such as text/x-ant+xml and embedded mime types
such as text/x-jsp/text/x-java.
Compound mime types
Let’s have a look at the MimeLookup composition for a compound mime type
text/x-ant+xml. The resulting Lookup will contain things registered in
the following folders:
Editors/text/x-ant+xml
Editors/text/xml
Editors
That’s the reason why editor features provided by XML modules for general XML files work also for specialized, but XML-based, files.
Embedded mime types
The inheritance hierarchy becomes even more complicated when dealing with embedded mime
types. Let’s use a java scriplet inside a JSP page as an example of language embedding.
The MimePath for the scriplet is text/x-jsp/text/x-java and its MimeLookup will
contain features registered in the following folders:
Editors/text/x-jsp/text/x-java
Editors/text/x-java
Editors
The algorithm for computing the inheritance tree for a particular MimePath
combines all the above cases together and works always the same way no matter what
feature you are going to look for in the resulting MimeLookup.
Applies to: NetBeans 6.x and with some exceptions also to 5.x
Platforms: All
See also: What is MimeLookup?, What is MimePath?, MimeLookup API