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

Reply via email to