Changeset 14630 in josm


Ignore:
Timestamp:
2019-01-03T20:11:27+01:00 (6 years ago)
Author:
simon04
Message:

fix #16497 - Support relative paths in .joz session file

Location:
trunk/src/org/openstreetmap/josm/io/session
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/session/GenericSessionExporter.java

    r10615 r14630  
    1313import java.io.IOException;
    1414import java.io.OutputStream;
    15 import java.net.MalformedURLException;
     15import java.nio.file.Path;
    1616
    1717import javax.swing.AbstractAction;
     
    192192            addDataFile(support.getOutputStreamZip(zipPath));
    193193        } else {
    194             try {
    195                 File f = layer.getAssociatedFile();
    196                 if (f != null) {
    197                     file.appendChild(support.createTextNode(f.toURI().toURL().toString()));
     194            File f = layer.getAssociatedFile();
     195            if (f != null) {
     196                final Path sessionDirectory = support.getOutput().getParent();
     197                final String fileString;
     198                if (f.toPath().startsWith(sessionDirectory)) {
     199                    fileString = sessionDirectory.relativize(f.toPath()).toString();
     200                } else {
     201                    fileString = f.toPath().toString();
    198202                }
    199             } catch (MalformedURLException e) {
    200                 throw new IOException(e);
     203                file.appendChild(support.createTextNode(fileString));
    201204            }
    202205        }
  • trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java

    r14120 r14630  
    99import java.nio.charset.StandardCharsets;
    1010import java.nio.file.Files;
     11import java.nio.file.Path;
    1112import java.util.ArrayList;
    1213import java.util.Collection;
     
    6465    private final boolean zip;
    6566
     67    private Path output;
    6668    private ZipOutputStream zipOut;
    6769
     
    195197        public boolean isZip() {
    196198            return zip;
     199        }
     200
     201        /**
     202         * Returns the path of the output file.
     203         *
     204         * @return the path of the output file
     205         */
     206        public Path getOutput() {
     207            return output;
    197208        }
    198209    }
     
    329340     */
    330341    public void write(File f) throws IOException {
    331         try (OutputStream out = Files.newOutputStream(f.toPath())) {
     342        output = f.toPath();
     343        try (OutputStream out = Files.newOutputStream(output)) {
    332344            write(out);
    333345        }
Note: See TracChangeset for help on using the changeset viewer.