This is an automated email from the ASF dual-hosted git repository. ebourg pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tomcat-jakartaee-migration.git
commit f69a7d986c0105d392ac3b33f2717a6a6263ce5d Author: Emmanuel Bourg <ebo...@apache.org> AuthorDate: Tue Apr 7 01:16:49 2020 +0200 Support inplace file migration --- .../org/apache/tomcat/jakartaee/Migration.java | 26 +++++++++++++++++++--- .../org/apache/tomcat/jakartaee/MigrationTest.java | 15 +++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/apache/tomcat/jakartaee/Migration.java b/src/main/java/org/apache/tomcat/jakartaee/Migration.java index 422e723..4ba79bd 100644 --- a/src/main/java/org/apache/tomcat/jakartaee/Migration.java +++ b/src/main/java/org/apache/tomcat/jakartaee/Migration.java @@ -16,6 +16,7 @@ */ package org.apache.tomcat.jakartaee; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -144,10 +145,29 @@ public class Migration { private boolean migrateFile(File src, File dest) throws IOException { - try (InputStream is = new FileInputStream(src); - OutputStream os = new FileOutputStream(dest)) { - return migrateStream(src.getName(), is, os); + boolean result = false; + + boolean inplace = src.equals(dest); + if (!inplace) { + try (InputStream is = new FileInputStream(src); + OutputStream os = new FileOutputStream(dest)) { + result = migrateStream(src.getName(), is, os); + } + } else { + File tmp = new File(dest.getParentFile(), dest.getName() + ".tmp"); + + ByteArrayOutputStream buffer = new ByteArrayOutputStream((int) (src.length() * 1.05)); + + try (InputStream is = new FileInputStream(src)) { + result = migrateStream(src.getName(), is, buffer); + } + + try (OutputStream os = new FileOutputStream(dest)) { + os.write(buffer.toByteArray()); + } } + + return result; } diff --git a/src/test/java/org/apache/tomcat/jakartaee/MigrationTest.java b/src/test/java/org/apache/tomcat/jakartaee/MigrationTest.java index 5ddda03..80e595d 100644 --- a/src/test/java/org/apache/tomcat/jakartaee/MigrationTest.java +++ b/src/test/java/org/apache/tomcat/jakartaee/MigrationTest.java @@ -49,4 +49,19 @@ public class MigrationTest { assertFalse("Imports not migrated", migratedSource.contains("import javax.servlet")); assertTrue("Migrated imports not found", migratedSource.contains("import jakarta.servlet")); } + + @Test + public void testMigrateSingleSourceFileInPlace() throws Exception { + File sourceFile = new File("target/test-classes/HelloServlet.java"); + File migratedFile = new File("target/test-classes/HelloServlet.inplace.java"); + FileUtils.copyFile(sourceFile, migratedFile); + + Migration.main(new String[] {"-profile=EE", migratedFile.getAbsolutePath(), migratedFile.getAbsolutePath()}); + + assertTrue("Migrated file not found", migratedFile.exists()); + + String migratedSource = FileUtils.readFileToString(migratedFile); + assertFalse("Imports not migrated", migratedSource.contains("import javax.servlet")); + assertTrue("Migrated imports not found", migratedSource.contains("import jakarta.servlet")); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org