Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGunnar Wagenknecht2020-09-28 08:16:51 +0000
committerManoj Palat2020-11-02 02:07:08 +0000
commitdc66657375b624ab8472ee46037788670cc44d9e (patch)
treedb5dbe8067d0f8aab49d63bbda90057063358227
parentaa94311cac69ae05bf1aec3a20a1def2f59d2174 (diff)
downloadeclipse.jdt.core-dc66657375b624ab8472ee46037788670cc44d9e.tar.gz
eclipse.jdt.core-dc66657375b624ab8472ee46037788670cc44d9e.tar.xz
eclipse.jdt.core-dc66657375b624ab8472ee46037788670cc44d9e.zip
Bug 566498 - Use parsed module-info.class from cache
The getter always triggered parsing of the module-info.class file ignoring any cached state. This is especially worrisome for JRT modules, which effectively never change. Change-Id: I0d27adbaa545291dff768b317f8e4960b06539c4
-rw-r--r--org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ModularClassFile.java16
1 files changed, 5 insertions, 11 deletions
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ModularClassFile.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ModularClassFile.java
index 14addc395d..7751e9aa8d 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ModularClassFile.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ModularClassFile.java
@@ -36,8 +36,6 @@ import org.eclipse.jdt.internal.core.util.Util;
*/
public class ModularClassFile extends AbstractClassFile implements IModularClassFile {
- private BinaryModule binaryModule;
-
protected ModularClassFile(PackageFragment parent) {
super(parent, TypeConstants.MODULE_INFO_NAME_STRING);
}
@@ -64,10 +62,7 @@ public class ModularClassFile extends AbstractClassFile implements IModularClass
BinaryModule module = new BinaryModule(this, moduleInfo);
newElements.put(module, moduleInfo);
info.setChildren(new IJavaElement[] {module});
- this.binaryModule = module;
- if (info instanceof ClassFileInfo) {
- ((ClassFileInfo) info).setModule(module);
- }
+ ((ClassFileInfo) info).setModule(module);
((PackageFragmentRootInfo) getPackageFragmentRoot().getElementInfo()).setModule(module);
return true;
}
@@ -294,11 +289,10 @@ public class ModularClassFile extends AbstractClassFile implements IModularClass
@Override
public IModuleDescription getModule() throws JavaModelException {
- if (this.binaryModule == null) {
- openWhenClosed(createElementInfo(), false, null);
- if (this.binaryModule == null)
- throw newNotPresentException();
+ BinaryModule module = (BinaryModule) ((ClassFileInfo) getElementInfo()).getModule();
+ if (module == null) {
+ throw newNotPresentException();
}
- return this.binaryModule;
+ return module;
}
}

Back to the top