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 82cdd07 Java with Maven -> Java Frontend App + MOE is broken since
Gradle support introduced (#1280)
82cdd07 is described below
commit 82cdd07b42687a4fbd3028ef86adac9b3a3da1eb
Author: Duke Script <[email protected]>
AuthorDate: Sun Jun 2 17:35:24 2019 +0200
Java with Maven -> Java Frontend App + MOE is broken since Gradle support
introduced (#1280)
* Prefer client-moe/pom.xml when parent project's pom.xml exists
* Hierarchy of directories with build.gradle takes precedence over pom
---
groovy/gradle/nbproject/project.xml | 5 ++
.../modules/gradle/NbGradleProjectFactory.java | 39 ++++++----
.../modules/gradle/NbGradleProjectFactoryTest.java | 90 ++++++++++++++++++++++
3 files changed, 118 insertions(+), 16 deletions(-)
diff --git a/groovy/gradle/nbproject/project.xml
b/groovy/gradle/nbproject/project.xml
index 4586d15..097f9ea 100644
--- a/groovy/gradle/nbproject/project.xml
+++ b/groovy/gradle/nbproject/project.xml
@@ -330,6 +330,11 @@
<code-name-base>org.netbeans.libs.junit4</code-name-base>
<compile-dependency/>
</test-dependency>
+ <test-dependency>
+
<code-name-base>org.netbeans.modules.nbjunit</code-name-base>
+ <recursive/>
+ <compile-dependency/>
+ </test-dependency>
</test-type>
</test-dependencies>
<public-packages>
diff --git
a/groovy/gradle/src/org/netbeans/modules/gradle/NbGradleProjectFactory.java
b/groovy/gradle/src/org/netbeans/modules/gradle/NbGradleProjectFactory.java
index 0d476a0..8308d51 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/NbGradleProjectFactory.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/NbGradleProjectFactory.java
@@ -47,24 +47,31 @@ public final class NbGradleProjectFactory implements
ProjectFactory2 {
@Override
public boolean isProject(FileObject dir) {
- boolean ret = FileUtil.toFile(dir) != null;
- if (ret) {
- FileObject pom = dir.getFileObject("pom.xml"); //NOI18N
- if ((pom != null) && pom.isData() &&
GradleSettings.getDefault().isPreferMaven()) {
- ret = false;
- } else {
- File suspect = FileUtil.toFile(dir);
- GradleFiles files = new GradleFiles(suspect);
- if (!files.isRootProject()) {
- Boolean inSubDirCache =
GradleProjectCache.isKnownSubProject(files.getRootDir(), suspect);
- ret = inSubDirCache != null ? inSubDirCache :
files.isProject();
- } else {
- ret = true;
- }
+ return isProjectCheck(dir,
GradleSettings.getDefault().isPreferMaven());
+ }
+
+ static boolean isProjectCheck(FileObject dir, final boolean preferMaven) {
+ if (dir == null || FileUtil.toFile(dir) == null) {
+ return false;
+ }
+ FileObject pom = dir.getFileObject("pom.xml"); //NOI18N
+ if (pom != null && pom.isData()) {
+ if (preferMaven) {
+ return false;
+ }
+ final FileObject parent = dir.getParent();
+ if (parent != null && parent.getFileObject("pom.xml") != null) {
// NOI18N
+ return isProjectCheck(parent, preferMaven);
}
}
-
- return ret;
+ File suspect = FileUtil.toFile(dir);
+ GradleFiles files = new GradleFiles(suspect);
+ if (!files.isRootProject()) {
+ Boolean inSubDirCache =
GradleProjectCache.isKnownSubProject(files.getRootDir(), suspect);
+ return inSubDirCache != null ? inSubDirCache : files.isProject();
+ } else {
+ return true;
+ }
}
@Override
diff --git
a/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/NbGradleProjectFactoryTest.java
b/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/NbGradleProjectFactoryTest.java
new file mode 100644
index 0000000..607dc7a
--- /dev/null
+++
b/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/NbGradleProjectFactoryTest.java
@@ -0,0 +1,90 @@
+/*
+ * 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;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.netbeans.api.project.Project;
+import org.netbeans.api.project.ProjectManager;
+import org.netbeans.junit.NbTestCase;
+import org.netbeans.spi.project.ProjectState;
+import org.openide.filesystems.FileObject;
+import org.openide.filesystems.FileUtil;
+import org.openide.filesystems.LocalFileSystem;
+
+public class NbGradleProjectFactoryTest extends NbTestCase {
+ private FileObject root;
+
+ public NbGradleProjectFactoryTest(String name) {
+ super(name);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ clearWorkDir();
+ LocalFileSystem fs = new LocalFileSystem();
+ fs.setRootDirectory(getWorkDir());
+ root = fs.getRoot();
+ }
+
+ public void testNull() throws Exception {
+ assertFalse(NbGradleProjectFactory.isProjectCheck(null, false));
+ assertFalse(NbGradleProjectFactory.isProjectCheck(null, true));
+ }
+
+ public void testPomAndGradle() throws Exception {
+ FileObject prj = root;
+ FileObject pom = FileUtil.createData(prj, "pom.xml");
+ FileObject gradle = FileUtil.createData(prj, "build.gradle");
+
+ assertTrue("Gradle wins", NbGradleProjectFactory.isProjectCheck(prj,
false));
+ assertFalse("Pom wins", NbGradleProjectFactory.isProjectCheck(prj,
true));
+ }
+
+ public void testPomNestedAndGradleNot() throws Exception {
+ FileObject parentPrj = root;
+ FileObject parentPom = FileUtil.createData(parentPrj, "pom.xml");
+ FileObject prj = FileUtil.createFolder(parentPrj, "child");
+ FileObject pom = FileUtil.createData(prj, "pom.xml");
+ FileObject gradle = FileUtil.createData(prj, "build.gradle");
+
+ assertFalse("Pom wins on settings",
NbGradleProjectFactory.isProjectCheck(prj, true));
+ assertFalse("Pom wins on parent pom",
NbGradleProjectFactory.isProjectCheck(prj, false));
+ }
+
+ public void testPomAndGradleBothNested() throws Exception {
+ FileObject parentPrj = root;
+ FileObject parentPom = FileUtil.createData(parentPrj, "pom.xml");
+ FileObject parentGradle = FileUtil.createData(parentPrj,
"build.gradle");
+ FileObject prj = FileUtil.createFolder(parentPrj, "child");
+ FileObject pom = FileUtil.createData(prj, "pom.xml");
+ FileObject gradle = FileUtil.createData(prj, "build.gradle");
+
+ assertFalse("Parent Pom wins on settings",
NbGradleProjectFactory.isProjectCheck(parentPrj, true));
+ assertTrue("Parent Gradle wins",
NbGradleProjectFactory.isProjectCheck(parentPrj, false));
+
+ assertFalse("Pom wins on settings",
NbGradleProjectFactory.isProjectCheck(prj, true));
+ assertTrue("Gradle wins on parent build.gradle",
NbGradleProjectFactory.isProjectCheck(prj, false));
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists