Skip to content

Commit f3b17b7

Browse files
committed
DefaultTableIOPlugin: make supportsOpen smarter
* It should reject non-FileLocation Locations. * It should reject directories. * It should reject files that do not exist.
1 parent 80d3675 commit f3b17b7

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

src/main/java/org/scijava/table/io/DefaultTableIOPlugin.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
package org.scijava.table.io;
3232

33+
import java.io.File;
3334
import java.io.IOException;
3435
import java.util.ArrayList;
3536
import java.util.Arrays;
@@ -45,6 +46,7 @@
4546
import org.scijava.io.AbstractIOPlugin;
4647
import org.scijava.io.handle.DataHandle;
4748
import org.scijava.io.handle.DataHandleService;
49+
import org.scijava.io.location.FileLocation;
4850
import org.scijava.io.location.Location;
4951
import org.scijava.plugin.Parameter;
5052
import org.scijava.plugin.Plugin;
@@ -75,14 +77,13 @@ public class DefaultTableIOPlugin extends AbstractIOPlugin<Table> implements
7577

7678
@Override
7779
public boolean supportsOpen(final Location source) {
78-
final String ext = FileUtils.getExtension(source.getName()).toLowerCase();
79-
return SUPPORTED_EXTENSIONS.contains(ext);
80+
if (!(source instanceof FileLocation)) return false;
81+
return supportsOpen(((FileLocation) source).getFile());
8082
}
8183

8284
@Override
8385
public boolean supportsOpen(final String source) {
84-
final String ext = FileUtils.getExtension(source).toLowerCase();
85-
return SUPPORTED_EXTENSIONS.contains(ext);
86+
return supportsOpen(new File(source));
8687
}
8788

8889
@Override
@@ -280,6 +281,12 @@ public void save(final Table table, final Location destination,
280281
save(table, destination, options.values);
281282
}
282283

284+
private boolean supportsOpen(final File file) {
285+
if (!file.exists() || file.isDirectory()) return false;
286+
final String ext = FileUtils.getExtension(file).toLowerCase();
287+
return SUPPORTED_EXTENSIONS.contains(ext);
288+
}
289+
283290
private void save(final Table table, final Location destination,
284291
final TableIOOptions.Values options) throws IOException
285292
{

0 commit comments

Comments
 (0)