The following classes:
are declared as enumerations in ISO 19115. GeoAPI wrongly implemented them as code lists. We should consider turning them into enumerations for GeoAPI 4.0.
An other code list which was supposed to be an enumeration is org.opengis.metadata.Obligation. If we change this code list into an enumeration, this allow us to remove the org.opengis.annotation.Obligation enumeration, which duplicate the values of the metadata one.
One problem of defining the above-cited types as Enum instead of CodeList is that it forces developers to duplicate some code for those two kind of enumerated values. As an attempt to avoid this inconvenient, an Enumerated interface has been added as of revision 2168.
Enumerated should be renamed ControlledVocabulary, which better match the terms used in OGC activities.