From b93af6ee0bf13bde251882b241c3f52b2d57f07e Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Tue, 25 Jun 2019 16:28:19 -0700 Subject: [PATCH] Replace rather than delete existing .settings Update Eclipse Plugin so that a Gradle refresh will replace contents, rather than attempting to delete the file and recreate it. Closes gh-119 --- .../projectsettings/ProjectSettingsFilesTests.java | 4 ++-- .../io.spring.javaformat.eclipse/plugin.xml | 6 ------ .../projectsettings/ProjectSettingsFiles.java | 13 ++++++------- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/spring-javaformat-eclipse/io.spring.javaformat.eclipse.tests/src/io/spring/javaformat/eclipse/projectsettings/ProjectSettingsFilesTests.java b/spring-javaformat-eclipse/io.spring.javaformat.eclipse.tests/src/io/spring/javaformat/eclipse/projectsettings/ProjectSettingsFilesTests.java index 81a5219b..61bca52a 100644 --- a/spring-javaformat-eclipse/io.spring.javaformat.eclipse.tests/src/io/spring/javaformat/eclipse/projectsettings/ProjectSettingsFilesTests.java +++ b/spring-javaformat-eclipse/io.spring.javaformat.eclipse.tests/src/io/spring/javaformat/eclipse/projectsettings/ProjectSettingsFilesTests.java @@ -16,6 +16,7 @@ package io.spring.javaformat.eclipse.projectsettings; +import java.io.InputStream; import java.util.Collections; import org.eclipse.core.resources.IFile; @@ -59,8 +60,7 @@ public void applyToProjectCopiesToDotSettings() throws Exception { given(project.getFile(".settings/foo.prefs")).willReturn(projectFile); given(projectFile.exists()).willReturn(true); files.applyToProject(project, monitor); - verify(projectFile).delete(true, monitor); - verify(projectFile).create(any(), eq(true), eq(monitor)); + verify(projectFile).setContents((InputStream) any(), eq(1), eq(monitor)); } } diff --git a/spring-javaformat-eclipse/io.spring.javaformat.eclipse/plugin.xml b/spring-javaformat-eclipse/io.spring.javaformat.eclipse/plugin.xml index e56acf31..730a6f7c 100644 --- a/spring-javaformat-eclipse/io.spring.javaformat.eclipse/plugin.xml +++ b/spring-javaformat-eclipse/io.spring.javaformat.eclipse/plugin.xml @@ -19,12 +19,6 @@ - - - - diff --git a/spring-javaformat-eclipse/io.spring.javaformat.eclipse/src/io/spring/javaformat/eclipse/projectsettings/ProjectSettingsFiles.java b/spring-javaformat-eclipse/io.spring.javaformat.eclipse/src/io/spring/javaformat/eclipse/projectsettings/ProjectSettingsFiles.java index 6d7cfa84..270cf025 100644 --- a/spring-javaformat-eclipse/io.spring.javaformat.eclipse/src/io/spring/javaformat/eclipse/projectsettings/ProjectSettingsFiles.java +++ b/spring-javaformat-eclipse/io.spring.javaformat.eclipse/src/io/spring/javaformat/eclipse/projectsettings/ProjectSettingsFiles.java @@ -26,6 +26,7 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; @@ -65,16 +66,14 @@ public Iterator iterator() { public void applyToProject(IProject project, IProgressMonitor monitor) throws IOException, CoreException { for (ProjectSettingsFile file : this) { IFile destination = project.getFile(".settings/" + file.getName()); - if (destination.exists()) { - try { - destination.delete(true, monitor); + try (InputStream content = this.projectProperties.getModifiedContent(file)) { + if (!destination.exists()) { + destination.create(new BufferedInputStream(content), true, monitor); } - catch (CoreException ex) { + else { + destination.setContents(new BufferedInputStream(content), IResource.FORCE, monitor); } } - try (InputStream content = this.projectProperties.getModifiedContent(file)) { - destination.create(new BufferedInputStream(content), true, monitor); - } } }