ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
697
697
EMPFEHLEN
-
Hallo,
Ich möchte gerne eine Automatische Prüfung in plugin Einbauen.
Ich habe Nachrichtendefinition in enum:
public enum MYMESSAGES{
MESSAGE1,
MESSAGE2;...}
und Eigentliche Nachrichten sind in messages_x.properties
Ich möchte eine Prüfung Einbauen, sobald ich eine enum Wert MYMESSAGES eintrage ob eine .properties disen Wert als Key enthält.
Wie kann ich dieser Prüfung in eclipse Einbauen!?
Danke.
-
06.07.10 22:36 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo Nemos,
interessante Aufgabe die du da hast...
Ich würde hier ein eigenes kleines Eclipse Plugin schreiben, dass die JDT Infrastruktur benutzt. Dazu würde ich mir eine Annotation @MessageBundle oder @Messages definieren. Damit würde ich die enums Annotieren, welche die Message-Keys enthalten. Nun kann das Plugin diese Enums per Reflection analysiseren und dann prüfen ob das dazugehörige Ressource-Bundle auch die entsprechenden Werte enthält.
Die Prüfung könntest du dann beispielsweise über APT (Annotation Processing Tool) realisieren...
Du könntest dann über diesen ExtensionPoint:
http://help.eclipse.org/helios/index...orFactory.html
Eine eigene AnnoationProcessingFactory registrieren. Dort erzeugst du dann deinen AnnotationProcessor der automatisch beim Compile-Lauf von Eclipse (beispielsweise beim Speichern des
gerade editierten enums
aufgerufen wird. Wenn dann ein Schlüssel fehlt, kannst du sogar direkt in Eclipse Warn-/Fehlermeldungen erzeugen lassen 
Eine Möglichkeit für den generellen Mechanismus wie du ihn beschreibst wäre übirgens:
Code java:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
package de.tutorials.msg; import java.lang.reflect.Field; import java.util.ResourceBundle; public interface ResourceBundleAwareMessages { public static class MessageInitializer { public static void initializeMessages(Class<? extends ResourceBundleAwareMessages> clazz) { ResourceBundle bundle = ResourceBundle.getBundle(clazz.getName()); for (Field field : clazz.getFields()) { String fieldName = field.getName(); if (bundle.containsKey(fieldName)) { try { String value = bundle.getString(fieldName); Object o = field.get(null); Field nameField = o.getClass().getSuperclass().getDeclaredField("name"); nameField.setAccessible(true); nameField.set(o, value); } catch (Exception e) { e.printStackTrace(); } }else{ //logger String bundleName = clazz.getSimpleName()+"_"+bundle.getLocale()+".properties"; System.err.printf("Missing resource-key %s in bundle %s",fieldName,bundleName).println(); } } } } }
Code java:1 2 3 4 5 6 7 8
package de.tutorials.msg; public enum ErrorMessages implements ResourceBundleAwareMessages { Error0 ,Error1; static { MessageInitializer.initializeMessages(ErrorMessages.class); } }
Unsere ErrorMessages_de_DE.properties
Ausgabe:Code :1
Error0=Fehler 0
Code :1 2 3
Missing resource-key Error1 in bundle ErrorMessages_de_DE.properties Fehler 0 Error1
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Hallo Thomas,
danke für deinen Vorschlag!
I habe eine Lösung basierend auf ..jdt.core.compilationpatisipant extention Point gemacht,
so kann ich alle Änderungen aus workspace abfangen, nach benötigte Ressource filtern.
Ich kann alle enum Werte die ich brauche über CompilationUnt->types() (cust to org.eclipse.jdt.core.dom.EnumDeclaration )
abfragen etc.
Danke noch mal für deinen Vorschlag!
Ähnliche Themen
-
Checkstyle-Fehler bei Ausführung durch ANT: Unexpected attribute: xmlns:cs
Von DirkHo im Forum JavaAntworten: 1Letzter Beitrag: 29.07.10, 15:06 -
Checkstyle in Eclipse
Von vogella im Forum Java Technology NewsAntworten: 0Letzter Beitrag: 09.08.09, 17:45 -
Eclipse & JNI - UnsatisfiedLinkError in nativer Methode in Eclipse, aber nicht extern
Von Prontector im Forum JavaAntworten: 0Letzter Beitrag: 11.05.09, 12:46 -
Eclipse basierte JSF Tools / Eclipse Visual JSF Page Designer
Von Thomas Darimont im Forum Java Technology NewsAntworten: 0Letzter Beitrag: 07.03.07, 00:20 -
[Eclipse] JFace kommt mit ein paar netten Layout Gehilfen in Eclipse 3.2 :)
Von Thomas Darimont im Forum JavaAntworten: 0Letzter Beitrag: 23.11.06, 23:34





Zitieren

Login





