Nachrichtenpakete

Beschreibung

Die Java-Standardelemente "ResourceBundle" haben relativ ineffiziente Platzmerkmale. Da bei der Ausführung von Eclipse in der Regel viele Nachrichten ausgelagert werden müssen, wurde für die Verwendung in Eclipse ein neues System für Nachrichtenpakete implementiert. Dieser Mechanismus ist ziemlich einfach und vollständig generisch - er kann überall eingesetzt werden.

Zusammenfassung des neuen Ansatzes:

Bei Erstellung einer neuen Nachricht:

Beispieldateien:

Client-Code

Alter Code:

public class MyClass {
  public void myMethod() {
    String message;
    ...
    // keine Argumente
    message = Messages.getString("key.one"); //$NON-NLS-1$
    ...
    // ein Argument binden
    message = MessageFormat.format(Messages.getString("key.two"), new Object[] {"Verwendungsbeispiel"}); //$NON-NLS-1$ //$NON-NLS-2$
    ...
  }
}

Neuer Code:

public class MyClass {
  public void myMethod() {
    String message;
    ...
    // keine Argumente
    message = Messages.key_one;
    ...
    // ein Argument binden
    message = NLS.bind(Messages.key_two, "example usage"); //$NON-NLS-1$
    ...
  }
}

Messages.java

Alter Code:

public class Messages {
  private static final String BUNDLE_NAME = "org.eclipse.core.utils.messages"; //$NON-NLS-1$
  private static final ResourceBundle bundle = ResourceBundle.getBundle(BUNDLE_NAME);
   
  public static String getString(String key) {
    try {
      return bundle.getString(key);
    } catch (MissingResourceException e) {
      return key;
    }
  }
}

Neuer Code:

import org.eclipse.osgi.util.NLS;
public class Messages extends NLS {
  private static final String BUNDLE_NAME = "org.eclipse.core.utils.messages"; //$NON-NLS-1$
   
  public static String key_one;
  public static String key_two;
  ...
  static {
    NLS.initializeMessages(BUNDLE_NAME, Messages.class);
  }
}

messages.properties

Alter Code:

key.one = Hello world.
key.two = Dies ist ein {0} einer Bindung mit einem Argument.

Neuer Code:

key_one = Hello world.
key_two = Dies ist ein {0} einer Bindung mit einem Argument.