| @@ -380,16 +380,11 @@ public class ResourceUtils { | |||||
| && filters.hasFilters()); | && filters.hasFilters()); | ||||
| final boolean filterChainsAvailable = (filterChains != null | final boolean filterChainsAvailable = (filterChains != null | ||||
| && !filterChains.isEmpty()); | && !filterChains.isEmpty()); | ||||
| String effectiveInputEncoding; | |||||
| if (source instanceof StringResource) { | |||||
| effectiveInputEncoding = ((StringResource) source).getEncoding(); | |||||
| } else { | |||||
| effectiveInputEncoding = inputEncoding; | |||||
| } | |||||
| File destFile = null; | |||||
| if (dest.as(FileProvider.class) != null) { | |||||
| destFile = dest.as(FileProvider.class).getFile(); | |||||
| } | |||||
| final String effectiveInputEncoding = source.asOptional(StringResource.class) | |||||
| .map(StringResource::getEncoding).orElse(inputEncoding); | |||||
| File destFile = dest.asOptional(FileProvider.class).map(FileProvider::getFile).orElse(null); | |||||
| if (destFile != null && destFile.isFile() && !destFile.canWrite()) { | if (destFile != null && destFile.isFile() && !destFile.canWrite()) { | ||||
| if (!force) { | if (!force) { | ||||
| throw new ReadOnlyTargetFileException(destFile); | throw new ReadOnlyTargetFileException(destFile); | ||||
| @@ -399,7 +394,6 @@ public class ResourceUtils { | |||||
| "failed to delete read-only destination file " + destFile); | "failed to delete read-only destination file " + destFile); | ||||
| } | } | ||||
| } | } | ||||
| if (filterSetsAvailable) { | if (filterSetsAvailable) { | ||||
| copyWithFilterSets(source, dest, filters, filterChains, | copyWithFilterSets(source, dest, filters, filterChains, | ||||
| append, effectiveInputEncoding, | append, effectiveInputEncoding, | ||||
| @@ -438,10 +432,8 @@ public class ResourceUtils { | |||||
| } | } | ||||
| } | } | ||||
| if (preserveLastModified) { | if (preserveLastModified) { | ||||
| final Touchable t = dest.as(Touchable.class); | |||||
| if (t != null) { | |||||
| setLastModified(t, source.getLastModified()); | |||||
| } | |||||
| dest.asOptional(Touchable.class) | |||||
| .ifPresent(t -> setLastModified(t, source.getLastModified())); | |||||
| } | } | ||||
| } | } | ||||
| // CheckStyle:ParameterNumberCheck ON | // CheckStyle:ParameterNumberCheck ON | ||||