You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by bw...@apache.org on 2022/02/20 18:17:34 UTC

[netbeans] branch master updated: update VariableMirrorTranslator to bring it up to standards (#3647)

This is an automated email from the ASF dual-hosted git repository.

bwalker pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new de854f8  update VariableMirrorTranslator to bring it up to standards (#3647)
de854f8 is described below

commit de854f82fea30533dae7f462bb1886e4405921bb
Author: Brad Walker <bw...@musings.com>
AuthorDate: Sun Feb 20 13:17:21 2022 -0500

    update VariableMirrorTranslator to bring it up to standards (#3647)
    
    I initially started cleaning up VariableMirrorTranslator.java as part of
    some mass deprecation cleanup work I am doing.
    
    The changes for handling the autobox/unbox of the floating-point class turned
    into a general cleanup of the VariableMirrorTranslator class.
    
    - updated autobox/unbox
    - using multi-catch now
    - using strings in switch
    - update a couple of places should be using diamond operator
---
 .../jpda/models/VariableMirrorTranslator.java      | 149 ++++++++++-----------
 1 file changed, 70 insertions(+), 79 deletions(-)

diff --git a/java/debugger.jpda/src/org/netbeans/modules/debugger/jpda/models/VariableMirrorTranslator.java b/java/debugger.jpda/src/org/netbeans/modules/debugger/jpda/models/VariableMirrorTranslator.java
index dbbbd7a..26612f0 100644
--- a/java/debugger.jpda/src/org/netbeans/modules/debugger/jpda/models/VariableMirrorTranslator.java
+++ b/java/debugger.jpda/src/org/netbeans/modules/debugger/jpda/models/VariableMirrorTranslator.java
@@ -87,12 +87,12 @@ public class VariableMirrorTranslator {
     
     private static final Logger logger = Logger.getLogger(VariableMirrorTranslator.class.getName());
     
-    private static final Object NO_MIRROR = new String("NO_MIRROR");
+    private static final Object NO_MIRROR = "NO_MIRROR";
     
     private VariableMirrorTranslator() {}
     
     static Object createMirrorObject(Value value) {
-        return createMirrorObject(value, new HashMap<Value, Object>());
+        return createMirrorObject(value, new HashMap<>());
     }
     
     private static Object createMirrorObject(Value value, Map<Value, Object> mirrorsMap) {
@@ -112,33 +112,33 @@ public class VariableMirrorTranslator {
                         return ShortenedStrings.getStringWithLengthControl((StringReference) value);
                     }
                     return createMirrorObject((ObjectReference) value, (ReferenceType) type, clazz, mirrorsMap);
-                } catch (ClassNotFoundException ex) {
-                } catch (ClassNotPreparedExceptionWrapper ex) {
+                } catch (ClassNotFoundException | ClassNotPreparedExceptionWrapper ex) {
                 }
             } else {
-                if ("boolean".equals(typeStr)) {
-                    return Boolean.valueOf(((BooleanValue) value).booleanValue());
-                } else if ("byte".equals(typeStr)) {
-                    return new Byte(((ByteValue) value).byteValue());
-                } else if ("char".equals(typeStr)) {
-                    return new Character(((CharValue) value).charValue());
-                } else if ("short".equals(typeStr)) {
-                    return new Short(((ShortValue) value).shortValue());
-                } else if ("int".equals(typeStr)) {
-                    return new Integer(((IntegerValue) value).intValue());
-                } else if ("long".equals(typeStr)) {
-                    return new Long(((LongValue) value).longValue());
-                } else if ("float".equals(typeStr)) {
-                    return new Float(((FloatValue) value).floatValue());
-                } else if ("double".equals(typeStr)) {
-                    return new Double(((DoubleValue) value).doubleValue());
-                } else {
-                    throw new IllegalArgumentException("Unknown primitive type: "+typeStr+" from "+type);
+                if (null == typeStr) {
+                    throw new IllegalArgumentException("Unknown primitive type: " + typeStr + " from " + type);
+                } else switch (typeStr) {
+                    case "boolean":
+                        return ((BooleanValue) value).booleanValue();
+                    case "byte":
+                        return ((ByteValue) value).byteValue();
+                    case "char":
+                        return ((CharValue) value).charValue();
+                    case "short":
+                        return ((ShortValue) value).shortValue();
+                    case "int":
+                        return ((IntegerValue) value).intValue();
+                    case "long":
+                        return ((LongValue) value).longValue();
+                    case "float":
+                        return ((FloatValue) value).floatValue();
+                    case "double":
+                        return ((DoubleValue) value).doubleValue();
+                    default:
+                        throw new IllegalArgumentException("Unknown primitive type: "+typeStr+" from "+type);
                 }
             }
-        } catch (InternalExceptionWrapper ex) {
-        } catch (VMDisconnectedExceptionWrapper ex) {
-        } catch (ObjectCollectedExceptionWrapper ex) {
+        } catch (InternalExceptionWrapper | VMDisconnectedExceptionWrapper | ObjectCollectedExceptionWrapper ex) {
         }
         return null;
     }
@@ -156,17 +156,7 @@ public class VariableMirrorTranslator {
             Object newInstance = constructor.newInstance();
             return newInstance;
             
-        } catch (InstantiationException ex) {
-            logger.log(Level.INFO, "Problem while creating a pristine instance of "+clazz, ex);
-        } catch (IllegalAccessException ex) {
-            logger.log(Level.INFO, "Problem while creating a pristine instance of "+clazz, ex);
-        } catch (IllegalArgumentException ex) {
-            logger.log(Level.INFO, "Problem while creating a pristine instance of "+clazz, ex);
-        } catch (InvocationTargetException ex) {
-            logger.log(Level.INFO, "Problem while creating a pristine instance of "+clazz, ex);
-        } catch (NoSuchMethodException ex) {
-            logger.log(Level.INFO, "Problem while creating a pristine instance of "+clazz, ex);
-        } catch (SecurityException ex) {
+        } catch (ReflectiveOperationException | IllegalArgumentException | SecurityException ex) {
             logger.log(Level.INFO, "Problem while creating a pristine instance of "+clazz, ex);
         }
         return null;
@@ -235,7 +225,7 @@ public class VariableMirrorTranslator {
             }
             mirrorsMap.put(value, newInstance);
             List<Field> fields = ReferenceTypeWrapper.allFields0(type);
-            List<Field> fieldsToAskFor = new ArrayList<Field>();
+            List<Field> fieldsToAskFor = new ArrayList<>();
             for (Field f : fields) {
                 if (!f.isStatic()) {
                     fieldsToAskFor.add(f);
@@ -322,7 +312,7 @@ public class VariableMirrorTranslator {
     
     private static Map<Field, Value> getFieldValues(ObjectReference value, ReferenceType type, String... names) throws InternalExceptionWrapper, VMDisconnectedExceptionWrapper, ObjectCollectedExceptionWrapper, ClassNotPreparedExceptionWrapper {
         final int n = names.length;
-        List<Field> fieldsToAskFor = new ArrayList<Field>(n);
+        List<Field> fieldsToAskFor = new ArrayList<>(n);
         for (String name : names) {
             Field field = ReferenceTypeWrapper.fieldByName(type, name);
             if (field == null) {
@@ -377,18 +367,10 @@ public class VariableMirrorTranslator {
             
             return createValueFromMirror(mirror, clazz, isObject, vm, threadReference);
             
-        } catch (IncompatibleThreadStateException ex) {
+        } catch (IncompatibleThreadStateException | UnsupportedOperationExceptionWrapper | PropertyVetoException ex) {
             InvalidObjectException ioex = new InvalidObjectException(ex.getLocalizedMessage());
             ioex.initCause(ex);
             throw ioex;
-        } catch (UnsupportedOperationExceptionWrapper ex) {
-            InvalidObjectException ioex = new InvalidObjectException(ex.getLocalizedMessage());
-            ioex.initCause(ex);
-            throw ioex;
-        } catch (PropertyVetoException pvex) {
-            InvalidObjectException ioex = new InvalidObjectException(pvex.getLocalizedMessage());
-            ioex.initCause(pvex);
-            throw ioex;
         } finally {
             if (invoking) {
                 currentThread.notifyMethodInvokeDone();
@@ -407,28 +389,28 @@ public class VariableMirrorTranslator {
         boolean isPrimitive = clazz.isPrimitive();
         if (!isObject || isPrimitive) { // Primitive type
             if (Boolean.TYPE.equals(clazz) || Boolean.class.equals(clazz)) {
-                return vm.mirrorOf(((Boolean) mirror).booleanValue());
+                return vm.mirrorOf(((Boolean) mirror));
             }
             if (Byte.TYPE.equals(clazz) || Byte.class.equals(clazz)) {
-                return vm.mirrorOf(((Byte) mirror).byteValue());
+                return vm.mirrorOf(((Byte) mirror));
             }
             if (Character.TYPE.equals(clazz) || Character.class.equals(clazz)) {
-                return vm.mirrorOf(((Character) mirror).charValue());
+                return vm.mirrorOf(((Character) mirror));
             }
             if (Short.TYPE.equals(clazz) || Short.class.equals(clazz)) {
-                return vm.mirrorOf(((Short) mirror).shortValue());
+                return vm.mirrorOf(((Short) mirror));
             }
             if (Integer.TYPE.equals(clazz) || Integer.class.equals(clazz)) {
-                return vm.mirrorOf(((Integer) mirror).intValue());
+                return vm.mirrorOf(((Integer) mirror));
             }
             if (Long.TYPE.equals(clazz) || Long.class.equals(clazz)) {
-                return vm.mirrorOf(((Long) mirror).longValue());
+                return vm.mirrorOf(((Long) mirror));
             }
             if (Float.TYPE.equals(clazz) || Float.class.equals(clazz)) {
-                return vm.mirrorOf(((Float) mirror).floatValue());
+                return vm.mirrorOf(((Float) mirror));
             }
             if (Double.TYPE.equals(clazz) || Double.class.equals(clazz)) {
-                return vm.mirrorOf(((Double) mirror).doubleValue());
+                return vm.mirrorOf(((Double) mirror));
             }
             throw new InvalidObjectException("Unknown primitive type "+clazz);
         } else {
@@ -464,7 +446,7 @@ public class VariableMirrorTranslator {
                         throw ioex;
                     }
                     List<Field> fields = ReferenceTypeWrapper.allFields0(type);
-                    List<Field> fieldsToSet = new ArrayList<Field>();
+                    List<Field> fieldsToSet = new ArrayList<>();
                     for (Field f : fields) {
                         if (!f.isStatic()) {
                             fieldsToSet.add(f);
@@ -483,10 +465,6 @@ public class VariableMirrorTranslator {
                             field.setAccessible(true);
                             fm = field.get(mirror);
                             fieldType = field.getType();
-                        //} catch (NoSuchFieldException nsfex) {
-                        //    InvalidObjectException ioex = new InvalidObjectException("No field "+name+" of class "+clazz);
-                        //    ioex.initCause(nsfex);
-                        //    throw ioex;
                         } catch (SecurityException seex) {
                             InvalidObjectException ioex = new InvalidObjectException("Retrieving field "+name+" of class "+clazz);
                             ioex.initCause(seex);
@@ -652,27 +630,41 @@ public class VariableMirrorTranslator {
     }
     
     private static Type boxType(Type t) {
+        Type rval = t;
+
         if (t instanceof ClassType) {
-            String name = ((ClassType) t).name();
-            if (name.equals("java.lang.Boolean")) {
-                t = t.virtualMachine().mirrorOf(true).type();
-            } else if (name.equals("java.lang.Byte")) {
-                t = t.virtualMachine().mirrorOf((byte) 10).type();
-            } else if (name.equals("java.lang.Character")) {
-                t = t.virtualMachine().mirrorOf('a').type();
-            } else if (name.equals("java.lang.Integer")) {
-                t = t.virtualMachine().mirrorOf(10).type();
-            } else if (name.equals("java.lang.Long")) {
-                t = t.virtualMachine().mirrorOf(10l).type();
-            } else if (name.equals("java.lang.Short")) {
-                t = t.virtualMachine().mirrorOf((short)10).type();
-            } else if (name.equals("java.lang.Float")) {
-                t = t.virtualMachine().mirrorOf(10f).type();
-            } else if (name.equals("java.lang.Double")) {
-                t = t.virtualMachine().mirrorOf(10.0).type();
+            String name = ((ClassType)t).name();
+            
+            switch (name) {
+                case "java.lang.Boolean":
+                    rval = t.virtualMachine().mirrorOf(true).type();
+                    break;
+                case "java.lang.Byte":
+                    rval = t.virtualMachine().mirrorOf((byte) 10).type();
+                    break;
+                case "java.lang.Character":
+                    rval = t.virtualMachine().mirrorOf('a').type();
+                    break;
+                case "java.lang.Integer":
+                    rval = t.virtualMachine().mirrorOf(10).type();
+                    break;
+                case "java.lang.Long":
+                    rval = t.virtualMachine().mirrorOf(10l).type();
+                    break;
+                case "java.lang.Short":
+                    rval = t.virtualMachine().mirrorOf((short)10).type();
+                    break;
+                case "java.lang.Float":
+                    rval = t.virtualMachine().mirrorOf(10f).type();
+                    break;
+                case "java.lang.Double":
+                    rval = t.virtualMachine().mirrorOf(10.0).type();
+                    break;
+                default:
+                    break;
             }
         }
-        return t;
+        return rval;
     }
 
     private static ObjectReference getDeclaredOrInheritedField(ClassType clazz, String name, VirtualMachine vm, ThreadReference thread) throws InternalExceptionWrapper, VMDisconnectedExceptionWrapper, ClassNotPreparedExceptionWrapper, ClassNotLoadedException, ObjectCollectedExceptionWrapper, IncompatibleThreadStateException, UnsupportedOperationExceptionWrapper, InvalidTypeException {
@@ -702,5 +694,4 @@ public class VariableMirrorTranslator {
             return null;
         }
     }
-    
 }

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists