⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testscanner.java

📁 模块化您的应用系统
💻 JAVA
字号:
package com.opensymphony.tonic.loaders.classloading;

import com.opensymphony.tonic.util.FileUtils;

import java.io.File;
import java.util.Collection;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class TestScanner extends AbstractTestClassLoader
{
    public void testNormalOperation() throws Exception
    {
        File pluginsDirectory = getPluginsDirectory();
        Scanner scanner = new Scanner(pluginsDirectory);
        scanner.scan();
        Collection deployedUnits = scanner.getDeploymentUnits();
        assertEquals(2, deployedUnits.size());

        // put them into a list so we're sure we get them in the right order
        Set orderedUnits = new TreeSet(deployedUnits);
        Iterator iterator = orderedUnits.iterator();
        DeploymentUnit unit = (DeploymentUnit) iterator.next();
        assertEquals("paddington-test-plugin.jar", unit.getPath().getName());

        unit = (DeploymentUnit) iterator.next();
        assertEquals("pooh-test-plugin.jar", unit.getPath().getName());
    }

    public void testAddAndRemoveJar() throws Exception
    {
        File pluginsDirectory = getPluginsDirectory();
        File paddington = new File(pluginsDirectory, "paddington-test-plugin.jar");
        File duplicate = new File(pluginsDirectory, "duplicate-test-plugin.jar");

        // make sure it's not thate from a bad test
        if (duplicate.canRead())
            duplicate.delete();

        // should be 2 to start with
        Scanner scanner = new Scanner(pluginsDirectory);
        scanner.scan();
        assertEquals(2, scanner.getDeploymentUnits().size());

        // copy and scan - should have 3 files
        FileUtils.copyFile(paddington, duplicate);
        scanner.scan();
        assertEquals(3, scanner.getDeploymentUnits().size());

        // delete and we should have 2!
        duplicate.delete();
        scanner.scan();
        assertEquals(2, scanner.getDeploymentUnits().size());
    }

    public void testModifyJar() throws Exception
    {
        // Note windows is a piece of shit (can't modify files in the classpath) so
        // we need to create a temporary directory outside the classpath where we can modify files freely.
        File pluginsDirectory = getPluginsDirectory();
        File paddington = new File(pluginsDirectory, "paddington-test-plugin.jar");

        File testTempDirectory = new File(System.getProperty("java.io.tmpdir") + File.separator + "TestScannerTests");

        if (testTempDirectory.exists()) // if the directory exists, nuke it.
            testTempDirectory.delete();

        testTempDirectory.mkdirs();

        File newPaddington = new File(testTempDirectory, "paddington-test-plugin.jar");
        FileUtils.copyFile(paddington, newPaddington);

        // set the original mod date - must be a multiple of 1000 on most (all?) file systems
        long originalModification = System.currentTimeMillis();
        originalModification = originalModification - (originalModification % 1000) - 3000;
        newPaddington.setLastModified(originalModification);
        assertEquals(originalModification, newPaddington.lastModified());

        // should be 2 to start with
        Scanner scanner = new Scanner(testTempDirectory);
        scanner.scan();
        assertEquals(1, scanner.getDeploymentUnits().size());

        DeploymentUnit newPaddingtonUnit = scanner.locateDeploymentUnit(newPaddington);
        assertEquals(originalModification, newPaddingtonUnit.lastModified());

        // modify the JAR file
        long secondModification = originalModification + 2000;
        newPaddington.setLastModified(secondModification);
        scanner.scan();

        newPaddingtonUnit = scanner.locateDeploymentUnit(newPaddington);
        assertEquals(secondModification, newPaddingtonUnit.lastModified());
    }

    public void testAcceptOnlyJar() throws Exception
    {
        File pluginsDirectory = getPluginsDirectory();
        Scanner scanner = new Scanner(pluginsDirectory);
        assertTrue(scanner.accept(new File("myfile.jar")));
        assertFalse(scanner.accept(new File("myfile.txt")));
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -