This is an automated email from the ASF dual-hosted git repository. lkishalmi 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 83d5e45 [NETBEANS-2409](partial): attempting to avoid FileUtil.normalizeFile inside FileObject.getFileObject in java.openjdk.project related cases. 83d5e45 is described below commit 83d5e4574f12b8b98a18e1fbfa83d97f398b16be Author: Jan Lahoda <jlah...@netbeans.org> AuthorDate: Fri Apr 19 15:59:11 2019 +0200 [NETBEANS-2409](partial): attempting to avoid FileUtil.normalizeFile inside FileObject.getFileObject in java.openjdk.project related cases. --- .../ide/ergonomics/fod/FeatureProjectFactory.java | 10 ++++- .../src/META-INF/upgrade/BuildUtils.hint | 24 +++++++++++ .../modules/java/openjdk/common/BuildUtils.java | 16 +++++++- .../java/openjdk/jtreg/ActionProviderImpl.java | 36 ++++++++--------- .../java/openjdk/jtreg/ClassPathProviderImpl.java | 11 ++--- .../modules/java/openjdk/jtreg/ModulesHint.java | 3 +- .../modules/java/openjdk/jtreg/Utilities.java | 16 ++++---- .../java/openjdk/project/ActionProviderImpl.java | 6 +-- .../java/openjdk/project/ConfigurationImpl.java | 6 +-- .../openjdk/project/FilterStandardProjects.java | 15 +++---- .../modules/java/openjdk/project/JDKProject.java | 11 ++--- .../java/openjdk/project/ModuleDescription.java | 47 +++++++++++----------- .../java/openjdk/project/SourceLevelQueryImpl.java | 5 ++- .../java/openjdk/jtreg/ActionProviderImplTest.java | 2 +- .../openjdk/project/ClassPathProviderImplTest.java | 5 ++- .../openjdk/project/SourceLevelQueryImplTest.java | 3 +- 16 files changed, 135 insertions(+), 81 deletions(-) diff --git a/ergonomics/ide.ergonomics/src/org/netbeans/modules/ide/ergonomics/fod/FeatureProjectFactory.java b/ergonomics/ide.ergonomics/src/org/netbeans/modules/ide/ergonomics/fod/FeatureProjectFactory.java index cca8b43..cdf483d 100644 --- a/ergonomics/ide.ergonomics/src/org/netbeans/modules/ide/ergonomics/fod/FeatureProjectFactory.java +++ b/ergonomics/ide.ergonomics/src/org/netbeans/modules/ide/ergonomics/fod/FeatureProjectFactory.java @@ -140,7 +140,15 @@ implements ProjectFactory, PropertyChangeListener, Runnable { } final boolean hasFile(String relative) { - return dir.getFileObject(relative) != null; + FileObject d = dir; + int pos = 0; + + while (relative.startsWith("../", pos) && d != null) { + d = d.getParent(); + pos += 3; + } + + return d != null && d.getFileObject(relative) != null; } final boolean isDeepCheck() { diff --git a/java/java.openjdk.project/src/META-INF/upgrade/BuildUtils.hint b/java/java.openjdk.project/src/META-INF/upgrade/BuildUtils.hint new file mode 100644 index 0000000..8b6bb86 --- /dev/null +++ b/java/java.openjdk.project/src/META-INF/upgrade/BuildUtils.hint @@ -0,0 +1,24 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +<!suppress-warnings="org.netbeans.modules.java.openjdk.common.BuildUtils.getFileObject"> +$fileObject.getFileObject($relpath) :: $fileObject instanceof org.openide.filesystems.FileObject && $relpath instanceof java.lang.String +=> +org.netbeans.modules.java.openjdk.common.BuildUtils.getFileObject($fileObject, $relpath) +;; diff --git a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/common/BuildUtils.java b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/common/BuildUtils.java index fd845a7..e6efb4f 100644 --- a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/common/BuildUtils.java +++ b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/common/BuildUtils.java @@ -72,7 +72,7 @@ public class BuildUtils { public static File getBuildTargetDir(Project prj) { for (String possibleRootLocation : new String[] {"../../..", "../.."}) { - FileObject possibleJDKRoot = prj.getProjectDirectory().getFileObject(possibleRootLocation); + FileObject possibleJDKRoot = BuildUtils.getFileObject(prj.getProjectDirectory(), possibleRootLocation); Object buildAttr = possibleJDKRoot != null ? possibleJDKRoot.getAttribute(NB_JDK_PROJECT_BUILD) : null; if (buildAttr instanceof File) { @@ -85,4 +85,18 @@ public class BuildUtils { public static final String NB_JDK_PROJECT_BUILD = "nb-jdk-project-build"; + @SuppressWarnings("org.netbeans.modules.java.openjdk.common.BuildUtils.getFileObject") + public static FileObject getFileObject(FileObject dir, String relpath) { + int pos = 0; + + while ((relpath.startsWith("../", pos)) || (relpath.endsWith("..") && pos + 2 == relpath.length())) { + dir = dir.getParent(); + if (dir == null) { + return null; + } + pos += 3; + } + + return pos < relpath.length() ? dir.getFileObject(relpath.substring(pos)) : dir; + } } diff --git a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/ActionProviderImpl.java b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/ActionProviderImpl.java index 7d5767b..b34d6f1 100644 --- a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/ActionProviderImpl.java +++ b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/ActionProviderImpl.java @@ -329,21 +329,21 @@ public class ActionProviderImpl implements ActionProvider { FileObject jdkRoot; List<String> sourceDirPaths; - if (prj.getProjectDirectory().getFileObject("../../../modules.xml") != null || - prj.getProjectDirectory().getFileObject("share/classes/module-info.java") != null) { + if (BuildUtils.getFileObject(prj.getProjectDirectory(), "../../../modules.xml") != null || + BuildUtils.getFileObject(prj.getProjectDirectory(), "share/classes/module-info.java") != null) { File buildTarget = BuildUtils.getBuildTargetDir(file); jdkRoot = buildTarget != null ? FileUtil.toFileObject(buildTarget.getParentFile().getParentFile()) : null; if (jdkRoot == null) { //should not happen, just last resort: - jdkRoot = prj.getProjectDirectory().getFileObject("../../.."); + jdkRoot = BuildUtils.getFileObject(prj.getProjectDirectory(), "../../.."); } - if (jdkRoot.getFileObject("src/java.base/share/classes/module-info.java") != null) { + if (BuildUtils.getFileObject(jdkRoot, "src/java.base/share/classes/module-info.java") != null) { sourceDirPaths = Arrays.asList("src", "*", "*", "classes"); } else { sourceDirPaths = Arrays.asList("*", "src", "*", "*", "classes"); } } else { - jdkRoot = prj.getProjectDirectory().getFileObject("../../.."); + jdkRoot = BuildUtils.getFileObject(prj.getProjectDirectory(), "../../.."); sourceDirPaths = Arrays.asList("src", "*", "*", "classes"); } @@ -368,7 +368,7 @@ public class ActionProviderImpl implements ActionProvider { listAllRoots(c, remainders, roots); } } else { - FileObject child = currentDir.getFileObject(current); + FileObject child = BuildUtils.getFileObject(currentDir, current); if (child != null) { listAllRoots(child, remainders, roots); @@ -385,13 +385,13 @@ public class ActionProviderImpl implements ActionProvider { private static boolean newStyleXPatch(FileObject testFile) { Project prj = FileOwnerQuery.getOwner(testFile); - if (prj.getProjectDirectory().getFileObject("../../src/java.base/share/classes/java/lang/Object.java") != null && - prj.getProjectDirectory().getFileObject("../../src/java.compiler/share/classes/javax/tools/ToolProvider.java") != null) { + if (BuildUtils.getFileObject(prj.getProjectDirectory(), "../../src/java.base/share/classes/java/lang/Object.java") != null && + BuildUtils.getFileObject(prj.getProjectDirectory(), "../../src/java.compiler/share/classes/javax/tools/ToolProvider.java") != null) { //consolidated repo: return true; } - FileObject testRoot = prj.getProjectDirectory().getFileObject("../../test/TEST.ROOT"); + FileObject testRoot = BuildUtils.getFileObject(prj.getProjectDirectory(), "../../test/TEST.ROOT"); if (testRoot == null) return false; @@ -415,14 +415,14 @@ public class ActionProviderImpl implements ActionProvider { FileObject repo = prj.getProjectDirectory().getParent().getParent(); if (repo.getNameExt().equals("langtools") && ShortcutUtils.getDefault().shouldUseCustomTest(repo.getNameExt(), FileUtil.getRelativePath(repo, testFile))) { - listAllRoots(prj.getProjectDirectory().getFileObject("../.."), new LinkedList<>(Arrays.asList("build", "classes")), roots); - listAllRoots(prj.getProjectDirectory().getFileObject("../.."), new LinkedList<>(Arrays.asList("build", "*", "classes")), roots); + listAllRoots(BuildUtils.getFileObject(prj.getProjectDirectory(), "../.."), new LinkedList<>(Arrays.asList("build", "classes")), roots); + listAllRoots(BuildUtils.getFileObject(prj.getProjectDirectory(), "../.."), new LinkedList<>(Arrays.asList("build", "*", "classes")), roots); } else { listAllRoots(FileUtil.toFileObject(buildDir), new LinkedList<>(Arrays.asList("jdk", "modules", "*")), roots); } } else { - listAllRoots(prj.getProjectDirectory().getFileObject("../../.."), new LinkedList<>(Arrays.asList("build", "classes")), roots); - listAllRoots(prj.getProjectDirectory().getFileObject("../../.."), new LinkedList<>(Arrays.asList("build", "*", "classes")), roots); + listAllRoots(BuildUtils.getFileObject(prj.getProjectDirectory(), "../../.."), new LinkedList<>(Arrays.asList("build", "classes")), roots); + listAllRoots(BuildUtils.getFileObject(prj.getProjectDirectory(), "../../.."), new LinkedList<>(Arrays.asList("build", "*", "classes")), roots); } StringBuilder built = new StringBuilder(); @@ -459,10 +459,10 @@ public class ActionProviderImpl implements ActionProvider { FileObject repo = prj.getProjectDirectory().getParent().getParent(); if (repo.getNameExt().equals("langtools") && ShortcutUtils.getDefault().shouldUseCustomTest(repo.getNameExt(), FileUtil.getRelativePath(repo, testFile))) { - buildClasses = prj.getProjectDirectory().getFileObject("../../build/modules"); + buildClasses = BuildUtils.getFileObject(prj.getProjectDirectory(), "../../build/modules"); if (buildClasses == null) { //old style: - buildClasses = prj.getProjectDirectory().getFileObject("../../build/classes"); + buildClasses = BuildUtils.getFileObject(prj.getProjectDirectory(), "../../build/classes"); } } else { String inferredRepoName = ShortcutUtils.getDefault().inferLegacyRepository(prj); @@ -470,11 +470,11 @@ public class ActionProviderImpl implements ActionProvider { ShortcutUtils.getDefault().shouldUseCustomTest(inferredRepoName, FileUtil.getRelativePath(repo, testFile))) { File buildDir = BuildUtils.getBuildTargetDir(testFile); FileObject buildDirFO = FileUtil.toFileObject(buildDir); - buildClasses = buildDirFO != null ? buildDirFO.getFileObject("../langtools/modules") : null; + buildClasses = buildDirFO != null ? BuildUtils.getFileObject(buildDirFO, "../langtools/modules") : null; } else { File buildDir = BuildUtils.getBuildTargetDir(testFile); FileObject buildDirFO = FileUtil.toFileObject(buildDir); - buildClasses = buildDirFO != null ? buildDirFO.getFileObject("jdk/modules") : null; + buildClasses = buildDirFO != null ? BuildUtils.getFileObject(buildDirFO, "jdk/modules") : null; } } @@ -484,7 +484,7 @@ public class ActionProviderImpl implements ActionProvider { static void printJTR(InputOutput io, File jtregWork, ClassPath fullSourcePath, FileObject testFile) { try { FileObject testRoot = testFile; - while (testRoot != null && testRoot.getFileObject("TEST.ROOT") == null) + while (testRoot != null && BuildUtils.getFileObject(testRoot, "TEST.ROOT") == null) testRoot = testRoot.getParent(); if (testRoot != null) { String relPath = FileUtil.getRelativePath(testRoot, testFile); diff --git a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/ClassPathProviderImpl.java b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/ClassPathProviderImpl.java index 3965ba1..de24904 100644 --- a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/ClassPathProviderImpl.java +++ b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/ClassPathProviderImpl.java @@ -40,6 +40,7 @@ import org.netbeans.api.java.source.JavaSource; import org.netbeans.api.project.libraries.Library; import org.netbeans.api.project.libraries.LibraryManager; import org.netbeans.api.queries.FileEncodingQuery; +import org.netbeans.modules.java.openjdk.common.BuildUtils; import org.netbeans.modules.java.openjdk.common.ShortcutUtils; import org.netbeans.spi.java.classpath.ClassPathProvider; import org.netbeans.spi.java.classpath.support.ClassPathSupport; @@ -62,10 +63,10 @@ public class ClassPathProviderImpl implements ClassPathProvider { while (search != null) { if (testProperties == null) { - testProperties = search.getFileObject("TEST.properties"); + testProperties = BuildUtils.getFileObject(search, "TEST.properties"); } - FileObject testRoot = search.getFileObject("TEST.ROOT"); + FileObject testRoot = BuildUtils.getFileObject(search, "TEST.ROOT"); if (testRoot != null) { boolean javac = (Utilities.isLangtoolsRepository(search.getParent()) || search.getNameExt().equals("langtools")) && @@ -150,7 +151,7 @@ public class ClassPathProviderImpl implements ClassPathProvider { String externalLibRoots = p.getProperty("external.lib.roots"); if (externalLibRoots != null) { for (String extLib : externalLibRoots.split("\\s+")) { - FileObject libDir = search.getFileObject(extLib); + FileObject libDir = BuildUtils.getFileObject(search, extLib); if (libDir != null) { libDirs.add(libDir); @@ -191,9 +192,9 @@ public class ClassPathProviderImpl implements ClassPathProvider { private FileObject resolve(FileObject file, FileObject root, String spec) { if (spec.startsWith("/")) { - return root.getFileObject(spec.substring(1)); + return BuildUtils.getFileObject(root, spec.substring(1)); } else { - return file.getParent().getFileObject(spec); + return BuildUtils.getFileObject(file.getParent(), spec); } } diff --git a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/ModulesHint.java b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/ModulesHint.java index 7b422ef..a8fa39b 100644 --- a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/ModulesHint.java +++ b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/ModulesHint.java @@ -49,6 +49,7 @@ import org.netbeans.api.java.source.ElementHandle; import org.netbeans.api.java.source.SourceUtils; import org.netbeans.api.project.FileOwnerQuery; import org.netbeans.api.project.Project; +import org.netbeans.modules.java.openjdk.common.BuildUtils; import org.netbeans.modules.java.openjdk.jtreg.TagParser.Result; import org.netbeans.spi.editor.hints.ErrorDescription; import org.netbeans.spi.editor.hints.Fix; @@ -273,7 +274,7 @@ public class ModulesHint { } for (Map.Entry<FileObject, Set<String>> e : module2Packages.entrySet()) { - FileObject moduleInfo = e.getKey().getFileObject("share/classes/module-info.java"); + FileObject moduleInfo = BuildUtils.getFileObject(e.getKey(), "share/classes/module-info.java"); if (moduleInfo == null) { //XXX continue; } diff --git a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/Utilities.java b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/Utilities.java index 666a470..dfa87a9 100644 --- a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/Utilities.java +++ b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/Utilities.java @@ -37,16 +37,16 @@ public class Utilities { if (root == null) return false; - FileObject srcDir = root.getFileObject("src"); + FileObject srcDir = BuildUtils.getFileObject(root, "src"); if (srcDir == null) return false; - if (srcDir.getFileObject("share/classes") != null) + if (BuildUtils.getFileObject(srcDir, "share/classes") != null) return true; for (FileObject mod : srcDir.getChildren()) { - if (mod.getFileObject("share/classes") != null) + if (BuildUtils.getFileObject(mod, "share/classes") != null) return true; } @@ -54,18 +54,18 @@ public class Utilities { } public static boolean isLangtoolsRepository(FileObject root) { - return (root.getFileObject("src/share/classes/com/sun/tools/javac/main/Main.java") != null || - root.getFileObject("src/jdk.compiler/share/classes/com/sun/tools/javac/main/Main.java") != null) && - root.getFileObject("src/java.base/share/classes/java/lang/Object.java") == null; + return (BuildUtils.getFileObject(root, "src/share/classes/com/sun/tools/javac/main/Main.java") != null || + BuildUtils.getFileObject(root, "src/jdk.compiler/share/classes/com/sun/tools/javac/main/Main.java") != null) && + BuildUtils.getFileObject(root, "src/java.base/share/classes/java/lang/Object.java") == null; } public static FileObject getLangtoolsKeyRoot(FileObject root) { - FileObject javaBase = root.getFileObject("src/jdk.compiler/share/classes"); + FileObject javaBase = BuildUtils.getFileObject(root, "src/jdk.compiler/share/classes"); if (javaBase != null) return javaBase; - return root.getFileObject("src/share/classes"); + return BuildUtils.getFileObject(root, "src/share/classes"); } public static File jtregOutputDir(FileObject testFile) { diff --git a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/ActionProviderImpl.java b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/ActionProviderImpl.java index fae5bb8..2097caa 100644 --- a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/ActionProviderImpl.java +++ b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/ActionProviderImpl.java @@ -206,7 +206,7 @@ public class ActionProviderImpl implements ActionProvider { sourceCP = ClassPath.getClassPath(file, ClassPath.SOURCE); break; case TEST: - sourceCP = ClassPathSupport.createClassPath(project.getProjectDirectory().getFileObject("../../test")); + sourceCP = ClassPathSupport.createClassPath(BuildUtils.getFileObject(project.getProjectDirectory(), "../../test")); break; default: throw new IllegalStateException(kind.name()); @@ -214,7 +214,7 @@ public class ActionProviderImpl implements ActionProvider { value.append(singleFileProperty.valueType.convert(sourceCP, file)); sep = singleFileProperty.separator; FileObject ownerRoot = sourceCP.findOwnerRoot(file); - srcdir = FileUtil.getRelativePath(project.getProjectDirectory().getFileObject("../.."), ownerRoot); + srcdir = FileUtil.getRelativePath(BuildUtils.getFileObject(project.getProjectDirectory(), "../.."), ownerRoot); moduleName = ownerRoot.getParent().getParent().getNameExt(); } props.put(singleFileProperty.propertyName, value.toString()); @@ -253,7 +253,7 @@ public class ActionProviderImpl implements ActionProvider { private RootKind getKind(Lookup context) { FileObject aFile = context.lookup(FileObject.class); - FileObject testDir = project.getProjectDirectory().getFileObject("../../test"); + FileObject testDir = BuildUtils.getFileObject(project.getProjectDirectory(), "../../test"); return aFile != null && testDir != null && FileUtil.isParentOf(testDir, aFile) ? RootKind.TEST : RootKind.SOURCE; } diff --git a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/ConfigurationImpl.java b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/ConfigurationImpl.java index 3f00a93..7db7d4c 100644 --- a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/ConfigurationImpl.java +++ b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/ConfigurationImpl.java @@ -215,9 +215,9 @@ public class ConfigurationImpl implements ProjectConfiguration { } private Preferences prefs() { - FileObject javaBase = jdkRoot.getFileObject("jdk/src/java.base"); + FileObject javaBase = BuildUtils.getFileObject(jdkRoot, "jdk/src/java.base"); if (javaBase == null) - javaBase = jdkRoot.getFileObject("jdk"); + javaBase = BuildUtils.getFileObject(jdkRoot, "jdk"); Project javaBaseProject = javaBase != null ? FileOwnerQuery.getOwner(javaBase) : null; if (javaBaseProject != null) { @@ -232,7 +232,7 @@ public class ConfigurationImpl implements ProjectConfiguration { return ; String name = jdkRoot.getNameExt() + " - " + active.getDisplayName(); FileObject target = FileUtil.toFileObject(new File(active.getLocation(), "jdk")); - if (target == null || target.getFileObject("bin/java") == null) { + if (target == null || BuildUtils.getFileObject(target, "bin/java") == null) { return ; } for (JavaPlatform platform : JavaPlatformManager.getDefault().getInstalledPlatforms()) { diff --git a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/FilterStandardProjects.java b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/FilterStandardProjects.java index 5c6cf22..18176da 100644 --- a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/FilterStandardProjects.java +++ b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/FilterStandardProjects.java @@ -21,6 +21,7 @@ package org.netbeans.modules.java.openjdk.project; import java.io.IOException; import org.netbeans.api.project.Project; import org.netbeans.api.project.ui.OpenProjects; +import org.netbeans.modules.java.openjdk.common.BuildUtils; import org.netbeans.spi.project.ProjectFactory; import org.netbeans.spi.project.ProjectState; import org.openide.filesystems.FileObject; @@ -38,10 +39,10 @@ public class FilterStandardProjects implements ProjectFactory { @Override public boolean isProject(FileObject projectDirectory) { FileObject jdkRoot; - return projectDirectory.getFileObject("nbproject/project.xml") != null && - (jdkRoot = projectDirectory.getFileObject("../../..")) != null && - (JDKProject.isJDKProject(jdkRoot) || jdkRoot.getFileObject("../modules.xml") != null) && - projectDirectory.getParent().equals(jdkRoot.getFileObject("make/netbeans")) && + return BuildUtils.getFileObject(projectDirectory, "nbproject/project.xml") != null && + (jdkRoot = BuildUtils.getFileObject(projectDirectory, "../../..")) != null && + (JDKProject.isJDKProject(jdkRoot) || BuildUtils.getFileObject(jdkRoot, "../modules.xml") != null) && + projectDirectory.getParent().equals(BuildUtils.getFileObject(jdkRoot, "make/netbeans")) && "netbeans".equals(projectDirectory.getParent().getName()); } @@ -57,16 +58,16 @@ public class FilterStandardProjects implements ProjectFactory { if ("langtools".equals(projectDirectory.getNameExt())) { if (!BLOCK_LANGTOOLS_PROJECT) return null; - repository = projectDirectory.getFileObject("../../../../langtools"); + repository = BuildUtils.getFileObject(projectDirectory, "../../../../langtools"); project2Repository = "../.."; } else { - repository = projectDirectory.getFileObject("../../.."); + repository = BuildUtils.getFileObject(projectDirectory, "../../.."); project2Repository = ""; } if (repository != null) { for (Project prj : OpenProjects.getDefault().getOpenProjects()) { - if (repository.equals(prj.getProjectDirectory().getFileObject(project2Repository))) { + if (repository.equals(BuildUtils.getFileObject(prj.getProjectDirectory(), project2Repository))) { throw new IOException(MSG_FILTER); } } diff --git a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/JDKProject.java b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/JDKProject.java index ff1065e..7950c3a 100644 --- a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/JDKProject.java +++ b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/JDKProject.java @@ -44,6 +44,7 @@ import org.netbeans.api.java.classpath.ClassPath; import org.netbeans.api.project.Project; import org.netbeans.api.project.ProjectInformation; import org.netbeans.api.project.ProjectManager; +import org.netbeans.modules.java.openjdk.common.BuildUtils; import org.netbeans.modules.java.openjdk.project.ConfigurationImpl.ProviderImpl; import org.netbeans.modules.java.openjdk.project.ModuleDescription.ModuleRepository; import org.netbeans.modules.java.openjdk.project.customizer.CustomizerProviderImpl; @@ -123,7 +124,7 @@ public class JDKProject implements Project { properties.setProperty("os", osKey); properties.setProperty("generalized-os", generalizedOsKey); properties.setProperty("legacy-os", legacyOsKey); - FileObject jdkRoot = moduleRepository != null ? moduleRepository.getJDKRoot() : projectDir.getFileObject(".."); + FileObject jdkRoot = moduleRepository != null ? moduleRepository.getJDKRoot() : BuildUtils.getFileObject(projectDir, ".."); properties.setProperty("jdkRoot", stripTrailingSlash(jdkRoot.toURI().toString())); configurations = ConfigurationImpl.getProvider(jdkRoot); @@ -139,7 +140,7 @@ public class JDKProject implements Project { evaluator = PropertyUtils.sequentialPropertyEvaluator(properties); - boolean closed = projectDir.getFileObject("src/closed/share/classes/javax/swing/plaf/basic/icons/JavaCup16.png") != null; + boolean closed = BuildUtils.getFileObject(projectDir, "src/closed/share/classes/javax/swing/plaf/basic/icons/JavaCup16.png") != null; boolean modular = currentModule != null; Configuration configuration = modular ? MODULAR_CONFIGURATION : closed ? LEGACY_CLOSED_CONFIGURATION : LEGACY_OPEN_CONFIGURATION; @@ -173,7 +174,7 @@ public class JDKProject implements Project { break; } - FileObject shareClasses = projectDir.getFileObject("share/classes"); + FileObject shareClasses = BuildUtils.getFileObject(projectDir, "share/classes"); if (shareClasses != null && Arrays.stream(shareClasses.getChildren()).anyMatch(c -> c.isFolder() && c.getNameExt().contains("."))) { List<String> submodules = Arrays.stream(shareClasses.getChildren()).filter(c -> c.isFolder()).map(c -> c.getNameExt()).collect(Collectors.toList()); @@ -384,7 +385,7 @@ public class JDKProject implements Project { if (repository != null) { return repository.findModule(projectDirectory.getNameExt()) != null; } else { - return projectDirectory.getFileObject("src/share/classes/java/lang/Object.java") != null; + return BuildUtils.getFileObject(projectDirectory, "src/share/classes/java/lang/Object.java") != null; } } catch (Exception ex) { Logger.getLogger(JDKProject.class.getName()).log(Level.FINE, null, ex); @@ -408,7 +409,7 @@ public class JDKProject implements Project { if (prj != null) return prj; - if (projectDirectory.getFileObject("src/share/classes/java/lang/Object.java") != null) { + if (BuildUtils.getFileObject(projectDirectory, "src/share/classes/java/lang/Object.java") != null) { //legacy project: return new JDKProject(projectDirectory, null, null); } diff --git a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/ModuleDescription.java b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/ModuleDescription.java index 7be9e84..0a9cd27 100644 --- a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/ModuleDescription.java +++ b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/ModuleDescription.java @@ -44,6 +44,7 @@ import org.netbeans.api.lexer.InputAttributes; import org.netbeans.api.lexer.TokenHierarchy; import org.netbeans.api.lexer.TokenSequence; import org.netbeans.api.project.Project; +import org.netbeans.modules.java.openjdk.common.BuildUtils; import org.openide.filesystems.FileObject; import org.openide.util.Pair; import org.openide.xml.XMLUtil; @@ -96,12 +97,12 @@ public class ModuleDescription { boolean hasModuleInfos; List<ModuleDescription> moduleDescriptions; - FileObject modulesXML = jdkRoot.getFileObject("modules.xml"); + FileObject modulesXML = BuildUtils.getFileObject(jdkRoot, "modules.xml"); if (modulesXML != null) { moduleDescriptions = new ArrayList<>(); readModulesXml(modulesXML, moduleDescriptions); - readModulesXml(jdkRoot.getFileObject("closed/modules.xml"), moduleDescriptions); + readModulesXml(BuildUtils.getFileObject(jdkRoot, "closed/modules.xml"), moduleDescriptions); hasModuleInfos = false; } else { moduleDescriptions = readModuleInfos(jdkRoot); @@ -123,19 +124,19 @@ public class ModuleDescription { } private static Pair<FileObject, Pair<Boolean, Boolean>> findJDKRoot(FileObject projectDirectory) { - if (projectDirectory.getFileObject("../../../open/src/java.base/share/classes/module-info.java") != null && - projectDirectory.getFileObject("../../../open/src/java.base/share/classes/module-info.java") != null && - projectDirectory.getFileObject("../../../open/src/java.compiler/share/classes/module-info.java") != null) - return Pair.of(projectDirectory.getFileObject("../../.."), Pair.of(true, true)); - if (projectDirectory.getFileObject("../../src/java.base/share/classes/module-info.java") != null && - projectDirectory.getFileObject("../../src/java.compiler/share/classes/module-info.java") != null) - return Pair.of(projectDirectory.getFileObject("../.."), Pair.of(true, false)); - if (projectDirectory.getFileObject("../../../modules.xml") != null || - (projectDirectory.getFileObject("../../../jdk/src/java.base/share/classes/module-info.java") != null && projectDirectory.getFileObject("../../../langtools/src/java.compiler/share/classes/module-info.java") != null)) - return Pair.of(projectDirectory.getFileObject("../../.."), Pair.of(false, false)); - if (projectDirectory.getFileObject("../../../../modules.xml") != null || - (projectDirectory.getFileObject("../../../../jdk/src/java.base/share/classes/module-info.java") != null && projectDirectory.getFileObject("../../../langtools/src/java.compiler/share/classes/module-info.java") != null)) - return Pair.of(projectDirectory.getFileObject("../../../.."), Pair.of(false, false)); + if (BuildUtils.getFileObject(projectDirectory, "../../../open/src/java.base/share/classes/module-info.java") != null && + BuildUtils.getFileObject(projectDirectory, "../../../open/src/java.base/share/classes/module-info.java") != null && + BuildUtils.getFileObject(projectDirectory, "../../../open/src/java.compiler/share/classes/module-info.java") != null) + return Pair.of(BuildUtils.getFileObject(projectDirectory, "../../.."), Pair.of(true, true)); + if (BuildUtils.getFileObject(projectDirectory, "../../src/java.base/share/classes/module-info.java") != null && + BuildUtils.getFileObject(projectDirectory, "../../src/java.compiler/share/classes/module-info.java") != null) + return Pair.of(BuildUtils.getFileObject(projectDirectory, "../.."), Pair.of(true, false)); + if (BuildUtils.getFileObject(projectDirectory, "../../../modules.xml") != null || + (BuildUtils.getFileObject(projectDirectory, "../../../jdk/src/java.base/share/classes/module-info.java") != null && BuildUtils.getFileObject(projectDirectory, "../../../langtools/src/java.compiler/share/classes/module-info.java") != null)) + return Pair.of(BuildUtils.getFileObject(projectDirectory, "../../.."), Pair.of(false, false)); + if (BuildUtils.getFileObject(projectDirectory, "../../../../modules.xml") != null || + (BuildUtils.getFileObject(projectDirectory, "../../../../jdk/src/java.base/share/classes/module-info.java") != null && BuildUtils.getFileObject(projectDirectory, "../../../langtools/src/java.compiler/share/classes/module-info.java") != null)) + return Pair.of(BuildUtils.getFileObject(projectDirectory, "../../../.."), Pair.of(false, false)); return null; } @@ -235,7 +236,7 @@ public class ModuleDescription { } } - if (current.getFileObject("TEST.ROOT") != null) { + if (BuildUtils.getFileObject(current, "TEST.ROOT") != null) { continue; //do not look inside test folders } @@ -247,7 +248,7 @@ public class ModuleDescription { private static FileObject getModuleInfo(FileObject project) { for (FileObject c : project.getChildren()) { - FileObject moduleInfo = c.getFileObject("classes/module-info.java"); + FileObject moduleInfo = BuildUtils.getFileObject(c, "classes/module-info.java"); if (moduleInfo != null) return moduleInfo; @@ -262,7 +263,7 @@ public class ModuleDescription { try (Reader r = new InputStreamReader(f.getInputStream())) { ModuleDescription desc = parseModuleInfo(r); - if (desc == null || !desc.name.equals(f.getFileObject("../../..").getNameExt())) + if (desc == null || !desc.name.equals(BuildUtils.getFileObject(f, "../../..").getNameExt())) return null; return desc; @@ -369,22 +370,22 @@ public class ModuleDescription { FileObject module; if (explicitOpen) { - module = root.getFileObject("open/src/" + moduleName); + module = BuildUtils.getFileObject(root, "open/src/" + moduleName); if (module == null) { - module = root.getFileObject("closed/src/" + moduleName); + module = BuildUtils.getFileObject(root, "closed/src/" + moduleName); } } else { - module = root.getFileObject("src/" + moduleName); + module = BuildUtils.getFileObject(root, "src/" + moduleName); } if (module != null && module.isFolder()) return module; } else { for (FileObject repo : root.getChildren()) { - FileObject module = repo.getFileObject("src/" + moduleName); + FileObject module = BuildUtils.getFileObject(repo, "src/" + moduleName); if (module == null) - module = repo.getFileObject("src/closed/" + moduleName); + module = BuildUtils.getFileObject(repo, "src/closed/" + moduleName); if (module != null && module.isFolder() && validate(repo, module)) return module; diff --git a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/SourceLevelQueryImpl.java b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/SourceLevelQueryImpl.java index b5f0592..b988da4 100644 --- a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/SourceLevelQueryImpl.java +++ b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/SourceLevelQueryImpl.java @@ -28,6 +28,7 @@ import java.util.regex.Pattern; import org.netbeans.api.java.lexer.JavaTokenId; import org.netbeans.api.lexer.TokenHierarchy; import org.netbeans.api.lexer.TokenSequence; +import org.netbeans.modules.java.openjdk.common.BuildUtils; import org.netbeans.spi.java.queries.SourceLevelQueryImplementation; import org.openide.filesystems.FileObject; @@ -45,11 +46,11 @@ public class SourceLevelQueryImpl implements SourceLevelQueryImplementation { private final String sourceLevel; public SourceLevelQueryImpl(FileObject jdkRoot) { - FileObject sourceVersion = jdkRoot.getFileObject("src/java.compiler/share/classes/javax/lang/model/SourceVersion.java"); + FileObject sourceVersion = BuildUtils.getFileObject(jdkRoot, "src/java.compiler/share/classes/javax/lang/model/SourceVersion.java"); int sl = DEFAULT_SOURCE_LEVEL; if (sourceVersion == null) { - sourceVersion = jdkRoot.getFileObject("langtools/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java"); + sourceVersion = BuildUtils.getFileObject(jdkRoot, "langtools/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java"); } if (sourceVersion != null) { try { diff --git a/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/jtreg/ActionProviderImplTest.java b/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/jtreg/ActionProviderImplTest.java index 113b021..fc04d62 100644 --- a/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/jtreg/ActionProviderImplTest.java +++ b/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/jtreg/ActionProviderImplTest.java @@ -253,7 +253,7 @@ public class ActionProviderImplTest extends NbTestCase { @Override public Project loadProject(FileObject projectDirectory, ProjectState state) throws IOException { - if (projectDirectory.getFileObject("../../../modules.xml") != null) { + if (BuildUtils.getFileObject(projectDirectory, "../../../modules.xml") != null) { return new ProjectImpl(projectDirectory); } diff --git a/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/project/ClassPathProviderImplTest.java b/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/project/ClassPathProviderImplTest.java index 48e0279..650ef03 100644 --- a/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/project/ClassPathProviderImplTest.java +++ b/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/project/ClassPathProviderImplTest.java @@ -28,6 +28,7 @@ import org.netbeans.api.project.FileOwnerQuery; import org.netbeans.api.project.Project; import org.netbeans.junit.NbTestCase; import org.netbeans.modules.java.hints.test.Utilities.TestLookup; +import org.netbeans.modules.java.openjdk.common.BuildUtils; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.modules.InstalledFileLocator; @@ -91,8 +92,8 @@ public class ClassPathProviderImplTest extends NbTestCase { } private void checkCompileClassPath(String module, String expected) { - FileObject prj = root.getFileObject(module); - FileObject src = prj.getFileObject("share/classes"); + FileObject prj = BuildUtils.getFileObject(root, module); + FileObject src = BuildUtils.getFileObject(prj, "share/classes"); Project project = FileOwnerQuery.getOwner(src); diff --git a/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/project/SourceLevelQueryImplTest.java b/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/project/SourceLevelQueryImplTest.java index 40e5ead..f94619a 100644 --- a/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/project/SourceLevelQueryImplTest.java +++ b/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/project/SourceLevelQueryImplTest.java @@ -26,6 +26,7 @@ import org.netbeans.api.project.FileOwnerQuery; import org.netbeans.api.project.Project; import org.netbeans.junit.NbTestCase; import org.netbeans.modules.java.hints.test.Utilities.TestLookup; +import org.netbeans.modules.java.openjdk.common.BuildUtils; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.util.Lookup; @@ -57,7 +58,7 @@ public class SourceLevelQueryImplTest extends NbTestCase { copyString2File(jlObject, ""); copyString2File(FileUtil.createData(root, ".jcheck/conf"), "project=jdk8\n"); - Project legacyProject = FileOwnerQuery.getOwner(root.getFileObject("jdk")); + Project legacyProject = FileOwnerQuery.getOwner(BuildUtils.getFileObject(root, "jdk")); assertNotNull(legacyProject); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists