From 11eb479c284fe9cf907a8a5098dd808b1fa1565f Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Tue, 26 Apr 2022 16:54:21 +0200 Subject: [PATCH 1/3] Try to fix test --- .../plexus/util/io/CachingOutputStream.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java b/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java index 521d5373..3da8cc2f 100644 --- a/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java +++ b/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java @@ -153,19 +153,22 @@ private void flushBuffer( ByteBuffer writeBuffer ) throws IOException @Override public void close() throws IOException { - flush(); - long position = channel.position(); - if ( position != channel.size() ) + if ( channel.isOpen() ) { - if ( !modified ) + flush(); + long position = channel.position(); + if ( position != channel.size() ) + { + modified = true; + channel.truncate( position ); + } + channel.close(); + if ( modified ) { FileTime now = FileTime.from( Instant.now() ); Files.setLastModifiedTime( path, now ); - modified = true; } - channel.truncate( position ); } - channel.close(); } public boolean isModified() From f2395b61943cead539497af4dfd7d7a8e036f364 Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Tue, 26 Apr 2022 17:20:06 +0200 Subject: [PATCH 2/3] Another fix --- .../codehaus/plexus/util/io/CachingOutputStream.java | 10 +++++----- .../plexus/util/io/CachingOutputStreamTest.java | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java b/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java index 3da8cc2f..f95bb446 100644 --- a/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java +++ b/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java @@ -163,11 +163,11 @@ public void close() throws IOException channel.truncate( position ); } channel.close(); - if ( modified ) - { - FileTime now = FileTime.from( Instant.now() ); - Files.setLastModifiedTime( path, now ); - } +// if ( modified ) +// { +// FileTime now = FileTime.from( Instant.now() ); +// Files.setLastModifiedTime( path, now ); +// } } } diff --git a/src/test/java/org/codehaus/plexus/util/io/CachingOutputStreamTest.java b/src/test/java/org/codehaus/plexus/util/io/CachingOutputStreamTest.java index 3c329ea9..4cd134c0 100644 --- a/src/test/java/org/codehaus/plexus/util/io/CachingOutputStreamTest.java +++ b/src/test/java/org/codehaus/plexus/util/io/CachingOutputStreamTest.java @@ -54,13 +54,14 @@ public void setup() throws IOException private void waitLastModified() throws IOException, InterruptedException { + Files.newOutputStream( checkLastModified ).close(); + FileTime lm = Files.getLastModifiedTime( checkLastModified ); while ( true ) { Files.newOutputStream( checkLastModified ).close(); FileTime nlm = Files.getLastModifiedTime( checkLastModified ); if ( !Objects.equals( nlm, lm ) ) { - lm = nlm; break; } Thread.sleep( 10 ); From 34bfcbb91e48ef224bccd91bf9656607f49eff82 Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Tue, 26 Apr 2022 17:26:51 +0200 Subject: [PATCH 3/3] Clean things --- .../org/codehaus/plexus/util/io/CachingOutputStream.java | 5 ----- .../codehaus/plexus/util/io/CachingOutputStreamTest.java | 4 ---- .../org/codehaus/plexus/util/io/CachingWriterTest.java | 7 ++----- 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java b/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java index f95bb446..744e6f06 100644 --- a/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java +++ b/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java @@ -163,11 +163,6 @@ public void close() throws IOException channel.truncate( position ); } channel.close(); -// if ( modified ) -// { -// FileTime now = FileTime.from( Instant.now() ); -// Files.setLastModifiedTime( path, now ); -// } } } diff --git a/src/test/java/org/codehaus/plexus/util/io/CachingOutputStreamTest.java b/src/test/java/org/codehaus/plexus/util/io/CachingOutputStreamTest.java index 4cd134c0..e7888ad4 100644 --- a/src/test/java/org/codehaus/plexus/util/io/CachingOutputStreamTest.java +++ b/src/test/java/org/codehaus/plexus/util/io/CachingOutputStreamTest.java @@ -17,7 +17,6 @@ */ import java.io.IOException; -import java.io.OutputStream; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; @@ -39,7 +38,6 @@ public class CachingOutputStreamTest Path tempDir; Path checkLastModified; - FileTime lm; @Before public void setup() throws IOException @@ -48,8 +46,6 @@ public void setup() throws IOException Files.createDirectories( dir ); tempDir = Files.createTempDirectory( dir, "temp-" ); checkLastModified = tempDir.resolve( ".check" ); - Files.newOutputStream( checkLastModified ).close(); - lm = Files.getLastModifiedTime( checkLastModified ); } private void waitLastModified() throws IOException, InterruptedException diff --git a/src/test/java/org/codehaus/plexus/util/io/CachingWriterTest.java b/src/test/java/org/codehaus/plexus/util/io/CachingWriterTest.java index f5b95903..a4ffec91 100644 --- a/src/test/java/org/codehaus/plexus/util/io/CachingWriterTest.java +++ b/src/test/java/org/codehaus/plexus/util/io/CachingWriterTest.java @@ -27,7 +27,6 @@ import org.junit.Before; import org.junit.Test; -import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; @@ -38,7 +37,6 @@ public class CachingWriterTest Path tempDir; Path checkLastModified; - FileTime lm; @Before public void setup() throws IOException @@ -47,19 +45,18 @@ public void setup() throws IOException Files.createDirectories( dir ); tempDir = Files.createTempDirectory( dir, "temp-" ); checkLastModified = tempDir.resolve( ".check" ); - Files.newOutputStream( checkLastModified ).close(); - lm = Files.getLastModifiedTime( checkLastModified ); } private void waitLastModified() throws IOException, InterruptedException { + Files.newOutputStream( checkLastModified ).close(); + FileTime lm = Files.getLastModifiedTime( checkLastModified ); while ( true ) { Files.newOutputStream( checkLastModified ).close(); FileTime nlm = Files.getLastModifiedTime( checkLastModified ); if ( !Objects.equals( nlm, lm ) ) { - lm = nlm; break; } Thread.sleep( 10 );