Martin Mucha has uploaded a new change for review. Change subject: userportal,webadmin:change Translator to interface ......................................................................
userportal,webadmin:change Translator to interface * transform class Translator into an interface * push 'contains' implementation to descendants and correct it so it does not return (almost) always true. * fix it's direct descendant, so it logs attempts to localize 'null' value, which is probable bug. Change-Id: Ib018c1faf0c2e1ebaa81217d5e3696d9c8de20cf Signed-off-by: Martin Mucha <mmu...@redhat.com> --- M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/EnumTranslator.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Translator.java 2 files changed, 46 insertions(+), 20 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/96/26596/1 diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/EnumTranslator.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/EnumTranslator.java index 81bcaf0..363e4dd 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/EnumTranslator.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/EnumTranslator.java @@ -5,7 +5,7 @@ import com.google.gwt.core.client.GWT; -public class EnumTranslator extends Translator<Enum<?>> { +public class EnumTranslator implements Translator<Enum<?>> { private static final Logger logger = Logger.getLogger(EnumTranslator.class.getName()); private static final UIConstants constants = GWT.create(UIConstants.class); private static final EnumTranslator INSTANCE = new EnumTranslator(); @@ -22,20 +22,53 @@ @Override public String get(Enum<?> key) { if(key == null) { - return constants.notAvailableLabel(); + logTryingToLocalizeNull(); + return constants.notAvailableLabel(); } try { - //FIXME: hack: due to java restriction for method names with chars that are not letters, digits, and underscores, replace . with 0 - String enumName = key.getDeclaringClass().toString(); - enumName = enumName.substring(enumName.lastIndexOf(".")+1,enumName.length()); //$NON-NLS-1$ - String translatedEnum = enums.getString(enumName + "___" + key.toString()); //$NON-NLS-1$ - - return translatedEnum; + final String translatedString = enums.getString(keyToTranslate(key)); + return translatedString != null? translatedString : notLocalizedKey(key); } catch (MissingResourceException e) { // Silently ignore missing resource - logger.info("Missing Enum resource: " + e.getLocalizedMessage()); //$NON-NLS-1$ - return key.name(); + return notLocalizedKey(key, e); } } + + private void logTryingToLocalizeNull() { + final StringBuilder stringBuilder = new StringBuilder(); + for (StackTraceElement stackTraceElement : new RuntimeException().getStackTrace()) { + stringBuilder.append(stackTraceElement.getMethodName()); + } + + logger.info("trying to localize null, probable error\n"+ stringBuilder.toString()); + } + + private String notLocalizedKey(Enum<?> key) { + return notLocalizedKey(key, null); + } + + private String notLocalizedKey(Enum<?> key, MissingResourceException e) { + String logString = "Missing Enum resource '" + key + "'."; //$NON-NLS-1$ + if (e != null) { + logString += e.getLocalizedMessage(); + } + + logger.info(logString); + return key.name(); + } + + private String keyToTranslate(Enum<?> key) { + String className = key.getDeclaringClass().toString(); + String classNameWithoutPackage = className.substring(className.lastIndexOf(".")+1,className.length()); //$NON-NLS-1$ + + return classNameWithoutPackage + "___" + key.name(); + } + + @Override + public boolean containsKey(Enum<?> key){ + final String translatedString = enums.getString(keyToTranslate(key)); + + return translatedString != null; + } } diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Translator.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Translator.java index 9a88186..351e5aa 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Translator.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Translator.java @@ -1,16 +1,9 @@ package org.ovirt.engine.ui.uicompat; -public class Translator<T> { +public interface Translator<T> { - public String get(T key) { - if(key == null) { - return null; - } - return key.toString(); - } + public String get(T key); - public boolean containsKey(T key){ - return get(key)!=null; - } + boolean containsKey(T key); } -- To view, visit http://gerrit.ovirt.org/26596 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib018c1faf0c2e1ebaa81217d5e3696d9c8de20cf Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Martin Mucha <mmu...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches