diff --git a/cgmes/cgmes-model/src/main/java/com/powsybl/cgmes/model/CgmesOnDataSource.java b/cgmes/cgmes-model/src/main/java/com/powsybl/cgmes/model/CgmesOnDataSource.java index e0d2b7ce7c1..9b29aa6068d 100644 --- a/cgmes/cgmes-model/src/main/java/com/powsybl/cgmes/model/CgmesOnDataSource.java +++ b/cgmes/cgmes-model/src/main/java/com/powsybl/cgmes/model/CgmesOnDataSource.java @@ -35,7 +35,7 @@ public ReadOnlyDataSource dataSource() { } private boolean checkIfMainFileNotWithCgmesData(boolean isCim14) throws IOException { - if (dataSource.getDataExtension() == null || dataSource.getDataExtension().isEmpty()) { + if (dataSource.getDataExtension() == null || dataSource.getDataExtension().isEmpty() || !dataSource.exists(null, dataSource.getDataExtension())) { return false; } else if (EXTENSION.equals(dataSource.getDataExtension()) && dataSource.exists(null, EXTENSION)) { try (InputStream is = dataSource.newInputStream(null, EXTENSION)) { diff --git a/cgmes/cgmes-model/src/test/java/com/powsybl/cgmes/model/CgmesOnDataSourceTest.java b/cgmes/cgmes-model/src/test/java/com/powsybl/cgmes/model/CgmesOnDataSourceTest.java index 4474e0c55ff..8cb51b8865c 100644 --- a/cgmes/cgmes-model/src/test/java/com/powsybl/cgmes/model/CgmesOnDataSourceTest.java +++ b/cgmes/cgmes-model/src/test/java/com/powsybl/cgmes/model/CgmesOnDataSourceTest.java @@ -28,6 +28,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * @author Jon Harper {@literal } @@ -71,13 +72,24 @@ void testFileDoesNotExist() throws IOException { byte[] data = "Test String".getBytes(); out.write(data, 0, data.length); out.closeEntry(); + e = new ZipEntry("foo.xml"); + out.putNextEntry(e); + data = getClass().getResourceAsStream("/empty_cim16_EQ.xml").readAllBytes(); + out.write(data, 0, data.length); + out.closeEntry(); } catch (IOException ex) { throw new RuntimeException(ex); } } ReadOnlyDataSource dataSource = new ZipArchiveDataSource(testDir, "foo.iidm.zip", "test", "xml", null); CgmesOnDataSource cgmesOnDataSource = new CgmesOnDataSource(dataSource); - assertFalse(cgmesOnDataSource.exists()); + assertTrue(cgmesOnDataSource.exists()); + ReadOnlyDataSource dataSource2 = new ZipArchiveDataSource(testDir, "foo.iidm.zip", "test", "iidm", null); + CgmesOnDataSource cgmesOnDataSource2 = new CgmesOnDataSource(dataSource2); + assertTrue(cgmesOnDataSource2.exists()); + ReadOnlyDataSource dataSource3 = new ZipArchiveDataSource(testDir, "foo.iidm.zip", "foo", "bar", null); + CgmesOnDataSource cgmesOnDataSource3 = new CgmesOnDataSource(dataSource3); + assertFalse(cgmesOnDataSource3.exists()); } } }