Ignore:
Timestamp:
2014-05-01T02:34:43+02:00 (6 years ago)
Author:
Don-vip
Message:

see #8465 - global use of try-with-resources, according to

Location:
trunk/src/org/openstreetmap/josm/io
Files:
37 edited

Legend:

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

    r6474 r7033  
    1212import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    1313import org.openstreetmap.josm.tools.CheckParameterUtil;
    14 import org.openstreetmap.josm.tools.Utils;
    1514import org.xml.sax.SAXException;
    1615
     
    4847        for (int i = 0;!done;++i) {
    4948            progressMonitor.subTask(tr("Downloading points {0} to {1}...", i * 5000, ((i + 1) * 5000)));
    50             InputStream in = getInputStream(url+i, progressMonitor.createSubTaskMonitor(1, true));
    51             if (in == null) {
    52                 break;
     49            try (InputStream in = getInputStream(url+i, progressMonitor.createSubTaskMonitor(1, true))) {
     50                if (in == null) {
     51                    break;
     52                }
     53                progressMonitor.setTicks(0);
     54                GpxReader reader = new GpxReader(in);
     55                gpxParsedProperly = reader.parse(false);
     56                GpxData currentGpx = reader.getGpxData();
     57                if (result == null) {
     58                    result = currentGpx;
     59                } else if (currentGpx.hasTrackPoints()) {
     60                    result.mergeFrom(currentGpx);
     61                } else{
     62                    done = true;
     63                }
    5364            }
    54             progressMonitor.setTicks(0);
    55             GpxReader reader = new GpxReader(in);
    56             gpxParsedProperly = reader.parse(false);
    57             GpxData currentGpx = reader.getGpxData();
    58             if (result == null) {
    59                 result = currentGpx;
    60             } else if (currentGpx.hasTrackPoints()) {
    61                 result.mergeFrom(currentGpx);
    62             } else{
    63                 done = true;
    64             }
    65             Utils.close(in);
    6665            activeConnection = null;
    6766        }
    68         result.fromServer = true;
     67        if (result != null) {
     68            result.fromServer = true;
     69        }
    6970        return result;
    7071    }
     
    113114    public DataSet parseOsm(ProgressMonitor progressMonitor) throws OsmTransferException {
    114115        progressMonitor.beginTask(tr("Contacting OSM Server..."), 10);
    115         InputStream in = null;
    116116        try {
    117117            DataSet ds = null;
     
    119119            if (crosses180th) {
    120120                // API 0.6 does not support requests crossing the 180th meridian, so make two requests
    121                 in = getInputStream(getRequestForBbox(lon1, lat1, 180.0, lat2), progressMonitor.createSubTaskMonitor(9, false));
    122                 if (in == null)
    123                     return null;
    124                 ds = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(1, false));
     121                DataSet ds2 = null;
    125122
    126                 in = getInputStream(getRequestForBbox(-180.0, lat1, lon2, lat2), progressMonitor.createSubTaskMonitor(9, false));
    127                 if (in == null)
    128                     return null;
    129                 DataSet ds2 = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(1, false));
     123                try (InputStream in = getInputStream(getRequestForBbox(lon1, lat1, 180.0, lat2), progressMonitor.createSubTaskMonitor(9, false))) {
     124                    if (in == null)
     125                        return null;
     126                    ds = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(1, false));
     127                }
     128
     129                try (InputStream in = getInputStream(getRequestForBbox(-180.0, lat1, lon2, lat2), progressMonitor.createSubTaskMonitor(9, false))) {
     130                    if (in == null)
     131                        return null;
     132                    ds2 = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(1, false));
     133                }
    130134                if (ds2 == null)
    131135                    return null;
     
    134138            } else {
    135139                // Simple request
    136                 in = getInputStream(getRequestForBbox(lon1, lat1, lon2, lat2), progressMonitor.createSubTaskMonitor(9, false));
    137                 if (in == null)
    138                     return null;
    139                 ds = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(1, false));
     140                try (InputStream in = getInputStream(getRequestForBbox(lon1, lat1, lon2, lat2), progressMonitor.createSubTaskMonitor(9, false))) {
     141                    if (in == null)
     142                        return null;
     143                    ds = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(1, false));
     144                }
    140145            }
    141146            return ds;
     
    146151        } finally {
    147152            progressMonitor.finishTask();
    148             Utils.close(in);
    149153            activeConnection = null;
    150154        }
  • trunk/src/org/openstreetmap/josm/io/CacheCustomContent.java

    r7026 r7033  
    145145     */
    146146    private void loadFromDisk() throws T {
    147         BufferedInputStream input = null;
    148         try {
    149             input = new BufferedInputStream(new FileInputStream(path));
     147        try (BufferedInputStream input = new BufferedInputStream(new FileInputStream(path))) {
    150148            this.data = new byte[input.available()];
    151149            input.read(this.data);
    152150        } catch (IOException e) {
    153151            this.data = updateForce();
    154         } finally {
    155             Utils.close(input);
    156152        }
    157153    }
     
    161157     */
    162158    private void saveToDisk() {
    163         BufferedOutputStream output = null;
    164         try {
    165             output = new BufferedOutputStream(new FileOutputStream(path));
     159        try (BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(path))) {
    166160            output.write(this.data);
    167161            output.flush();
    168         } catch(Exception e) {
     162        } catch (IOException e) {
    169163            Main.error(e);
    170         } finally {
    171             Utils.close(output);
    172164        }
    173165    }
  • trunk/src/org/openstreetmap/josm/io/CacheFiles.java

    r7005 r7033  
    114114
    115115            byte[] bytes = new byte[(int) data.length()];
    116             new RandomAccessFile(data, "r").readFully(bytes);
     116            try (RandomAccessFile raf = new RandomAccessFile(data, "r")) {
     117                raf.readFully(bytes);
     118            }
    117119            return bytes;
    118120        } catch (Exception e) {
     
    135137            }
    136138            // rws also updates the file meta-data, i.e. last mod time
    137             RandomAccessFile raf = new RandomAccessFile(f, "rws");
    138             try {
     139            try (RandomAccessFile raf = new RandomAccessFile(f, "rws")) {
    139140                raf.write(data);
    140             } finally {
    141                 Utils.close(raf);
    142141            }
    143142        } catch (Exception e) {
  • trunk/src/org/openstreetmap/josm/io/Compression.java

    r6882 r7033  
    7575     * @throws IOException
    7676     */
     77    @SuppressWarnings("resource")
    7778    public static InputStream getUncompressedFileInputStream(File file) throws IOException {
    7879        return byExtension(file.getName()).getUncompressedInputStream(new FileInputStream(file));
     
    114115     * @throws IOException
    115116     */
     117    @SuppressWarnings("resource")
    116118    public static OutputStream getCompressedFileOutputStream(File file) throws IOException {
    117119        return byExtension(file.getName()).getCompressedOutputStream(new FileOutputStream(file));
  • trunk/src/org/openstreetmap/josm/io/GeoJSONExporter.java

    r6552 r7033  
    2121            "json,geojson", "json", tr("GeoJSON Files") + " (*.json *.geojson)");
    2222
     23    /**
     24     * Constructs a new {@code GeoJSONExporter}.
     25     */
    2326    public GeoJSONExporter() {
    2427        super(FILE_FILTER);
     
    2932        if (layer instanceof OsmDataLayer) {
    3033            String json = new GeoJSONWriter((OsmDataLayer) layer).write();
    31             Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), Utils.UTF_8));
    32             try {
     34            try (Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), Utils.UTF_8))) {
    3335                out.write(json);
    34             } finally {
    35                 Utils.close(out);
    3636            }
    3737        } else {
  • trunk/src/org/openstreetmap/josm/io/GpxImporter.java

    r6798 r7033  
    7676    @Override
    7777    public void importData(File file, ProgressMonitor progressMonitor) throws IOException {
    78         final InputStream is = Compression.getUncompressedFileInputStream(file);
    7978        final String fileName = file.getName();
    8079
    81         try {
     80        try (InputStream is = Compression.getUncompressedFileInputStream(file)) {
    8281            GpxReader r = new GpxReader(is);
    8382            boolean parsedProperly = r.parse(true);
  • trunk/src/org/openstreetmap/josm/io/GpxReader.java

    r7012 r7033  
    507507
    508508    /**
    509      * Parse the input stream and store the result in trackData and markerData
     509     * Constructs a new {@code GpxReader}, which can later parse the input stream
     510     * and store the result in trackData and markerData
    510511     *
    511512     * @param source the source input stream
    512513     * @throws IOException if an IO error occurs, e.g. the input stream is closed.
    513514     */
     515    @SuppressWarnings("resource")
    514516    public GpxReader(InputStream source) throws IOException {
    515517        Reader utf8stream = UTFInputStreamReader.create(source);
  • trunk/src/org/openstreetmap/josm/io/GpxWriter.java

    r6889 r7033  
    1111import java.util.Map;
    1212import java.util.Map.Entry;
     13
     14import javax.xml.XMLConstants;
    1315
    1416import org.openstreetmap.josm.data.Bounds;
     
    6769        out.println("<gpx version=\"1.1\" creator=\"JOSM GPX export\" xmlns=\"http://www.topografix.com/GPX/1/1\"\n" +
    6870                (hasExtensions ? String.format("    xmlns:josm=\"%s\"%n", JOSM_EXTENSIONS_NAMESPACE_URI) : "") +
    69                 "    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n" +
     71                "    xmlns:xsi=\""+XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI+"\" \n" +
    7072                "    xsi:schemaLocation=\"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd\">");
    7173        indent = "  ";
  • trunk/src/org/openstreetmap/josm/io/MirroredInputStream.java

    r7026 r7033  
    1111import java.io.IOException;
    1212import java.io.InputStream;
     13import java.io.OutputStream;
    1314import java.net.HttpURLConnection;
    1415import java.net.MalformedURLException;
     
    184185    }
    185186
     187    @SuppressWarnings("resource")
    186188    private Pair<String, InputStream> findZipEntryImpl(String extension, String namepart) {
    187189        if (file == null)
     
    293295        String localPath = "mirror_" + a;
    294296        destDirFile = new File(destDir, localPath + ".tmp");
    295         BufferedOutputStream bos = null;
    296         BufferedInputStream bis = null;
    297297        try {
    298298            HttpURLConnection con = connectFollowingRedirect(url, httpAccept);
    299             bis = new BufferedInputStream(con.getInputStream());
    300             FileOutputStream fos = new FileOutputStream(destDirFile);
    301             bos = new BufferedOutputStream(fos);
    302             byte[] buffer = new byte[4096];
    303             int length;
    304             while ((length = bis.read(buffer)) > -1) {
    305                 bos.write(buffer, 0, length);
    306             }
    307             Utils.close(bos);
    308             bos = null;
    309             /* close fos as well to be sure! */
    310             Utils.close(fos);
    311             fos = null;
     299            try (
     300                InputStream bis = new BufferedInputStream(con.getInputStream());
     301                OutputStream fos = new FileOutputStream(destDirFile);
     302                OutputStream bos = new BufferedOutputStream(fos)
     303            ) {
     304                byte[] buffer = new byte[4096];
     305                int length;
     306                while ((length = bis.read(buffer)) > -1) {
     307                    bos.write(buffer, 0, length);
     308                }
     309            }
    312310            localFile = new File(destDir, localPath);
    313311            if(Main.platform.rename(destDirFile, localFile)) {
     
    325323                throw e;
    326324            }
    327         } finally {
    328             Utils.close(bis);
    329             Utils.close(bos);
    330325        }
    331326
  • trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java

    r7005 r7033  
    55import static org.openstreetmap.josm.tools.I18n.trn;
    66
     7import java.io.IOException;
    78import java.io.InputStream;
    89import java.net.HttpURLConnection;
     
    506507        protected FetchResult multiGetIdPackage(OsmPrimitiveType type, Set<Long> pkg, ProgressMonitor progressMonitor) throws OsmTransferException {
    507508            String request = buildRequestString(type, pkg);
    508             final InputStream in = getInputStream(request, NullProgressMonitor.INSTANCE);
    509             if (in == null) return null;
    510             progressMonitor.subTask(tr("Downloading OSM data..."));
    511             try {
    512                 return new FetchResult(OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(pkg.size(), false)), null);
    513             } catch (Exception e) {
    514                 throw new OsmTransferException(e);
    515             }
     509            FetchResult result = null;
     510            try (InputStream in = getInputStream(request, NullProgressMonitor.INSTANCE)) {
     511                if (in == null) return null;
     512                progressMonitor.subTask(tr("Downloading OSM data..."));
     513                try {
     514                    result = new FetchResult(OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(pkg.size(), false)), null);
     515                } catch (Exception e) {
     516                    throw new OsmTransferException(e);
     517                }
     518            } catch (IOException ex) {
     519                Main.warn(ex);
     520            }
     521            return result;
    516522        }
    517523
     
    527533        protected DataSet singleGetId(OsmPrimitiveType type, long id, ProgressMonitor progressMonitor) throws OsmTransferException {
    528534            String request = buildRequestString(type, id);
    529             final InputStream in = getInputStream(request, NullProgressMonitor.INSTANCE);
    530             if (in == null) return null;
    531             progressMonitor.subTask(tr("Downloading OSM data..."));
    532             try {
    533                 return OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(1, false));
    534             } catch (Exception e) {
    535                 throw new OsmTransferException(e);
    536             }
     535            DataSet result = null;
     536            try (InputStream in = getInputStream(request, NullProgressMonitor.INSTANCE)) {
     537                if (in == null) return null;
     538                progressMonitor.subTask(tr("Downloading OSM data..."));
     539                try {
     540                    result = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(1, false));
     541                } catch (Exception e) {
     542                    throw new OsmTransferException(e);
     543                }
     544            } catch (IOException ex) {
     545                Main.warn(ex);
     546            }
     547            return result;
    537548        }
    538549
  • trunk/src/org/openstreetmap/josm/io/NMEAImporter.java

    r6798 r7033  
    77import java.io.FileInputStream;
    88import java.io.IOException;
     9import java.io.InputStream;
    910
    1011import javax.swing.JOptionPane;
     
    3536    public void importData(File file, ProgressMonitor progressMonitor) throws IOException {
    3637        final String fn = file.getName();
    37         final NmeaReader r = new NmeaReader(new FileInputStream(file));
    38         if (r.getNumberOfCoordinates() > 0) {
    39             r.data.storageFile = file;
    40             final GpxLayer gpxLayer = new GpxLayer(r.data, fn, true);
    41             final File fileFinal = file;
    42 
    43             GuiHelper.runInEDT(new Runnable() {
    44                 @Override
    45                 public void run() {
    46                     Main.main.addLayer(gpxLayer);
    47                     if (Main.pref.getBoolean("marker.makeautomarkers", true)) {
    48                         MarkerLayer ml = new MarkerLayer(r.data, tr("Markers from {0}", fn), fileFinal, gpxLayer);
    49                         if (!ml.data.isEmpty()) {
    50                             Main.main.addLayer(ml);
     38        try (InputStream fis = new FileInputStream(file)) {
     39            final NmeaReader r = new NmeaReader(fis);
     40            if (r.getNumberOfCoordinates() > 0) {
     41                r.data.storageFile = file;
     42                final GpxLayer gpxLayer = new GpxLayer(r.data, fn, true);
     43                final File fileFinal = file;
     44   
     45                GuiHelper.runInEDT(new Runnable() {
     46                    @Override
     47                    public void run() {
     48                        Main.main.addLayer(gpxLayer);
     49                        if (Main.pref.getBoolean("marker.makeautomarkers", true)) {
     50                            MarkerLayer ml = new MarkerLayer(r.data, tr("Markers from {0}", fn), fileFinal, gpxLayer);
     51                            if (!ml.data.isEmpty()) {
     52                                Main.main.addLayer(ml);
     53                            }
    5154                        }
    5255                    }
    53                 }
    54             });
     56                });
     57            }
     58            showNmeaInfobox(r.getNumberOfCoordinates() > 0, r);
    5559        }
    56         showNmeaInfobox(r.getNumberOfCoordinates() > 0, r);
    5760    }
    5861
  • trunk/src/org/openstreetmap/josm/io/OsmApi.java

    r7030 r7033  
    290290    private String toXml(IPrimitive o, boolean addBody) {
    291291        StringWriter swriter = new StringWriter();
    292         OsmWriter osmWriter = OsmWriterFactory.createOsmWriter(new PrintWriter(swriter), true, version);
    293         swriter.getBuffer().setLength(0);
    294         osmWriter.setWithBody(addBody);
    295         osmWriter.setChangeset(changeset);
    296         osmWriter.header();
    297         o.accept(osmWriter);
    298         osmWriter.footer();
    299         osmWriter.flush();
     292        try (OsmWriter osmWriter = OsmWriterFactory.createOsmWriter(new PrintWriter(swriter), true, version)) {
     293            swriter.getBuffer().setLength(0);
     294            osmWriter.setWithBody(addBody);
     295            osmWriter.setChangeset(changeset);
     296            osmWriter.header();
     297            o.accept(osmWriter);
     298            osmWriter.footer();
     299            osmWriter.flush();
     300        } catch (IOException e) {
     301            Main.warn(e);
     302        }
    300303        return swriter.toString();
    301304    }
     
    308311    private String toXml(Changeset s) {
    309312        StringWriter swriter = new StringWriter();
    310         OsmWriter osmWriter = OsmWriterFactory.createOsmWriter(new PrintWriter(swriter), true, version);
    311         swriter.getBuffer().setLength(0);
    312         osmWriter.header();
    313         osmWriter.visit(s);
    314         osmWriter.footer();
    315         osmWriter.flush();
     313        try (OsmWriter osmWriter = OsmWriterFactory.createOsmWriter(new PrintWriter(swriter), true, version)) {
     314            swriter.getBuffer().setLength(0);
     315            osmWriter.header();
     316            osmWriter.visit(s);
     317            osmWriter.footer();
     318            osmWriter.flush();
     319        } catch (IOException e) {
     320            Main.warn(e);
     321        }
    316322        return swriter.toString();
    317323    }
     
    657663                // If the API returned an error code like 403 forbidden, getInputStream
    658664                // will fail with an IOException.
    659                 InputStream i = null;
    660                 try {
    661                     i = activeConnection.getInputStream();
    662                 } catch (IOException ioe) {
    663                     i = activeConnection.getErrorStream();
    664                 }
     665                InputStream i = getConnectionStream();
    665666                if (i != null) {
    666667                    // the input stream can be null if both the input and the error stream
     
    722723    }
    723724
     725    private InputStream getConnectionStream() {
     726        try {
     727            return activeConnection.getInputStream();
     728        } catch (IOException ioe) {
     729            Main.warn(ioe);
     730            return activeConnection.getErrorStream();
     731        }
     732    }
     733
    724734    /**
    725735     * Replies the API capabilities
  • trunk/src/org/openstreetmap/josm/io/OsmChangesetContentParser.java

    r7012 r7033  
    123123     * @throws IllegalArgumentException if source is {@code null}.
    124124     */
     125    @SuppressWarnings("resource")
    125126    public OsmChangesetContentParser(InputStream source) {
    126127        CheckParameterUtil.ensureParameterNotNull(source, "source");
  • trunk/src/org/openstreetmap/josm/io/OsmChangesetParser.java

    r7012 r7033  
    4141 */
    4242public final class OsmChangesetParser {
    43     private List<Changeset> changesets;
     43    private final List<Changeset> changesets;
    4444
    4545    private OsmChangesetParser() {
     
    219219     * @throws IllegalDataException thrown if the an error was found while parsing the data from the source
    220220     */
     221    @SuppressWarnings("resource")
    221222    public static List<Changeset> parse(InputStream source, ProgressMonitor progressMonitor) throws IllegalDataException {
    222223        OsmChangesetParser parser = new OsmChangesetParser();
  • trunk/src/org/openstreetmap/josm/io/OsmExporter.java

    r7029 r7033  
    2323public class OsmExporter extends FileExporter {
    2424
     25    /**
     26     * Constructs a new {@code OsmExporter}.
     27     */
    2528    public OsmExporter() {
    2629        super(OsmImporter.FILE_FILTER);
     
    6770
    6871            // create outputstream and wrap it with gzip or bzip, if necessary
    69             OutputStream out = getOutputStream(file);
    70             Writer writer = new OutputStreamWriter(out, Utils.UTF_8);
    71 
    72             OsmWriter w = OsmWriterFactory.createOsmWriter(new PrintWriter(writer), false, layer.data.getVersion());
    73             layer.data.getReadLock().lock();
    74             try {
    75                 w.writeLayer(layer);
    76             } finally {
    77                 Utils.close(w);
    78                 layer.data.getReadLock().unlock();
     72            try (
     73                OutputStream out = getOutputStream(file);
     74                Writer writer = new OutputStreamWriter(out, Utils.UTF_8);
     75                OsmWriter w = OsmWriterFactory.createOsmWriter(new PrintWriter(writer), false, layer.data.getVersion());
     76            ) {
     77                layer.data.getReadLock().lock();
     78                try {
     79                    w.writeLayer(layer);
     80                } finally {
     81                    layer.data.getReadLock().unlock();
     82                }
    7983            }
    80             // FIXME - how to close?
    8184            if (noBackup || !Main.pref.getBoolean("save.keepbackup", false)) {
    8285                if (tmpFile != null) {
  • trunk/src/org/openstreetmap/josm/io/OsmReader.java

    r7025 r7033  
    587587            progressMonitor.indeterminateSubTask(tr("Parsing OSM data..."));
    588588
    589             InputStreamReader ir = UTFInputStreamReader.create(source);
    590             XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(ir);
    591             setParser(parser);
    592             parse();
     589            try (InputStreamReader ir = UTFInputStreamReader.create(source)) {
     590                XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(ir);
     591                setParser(parser);
     592                parse();
     593            }
    593594            progressMonitor.worked(1);
    594595
  • trunk/src/org/openstreetmap/josm/io/OsmServerBackreferenceReader.java

    r7005 r7033  
    1818import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    1919import org.openstreetmap.josm.tools.CheckParameterUtil;
    20 import org.openstreetmap.josm.tools.Utils;
    2120
    2221/**
     
    131130     */
    132131    protected DataSet getReferringWays(ProgressMonitor progressMonitor) throws OsmTransferException {
    133         InputStream in = null;
    134132        progressMonitor.beginTask(null, 2);
    135133        try {
     
    139137            .append("/").append(id).append("/ways");
    140138
    141             in = getInputStream(sb.toString(), progressMonitor.createSubTaskMonitor(1, true));
    142             if (in == null)
    143                 return null;
    144             progressMonitor.subTask(tr("Downloading referring ways ..."));
    145             return OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(1, true));
     139            try (InputStream in = getInputStream(sb.toString(), progressMonitor.createSubTaskMonitor(1, true))) {
     140                if (in == null)
     141                    return null;
     142                progressMonitor.subTask(tr("Downloading referring ways ..."));
     143                return OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(1, true));
     144            }
    146145        } catch(OsmTransferException e) {
    147146            throw e;
     
    152151        } finally {
    153152            progressMonitor.finishTask();
    154             Utils.close(in);
    155153            activeConnection = null;
    156154        }
     
    165163     */
    166164    protected DataSet getReferringRelations(ProgressMonitor progressMonitor) throws OsmTransferException {
    167         InputStream in = null;
    168165        progressMonitor.beginTask(null, 2);
    169166        try {
     
    173170            .append("/").append(id).append("/relations");
    174171
    175             in = getInputStream(sb.toString(), progressMonitor.createSubTaskMonitor(1, true));
    176             if (in == null)
    177                 return null;
    178             progressMonitor.subTask(tr("Downloading referring relations ..."));
    179             return OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(1, true));
     172            try (InputStream in = getInputStream(sb.toString(), progressMonitor.createSubTaskMonitor(1, true))) {
     173                if (in == null)
     174                    return null;
     175                progressMonitor.subTask(tr("Downloading referring relations ..."));
     176                return OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(1, true));
     177            }
    180178        } catch(OsmTransferException e) {
    181179            throw e;
     
    186184        } finally {
    187185            progressMonitor.finishTask();
    188             Utils.close(in);
    189186            activeConnection = null;
    190187        }
  • trunk/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java

    r7005 r7033  
    55import static org.openstreetmap.josm.tools.I18n.trn;
    66
     7import java.io.IOException;
    78import java.io.InputStream;
    89import java.text.MessageFormat;
     
    1213import java.util.List;
    1314
     15import org.openstreetmap.josm.Main;
    1416import org.openstreetmap.josm.data.osm.Changeset;
    1517import org.openstreetmap.josm.data.osm.ChangesetDataSet;
     
    5355    public List<Changeset> queryChangesets(ChangesetQuery query, ProgressMonitor monitor) throws OsmTransferException {
    5456        CheckParameterUtil.ensureParameterNotNull(query, "query");
     57        List<Changeset> result = null;
    5558        if (monitor == null) {
    5659            monitor = NullProgressMonitor.INSTANCE;
     
    6063            StringBuilder sb = new StringBuilder();
    6164            sb.append("changesets?").append(query.getQueryString());
    62             InputStream in = getInputStream(sb.toString(), monitor.createSubTaskMonitor(1, true));
    63             if (in == null)
    64                 return null;
    65             monitor.indeterminateSubTask(tr("Downloading changesets ..."));
    66             return OsmChangesetParser.parse(in, monitor.createSubTaskMonitor(1, true));
     65            try (InputStream in = getInputStream(sb.toString(), monitor.createSubTaskMonitor(1, true))) {
     66                if (in == null)
     67                    return null;
     68                monitor.indeterminateSubTask(tr("Downloading changesets ..."));
     69                result = OsmChangesetParser.parse(in, monitor.createSubTaskMonitor(1, true));
     70            } catch (IOException e) {
     71                Main.warn(e);
     72            }
    6773        } catch(OsmTransferException e) {
    6874            throw e;
     
    7278            monitor.finishTask();
    7379        }
     80        return result;
    7481    }
    7582
     
    8996            monitor = NullProgressMonitor.INSTANCE;
    9097        }
     98        Changeset result = null;
    9199        try {
    92100            monitor.beginTask(tr("Reading changeset {0} ...",id));
    93101            StringBuilder sb = new StringBuilder();
    94102            sb.append("changeset/").append(id);
    95             InputStream in = getInputStream(sb.toString(), monitor.createSubTaskMonitor(1, true));
    96             if (in == null)
    97                 return null;
    98             monitor.indeterminateSubTask(tr("Downloading changeset {0} ...", id));
    99             List<Changeset> changesets = OsmChangesetParser.parse(in, monitor.createSubTaskMonitor(1, true));
    100             if (changesets == null || changesets.isEmpty())
    101                 return null;
    102             return changesets.get(0);
     103            try (InputStream in = getInputStream(sb.toString(), monitor.createSubTaskMonitor(1, true))) {
     104                if (in == null)
     105                    return null;
     106                monitor.indeterminateSubTask(tr("Downloading changeset {0} ...", id));
     107                List<Changeset> changesets = OsmChangesetParser.parse(in, monitor.createSubTaskMonitor(1, true));
     108                if (changesets == null || changesets.isEmpty())
     109                    return null;
     110                result = changesets.get(0);
     111            } catch (IOException e) {
     112                Main.warn(e);
     113            }
    103114        } catch(OsmTransferException e) {
    104115            throw e;
     
    108119            monitor.finishTask();
    109120        }
     121        return result;
    110122    }
    111123
     
    137149                StringBuilder sb = new StringBuilder();
    138150                sb.append("changeset/").append(id);
    139                 InputStream in = getInputStream(sb.toString(), monitor.createSubTaskMonitor(1, true));
    140                 if (in == null)
    141                     return null;
    142                 monitor.indeterminateSubTask(tr("({0}/{1}) Downloading changeset {2} ...", i, ids.size(), id));
    143                 List<Changeset> changesets = OsmChangesetParser.parse(in, monitor.createSubTaskMonitor(1, true));
    144                 if (changesets == null || changesets.isEmpty()) {
    145                     continue;
     151                try (InputStream in = getInputStream(sb.toString(), monitor.createSubTaskMonitor(1, true))) {
     152                    if (in == null)
     153                        return null;
     154                    monitor.indeterminateSubTask(tr("({0}/{1}) Downloading changeset {2} ...", i, ids.size(), id));
     155                    List<Changeset> changesets = OsmChangesetParser.parse(in, monitor.createSubTaskMonitor(1, true));
     156                    if (changesets == null || changesets.isEmpty()) {
     157                        continue;
     158                    }
     159                    ret.addAll(changesets);
     160                } catch (IOException e) {
     161                    Main.warn(e);
    146162                }
    147                 ret.addAll(changesets);
    148163                monitor.worked(1);
    149164            }
     
    173188            monitor = NullProgressMonitor.INSTANCE;
    174189        }
     190        ChangesetDataSet result = null;
    175191        try {
    176192            monitor.beginTask(tr("Downloading changeset content"));
    177193            StringBuilder sb = new StringBuilder();
    178194            sb.append("changeset/").append(id).append("/download");
    179             InputStream in = getInputStream(sb.toString(), monitor.createSubTaskMonitor(1, true));
    180             if (in == null)
    181                 return null;
    182             monitor.setCustomText(tr("Downloading content for changeset {0} ...", id));
    183             OsmChangesetContentParser parser = new OsmChangesetContentParser(in);
    184             return parser.parse(monitor.createSubTaskMonitor(1, true));
     195            try (InputStream in = getInputStream(sb.toString(), monitor.createSubTaskMonitor(1, true))) {
     196                if (in == null)
     197                    return null;
     198                monitor.setCustomText(tr("Downloading content for changeset {0} ...", id));
     199                OsmChangesetContentParser parser = new OsmChangesetContentParser(in);
     200                result = parser.parse(monitor.createSubTaskMonitor(1, true));
     201            } catch (IOException e) {
     202                Main.warn(e);
     203            }
    185204        } catch(XmlParsingException e) {
    186205            throw new OsmTransferException(e);
     
    188207            monitor.finishTask();
    189208        }
     209        return result;
    190210    }
    191211}
  • trunk/src/org/openstreetmap/josm/io/OsmServerHistoryReader.java

    r6822 r7033  
    1212import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    1313import org.openstreetmap.josm.tools.CheckParameterUtil;
    14 import org.openstreetmap.josm.tools.Utils;
    1514
    1615/**
     
    5655     */
    5756    public HistoryDataSet parseHistory(ProgressMonitor progressMonitor) throws OsmTransferException {
    58         InputStream in = null;
    5957        progressMonitor.beginTask("");
    6058        try {
     
    6462            .append("/").append(id).append("/history");
    6563
    66             in = getInputStream(sb.toString(), progressMonitor.createSubTaskMonitor(1, true));
    67             if (in == null)
    68                 return null;
    69             progressMonitor.indeterminateSubTask(tr("Downloading history..."));
    70             final OsmHistoryReader reader = new OsmHistoryReader(in);
    71             return reader.parse(progressMonitor.createSubTaskMonitor(1, true));
     64            try (InputStream in = getInputStream(sb.toString(), progressMonitor.createSubTaskMonitor(1, true))) {
     65                if (in == null)
     66                    return null;
     67                progressMonitor.indeterminateSubTask(tr("Downloading history..."));
     68                OsmHistoryReader reader = new OsmHistoryReader(in);
     69                return reader.parse(progressMonitor.createSubTaskMonitor(1, true));
     70            }
    7271        } catch(OsmTransferException e) {
    7372            throw e;
     
    7877        } finally {
    7978            progressMonitor.finishTask();
    80             Utils.close(in);
    8179            activeConnection = null;
    8280        }
  • trunk/src/org/openstreetmap/josm/io/OsmServerObjectReader.java

    r6830 r7033  
    1414import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    1515import org.openstreetmap.josm.tools.CheckParameterUtil;
    16 import org.openstreetmap.josm.tools.Utils;
    1716
    1817/**
     
    116115        }
    117116        progressMonitor.beginTask("", 1);
    118         InputStream in = null;
    119117        try {
    120118            progressMonitor.indeterminateSubTask(tr("Downloading OSM data..."));
     
    129127            }
    130128
    131             in = getInputStream(sb.toString(), progressMonitor.createSubTaskMonitor(1, true));
    132             if (in == null)
    133                 return null;
    134             return OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
     129            try (InputStream in = getInputStream(sb.toString(), progressMonitor.createSubTaskMonitor(1, true))) {
     130                if (in == null)
     131                    return null;
     132                return OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
     133            }
    135134        } catch(OsmTransferException e) {
    136135            if (cancel) return null;
     
    141140        } finally {
    142141            progressMonitor.finishTask();
    143             Utils.close(in);
    144142            activeConnection = null;
    145143        }
  • trunk/src/org/openstreetmap/josm/io/OsmServerReader.java

    r6995 r7033  
    114114     * @throws OsmTransferException thrown if data transfer errors occur
    115115     */
     116    @SuppressWarnings("resource")
    116117    protected InputStream getInputStreamRaw(String urlStr, ProgressMonitor progressMonitor, String reason, boolean uncompressAccordingToContentDisposition) throws OsmTransferException {
    117118        try {
  • trunk/src/org/openstreetmap/josm/io/OsmServerUserInfoReader.java

    r7005 r7033  
    167167            monitor.beginTask("");
    168168            monitor.indeterminateSubTask(tr("Reading user info ..."));
    169             InputStream in = getInputStream("user/details", monitor.createSubTaskMonitor(1, true), reason);
    170             return buildFromXML(
    171                     DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in)
    172             );
     169            try (InputStream in = getInputStream("user/details", monitor.createSubTaskMonitor(1, true), reason)) {
     170                return buildFromXML(
     171                        DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in)
     172                );
     173            }
    173174        } catch(OsmTransferException e) {
    174175            throw e;
  • trunk/src/org/openstreetmap/josm/io/WMSLayerExporter.java

    r6070 r7033  
    1010import org.openstreetmap.josm.gui.layer.WMSLayer;
    1111import org.openstreetmap.josm.tools.CheckParameterUtil;
    12 import org.openstreetmap.josm.tools.Utils;
    1312
    1413/**
     
    3130        CheckParameterUtil.ensureParameterNotNull(layer, "layer");
    3231        if (layer instanceof WMSLayer) {
    33             ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
    34             try {
     32            try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file))) {
    3533                ((WMSLayer)layer).writeExternal(oos);
    36             } finally {
    37                 Utils.close(oos);
    3834            }
    3935        }
  • trunk/src/org/openstreetmap/josm/io/WMSLayerImporter.java

    r6070 r7033  
    1515import org.openstreetmap.josm.gui.util.GuiHelper;
    1616import org.openstreetmap.josm.tools.CheckParameterUtil;
    17 import org.openstreetmap.josm.tools.Utils;
    1817
    1918/**
     
    5049    public void importData(File file, ProgressMonitor progressMonitor) throws IOException, IllegalDataException {
    5150        CheckParameterUtil.ensureParameterNotNull(file, "file");
    52         ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
    53         try {
     51        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file))) {
    5452            wmsLayer.readExternal(ois);
    5553        } catch (ClassNotFoundException e) {
    5654            throw new IllegalDataException(e);
    57         } finally {
    58             Utils.close(ois);
    5955        }
    6056
  • trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java

    r7012 r7033  
    5151            SAXParserFactory factory = SAXParserFactory.newInstance();
    5252            factory.setNamespaceAware(true);
    53             InputStream in = new MirroredInputStream(source);
    54             InputSource is = new InputSource(UTFInputStreamReader.create(in));
    55             factory.newSAXParser().parse(is, parser);
    56             return parser.entries;
     53            try (InputStream in = new MirroredInputStream(source)) {
     54                InputSource is = new InputSource(UTFInputStreamReader.create(in));
     55                factory.newSAXParser().parse(is, parser);
     56                return parser.entries;
     57            }
    5758        } catch (SAXException e) {
    5859            throw e;
  • trunk/src/org/openstreetmap/josm/io/imagery/WMSGrabber.java

    r7012 r7033  
    173173
    174174        ByteArrayOutputStream baos = new ByteArrayOutputStream();
    175         InputStream is = new ProgressInputStream(conn, null);
    176         try {
     175        try (InputStream is = new ProgressInputStream(conn, null)) {
    177176            Utils.copyStream(is, baos);
    178         } finally {
    179             Utils.close(is);
    180177        }
    181178
     
    190187        StringBuilder exception = new StringBuilder();
    191188        InputStream in = conn.getInputStream();
    192         BufferedReader br = new BufferedReader(new InputStreamReader(in, Utils.UTF_8));
    193         try {
     189        try (BufferedReader br = new BufferedReader(new InputStreamReader(in, Utils.UTF_8))) {
    194190            String line = null;
    195191            while( (line = br.readLine()) != null) {
     
    199195            }
    200196            return exception.toString();
    201         } finally {
    202             Utils.close(br);
    203197        }
    204198    }
  • trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java

    r7030 r7033  
    140140        Main.info("GET " + getCapabilitiesUrl.toString());
    141141        URLConnection openConnection = Utils.openHttpConnection(getCapabilitiesUrl);
    142         InputStream inputStream = openConnection.getInputStream();
    143142        StringBuilder ba = new StringBuilder();
    144         try (BufferedReader br = new BufferedReader(UTFInputStreamReader.create(inputStream))) {
     143       
     144        try (
     145            InputStream inputStream = openConnection.getInputStream();
     146            BufferedReader br = new BufferedReader(UTFInputStreamReader.create(inputStream))
     147        ) {
    145148            String line;
    146149            while ((line = br.readLine()) != null) {
     
    178181                            return x.getTextContent();
    179182                        }
    180                     }
    181                     ), new Predicate<String>() {
     183                    }),
     184                    new Predicate<String>() {
    182185                        @Override
    183186                        public boolean evaluate(String format) {
     
    209212            throw new WMSGetCapabilitiesException(e, incomingData);
    210213        }
    211 
    212214    }
    213215
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpServer.java

    r6643 r7033  
    8383             Integer.toString(server.getLocalPort()));
    8484        while (true) {
    85             try {
    86                 Socket request = server.accept();
     85            try (Socket request = server.accept()) {
    8786                RequestProcessor.processRequest(request);
    88             } catch( SocketException se) {
    89                 if( !server.isClosed() )
     87            } catch (SocketException se) {
     88                if (!server.isClosed())
    9089                    Main.error(se);
    9190            } catch (IOException ioe) {
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpsServer.java

    r7004 r7033  
    5656               
    5757                // Load keystore
    58                 InputStream in = RemoteControlHttpsServer.class.getResourceAsStream(KEYSTORE_PATH);
    59                 if (in == null) {
    60                     Main.error(tr("Unable to find JOSM keystore at {0}. Remote control will not be available on HTTPS.", KEYSTORE_PATH));
    61                 } else {
    62                     try {
    63                         ks.load(in, password);
    64                     } finally {
    65                         Utils.close(in);
     58                try (InputStream in = RemoteControlHttpsServer.class.getResourceAsStream(KEYSTORE_PATH)) {
     59                    if (in == null) {
     60                        Main.error(tr("Unable to find JOSM keystore at {0}. Remote control will not be available on HTTPS.", KEYSTORE_PATH));
     61                    } else {
     62                        try {
     63                            ks.load(in, password);
     64                        } finally {
     65                            Utils.close(in);
     66                        }
     67                       
     68                        if (Main.isDebugEnabled()) {
     69                            for (Enumeration<String> aliases = ks.aliases(); aliases.hasMoreElements();) {
     70                                Main.debug("Alias in keystore: "+aliases.nextElement());
     71                            }
     72                        }
     73   
     74                        KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
     75                        kmf.init(ks, password);
     76                       
     77                        TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
     78                        tmf.init(ks);
     79                       
     80                        sslContext = SSLContext.getInstance("TLS");
     81                        sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
     82                       
     83                        if (Main.isDebugEnabled()) {
     84                            Main.debug("SSL Context protocol: " + sslContext.getProtocol());
     85                            Main.debug("SSL Context provider: " + sslContext.getProvider());
     86                        }
     87                       
     88                        initOK = true;
    6689                    }
    67                    
    68                     if (Main.isDebugEnabled()) {
    69                         for (Enumeration<String> aliases = ks.aliases(); aliases.hasMoreElements();) {
    70                             Main.debug("Alias in keystore: "+aliases.nextElement());
    71                         }
    72                     }
    73 
    74                     KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
    75                     kmf.init(ks, password);
    76                    
    77                     TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
    78                     tmf.init(ks);
    79                    
    80                     sslContext = SSLContext.getInstance("TLS");
    81                     sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
    82                    
    83                     if (Main.isDebugEnabled()) {
    84                         Main.debug("SSL Context protocol: " + sslContext.getProtocol());
    85                         Main.debug("SSL Context provider: " + sslContext.getProvider());
    86                     }
    87                    
    88                     initOK = true;
    8990                }
    9091            } catch (KeyStoreException | NoSuchAlgorithmException | CertificateException |
     
    175176             Integer.toString(server.getLocalPort()));
    176177        while (true) {
    177             try {
    178                 Socket request = server.accept();
     178            try (Socket request = server.accept()) {
    179179                if (Main.isDebugEnabled() && request instanceof SSLSocket) {
    180180                    SSLSocket sslSocket = (SSLSocket) request;
  • trunk/src/org/openstreetmap/josm/io/session/GpxTracksSessionExporter.java

    r7029 r7033  
    179179    }
    180180
    181     protected void addDataFile(OutputStream out) {
    182         Writer writer = new OutputStreamWriter(out, Utils.UTF_8);
    183         GpxWriter w = new GpxWriter(new PrintWriter(writer));
    184         w.write(layer.data);
    185         w.flush();
     181    protected void addDataFile(OutputStream out) throws IOException {
     182        try (
     183            Writer writer = new OutputStreamWriter(out, Utils.UTF_8);
     184            GpxWriter w = new GpxWriter(new PrintWriter(writer))
     185        ) {
     186            w.write(layer.data);
     187            w.flush();
     188        }
    186189    }
    187 
    188190}
  • trunk/src/org/openstreetmap/josm/io/session/GpxTracksSessionImporter.java

    r6087 r7033  
    3737            }
    3838
    39             InputStream in = support.getInputStream(fileStr);
    40             GpxImporter.GpxImporterData importData = GpxImporter.loadLayers(in, support.getFile(fileStr), support.getLayerName(), null, progressMonitor);
    41 
    42             support.addPostLayersTask(importData.getPostLayerTask());
    43             return importData.getGpxLayer();
     39            try (InputStream in = support.getInputStream(fileStr)) {
     40                GpxImporter.GpxImporterData importData = GpxImporter.loadLayers(in, support.getFile(fileStr), support.getLayerName(), null, progressMonitor);
     41   
     42                support.addPostLayersTask(importData.getPostLayerTask());
     43                return importData.getGpxLayer();
     44            }
    4445
    4546        } catch (XPathExpressionException e) {
     
    4748        }
    4849    }
    49 
    5050}
  • trunk/src/org/openstreetmap/josm/io/session/MarkerSessionExporter.java

    r7029 r7033  
    8484    }
    8585
    86     protected void addDataFile(OutputStream out) {
    87         Writer writer = new OutputStreamWriter(out, Utils.UTF_8);
    88         MarkerWriter w = new MarkerWriter(new PrintWriter(writer));
    89         w.write(layer);
    90         w.flush();
     86    protected void addDataFile(OutputStream out) throws IOException {
     87        try (
     88            Writer writer = new OutputStreamWriter(out, Utils.UTF_8);
     89            MarkerWriter w = new MarkerWriter(new PrintWriter(writer))
     90        ) {
     91            w.write(layer);
     92            w.flush();
     93        }
    9194    }
    9295
  • trunk/src/org/openstreetmap/josm/io/session/MarkerSessionImporter.java

    r6093 r7033  
    4141            }
    4242
    43             InputStream in = support.getInputStream(fileStr);
    44             GpxImporter.GpxImporterData importData = GpxImporter.loadLayers(in, support.getFile(fileStr), support.getLayerName(), null, progressMonitor);
    45 
    46             support.addPostLayersTask(importData.getPostLayerTask());
    47 
    48             GpxLayer gpxLayer = null;
    49             List<SessionReader.LayerDependency> deps = support.getLayerDependencies();
    50             if (!deps.isEmpty()) {
    51                 Layer layer = deps.iterator().next().getLayer();
    52                 if (layer instanceof GpxLayer) {
    53                     gpxLayer = (GpxLayer) layer;
     43            try (InputStream in = support.getInputStream(fileStr)) {
     44                GpxImporter.GpxImporterData importData = GpxImporter.loadLayers(in, support.getFile(fileStr), support.getLayerName(), null, progressMonitor);
     45   
     46                support.addPostLayersTask(importData.getPostLayerTask());
     47   
     48                GpxLayer gpxLayer = null;
     49                List<SessionReader.LayerDependency> deps = support.getLayerDependencies();
     50                if (!deps.isEmpty()) {
     51                    Layer layer = deps.iterator().next().getLayer();
     52                    if (layer instanceof GpxLayer) {
     53                        gpxLayer = (GpxLayer) layer;
     54                    }
    5455                }
     56   
     57                MarkerLayer markerLayer = importData.getMarkerLayer();
     58                markerLayer.fromLayer = gpxLayer;
     59   
     60                return markerLayer;
    5561            }
    56 
    57             MarkerLayer markerLayer = importData.getMarkerLayer();
    58             markerLayer.fromLayer = gpxLayer;
    59 
    60             return markerLayer;
    61 
    6262        } catch (XPathExpressionException e) {
    6363            throw new RuntimeException(e);
  • trunk/src/org/openstreetmap/josm/io/session/OsmDataSessionExporter.java

    r7029 r7033  
    212212    }
    213213
    214     protected void addDataFile(OutputStream out) {
    215         Writer writer = new OutputStreamWriter(out, Utils.UTF_8);
    216         OsmWriter w = OsmWriterFactory.createOsmWriter(new PrintWriter(writer), false, layer.data.getVersion());
    217         layer.data.getReadLock().lock();
    218         try {
    219             w.writeLayer(layer);
    220             w.flush();
    221         } finally {
    222             layer.data.getReadLock().unlock();
     214    protected void addDataFile(OutputStream out) throws IOException {
     215        try (
     216            Writer writer = new OutputStreamWriter(out, Utils.UTF_8);
     217            OsmWriter w = OsmWriterFactory.createOsmWriter(new PrintWriter(writer), false, layer.data.getVersion())
     218        ) {
     219            layer.data.getReadLock().lock();
     220            try {
     221                w.writeLayer(layer);
     222                w.flush();
     223            } finally {
     224                layer.data.getReadLock().unlock();
     225            }
    223226        }
    224227    }
  • trunk/src/org/openstreetmap/josm/io/session/OsmDataSessionImporter.java

    r6087 r7033  
    3939
    4040            OsmImporter importer = new OsmImporter();
    41             InputStream in = support.getInputStream(fileStr);
    42             OsmImporter.OsmImporterData importData = importer.loadLayer(in, support.getFile(fileStr), support.getLayerName(), progressMonitor);
    43 
    44             support.addPostLayersTask(importData.getPostLayerTask());
    45             return importData.getLayer();
    46 
     41            try (InputStream in = support.getInputStream(fileStr)) {
     42                OsmImporter.OsmImporterData importData = importer.loadLayer(in, support.getFile(fileStr), support.getLayerName(), progressMonitor);
     43   
     44                support.addPostLayersTask(importData.getPostLayerTask());
     45                return importData.getLayer();
     46            }
    4747        } catch (XPathExpressionException e) {
    4848            throw new RuntimeException(e);
  • trunk/src/org/openstreetmap/josm/io/session/SessionReader.java

    r7005 r7033  
    553553        }
    554554
    555         InputStream josIS = null;
    556 
     555        try (InputStream josIS = createInputStream(sessionFile, zip)) {
     556            loadSession(josIS, sessionFile.toURI(), zip, progressMonitor);
     557        }
     558    }
     559
     560    private InputStream createInputStream(File sessionFile, boolean zip) throws IOException, IllegalDataException {
    557561        if (zip) {
    558562            try {
    559563                zipFile = new ZipFile(sessionFile);
    560                 josIS = getZipInputStream(zipFile);
     564                return getZipInputStream(zipFile);
    561565            } catch (ZipException ze) {
    562566                throw new IOException(ze);
     
    564568        } else {
    565569            try {
    566                 josIS = new FileInputStream(sessionFile);
     570                return new FileInputStream(sessionFile);
    567571            } catch (FileNotFoundException ex) {
    568572                throw new IOException(ex);
    569573            }
    570574        }
    571 
    572         loadSession(josIS, sessionFile.toURI(), zip, progressMonitor);
    573575    }
    574576
  • trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java

    r7005 r7033  
    240240
    241241    public void write(File f) throws IOException {
    242         OutputStream out = null;
    243         try {
    244             out = new FileOutputStream(f);
     242        try (OutputStream out = new FileOutputStream(f)) {
     243            write(out);
    245244        } catch (FileNotFoundException e) {
    246245            throw new IOException(e);
    247246        }
    248         write(out);
    249247    }
    250248
     
    262260            writeJos(doc, new BufferedOutputStream(out));
    263261        }
    264         Utils.close(out);
    265262    }
    266263}
Note: See TracChangeset for help on using the changeset viewer.