mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

matthew_swift
07.36.2007 12b0ce03d0029bb96bb23cc288ea351a8a1bec75
This relates to issue 2661 "public APIs must not reference private classes".

The classes in org.opends.messages need to be made public so that they can be referenced from other public APIs. This change adds the PublicAPI annotation to the classes defined in this package as follows:

* the org.opends.messages package is VOLATILE

* the org.opends.messages core classes (Message, MessageDescriptor,
MessageBuilder, Category, and Severity) are all UNCOMMITTED

* the class org.opends.messages.MessageDescriptorRegistry is PRIVATE
(it's only used in unit tests)

* generated message classes are PRIVATE

In addition minor cleanup was made to the classes where appropriate to make them suitable for public APIs:

* used "final" where possible

* reduced visibility of classes, methods, and members where appropriate

* fixed some potential bugs spotted during this clean-up: class
members not being initialized (the "final" keyword is useful for
spotting this!)

* added missing javadoc

* I've removed the third-party and user-defined message generation
since we could see know way in which they could be easily used
without impacting core OpenDS source
2 files deleted
10 files modified
431 ■■■■■ changed files
opends/build.xml 10 ●●●●● patch | view | raw | blame | history
opends/resource/Messages.java.stub 18 ●●●● patch | view | raw | blame | history
opends/src/messages/messages/third_party.properties 49 ●●●●● patch | view | raw | blame | history
opends/src/messages/messages/user_defined.properties 49 ●●●●● patch | view | raw | blame | history
opends/src/messages/src/org/opends/messages/Category.java 7 ●●●● patch | view | raw | blame | history
opends/src/messages/src/org/opends/messages/Message.java 20 ●●●●● patch | view | raw | blame | history
opends/src/messages/src/org/opends/messages/MessageBuilder.java 17 ●●●● patch | view | raw | blame | history
opends/src/messages/src/org/opends/messages/MessageDescriptor.java 214 ●●●● patch | view | raw | blame | history
opends/src/messages/src/org/opends/messages/MessageDescriptorRegistry.java 18 ●●●●● patch | view | raw | blame | history
opends/src/messages/src/org/opends/messages/Severity.java 11 ●●●● patch | view | raw | blame | history
opends/src/messages/src/org/opends/messages/package-info.java 2 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageDescriptorRegistryTest.java 16 ●●●●● patch | view | raw | blame | history
opends/build.xml
@@ -238,15 +238,9 @@
    <genmsg sourceProps="${msg.prop.dir}/task.properties"
            destJava="${msg.javagen.dir}/org/opends/messages/TaskMessages.java">
    </genmsg>
    <genmsg sourceProps="${msg.prop.dir}/third_party.properties"
            destJava="${msg.javagen.dir}/org/opends/messages/ThirdPartyMessages.java">
    </genmsg>
    <genmsg sourceProps="${msg.prop.dir}/tools.properties"
            destJava="${msg.javagen.dir}/org/opends/messages/ToolMessages.java">
    </genmsg>
    <genmsg sourceProps="${msg.prop.dir}/user_defined.properties"
            destJava="${msg.javagen.dir}/org/opends/messages/UserDefinedMessages.java">
    </genmsg>
    <genmsg sourceProps="${msg.prop.dir}/utility.properties"
            destJava="${msg.javagen.dir}/org/opends/messages/UtilityMessages.java">
    </genmsg>
@@ -1839,7 +1833,9 @@
                     org/opends/messages/Category.java,
                     org/opends/messages/Message.java,
                     org/opends/messages/MessagePropertyKey.java,
                     org/opends/messages/MessageDescriptor.java"
                     org/opends/messages/MessageDescriptor.java,
                     org/opends/server/types/PublicAPI.java,
                     org/opends/server/types/StabilityLevel.java"
           debug="on" debuglevel="${build.debuglevel}" source="1.5"
           target="1.5" deprecation="true" fork="true" memoryInitialSize="${MEM}"
           memoryMaximumSize="${MEM}"/>
opends/resource/Messages.java.stub
@@ -36,12 +36,22 @@
 * Directory Server source.  It was dynamically generated as part of the
 * Directory Server build process and should not be edited directly.
 */
public class ${CLASS_NAME} {
@org.opends.server.types.PublicAPI(
    stability=org.opends.server.types.StabilityLevel.PRIVATE,
    mayInstantiate=false,
    mayExtend=false,
    mayInvoke=true)
public final class ${CLASS_NAME} {
  /** Base property for resource bundle containing messages */
  static private final String BASE = "${BASE}";
  private static final String BASE = "${BASE}";
  static private ClassLoader webstartClassLoader;
  private static ClassLoader webstartClassLoader;
  // Prevent instantiation.
  private ${CLASS_NAME}() {
    // Do nothing.
  }
  ${MESSAGES}
@@ -64,7 +74,7 @@
        {
          try
          {
            Class c = Class.forName("${PACKAGE}.${CLASS_NAME}");
            Class<?> c = Class.forName("${PACKAGE}.${CLASS_NAME}");
            java.net.URL[] urls = new java.net.URL[] {
                c.getProtectionDomain().getCodeSource().getLocation()
opends/src/messages/messages/third_party.properties
File was deleted
opends/src/messages/messages/user_defined.properties
File was deleted
opends/src/messages/src/org/opends/messages/Category.java
@@ -36,6 +36,11 @@
 * server components.  Categories contain an in value that can be
 * used as a mask for bitwise operations.
 */
@org.opends.server.types.PublicAPI(
    stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
    mayInstantiate=false,
    mayExtend=false,
    mayInvoke=true)
public enum Category {
  /**
@@ -186,7 +191,7 @@
    return MASK_VALUE_MAP.get(mask);
  }
  private int mask;
  private final int mask;
  /**
   * Gets the mask value associated with this category.
opends/src/messages/src/org/opends/messages/Message.java
@@ -45,7 +45,13 @@
 *
 * @see org.opends.messages.MessageDescriptor
 */
public class Message implements CharSequence, Formattable, Comparable {
@org.opends.server.types.PublicAPI(
    stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
    mayInstantiate=true,
    mayExtend=false,
    mayInvoke=true)
public final class Message implements CharSequence, Formattable,
    Comparable<Message> {
  /** Represents an empty message string. */
  public static final Message EMPTY = Message.raw("");
@@ -149,10 +155,10 @@
  }
  /** Descriptor of this message. */
  protected MessageDescriptor descriptor;
  private final MessageDescriptor descriptor;
  /** Values used to replace argument specifiers in the format string. */
  protected Object[] args;
  private final Object[] args;
  /**
   * Gets the string representation of this message.
@@ -387,13 +393,9 @@
   * @param   o the object to be compared.
   * @return  a negative integer, zero, or a positive integer as this object
   *          is less than, equal to, or greater than the specified object.
   *
   * @throws ClassCastException if the specified object's type prevents it
   *         from being compared to this object.
   */
  public int compareTo(Object o) throws ClassCastException {
    Message thatMessage = (Message)o;
    return toString().compareTo(thatMessage.toString());
  public int compareTo(Message o) {
    return toString().compareTo(o.toString());
  }
  /**
opends/src/messages/src/org/opends/messages/MessageBuilder.java
@@ -48,20 +48,25 @@
 * a change to reformat the message for a particular locale if
 * necessary.
 */
public class MessageBuilder implements Appendable, CharSequence,
        Serializable
@org.opends.server.types.PublicAPI(
    stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
    mayInstantiate=true,
    mayExtend=false,
    mayInvoke=true)
public final class MessageBuilder implements Appendable, CharSequence,
    Serializable
{
  private static final long serialVersionUID = -3292823563904285315L;
  /** Used internally to store appended messages. */
  StringBuilder sb = new StringBuilder();
  private final StringBuilder sb = new StringBuilder();
  /** Used internally to store appended messages. */
  List<Message> messages = new LinkedList<Message>();
  private final List<Message> messages = new LinkedList<Message>();
  /** Used to render the string representation of appended messages. */
  Locale locale;
  private final Locale locale;
  /**
   * Constructs an instance that will build messages
@@ -78,6 +83,7 @@
   * @param message initial message
   */
  public MessageBuilder(Message message) {
    this(Locale.getDefault());
    append(message);
  }
@@ -88,6 +94,7 @@
   * @param message initial message
   */
  public MessageBuilder(String message) {
    this(Locale.getDefault());
    append(message);
  }
opends/src/messages/src/org/opends/messages/MessageDescriptor.java
@@ -35,6 +35,11 @@
/**
 * Base class for all Message descriptor classes.
 */
@org.opends.server.types.PublicAPI(
    stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
    mayInstantiate=false,
    mayExtend=false,
    mayInvoke=true)
public abstract class MessageDescriptor {
  /**
@@ -61,7 +66,12 @@
  /**
   * Subclass for creating messages with no arguments.
   */
  static public class Arg0 extends MessageDescriptor {
  @org.opends.server.types.PublicAPI(
      stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
      mayInstantiate=true,
      mayExtend=false,
      mayInvoke=true)
  static public final class Arg0 extends MessageDescriptor {
    /**
     * Cached copy of the message created by this descriptor.  We can
@@ -122,8 +132,14 @@
  /**
   * Subclass for creating messages with one argument.
   * @param <T1> The type of the first message argument.
   */
  static public class Arg1<T1> extends MessageDescriptor {
  @org.opends.server.types.PublicAPI(
      stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
      mayInstantiate=true,
      mayExtend=false,
      mayInvoke=true)
  static public final class Arg1<T1> extends MessageDescriptor {
    /**
     * Creates a parameterized instance.
@@ -175,8 +191,15 @@
  /**
   * Subclass for creating messages with two arguments.
   * @param <T1> The type of the first message argument.
   * @param <T2> The type of the second message argument.
   */
  static public class Arg2<T1, T2> extends MessageDescriptor {
  @org.opends.server.types.PublicAPI(
      stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
      mayInstantiate=true,
      mayExtend=false,
      mayInvoke=true)
  static public final class Arg2<T1, T2> extends MessageDescriptor {
    /**
     * Creates a parameterized instance.
@@ -229,8 +252,16 @@
  /**
   * Subclass for creating messages with three arguments.
   * @param <T1> The type of the first message argument.
   * @param <T2> The type of the second message argument.
   * @param <T3> The type of the third message argument.
   */
  static public class Arg3<T1, T2, T3> extends MessageDescriptor {
  @org.opends.server.types.PublicAPI(
      stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
      mayInstantiate=true,
      mayExtend=false,
      mayInvoke=true)
  static public final class Arg3<T1, T2, T3> extends MessageDescriptor {
    /**
     * Creates a parameterized instance.
@@ -284,8 +315,17 @@
  /**
   * Subclass for creating messages with four arguments.
   * @param <T1> The type of the first message argument.
   * @param <T2> The type of the second message argument.
   * @param <T3> The type of the third message argument.
   * @param <T4> The type of the fourth message argument.
   */
  static public class Arg4<T1, T2, T3, T4> extends MessageDescriptor {
  @org.opends.server.types.PublicAPI(
      stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
      mayInstantiate=true,
      mayExtend=false,
      mayInvoke=true)
  static public final class Arg4<T1, T2, T3, T4> extends MessageDescriptor {
    /**
     * Creates a parameterized instance.
@@ -340,8 +380,18 @@
  /**
   * Subclass for creating messages with five arguments.
   * @param <T1> The type of the first message argument.
   * @param <T2> The type of the second message argument.
   * @param <T3> The type of the third message argument.
   * @param <T4> The type of the fourth message argument.
   * @param <T5> The type of the fifth message argument.
   */
  static public class Arg5<T1, T2, T3, T4, T5> extends MessageDescriptor {
  @org.opends.server.types.PublicAPI(
      stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
      mayInstantiate=true,
      mayExtend=false,
      mayInvoke=true)
  static public final class Arg5<T1, T2, T3, T4, T5> extends MessageDescriptor {
    /**
     * Creates a parameterized instance.
@@ -397,8 +447,20 @@
  /**
   * Subclass for creating messages with six arguments.
   * @param <T1> The type of the first message argument.
   * @param <T2> The type of the second message argument.
   * @param <T3> The type of the third message argument.
   * @param <T4> The type of the fourth message argument.
   * @param <T5> The type of the fifth message argument.
   * @param <T6> The type of the sixth message argument.
   */
  static public class Arg6<T1, T2, T3, T4, T5, T6> extends MessageDescriptor {
  @org.opends.server.types.PublicAPI(
      stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
      mayInstantiate=true,
      mayExtend=false,
      mayInvoke=true)
  static public final class Arg6<T1, T2, T3, T4, T5, T6> extends
      MessageDescriptor {
    /**
     * Creates a parameterized instance.
@@ -455,8 +517,20 @@
  /**
   * Subclass for creating messages with seven arguments.
   * @param <T1> The type of the first message argument.
   * @param <T2> The type of the second message argument.
   * @param <T3> The type of the third message argument.
   * @param <T4> The type of the fourth message argument.
   * @param <T5> The type of the fifth message argument.
   * @param <T6> The type of the sixth message argument.
   * @param <T7> The type of the seventh message argument.
   */
  static public class Arg7<T1, T2, T3, T4, T5, T6, T7>
  @org.opends.server.types.PublicAPI(
      stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
      mayInstantiate=true,
      mayExtend=false,
      mayInvoke=true)
  static public final class Arg7<T1, T2, T3, T4, T5, T6, T7>
          extends MessageDescriptor
  {
@@ -516,8 +590,21 @@
  /**
   * Subclass for creating messages with eight arguments.
   * @param <T1> The type of the first message argument.
   * @param <T2> The type of the second message argument.
   * @param <T3> The type of the third message argument.
   * @param <T4> The type of the fourth message argument.
   * @param <T5> The type of the fifth message argument.
   * @param <T6> The type of the sixth message argument.
   * @param <T7> The type of the seventh message argument.
   * @param <T8> The type of the eighth message argument.
   */
  static public class Arg8<T1, T2, T3, T4, T5, T6, T7, T8>
  @org.opends.server.types.PublicAPI(
      stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
      mayInstantiate=true,
      mayExtend=false,
      mayInvoke=true)
  static public final class Arg8<T1, T2, T3, T4, T5, T6, T7, T8>
          extends MessageDescriptor
  {
@@ -579,8 +666,22 @@
  /**
   * Subclass for creating messages with nine arguments.
   * @param <T1> The type of the first message argument.
   * @param <T2> The type of the second message argument.
   * @param <T3> The type of the third message argument.
   * @param <T4> The type of the fourth message argument.
   * @param <T5> The type of the fifth message argument.
   * @param <T6> The type of the sixth message argument.
   * @param <T7> The type of the seventh message argument.
   * @param <T8> The type of the eighth message argument.
   * @param <T9> The type of the ninth message argument.
   */
  static public class Arg9<T1, T2, T3, T4, T5, T6, T7, T8, T9>
  @org.opends.server.types.PublicAPI(
      stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
      mayInstantiate=true,
      mayExtend=false,
      mayInvoke=true)
  static public final class Arg9<T1, T2, T3, T4, T5, T6, T7, T8, T9>
          extends MessageDescriptor {
    /**
@@ -642,8 +743,23 @@
  /**
   * Subclass for creating messages with ten arguments.
   * @param <T1> The type of the first message argument.
   * @param <T2> The type of the second message argument.
   * @param <T3> The type of the third message argument.
   * @param <T4> The type of the fourth message argument.
   * @param <T5> The type of the fifth message argument.
   * @param <T6> The type of the sixth message argument.
   * @param <T7> The type of the seventh message argument.
   * @param <T8> The type of the eighth message argument.
   * @param <T9> The type of the ninth message argument.
   * @param <T10> The type of the tenth message argument.
   */
  static public class Arg10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
  @org.opends.server.types.PublicAPI(
      stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
      mayInstantiate=true,
      mayExtend=false,
      mayInvoke=true)
  static public final class Arg10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
          extends MessageDescriptor {
    /**
@@ -706,8 +822,24 @@
  /**
   * Subclass for creating messages with eleven arguments.
   * @param <T1> The type of the first message argument.
   * @param <T2> The type of the second message argument.
   * @param <T3> The type of the third message argument.
   * @param <T4> The type of the fourth message argument.
   * @param <T5> The type of the fifth message argument.
   * @param <T6> The type of the sixth message argument.
   * @param <T7> The type of the seventh message argument.
   * @param <T8> The type of the eighth message argument.
   * @param <T9> The type of the ninth message argument.
   * @param <T10> The type of the tenth message argument.
   * @param <T11> The type of the eleventh message argument.
   */
  static public class Arg11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
  @org.opends.server.types.PublicAPI(
      stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
      mayInstantiate=true,
      mayExtend=false,
      mayInvoke=true)
  static public final class Arg11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
          extends MessageDescriptor
  {
@@ -776,7 +908,12 @@
   * defined with more arguments that can be handled with the current
   * number of subclasses
   */
  static public class ArgN extends MessageDescriptor {
  @org.opends.server.types.PublicAPI(
      stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
      mayInstantiate=true,
      mayExtend=false,
      mayInvoke=true)
  static public final class ArgN extends MessageDescriptor {
    /**
     * Creates a parameterized instance.
@@ -832,7 +969,10 @@
   * plugins may want to use the mechanism to create messages without
   * storing their strings in resource bundles.
   */
  static class Raw extends MessageDescriptor {
  @org.opends.server.types.PublicAPI(
      stability=org.opends.server.types.StabilityLevel.PRIVATE
  )
  static final class Raw extends MessageDescriptor {
    private String formatString;
@@ -903,13 +1043,13 @@
  }
  /** String for accessing backing resource bundle. */
  protected String rbBase;
  private final String rbBase;
  /** Used for accessing format string from the resource bundle. */
  protected String key;
  private final String key;
  /** Category for messages created by this descriptor. */
  protected Category category;
  private final Category category;
  /**
   * Custom mask associated with messages created by this
@@ -917,35 +1057,35 @@
   * to indicate that the mask should come from
   * <code>category</code>.
   */
  protected Integer mask;
  private final Integer mask;
  /**
   * The severity associated with messages created by this
   * descriptor.
   */
  protected Severity severity;
  private final Severity severity;
  /**
   * The value that makes a message unique among other messages
   * having the same severity and category.  May be null for
   * raw messages.
   */
  protected Integer ordinal;
  private final Integer ordinal;
  /**
   * The class loader to be used to retrieve the ResourceBundle.  If null
   * the default class loader will be used.
   */
  protected ClassLoader classLoader;
  private final ClassLoader classLoader;
  private Map<Locale,String> formatStrMap = new HashMap<Locale,String>();
  private final Map<Locale,String> formatStrMap = new HashMap<Locale,String>();
  /**
   * Obtains the category of this descriptor.  Gauranteed not to be null.
   * @return Category of this message
   */
  public Category getCategory() {
  public final Category getCategory() {
    return this.category;
  }
@@ -953,7 +1093,7 @@
   * Obtains the severity of this descriptor.  Gauranteed not to be null.
   * @return Category of this message
   */
  public Severity getSeverity() {
  public final Severity getSeverity() {
    return this.severity;
  }
@@ -962,7 +1102,7 @@
   * unique among messages defined with the same category and severity.
   * @return int ordinal value
   */
  public int getOrdinal() {
  public final int getOrdinal() {
    if (this.ordinal == null)
      return 0;
    else
@@ -973,7 +1113,7 @@
   * Returns the ID unique to all OpenDS messages.
   * @return unique ID
   */
  public int getId() {
  public final int getId() {
    if (this.ordinal == null) { // ordinal may be null for raw messages
      return NULL_ID;
    } else {
@@ -987,7 +1127,7 @@
   * explicitly set in the constructor.
   * @return Integer mask value
   */
  public int getMask() {
  public final int getMask() {
    if (this.mask != null) {
      return this.mask;
    } else {
@@ -1000,7 +1140,7 @@
   * May be null for raw messages.
   * @return key of this message
   */
  public String getKey() {
  public final String getKey() {
    return this.key;
  }
@@ -1010,7 +1150,7 @@
   * May be null for raw messages.
   * @return string base
   */
  public String getBase() {
  public final String getBase() {
    return this.rbBase;
  }
@@ -1028,7 +1168,7 @@
   * locale.
   * @return format string
   */
  String getFormatString() {
  final String getFormatString() {
    return getFormatString(Locale.getDefault());
  }
@@ -1058,7 +1198,7 @@
   * @return boolean where true indicates that the format
   *         string requires formatting
   */
  protected boolean containsArgumentLiterals(String s) {
  protected final boolean containsArgumentLiterals(String s) {
    return s.matches(".*%[n|%].*"); // match Formatter literals
  }
@@ -1100,6 +1240,7 @@
    this.severity = severity;
    this.ordinal = ordinal;
    this.classLoader = classLoader;
    this.mask = null;
  }
  /**
@@ -1116,7 +1257,16 @@
  private MessageDescriptor(String rbBase, String key, int mask,
                     Severity severity, Integer ordinal,
                     ClassLoader classLoader) {
    this(rbBase, key, Category.USER_DEFINED, severity, ordinal, classLoader);
    if (severity == null) {
      throw new NullPointerException("Null Severity value for message " +
              "descriptor with key " + key);
    }
    this.rbBase = rbBase;
    this.key = key;
    this.category = Category.USER_DEFINED;
    this.severity = severity;
    this.ordinal = ordinal;
    this.classLoader = classLoader;
    this.mask = mask;
  }
opends/src/messages/src/org/opends/messages/MessageDescriptorRegistry.java
@@ -46,20 +46,22 @@
 * descriptors are stored in the text file "descriptors.reg" which is
 * generated during the OpenDS build process.
 */
public class MessageDescriptorRegistry {
@org.opends.server.types.PublicAPI(
     stability=org.opends.server.types.StabilityLevel.PRIVATE)
final class MessageDescriptorRegistry {
  private static final String REGISTRY_FILE = "descriptors.reg";
  private static final Set<Class> REGISTERED_MESSAGE_CLASSES =
                  new HashSet<Class>();
  private static final Set<Class<?>> REGISTERED_MESSAGE_CLASSES =
                  new HashSet<Class<?>>();
  private static final Map<Integer, MessageDescriptor>
          ID_TO_DESCRIPTORS =
                  new HashMap<Integer,MessageDescriptor>();
  private static final Map<Class, List<MessageDescriptor>>
  private static final Map<Class<?>, List<MessageDescriptor>>
          CLASS_TO_DESCRIPTORS =
                  new HashMap<Class,List<MessageDescriptor>>();
                  new HashMap<Class<?>,List<MessageDescriptor>>();
  static {
@@ -71,7 +73,7 @@
    try {
      while (null != (line = reader.readLine())) {
        String descClassName = line.trim();
        Class descClass;
        Class<?> descClass;
        try {
          descClass = Class.forName(descClassName);
          List<MessageDescriptor> mdList = new LinkedList<MessageDescriptor>();
@@ -125,7 +127,7 @@
   */
  public static List<MessageDescriptor> getMessageDescriptorsForClass(
          Class mdClass)
          Class<?> mdClass)
  {
    return Collections.unmodifiableList(CLASS_TO_DESCRIPTORS.get(mdClass));
  }
@@ -136,7 +138,7 @@
   *
   * @return list of classes
   */
  public static Set<Class> getRegisteredClasses() {
  public static Set<Class<?>> getRegisteredClasses() {
    return Collections.unmodifiableSet(REGISTERED_MESSAGE_CLASSES);
  }
opends/src/messages/src/org/opends/messages/Severity.java
@@ -39,6 +39,11 @@
 * integer value that can be used for bitwise operations as well
 * as a short abbreviated string form of each value.
 */
@org.opends.server.types.PublicAPI(
    stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
    mayInstantiate=false,
    mayExtend=false,
    mayInvoke=true)
public enum Severity {
  /**
@@ -153,9 +158,9 @@
    return parseMask(msgId & 0x000F0000);
  }
  private int mask;
  private String propertyKeyForm;
  private String messageDescriptorForm;
  private final int mask;
  private final String propertyKeyForm;
  private final String messageDescriptorForm;
  /**
   * Returns the mask associated with this <code>Severity</code>.
opends/src/messages/src/org/opends/messages/package-info.java
@@ -39,5 +39,7 @@
 * specifiers that are used to parameterize messages according to the rules of
 * <code>java.util.Formatter</code>.
 */
@org.opends.server.types.PublicAPI(
     stability=org.opends.server.types.StabilityLevel.VOLATILE)
package org.opends.messages;
opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageDescriptorRegistryTest.java
@@ -31,8 +31,6 @@
import org.testng.annotations.*;
import java.util.Set;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.ArrayList;
import java.util.Locale;
@@ -63,8 +61,8 @@
  @DataProvider(name = "message classes")
  public Object[][] getMessageClasses() {
    Set<Class> mdClasses = MessageDescriptorRegistry.getRegisteredClasses();
    List<Class> classesToTest = new ArrayList<Class>(mdClasses);
    Set<Class<?>> mdClasses = MessageDescriptorRegistry.getRegisteredClasses();
    List<Class<?>> classesToTest = new ArrayList<Class<?>>(mdClasses);
    // These newer message files don't comply
    classesToTest.remove(AdminToolMessages.class);
@@ -86,7 +84,7 @@
   *         class through reflection
   */
  @Test(dataProvider = "message classes")
  public void testFormatStringsDontEndWithPeriod(Class messagesClass)
  public void testFormatStringsDontEndWithPeriod(Class<?> messagesClass)
          throws IllegalAccessException
  {
    Field[] fa = messagesClass.getFields();
@@ -115,10 +113,10 @@
   */
  @Test
  public void testCategoriesDontSpanFiles() {
    Map<Category,Class> categoriesToClass = new HashMap<Category,Class>();
    Set categories = EnumSet.allOf(Category.class);
    Set<Class> msgClasses = MessageDescriptorRegistry.getRegisteredClasses();
    for (Class msgClass : msgClasses) {
    Map<Category,Class<?>> categoriesToClass = new HashMap<Category,Class<?>>();
    Set<?> categories = EnumSet.allOf(Category.class);
    Set<Class<?>> msgClasses = MessageDescriptorRegistry.getRegisteredClasses();
    for (Class<?> msgClass : msgClasses) {
      List<MessageDescriptor> mds =
              MessageDescriptorRegistry.getMessageDescriptorsForClass(msgClass);
      Category currentCategory = null;