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 82af896 [NETBEANS-4891] Fix missing file node of generic Gradle root project 82af896 is described below commit 82af8969406ae36fd9768e2ba901ab2f8b06d3d4 Author: Laszlo Kishalmi <laszlo.kisha...@gmail.com> AuthorDate: Fri Oct 9 11:11:13 2020 -0700 [NETBEANS-4891] Fix missing file node of generic Gradle root project --- .travis.yml | 1 + .../gradle/queries/GenericProjectSources.java | 111 +++++++++++++++++++++ .../gradle/queries/GenericProjectSourcesTest.java | 53 ++++++++++ java/gradle.java/nbproject/project.properties | 1 + java/gradle.java/nbproject/project.xml | 9 +- .../gradle/java/classpath/GradleSourcesImpl.java | 5 - .../gradle/java/AbstractGradleJavaTestCase.java | 81 --------------- .../java/classpath/ClassPathProviderImplTest.java | 4 +- .../java/classpath/GradleSourcesImplTest.java | 15 ++- 9 files changed, 185 insertions(+), 95 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3903520..8ccec65 100644 --- a/.travis.yml +++ b/.travis.yml @@ -360,6 +360,7 @@ matrix: - hide-logs.sh ant $OPTS -f java/debugger.jpda.js test - hide-logs.sh ant $OPTS -f java/debugger.jpda.projects test - hide-logs.sh ant $OPTS -f java/debugger.jpda.projectsui test + - hide-logs.sh ant $OPTS -f java/gradle.java test #- ant $OPTS -f java/debugger.jpda.truffle test #- ant $OPTS -f java/debugger.jpda.ui test - travis_wait hide-logs.sh ant $OPTS -f java/editor.htmlui test diff --git a/extide/gradle/src/org/netbeans/modules/gradle/queries/GenericProjectSources.java b/extide/gradle/src/org/netbeans/modules/gradle/queries/GenericProjectSources.java new file mode 100644 index 0000000..64e422f --- /dev/null +++ b/extide/gradle/src/org/netbeans/modules/gradle/queries/GenericProjectSources.java @@ -0,0 +1,111 @@ +/* + * 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. + */ +package org.netbeans.modules.gradle.queries; + +import java.beans.PropertyChangeListener; +import javax.swing.Icon; +import javax.swing.event.ChangeListener; +import org.netbeans.api.project.FileOwnerQuery; +import org.netbeans.api.project.Project; +import org.netbeans.api.project.ProjectManager; +import org.netbeans.api.project.ProjectUtils; +import org.netbeans.api.project.SourceGroup; +import org.netbeans.api.project.Sources; +import org.netbeans.modules.gradle.api.NbGradleProject; +import org.netbeans.spi.project.ProjectServiceProvider; +import org.openide.filesystems.FileObject; +import org.openide.filesystems.FileUtil; + +/** + * + * @author lkishalmi + */ +@ProjectServiceProvider(service = Sources.class, projectType = NbGradleProject.GRADLE_PROJECT_TYPE) +public class GenericProjectSources implements Sources { + private final Project project; + + public GenericProjectSources(Project project) { + this.project = project; + } + @Override + public SourceGroup[] getSourceGroups(String type) { + return Sources.TYPE_GENERIC.equals(type)? new SourceGroup[]{new ProjectSourceGroup()} : new SourceGroup[0]; + } + + @Override + public void addChangeListener(ChangeListener listener) { + } + + @Override + public void removeChangeListener(ChangeListener listener) { + } + + private final class ProjectSourceGroup implements SourceGroup { + + public ProjectSourceGroup() { + } + + @Override + public FileObject getRootFolder() { + return project.getProjectDirectory(); + } + + @Override + public String getName() { + return ProjectUtils.getInformation(project).getName(); + } + + @Override + public String getDisplayName() { + return ProjectUtils.getInformation(project).getDisplayName(); + } + + @Override + public Icon getIcon(boolean opened) { + return null; + } + + @Override + public boolean contains(FileObject file) { + FileObject rootFolder = getRootFolder(); + if (file != rootFolder && !FileUtil.isParentOf(rootFolder, file)) { + return false; + } + if (file.isFolder() && file != rootFolder && ProjectManager.getDefault().isProject(file)) { + // #67450: avoid actually loading the nested project. + return false; + } + return FileOwnerQuery.getOwner(file) == project; + } + + @Override + public void addPropertyChangeListener(PropertyChangeListener listener) { + } + + @Override + public void removePropertyChangeListener(PropertyChangeListener listener) { + } + + @Override + public String toString() { + return "ProjectSourceGroup: " + getDisplayName(); + } + } + +} diff --git a/extide/gradle/test/unit/src/org/netbeans/modules/gradle/queries/GenericProjectSourcesTest.java b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/queries/GenericProjectSourcesTest.java new file mode 100644 index 0000000..5b3bda4 --- /dev/null +++ b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/queries/GenericProjectSourcesTest.java @@ -0,0 +1,53 @@ +package org.netbeans.modules.gradle.queries; + +import java.io.IOException; +import java.util.Random; +import static junit.framework.TestCase.assertFalse; +import org.netbeans.api.project.Project; +import org.netbeans.api.project.ProjectManager; +import org.netbeans.api.project.ProjectUtils; +import org.netbeans.api.project.SourceGroup; +import org.netbeans.api.project.Sources; +import org.netbeans.modules.gradle.AbstractGradleProjectTestCase; +import org.netbeans.modules.gradle.ProjectTrust; +import org.openide.filesystems.FileObject; +import org.openide.util.NbPreferences; + +/* + * 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. + */ + +/** + * + * @author lkishalmi + */ +public class GenericProjectSourcesTest extends AbstractGradleProjectTestCase { + public GenericProjectSourcesTest(String name) { + super(name); + } + + public void testRootProjectSourceGroup() throws IOException { + int rnd = new Random().nextInt(1000000); + FileObject a = createGradleProject("projectA-" + rnd, + "", ""); + Project p = ProjectManager.getDefault().findProject(a); + SourceGroup[] groups = ProjectUtils.getSources(p).getSourceGroups(Sources.TYPE_GENERIC); + assertEquals(1, groups.length); + } + +} diff --git a/java/gradle.java/nbproject/project.properties b/java/gradle.java/nbproject/project.properties index 8093ccc..bbe6560 100644 --- a/java/gradle.java/nbproject/project.properties +++ b/java/gradle.java/nbproject/project.properties @@ -22,3 +22,4 @@ nbm.module.author=Laszlo Kishalmi test-unit-sys-prop.test.netbeans.dest.dir=${netbeans.dest.dir} test-unit-sys-prop.java.awt.headless=true +test.use.jdk.javac=true \ No newline at end of file diff --git a/java/gradle.java/nbproject/project.xml b/java/gradle.java/nbproject/project.xml index f23c8af..df25623 100644 --- a/java/gradle.java/nbproject/project.xml +++ b/java/gradle.java/nbproject/project.xml @@ -306,11 +306,6 @@ <compile-dependency/> </test-dependency> <test-dependency> - <code-name-base>org.netbeans.modules.apisupport.project</code-name-base> - <compile-dependency/> - <test/> - </test-dependency> - <test-dependency> <code-name-base>org.netbeans.modules.gradle</code-name-base> <compile-dependency/> <test/> @@ -344,6 +339,10 @@ <test/> </test-dependency> <test-dependency> + <code-name-base>org.openide.modules</code-name-base> + <run-dependency/> + <test/> + </test-dependency> <test-dependency> <code-name-base>org.openide.util.ui</code-name-base> <compile-dependency/> <test/> diff --git a/java/gradle.java/src/org/netbeans/modules/gradle/java/classpath/GradleSourcesImpl.java b/java/gradle.java/src/org/netbeans/modules/gradle/java/classpath/GradleSourcesImpl.java index e2db217..355f8b2 100644 --- a/java/gradle.java/src/org/netbeans/modules/gradle/java/classpath/GradleSourcesImpl.java +++ b/java/gradle.java/src/org/netbeans/modules/gradle/java/classpath/GradleSourcesImpl.java @@ -44,7 +44,6 @@ import org.netbeans.api.java.project.JavaProjectConstants; import org.netbeans.api.project.FileOwnerQuery; import org.netbeans.api.project.Project; import org.netbeans.api.project.ProjectManager; -import org.netbeans.api.project.ProjectUtils; import org.netbeans.api.project.SourceGroup; import org.netbeans.api.project.Sources; import org.netbeans.spi.project.ProjectServiceProvider; @@ -152,10 +151,6 @@ public class GradleSourcesImpl implements Sources, SourceGroupModifierImplementa @Override public synchronized SourceGroup[] getSourceGroups(String type) { - if (Sources.TYPE_GENERIC.equals(type)) { - return new SourceGroup[]{new GradleSourceGroup(proj.getProjectDirectory(), "ProjectRoot", //NOI18N - ProjectUtils.getInformation(proj).getDisplayName())}; - } checkChanges(false); SourceType stype = soureType2SourceType(type); if (stype != null) { diff --git a/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/AbstractGradleJavaTestCase.java b/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/AbstractGradleJavaTestCase.java deleted file mode 100644 index 82018e3..0000000 --- a/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/AbstractGradleJavaTestCase.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * 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. - */ -package org.netbeans.modules.gradle.java; - -import java.io.File; -import java.io.IOException; -import static junit.framework.TestCase.assertNotNull; -import org.netbeans.api.project.Project; -import org.netbeans.api.project.ProjectManager; -import org.netbeans.junit.NbTestCase; -import org.netbeans.modules.apisupport.project.InstalledFileLocatorImpl; -import org.netbeans.modules.project.uiapi.ProjectOpenedTrampoline; -import org.netbeans.spi.project.ui.ProjectOpenedHook; -import org.openide.filesystems.FileObject; -import org.openide.filesystems.FileUtil; -import org.openide.filesystems.test.TestFileUtils; - -/** - * - * @author lkishalmi - */ -public class AbstractGradleJavaTestCase extends NbTestCase { - - public AbstractGradleJavaTestCase(String name) { - super(name); - } - - /** Represents destination directory with NetBeans (always available). */ - protected File destDirF; - - @Override - protected void setUp() throws Exception { - super.setUp(); - clearWorkDir(); - destDirF = getTestNBDestDir(); - InstalledFileLocatorImpl.registerDestDir(destDirF); - } - - protected FileObject createGradleProject(String buildScript) throws IOException { - return getGradleProject(buildScript, null); - } - - protected Project openProject(FileObject projectDir) throws IOException { - Project prj = ProjectManager.getDefault().findProject(projectDir); - assertNotNull(prj); - ProjectOpenedTrampoline.DEFAULT.projectOpened(prj.getLookup().lookup(ProjectOpenedHook.class)); - return prj; - } - - protected FileObject getGradleProject(String buildScript, String settingsScript) throws IOException { - FileObject ret = FileUtil.toFileObject(getWorkDir()); - TestFileUtils.writeFile(ret, "build.gradle", buildScript); - if (settingsScript != null) { - TestFileUtils.writeFile(ret, "settings.gradle", settingsScript); - } - return ret; - } - - private static File getTestNBDestDir() { - String destDir = System.getProperty("test.netbeans.dest.dir"); - // set in project.properties as test-unit-sys-prop.test.netbeans.dest.dir - assertNotNull("test.netbeans.dest.dir property has to be set when running within binary distribution", destDir); - return new File(destDir); - } -} diff --git a/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/classpath/ClassPathProviderImplTest.java b/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/classpath/ClassPathProviderImplTest.java index 0e719c2..3678714 100644 --- a/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/classpath/ClassPathProviderImplTest.java +++ b/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/classpath/ClassPathProviderImplTest.java @@ -24,7 +24,7 @@ import java.util.Set; import org.junit.Test; import org.netbeans.api.java.classpath.ClassPath; import org.netbeans.api.project.Project; -import org.netbeans.modules.gradle.java.AbstractGradleJavaTestCase; +import org.netbeans.modules.gradle.AbstractGradleProjectTestCase; import org.netbeans.modules.gradle.java.api.GradleJavaProject; import org.netbeans.spi.java.classpath.ClassPathProvider; import org.openide.filesystems.FileObject; @@ -34,7 +34,7 @@ import org.openide.filesystems.FileUtil; * * @author lkishalmi */ -public class ClassPathProviderImplTest extends AbstractGradleJavaTestCase { +public class ClassPathProviderImplTest extends AbstractGradleProjectTestCase { public ClassPathProviderImplTest(String name) { super(name); diff --git a/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/classpath/GradleSourcesImplTest.java b/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/classpath/GradleSourcesImplTest.java index f1a3d08..44fd2ba 100644 --- a/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/classpath/GradleSourcesImplTest.java +++ b/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/classpath/GradleSourcesImplTest.java @@ -18,12 +18,15 @@ */ package org.netbeans.modules.gradle.java.classpath; +import java.io.IOException; +import static junit.framework.TestCase.assertEquals; import org.netbeans.api.java.project.JavaProjectConstants; import org.netbeans.api.project.Project; +import org.netbeans.api.project.ProjectManager; import org.netbeans.api.project.ProjectUtils; import org.netbeans.api.project.SourceGroup; import org.netbeans.api.project.Sources; -import org.netbeans.modules.gradle.java.AbstractGradleJavaTestCase; +import org.netbeans.modules.gradle.AbstractGradleProjectTestCase; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; @@ -31,7 +34,7 @@ import org.openide.filesystems.FileUtil; * * @author lkishalmi */ -public class GradleSourcesImplTest extends AbstractGradleJavaTestCase { +public class GradleSourcesImplTest extends AbstractGradleProjectTestCase { public GradleSourcesImplTest(String name) { super(name); @@ -55,4 +58,12 @@ public class GradleSourcesImplTest extends AbstractGradleJavaTestCase { assertFalse(groups[1].contains(source)); } + public void testRootProjectSourceGroup() throws IOException { + FileObject d = createGradleProject( + "apply plugin: 'java'\n" + + "sourceSets { main { java { srcDirs = [ 'src', 'build/gen-src' ] }}}"); + Project p = ProjectManager.getDefault().findProject(d); + SourceGroup[] groups = ProjectUtils.getSources(p).getSourceGroups(Sources.TYPE_GENERIC); + assertEquals(1, groups.length); + } } --------------------------------------------------------------------- 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