Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeotoolsConverter.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeotoolsConverter.java	(revision 36070)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeotoolsConverter.java	(revision 36071)
@@ -75,9 +75,31 @@
             throws IOException, FactoryException, GeoMathTransformException, TransformException, GeoCrsException {
         String[] typeNames = dataStore.getTypeNames();
-        String typeName = typeNames[0];
-
-        FeatureSource<?, ?> featureSource = dataStore.getFeatureSource(typeName);
-        FeatureCollection<?, ?> collection = featureSource.getFeatures();
-
+        if (progressMonitor != null) {
+            progressMonitor.beginTask(tr("Loading shapefile ({0} layers)", typeNames.length), typeNames.length);
+        }
+        try {
+            for (String typeName : typeNames) {
+                FeatureSource<?, ?> featureSource = dataStore.getFeatureSource(typeName);
+                FeatureCollection<?, ?> collection = featureSource.getFeatures();
+                parseFeatures(progressMonitor != null ? progressMonitor.createSubTaskMonitor(1, false) : null, collection);
+            }
+        } finally {
+            if (progressMonitor != null) {
+                progressMonitor.finishTask();
+            }
+        }
+    }
+
+    /**
+     * Run the actual conversion process for a collection of features
+     * @param progressMonitor The monitor to show progress on
+     * @param collection The collection to parse
+     * @throws FactoryException See {@link GeographicReader#findMathTransform(Component, boolean)}
+     * @throws GeoMathTransformException See {@link GeographicReader#findMathTransform(Component, boolean)}
+     * @throws TransformException See {@link GeographicReader#createOrGetNode(Point)}
+     * @throws GeoCrsException If the CRS cannot be detected
+     */
+    private void parseFeatures(ProgressMonitor progressMonitor, FeatureCollection<?, ?> collection)
+            throws FactoryException, GeoMathTransformException, TransformException, GeoCrsException {
         if (progressMonitor != null) {
             progressMonitor.beginTask(tr("Loading shapefile ({0} features)", collection.size()), collection.size());
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/geopackage/GeoPackageReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/geopackage/GeoPackageReader.java	(revision 36070)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/geopackage/GeoPackageReader.java	(revision 36071)
@@ -60,4 +60,6 @@
             } catch (FactoryException | GeoCrsException | GeoMathTransformException | TransformException e) {
                 throw new IOException(e);
+            } finally {
+                dataStore.dispose();
             }
         }
