[535233] Name resolver for special classes

Fix int, void etc.

Change-Id: I76c1888f47b116ce19a36181ba866cba83bdef77
diff --git a/plugins/org.eclipse.mat.api/plugin.xml b/plugins/org.eclipse.mat.api/plugin.xml
index 59a7155..b329592 100644
--- a/plugins/org.eclipse.mat.api/plugin.xml
+++ b/plugins/org.eclipse.mat.api/plugin.xml
Binary files differ
diff --git a/plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/CommonNameResolver.java b/plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/CommonNameResolver.java
index 6accdfe..63c32d3 100644
--- a/plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/CommonNameResolver.java
+++ b/plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/CommonNameResolver.java
@@ -1,5 +1,5 @@
 /*******************************************************************************

- * Copyright (c) 2008, 2017 SAP AG and IBM Corporation.

+ * Copyright (c) 2008, 2018 SAP AG and IBM Corporation.

  * All rights reserved. This program and the accompanying materials

  * are made available under the terms of the Eclipse Public License v1.0

  * which accompanies this distribution, and is available at

@@ -106,6 +106,26 @@
         }

     }

 

+    /**

+     * For Oracle VMs for int.class, byte.class, void.class etc.

+     * These are just simple IObjects, not IClass objects.

+     * All other classes resolve via IClass.

+     */

+    @Subjects("java.lang.Class")

+    public static class ClassTypeResolver implements IClassSpecificNameResolver

+    {

+        public String resolve(IObject object) throws SnapshotException

+        {

+            // Let normal IClass resolution happen if possible

+            if (object instanceof IClass)

+                return null;

+            IObject nameString = (IObject) object.resolveValue("name"); //$NON-NLS-1$

+            if (nameString == null)

+                return null;

+            return nameString.getClassSpecificName();

+        }

+    }

+

     @Subjects("java.util.concurrent.atomic.AtomicBoolean")

     public static class AtomicBooleanResolver implements IClassSpecificNameResolver

     {