You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by lk...@apache.org on 2019/05/08 05:05:20 UTC
[netbeans] 01/07: [NETBEANS-2346] Fixed index out of bound
exception in GAV parsing.
This is an automated email from the ASF dual-hosted git repository.
lkishalmi pushed a commit to branch release110-gradle-patch-1
in repository https://gitbox.apache.org/repos/asf/netbeans.git
commit aebe5f9bf438c7df73d5fdac1ce3b9c10c634796
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Sat Apr 6 05:35:25 2019 -0700
[NETBEANS-2346] Fixed index out of bound exception in GAV parsing.
---
.../modules/gradle/api/GradleBaseProject.java | 2 +-
.../modules/gradle/api/GradleConfiguration.java | 2 +-
.../modules/gradle/api/GradleDependency.java | 15 ++++-
.../modules/gradle/nodes/ConfigurationsNode.java | 4 +-
.../actions/ActionMappingPropertyReaderTest.java | 22 +++---
.../modules/gradle/api/GradleDepandencyTest.java | 78 ++++++++++++++++++++++
6 files changed, 105 insertions(+), 18 deletions(-)
diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProject.java b/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProject.java
index 8c16759..49a4f14 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProject.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProject.java
@@ -256,7 +256,7 @@ public final class GradleBaseProject implements Serializable, ModuleSearchSuppor
@Override
public Set<GradleDependency.ModuleDependency> findModules(String gav) {
- String parts[] = gav.split(":");
+ String parts[] = GradleDependency.gavSplit(gav);
if (parts.length != 3) {
throw new IllegalArgumentException("Invalid gav filter: " + gav);
}
diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleConfiguration.java b/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleConfiguration.java
index f269b5e..fe6b233 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleConfiguration.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleConfiguration.java
@@ -86,7 +86,7 @@ public final class GradleConfiguration implements Serializable, ModuleSearchSupp
@Override
public Set<GradleDependency.ModuleDependency> findModules(String gav) {
- String parts[] = gav.split(":");
+ String parts[] = GradleDependency.gavSplit(gav);
if (parts.length != 3) {
throw new IllegalArgumentException("Invalid gav filter: " + gav);
}
diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleDependency.java b/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleDependency.java
index 7d1decb..ab2b588 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleDependency.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/api/GradleDependency.java
@@ -63,6 +63,19 @@ public abstract class GradleDependency implements Serializable, Comparable<Gradl
public abstract Type getType();
+ static final String[] gavSplit(String gav) {
+ int firstColon = gav.indexOf(':');
+ int lastColon = gav.lastIndexOf(':');
+ if (firstColon == -1 || firstColon == lastColon) {
+ throw new IllegalArgumentException("Invalig GAV format: " + gav);
+ }
+ return new String[] {
+ gav.substring(0, firstColon),
+ gav.substring(firstColon + 1, lastColon),
+ gav.substring(lastColon + 1)
+ };
+ }
+
/**
* Dependency for modules usually downloaded from a remote repository.
* @since 1.0
@@ -79,7 +92,7 @@ public abstract class GradleDependency implements Serializable, Comparable<Gradl
ModuleDependency(String id, Set<File> artifacts) {
super(id);
this.artifacts = artifacts;
- String[] parts = id.split(":");
+ String[] parts = gavSplit(id);
group = parts[0];
name = parts[1];
version = parts[2];
diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/nodes/ConfigurationsNode.java b/groovy/gradle/src/org/netbeans/modules/gradle/nodes/ConfigurationsNode.java
index e57077e..4300195 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/nodes/ConfigurationsNode.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/nodes/ConfigurationsNode.java
@@ -290,7 +290,7 @@ public class ConfigurationsNode extends AbstractNode {
GradleProject gp = project.getGradleProject();
ArrayList<GradleDependency> ret = new ArrayList<>();
GradleConfiguration conf = gp.getBaseProject().getConfigurations().get(configuration);
- // We can get null here ins ome extreme cases, e.g. when the project is being deleted
+ // We can get null here in some extreme cases, e.g. when the project is being deleted
if (conf != null) {
ret.addAll(conf.getUnresolved());
ret.addAll(conf.getProjects());
@@ -370,7 +370,7 @@ public class ConfigurationsNode extends AbstractNode {
@Override
public String getDisplayName() {
- return module.getName() + ":" + module.getVersion();
+ return module.getVersion().isEmpty() ? module.getName() : module.getName() + ":" + module.getVersion();
}
@Override
diff --git a/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/actions/ActionMappingPropertyReaderTest.java b/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/actions/ActionMappingPropertyReaderTest.java
index 99a7dfd..d6ad668 100644
--- a/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/actions/ActionMappingPropertyReaderTest.java
+++ b/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/actions/ActionMappingPropertyReaderTest.java
@@ -22,10 +22,6 @@ import java.util.Arrays;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
-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.modules.gradle.api.execute.ActionMapping;
@@ -49,7 +45,7 @@ public class ActionMappingPropertyReaderTest {
@Test
public void testLoadMappings2() {
Properties props = new Properties();
- props.put("nb-action.run.args", "runArgs");
+ props.put("action.run.args", "runArgs");
Set<ActionMapping> result = ActionMappingPropertyReader.loadMappings(props);
assertEquals(result.size(), 1);
ActionMapping mapping = result.iterator().next();
@@ -63,11 +59,11 @@ public class ActionMappingPropertyReaderTest {
@Test
public void testLoadMappings3() {
Properties props = new Properties();
- props.put("nb-action.custom-1", "Build with Arguments");
- props.put("nb-action.custom-1.args", "runArgs ${test}");
- props.put("nb-action.custom-1.reload.args", "runArgs");
- props.put("nb-action.custom-1.reload.rule", "NEVER");
- props.put("nb-action.custom-1.repeatable", "false");
+ props.put("action.custom-1", "Build with Arguments");
+ props.put("action.custom-1.args", "runArgs ${test}");
+ props.put("action.custom-1.reload.args", "runArgs");
+ props.put("action.custom-1.reload.rule", "NEVER");
+ props.put("action.custom-1.repeatable", "false");
Set<ActionMapping> result = ActionMappingPropertyReader.loadMappings(props);
assertEquals(result.size(), 1);
ActionMapping mapping = result.iterator().next();
@@ -82,9 +78,9 @@ public class ActionMappingPropertyReaderTest {
@Test
public void testLoadMappings4() {
Properties props = new Properties();
- props.put("nb-action.build.args", "build");
- props.put("nb-action.build.priority", "100");
- props.put("nb-action.build.plugins", "groovy, war");
+ props.put("action.build.args", "build");
+ props.put("action.build.priority", "100");
+ props.put("action.build.plugins", "groovy, war");
Set<ActionMapping> result = ActionMappingPropertyReader.loadMappings(props);
assertEquals(result.size(), 1);
DefaultActionMapping mapping = (DefaultActionMapping) result.iterator().next();
diff --git a/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/api/GradleDepandencyTest.java b/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/api/GradleDepandencyTest.java
new file mode 100644
index 0000000..43c1881
--- /dev/null
+++ b/groovy/gradle/test/unit/src/org/netbeans/modules/gradle/api/GradleDepandencyTest.java
@@ -0,0 +1,78 @@
+/*
+ * 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.api;
+
+import java.util.Collections;
+import static org.junit.Assert.assertEquals;
+import org.junit.Test;
+
+/**
+ *
+ * @author lkishalmi
+ */
+public class GradleDepandencyTest {
+
+ @Test
+ public void testGetGroup1() {
+ GradleDependency.ModuleDependency instance = new GradleDependency.ModuleDependency(":hamcrest-core-1.3:", Collections.emptySet());
+ String expResult = "";
+ String result = instance.getGroup();
+ assertEquals(expResult, result);
+ }
+
+ @Test
+ public void testGetGroup2() {
+ GradleDependency.ModuleDependency instance = new GradleDependency.ModuleDependency("org.hamcrest:hamcrest-core:1.3", Collections.emptySet());
+ String expResult = "org.hamcrest";
+ String result = instance.getGroup();
+ assertEquals(expResult, result);
+ }
+
+ @Test
+ public void testGetName1() {
+ GradleDependency.ModuleDependency instance = new GradleDependency.ModuleDependency(":hamcrest-core-1.3:", Collections.emptySet());
+ String expResult = "hamcrest-core-1.3";
+ String result = instance.getName();
+ assertEquals(expResult, result);
+ }
+
+ @Test
+ public void testGetName2() {
+ GradleDependency.ModuleDependency instance = new GradleDependency.ModuleDependency("org.hamcrest:hamcrest-core:1.3", Collections.emptySet());
+ String expResult = "hamcrest-core";
+ String result = instance.getName();
+ assertEquals(expResult, result);
+ }
+
+ @Test
+ public void testGetVersion1() {
+ GradleDependency.ModuleDependency instance = new GradleDependency.ModuleDependency(":hamcrest-core-1.3:", Collections.emptySet());
+ String expResult = "";
+ String result = instance.getVersion();
+ assertEquals(expResult, result);
+ }
+
+ @Test
+ public void testGetVersion2() {
+ GradleDependency.ModuleDependency instance = new GradleDependency.ModuleDependency("org.hamcrest:hamcrest-core:1.3", Collections.emptySet());
+ String expResult = "1.3";
+ String result = instance.getVersion();
+ assertEquals(expResult, result);
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists