/** * Attempts tp determine whether both files are on different volumes. Returns true if we could determine that * the files are on different volumes. Returns false otherwise or if an error occurred while doing the check. * * @param srcFile * @param targetFile * @return true if on different volumes, false otherwise or if an error occurred */ boolean areOnDifferentVolumes(File srcFile, File targetFile) throws RolloverFailure { if (!EnvUtil.isJDK7OrHigher()) return false; File parentOfTarget = targetFile.getParentFile(); try { boolean onSameFileStore = FileStoreUtil.areOnSameFileStore(srcFile, parentOfTarget); return !onSameFileStore; } catch (RolloverFailure rf) { addWarn("Error while checking file store equality", rf); return false; } }
/** * Attempts tp determine whether both files are on different volumes. Returns true if we could determine that * the files are on different volumes. Returns false otherwise or if an error occurred while doing the check. * * @param srcFile * @param targetFile * @return true if on different volumes, false otherwise or if an error occurred */ boolean areOnDifferentVolumes(File srcFile, File targetFile) throws RolloverFailure { if (!EnvUtil.isJDK7OrHigher()) return false; File parentOfTarget = targetFile.getParentFile(); try { boolean onSameFileStore = FileStoreUtil.areOnSameFileStore(srcFile, parentOfTarget); return !onSameFileStore; } catch (RolloverFailure rf) { addWarn("Error while checking file store equality", rf); return false; } }
/** * Attempts tp determine whether both files are on different volumes. Returns true if we could determine that * the files are on different volumes. Returns false otherwise or if an error occurred while doing the check. * * @param srcFile * @param targetFile * @return true if on different volumes, false otherwise or if an error occurred */ Boolean areOnDifferentVolumes(File srcFile, File targetFile) throws RolloverFailure { if (!EnvUtil.isJDK7OrHigher()) { return false; } // target file is not certain to exist but its parent has to exist given the call hierarchy of this method File parentOfTarget = targetFile.getAbsoluteFile().getParentFile(); if (parentOfTarget == null) { addWarn("Parent of target file ["+targetFile+"] is null"); return null; } if (!parentOfTarget.exists()) { addWarn("Parent of target file [" + targetFile + "] does not exist"); return null; } try { boolean onSameFileStore = FileStoreUtil.areOnSameFileStore(srcFile, parentOfTarget); return !onSameFileStore; } catch (RolloverFailure rf) { addWarn("Error while checking file store equality", rf); return null; } }
if (!EnvUtil.isJDK7OrHigher()) return false;
if (!EnvUtil.isJDK7OrHigher()) return false;
if (!EnvUtil.isJDK7OrHigher()) return false;
@Test public void filesOnSameFolderShouldBeOnTheSameFileStore() throws RolloverFailure, IOException { if(!EnvUtil.isJDK7OrHigher()) return; File parent = new File(pathPrefix); File file = new File(pathPrefix+"filesOnSameFolderShouldBeOnTheSameFileStore"); FileUtil.createMissingParentDirectories(file); file.createNewFile(); assertTrue(FileStoreUtil.areOnSameFileStore(parent, file)); }
@Ignore @Test public void manual_filesOnDifferentVolumesShouldBeDetectedAsSuch() throws RolloverFailure { if(!EnvUtil.isJDK7OrHigher()) return; // author's computer has two volumes File c = new File("c:/tmp/"); File d = new File("d:/"); assertFalse(FileStoreUtil.areOnSameFileStore(c, d)); } }
@Test public void testJava1_7() { System.setProperty("java.version", "1.7.xx"); assertTrue(EnvUtil.isJDK5()); assertTrue(EnvUtil.isJDK7OrHigher()); }
@Test public void testJava9() { System.setProperty("java.version", "9"); assertTrue(EnvUtil.isJDK5()); assertTrue(EnvUtil.isJDK7OrHigher()); }
@Test public void testJava1_8() { System.setProperty("java.version", "1.8.xx"); assertTrue(EnvUtil.isJDK5()); assertTrue(EnvUtil.isJDK7OrHigher()); }
@Test public void testJava10() { System.setProperty("java.version", "10.xx"); assertTrue(EnvUtil.isJDK5()); assertTrue(EnvUtil.isJDK7OrHigher()); } }
@Test public void testJava1_5_x() { System.setProperty("java.version", "1.5.xx"); assertTrue(EnvUtil.isJDK5()); assertFalse(EnvUtil.isJDK7OrHigher()); }
@Test public void testJava1_6() { System.setProperty("java.version", "1.6.xx"); assertTrue(EnvUtil.isJDK5()); assertFalse(EnvUtil.isJDK7OrHigher()); }
@Test public void testJava9_1() { System.setProperty("java.version", "9.xx"); assertTrue(EnvUtil.isJDK5()); assertTrue(EnvUtil.isJDK7OrHigher()); }
@Test public void testJava1_4() { System.setProperty("java.version", "1.4.xx"); assertFalse(EnvUtil.isJDK5()); assertFalse(EnvUtil.isJDK7OrHigher()); }
@Test public void testJava1_5() { System.setProperty("java.version", "1.5"); assertTrue(EnvUtil.isJDK5()); assertFalse(EnvUtil.isJDK7OrHigher()); }
@Test public void testCollisionFreeness() { // hourly checkCollisionFreeness("yyyy-MM-dd hh", false); checkCollisionFreeness("yyyy-MM-dd hh a", true); checkCollisionFreeness("yyyy-MM-dd HH", true); checkCollisionFreeness("yyyy-MM-dd kk", true); checkCollisionFreeness("yyyy-MM-dd KK", false); checkCollisionFreeness("yyyy-MM-dd KK a", true); // daily checkCollisionFreeness("yyyy-MM-dd", true); checkCollisionFreeness("yyyy-dd", false); checkCollisionFreeness("dd", false); checkCollisionFreeness("MM-dd", false); checkCollisionFreeness("yyyy-DDD", true); checkCollisionFreeness("DDD", false); // 'u' is new to JDK 7 if (EnvUtil.isJDK7OrHigher()) { checkCollisionFreeness("yyyy-MM-dd-uu", true); checkCollisionFreeness("yyyy-MM-uu", false); } // weekly checkCollisionFreeness("yyyy-MM-WW", true); checkCollisionFreeness("yyyy-WW", false); checkCollisionFreeness("yyyy-ww", true); checkCollisionFreeness("ww", false); }