Skip to content

Commit 54a8a55

Browse files
committed
Merge branch 'skip-unfillable-inputs'
This branches fixes a longstanding bug in the autofilling preprocessor logic, which would erroneously autofill inputs marked autoFill=false.
2 parents 7b6a81f + 55f1042 commit 54a8a55

File tree

6 files changed

+87
-9
lines changed

6 files changed

+87
-9
lines changed

src/main/java/org/scijava/input/Accelerator.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333

3434
import java.util.regex.Pattern;
3535

36+
import org.scijava.util.PlatformUtils;
37+
3638
/**
3739
* A keyboard shortcut, consisting of a {@link KeyCode} plus
3840
* {@link InputModifiers}.
@@ -158,8 +160,8 @@ else if (components[i].equalsIgnoreCase("control") ||
158160
}
159161

160162
public static boolean isCtrlReplacedWithMeta() {
161-
// TODO: Relocate this platform-specific logic?
162-
return System.getProperty("os.name").startsWith("Mac");
163+
// FIXME: Relocate this platform-specific logic.
164+
return PlatformUtils.isMac();
163165
}
164166

165167
// -- Helper methods --

src/main/java/org/scijava/util/FileUtils.java

+3
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,9 @@ public static File urlToFile(final String url) {
204204
path = path.substring(4, index);
205205
}
206206
try {
207+
if (PlatformUtils.isWindows() && path.matches("file:[A-Za-z]:.*")) {
208+
path = "file:/" + path.substring(5);
209+
}
207210
return new File(new URL(path).toURI());
208211
}
209212
catch (final MalformedURLException e) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/*
2+
* #%L
3+
* SciJava Common shared library for SciJava software.
4+
* %%
5+
* Copyright (C) 2009 - 2014 Board of Regents of the University of
6+
* Wisconsin-Madison, Broad Institute of MIT and Harvard, and Max Planck
7+
* Institute of Molecular Cell Biology and Genetics.
8+
* %%
9+
* Redistribution and use in source and binary forms, with or without
10+
* modification, are permitted provided that the following conditions are met:
11+
*
12+
* 1. Redistributions of source code must retain the above copyright notice,
13+
* this list of conditions and the following disclaimer.
14+
* 2. Redistributions in binary form must reproduce the above copyright notice,
15+
* this list of conditions and the following disclaimer in the documentation
16+
* and/or other materials provided with the distribution.
17+
*
18+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
22+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28+
* POSSIBILITY OF SUCH DAMAGE.
29+
* #L%
30+
*/
31+
32+
package org.scijava.util;
33+
34+
/**
35+
* Useful methods for platform-specific interrogation.
36+
*
37+
* @author Curtis Rueden
38+
* @author Johannes Schindelin
39+
*/
40+
public final class PlatformUtils {
41+
42+
private PlatformUtils() {
43+
// prevent instantiation of utility class
44+
}
45+
46+
/** Whether the operating system is Windows-based. */
47+
public static boolean isWindows() {
48+
return osName().startsWith("Win");
49+
}
50+
51+
/** Whether the operating system is Mac-based. */
52+
public static boolean isMac() {
53+
return osName().startsWith("Mac");
54+
}
55+
56+
/** Whether the operating system is Linux-based. */
57+
public static boolean isLinux() {
58+
return osName().startsWith("Linux");
59+
}
60+
61+
/** Whether the operating system is POSIX compliant. */
62+
public static boolean isPOSIX() {
63+
return isMac() || isLinux();
64+
}
65+
66+
/** Gets the name of the operating system. */
67+
public static String osName() {
68+
final String osName = System.getProperty("os.name");
69+
return osName == null ? "Unknown" : osName;
70+
}
71+
72+
}

src/test/java/org/scijava/util/AppUtilsTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public class AppUtilsTest {
4949
public void testBaseDirectory() {
5050
assertNull(AppUtils.getBaseDirectory(new File(
5151
"/home/blub/.m2/repository/org/dscho/secret/1.0/secret-1.0.jar"), null));
52-
final String tmp = System.getProperty("os.name").startsWith("Win") ? "c:/tmp" : "/tmp";
52+
final String tmp = PlatformUtils.isWindows() ? "c:/tmp" : "/tmp";
5353
assertEquals(new File(tmp), AppUtils.getBaseDirectory(new File(
5454
tmp + "/app/target/classes"), "app"));
5555
assertEquals(new File(tmp), AppUtils.getBaseDirectory(new File(

src/test/java/org/scijava/util/FileUtilsTest.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@
6161
* @author Grant Harris
6262
*/
6363
public class FileUtilsTest {
64-
private final static boolean isWindows =
65-
System.getProperty("os.name").startsWith("Win");
6664

6765
@Test
6866
public void testGetPath() {
@@ -91,11 +89,15 @@ public void testGetExtension() {
9189
public void testURLToFile() throws MalformedURLException {
9290
// verify that 'file:' URL works
9391
final String jqpublic;
94-
if (isWindows) {
92+
if (PlatformUtils.isWindows()) {
9593
jqpublic = "C:/Users/jqpublic/";
9694
} else {
9795
jqpublic = "/Users/jqpublic/";
9896
}
97+
98+
final File jqpublicFile = FileUtils.urlToFile("file:" + jqpublic);
99+
assertEqualsPath(jqpublic, jqpublicFile.getPath() + "/");
100+
99101
final String filePath = jqpublic + "imagej/ImageJ.class";
100102
final String fileURL = new File(filePath).toURI().toURL().toString();
101103
final File fileFile = FileUtils.urlToFile(fileURL);
@@ -270,7 +272,7 @@ public void testListContents() throws IOException, URISyntaxException {
270272
}
271273

272274
private static void assertEqualsPath(final String a, final String b) {
273-
if (isWindows) {
275+
if (PlatformUtils.isWindows()) {
274276
assertEquals(a.replace('\\', '/'), b.replace('\\', '/'));
275277
} else {
276278
assertEquals(a, b);

src/test/java/org/scijava/util/ProcessUtilsTest.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,7 @@ public void testStdin() {
6868
}
6969

7070
private void assumePOSIX() {
71-
final String osName = System.getProperty("os.name");
72-
assumeTrue(osName.equals("Linux") || osName.equals("Mac OS X"));
71+
assumeTrue(PlatformUtils.isPOSIX());
7372
}
7473

7574
/**

0 commit comments

Comments
 (0)