Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Herrmann2019-09-24 21:23:26 +0000
committerStephan Herrmann2019-09-24 21:23:26 +0000
commit3bd93e26c83a93ffcdf105d546429ede70b13f06 (patch)
tree445608818b50cfef98dc5be5dcd01b105bda57ee
parent79083c3cdeb2a4d0d81bf944be0d26b02be61ef5 (diff)
downloadeclipse.jdt.core-3bd93e26c83a93ffcdf105d546429ede70b13f06.tar.gz
eclipse.jdt.core-3bd93e26c83a93ffcdf105d546429ede70b13f06.tar.xz
eclipse.jdt.core-3bd93e26c83a93ffcdf105d546429ede70b13f06.zip
Bug 547197 - [9][model] API to get the kind of a IModuleDescription
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/Java9ElementTests.java32
-rw-r--r--org.eclipse.jdt.core/model/org/eclipse/jdt/core/IModuleDescription.java8
-rw-r--r--org.eclipse.jdt.core/model/org/eclipse/jdt/core/provisional/JavaModelAccess.java4
-rw-r--r--org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryModule.java6
4 files changed, 47 insertions, 3 deletions
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/Java9ElementTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/Java9ElementTests.java
index f7b6dbfc33..29ce20f5a8 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/Java9ElementTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/Java9ElementTests.java
@@ -1337,6 +1337,7 @@ public class Java9ElementTests extends AbstractJavaModelTests {
IPackageFragmentRoot fragmentRoot = project2.getPackageFragmentRoot(project1.getResource());
IModuleDescription mod2 = JavaCore.getAutomaticModuleDescription(fragmentRoot);
assertNotNull("auto module not found via package fragment root", mod2);
+ assertTrue("should be an auto module", mod2.isAutoModule());
assertEquals("names of module descriptions should be equal", mod1.getElementName(), mod2.getElementName());
@@ -1360,8 +1361,35 @@ public class Java9ElementTests extends AbstractJavaModelTests {
assertEquals(fragmentRoot, mod2.getParent());
}
finally {
- deleteProject("Java9Elements");
- deleteProject("Java9Elements2");
+ deleteProject("my_mod");
+ deleteProject("your.mod");
+ }
+ }
+ public void testSystemModule() throws Exception {
+ try {
+ IJavaProject project1 = createJava9Project("my_mod");
+ IModuleDescription mod = project1.findModule("java.base", this.wcOwner);
+ assertTrue("should be a system module", mod.isSystemModule());
+ mod = project1.findModule("java.desktop", this.wcOwner);
+ assertTrue("should be a system module", mod.isSystemModule());
+
+ createFile("/my_mod/src/module-info.java",
+ "module my_mod{\n" +
+ "}");
+ mod = project1.getModuleDescription();
+ assertFalse("should not be a system module", mod.isSystemModule());
+
+ addModularLibrary(project1, "mod.two.jar", "mod.two-sources.zip",
+ new String[] {
+ "module-info.java",
+ "module mod.two {}\n"
+ }, JavaCore.VERSION_9);
+
+ mod = project1.findModule("mod.two", this.wcOwner);
+ assertFalse("should not be a system module", mod.isSystemModule());
+
+ } finally {
+ deleteProject("my_mod");
}
}
public void test526761a() throws Exception {
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IModuleDescription.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IModuleDescription.java
index 5455e734e5..bf5eed5c96 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IModuleDescription.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IModuleDescription.java
@@ -83,4 +83,12 @@ public interface IModuleDescription extends IMember, IAnnotatable {
default boolean isAutoModule() {
return false;
}
+
+ /**
+ * @return true if this module is a system module, else false
+ * @since 3.20
+ */
+ default boolean isSystemModule() {
+ return false;
+ }
}
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/provisional/JavaModelAccess.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/provisional/JavaModelAccess.java
index 73e7644700..0bdc298098 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/provisional/JavaModelAccess.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/provisional/JavaModelAccess.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2017, 2018 GK Software SE, and others.
+ * Copyright (c) 2017, 2019 GK Software SE, and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -71,7 +71,9 @@ public class JavaModelAccess {
* @param module the module being queried about
* @return {@code true} iff the module is defined in the system library (also known as JRE).
* @since 3.18
+ * @deprecated please use {@link IModuleDescription#isSystemModule()}
*/
+ @Deprecated
public static boolean isSystemModule(IModuleDescription module) {
IPackageFragmentRoot pfr = (IPackageFragmentRoot) module.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
return pfr instanceof JrtPackageFragmentRoot;
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryModule.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryModule.java
index 2d6bffdb51..e2bb12ed88 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryModule.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryModule.java
@@ -19,6 +19,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.jdt.core.IAnnotation;
import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.ISourceRange;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
@@ -65,6 +66,11 @@ public class BinaryModule extends BinaryMember implements AbstractModule {
return true;
}
@Override
+ public boolean isSystemModule() {
+ IPackageFragmentRoot pfr = (IPackageFragmentRoot) getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
+ return pfr instanceof JrtPackageFragmentRoot;
+ }
+ @Override
public int getFlags() throws JavaModelException {
if (getModuleInfo().isOpen())
return ClassFileConstants.ACC_OPEN;

Back to the top