Skip to content

Commit

Permalink
Merge pull request #2 from oleg-nenashev/JENKINS-49649
Browse files Browse the repository at this point in the history
[JENKINS-49649] - Update the plugin to make it compatible with Jenkins 2.102+
  • Loading branch information
aendter committed Feb 22, 2018
2 parents 148bc95 + 71ae152 commit 587fcec
Show file tree
Hide file tree
Showing 9 changed files with 89 additions and 71 deletions.
2 changes: 2 additions & 0 deletions Jenkinsfile
@@ -0,0 +1,2 @@
// Build the plugin using https://github.com/jenkins-infra/pipeline-library
buildPlugin(jenkinsVersions: [null, '2.107'])
26 changes: 10 additions & 16 deletions pom.xml
Expand Up @@ -3,19 +3,24 @@
<parent>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<version>1.520</version>
<version>3.5</version>
</parent>

<groupId>aendter.jenkins.plugins</groupId>
<artifactId>filesystem-list-parameter-plugin</artifactId>
<version>0.0.4-SNAPSHOT</version>
<packaging>hpi</packaging>

<name>Jenkins Filesystem List Parameter Plug-in</name>
<name>Jenkins Filesystem List Parameter Plug-in</name>
<description>
This plugin reads folder, file or symbolic link names from filesystem path as parameter value.
</description>

<properties>
<jenkins.version>1.625.3</jenkins.version>
<java.level>7</java.level>
</properties>

<licenses>
<license>
<name>Apache License</name>
Expand All @@ -29,9 +34,7 @@
<url>https://github.com/jenkinsci/filesystem-list-parameter-plugin</url>
</scm>

<url>https://wiki.jenkins-ci.org/display/JENKINS/Filesystem+List+Parameter+Plug-in</url>


<url>https://wiki.jenkins.io/display/JENKINS/Filesystem+List+Parameter+Plug-in</url>

<developers>
<developer>
Expand All @@ -47,24 +50,15 @@
<repositories>
<repository>
<id>repo.jenkins-ci.org</id>
<url>http://repo.jenkins-ci.org/public/</url>
<url>https://repo.jenkins-ci.org/public/</url>
</repository>
</repositories>

<pluginRepositories>
<pluginRepository>
<id>repo.jenkins-ci.org</id>
<url>http://repo.jenkins-ci.org/public/</url>
<url>https://repo.jenkins-ci.org/public/</url>
</pluginRepository>
</pluginRepositories>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>

</project>
Expand Up @@ -15,8 +15,8 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Formatter;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.logging.Logger;
Expand Down Expand Up @@ -75,8 +75,9 @@ public FormValidation doCheckPath(@QueryParameter final String path) throws IOEx
if(!dir.exists()) {
return FormValidation.error(Messages.FileSystemListParameterDefinition_PathDoesntExist(), path);
}

if(dir.list().length == 0) {

String[] items = dir.list();
if(items == null || items.length == 0) {
return FormValidation.warning(Messages.FileSystemListParameterDefinition_NoObjectsFound(), path);
}
return FormValidation.ok();
Expand Down Expand Up @@ -116,10 +117,6 @@ private FormValidation checkRegex(String regex) {
private String regexExcludePattern;

private String value;

private Formatter formatter;

SortedMap<String, Long> map;



Expand All @@ -138,7 +135,6 @@ public FileSystemListParameterDefinition(String name, String description, String
this.sortReverseOrder = sortReverseOrder;
this.regexIncludePattern = regexIncludePattern;
this.regexExcludePattern = regexExcludePattern;
this.formatter = new Formatter();

}

Expand Down Expand Up @@ -175,7 +171,7 @@ public ParameterValue getDefaultParameterValue() {
try {
defaultValue = getEffectiveDefaultValue();
} catch (IOException e) {
LOGGER.warning(formatter.format(Messages.FileSystemListParameterDefinition_SymlinkDetectionError(), defaultValue).toString());
LOGGER.warning(String.format(Messages.FileSystemListParameterDefinition_SymlinkDetectionError(), defaultValue).toString());
}
if(!StringUtils.isBlank(defaultValue)) {
return new FileSystemListParameterValue(getName(), defaultValue);
Expand All @@ -194,46 +190,46 @@ private String getEffectiveDefaultValue() throws IOException {


public List<String> getFsObjectsList() throws IOException {
map = new TreeMap<String, Long>();

TreeMap<String, Long> map = new TreeMap<>();
File rootDir = new File(path);
File[] listFiles = rootDir.listFiles();

if(listFiles!=null){
switch (getSelectedEnumType()) {
case SYMLINK:
createSymlinkMap(listFiles);
createSymlinkMap(listFiles, map);
break;
case DIRECTORY:
createDirectoryMap(listFiles);
createDirectoryMap(listFiles, map);
break;
case FILE:
createFileMap(listFiles);
createFileMap(listFiles, map);
break;
default:
createAllObjectsMap(listFiles);
createAllObjectsMap(listFiles, map);
break;
}
}


return sortList();
return sortList(map);
}



List<String> sortList() {
List<String> sortList(Map<String, Long> map) {
List<String> list;

if (map.isEmpty()) {
list = new ArrayList<String>();
String msg = formatter.format(Messages.FileSystemListParameterDefinition_NoObjectsFoundAtPath(), getSelectedEnumType(), getRegexIncludePattern(), getRegexExcludePattern(), getPath()).toString() ;
String msg = String.format(Messages.FileSystemListParameterDefinition_NoObjectsFoundAtPath(), getSelectedEnumType(), getRegexIncludePattern(), getRegexExcludePattern(), getPath()).toString() ;
LOGGER.warning(msg);
list.add(msg);
}else {
// Sorting:
if (isSortByLastModified()) {
list = createTimeSortedList();
list = createTimeSortedList(map);
}else {
list = new ArrayList<String>();
list.addAll(map.keySet());
Expand All @@ -245,11 +241,11 @@ List<String> sortList() {

return list;
}




List<String> createTimeSortedList() {

static List<String> createTimeSortedList(Map<String, Long> map) {
List<String> list = new ArrayList<String>();

Collection<Long> valuesC = map.values();
Expand All @@ -262,9 +258,9 @@ List<String> createTimeSortedList() {
if (map.containsValue(value)) {

// key with lowest value will be added first
for (String key : map.keySet()) {
if (value == map.get(key)) {
list.add(key);
for (Map.Entry<String, Long> entry : map.entrySet()) {
if (value.equals(entry.getValue())) {
list.add(entry.getKey());
}
}
}
Expand All @@ -275,7 +271,7 @@ List<String> createTimeSortedList() {



private boolean isSymlink(File file) throws IOException {
static private boolean isSymlink(File file) throws IOException {
if (file == null)
throw new NullPointerException("File must not be null");
File canon;
Expand Down Expand Up @@ -306,33 +302,33 @@ private boolean isPatternMatching(String name) {
}


private void createSymlinkMap(File[] listFiles) throws IOException {
private void createSymlinkMap(File[] listFiles, Map<String, Long> target) throws IOException {

for (File file : listFiles) {
if (!file.isHidden() && isSymlink(file) && isPatternMatching(file.getName())) {
map.put(file.getName(),file.lastModified());
target.put(file.getName(),file.lastModified());
LOGGER.finest("add " + file);
}
}
}


private void createDirectoryMap(File[] listFiles) throws IOException {
private void createDirectoryMap(File[] listFiles, Map<String, Long> target) throws IOException {

for (File file : listFiles) {
if (!file.isHidden() && file.isDirectory() && !isSymlink(file) && isPatternMatching(file.getName())) {
map.put(file.getName(),file.lastModified());
target.put(file.getName(),file.lastModified());
LOGGER.finest("add " + file);
}
}
}


private void createFileMap(File[] listFiles) throws IOException {
private void createFileMap(File[] listFiles, Map<String, Long> target) throws IOException {

for (File file : listFiles) {
if (!file.isHidden() && file.isFile() && !isSymlink(file) && isPatternMatching(file.getName())) {
map.put(file.getName(),file.lastModified());
target.put(file.getName(),file.lastModified());
LOGGER.finest("add " + file);
}
}
Expand All @@ -342,11 +338,11 @@ private void createFileMap(File[] listFiles) throws IOException {



private void createAllObjectsMap(File[] listFiles) {
private void createAllObjectsMap(File[] listFiles, Map<String, Long> target) {

for (File file : listFiles) {
if (!file.isHidden() && isPatternMatching(file.getName())) {
map.put(file.getName(),file.lastModified());
target.put(file.getName(),file.lastModified());
LOGGER.finest("add " + file);
}
}
Expand Down
@@ -1,3 +1,4 @@
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">


Expand Down
@@ -1,3 +1,4 @@
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define"
xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form"
xmlns:i="jelly:fmt" xmlns:p="/lib/hudson/project">
Expand Down
@@ -1,3 +1,4 @@
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define"
xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form"
xmlns:i="jelly:fmt" xmlns:p="/lib/hudson/project">
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/index.jelly
@@ -1,6 +1,7 @@
<!--
This view is used to render the installed plugins page.
-->
<?jelly escape-by-default='true'?>
<div>
Plugin lists file system objects to choose as build parameter
</div>
38 changes: 16 additions & 22 deletions src/test/java/alex/jenkins/plugins/ChangeSequenceTest.java
Expand Up @@ -8,28 +8,22 @@
import org.junit.Test;

public class ChangeSequenceTest {



public void setup(){
}

@Test
public void testSorting() {
boolean sortByLastModified = true;
boolean sortReverseOrder = false;
FileSystemListParameterDefinition pd = new FileSystemListParameterDefinition("name", "description", "path", "FILE", "", "", sortByLastModified, sortReverseOrder);

pd.map = new TreeMap<String, Long>();

TreeMap<String, Long> map = new TreeMap<>();
String test1 = "test1";
String test2 = "test2";
File f1 = new File(test1);
File f2 = new File(test2);

pd.map.put(f1.getName(), (long) 2);
pd.map.put(f2.getName(), (long) 1);
map.put(f1.getName(), (long) 2);
map.put(f2.getName(), (long) 1);

List<String> sortedList = pd.createTimeSortedList();
List<String> sortedList = FileSystemListParameterDefinition.createTimeSortedList(map);

Assert.assertEquals(test2,sortedList.get(0));
Assert.assertEquals(test1,sortedList.get(1));
Expand All @@ -42,17 +36,17 @@ public void testReverseOrder() {
boolean sortByLastModified = true;
boolean sortReverseOrder = true;
FileSystemListParameterDefinition pd = new FileSystemListParameterDefinition("name", "description", "path", "FILE", "", "", sortByLastModified, sortReverseOrder);
pd.map = new TreeMap<String, Long>();

TreeMap<String, Long> map = new TreeMap<>();
String test1 = "test1";
String test2 = "test2";
File f1 = new File(test1);
File f2 = new File(test2);

pd.map.put(f1.getName(), (long) 2);
pd.map.put(f2.getName(), (long) 1);
map.put(f1.getName(), (long) 2);
map.put(f2.getName(), (long) 1);

List<String> sortedList = pd.sortList();
List<String> sortedList = pd.sortList(map);

Assert.assertEquals(test1,sortedList.get(0));
Assert.assertEquals(test2,sortedList.get(1));
Expand All @@ -65,20 +59,20 @@ public void testAlphabeticOrder() {
boolean sortByLastModified = false;
boolean sortReverseOrder = false;
FileSystemListParameterDefinition pd = new FileSystemListParameterDefinition("name", "description", "path", "FILE", "", "", sortByLastModified, sortReverseOrder);
pd.map = new TreeMap<String, Long>();

TreeMap<String, Long> map = new TreeMap<>();
String test1 = "test1";
String test2 = "test2";
String test3 = "test3";
File f1 = new File(test1);
File f2 = new File(test2);
File f3 = new File(test3);

pd.map.put(f1.getName(), (long) 1);
pd.map.put(f3.getName(), (long) 3);
pd.map.put(f2.getName(), (long) 2);
map.put(f1.getName(), (long) 1);
map.put(f3.getName(), (long) 3);
map.put(f2.getName(), (long) 2);

List<String> sortedList = pd.sortList();
List<String> sortedList = pd.sortList(map);

Assert.assertEquals(test1,sortedList.get(0));
Assert.assertEquals(test2,sortedList.get(1));
Expand Down

0 comments on commit 587fcec

Please sign in to comment.