Search in sources :

Example 1 with Script

use of org.apache.logging.log4j.core.script.Script in project logging-log4j2 by apache.

the class ScriptConditionTest method testSelectFilesToDelete3.

@Test
@Category(Scripts.Groovy.class)
public void testSelectFilesToDelete3() {
    final Configuration config = new DefaultConfiguration();
    // creates the ScriptManager
    config.initialize();
    final List<PathWithAttributes> pathList = new ArrayList<>();
    pathList.add(new PathWithAttributes(Paths.get("/path/1/abc/a.txt"), new DummyFileAttributes()));
    pathList.add(new PathWithAttributes(Paths.get("/path/2/abc/bbb.txt"), new DummyFileAttributes()));
    pathList.add(new PathWithAttributes(Paths.get("/path/3/abc/c.txt"), new DummyFileAttributes()));
    final String scriptText = //
    "" + //
    "import java.nio.file.*;" + //
    "def pattern = ~/(\\d*)[\\/\\\\]abc[\\/\\\\].*\\.txt/;" + //
    "assert pattern.getClass() == java.util.regex.Pattern;" + "def copy = pathList.collect{it};" + //
    "pathList.each { pathWithAttribs -> \n" + //
    "  def relative = basePath.relativize pathWithAttribs.path;" + //
    "  println 'relative path: ' + relative;" + "  def str = relative.toString();" + //
    "  def m = pattern.matcher(str);" + //
    "  if (m.find()) {" + //
    "    def index = m.group(1) as int;" + //
    "    println 'extracted index: ' + index;" + "    def isOdd = (index % 2) == 1;" + //
    "    println 'is odd: ' + isOdd;" + "    if (isOdd) { copy.remove pathWithAttribs}" + //
    "  }" + //
    "}" + "println copy;" + "copy;";
    final Script script = new Script("test", "groovy", scriptText);
    final ScriptCondition condition = new ScriptCondition(script, config);
    final Path base = Paths.get("/path");
    final List<PathWithAttributes> result = condition.selectFilesToDelete(base, pathList);
    assertEquals(1, result.size());
    assertEquals(Paths.get("/path/2/abc/bbb.txt"), result.get(0).getPath());
}
Also used : Path(java.nio.file.Path) Script(org.apache.logging.log4j.core.script.Script) DefaultConfiguration(org.apache.logging.log4j.core.config.DefaultConfiguration) Configuration(org.apache.logging.log4j.core.config.Configuration) ArrayList(java.util.ArrayList) DefaultConfiguration(org.apache.logging.log4j.core.config.DefaultConfiguration) Category(org.junit.experimental.categories.Category) Test(org.junit.Test)

Example 2 with Script

use of org.apache.logging.log4j.core.script.Script in project logging-log4j2 by apache.

the class ScriptManagerImpl method fileModified.

@Override
public void fileModified(final File file) {
    final ScriptRunner runner = scriptRunners.get(file.toString());
    if (runner == null) {
        logger.info("{} is not a running script", file.getName());
        return;
    }
    final ScriptEngine engine = runner.getScriptEngine();
    final Script script = runner.getScript();
    if (engine.getFactory().getParameter(KEY_THREADING) == null) {
        scriptRunners.put(script.getName(), new ThreadLocalScriptRunner(script));
    } else {
        scriptRunners.put(script.getName(), new MainScriptRunner(engine, script));
    }
}
Also used : Script(org.apache.logging.log4j.core.script.Script) CompiledScript(javax.script.CompiledScript) ScriptEngine(javax.script.ScriptEngine)

Example 3 with Script

use of org.apache.logging.log4j.core.script.Script in project logging-log4j2 by apache.

the class ScriptConditionTest method testSelectFilesToDelete2.

@Test
public void testSelectFilesToDelete2() {
    final Configuration config = new DefaultConfiguration();
    // creates the ScriptManager
    config.initialize();
    final List<PathWithAttributes> pathList = new ArrayList<>();
    pathList.add(new PathWithAttributes(Paths.get("/path/1"), new DummyFileAttributes()));
    pathList.add(new PathWithAttributes(Paths.get("/path/2"), new DummyFileAttributes()));
    pathList.add(new PathWithAttributes(Paths.get("/path/3"), new DummyFileAttributes()));
    final String scriptText = //
    "pathList.remove(1);" + "pathList;";
    final Script script = new Script("test", "javascript", scriptText);
    final ScriptCondition condition = new ScriptCondition(script, config);
    final Path base = Paths.get("baseDirectory");
    final List<PathWithAttributes> result = condition.selectFilesToDelete(base, pathList);
    assertSame(result, pathList);
    assertEquals(2, result.size());
    assertEquals(Paths.get("/path/1"), result.get(0).getPath());
    assertEquals(Paths.get("/path/3"), result.get(1).getPath());
}
Also used : Path(java.nio.file.Path) Script(org.apache.logging.log4j.core.script.Script) DefaultConfiguration(org.apache.logging.log4j.core.config.DefaultConfiguration) Configuration(org.apache.logging.log4j.core.config.Configuration) ArrayList(java.util.ArrayList) DefaultConfiguration(org.apache.logging.log4j.core.config.DefaultConfiguration) Test(org.junit.Test)

Example 4 with Script

use of org.apache.logging.log4j.core.script.Script in project logging-log4j2 by apache.

the class ScriptConditionTest method testSelectFilesToDelete.

@Test
public void testSelectFilesToDelete() {
    final Configuration config = new DefaultConfiguration();
    // creates the ScriptManager
    config.initialize();
    // script that returns pathList
    final Script script = new Script("test", "javascript", "pathList;");
    final ScriptCondition condition = new ScriptCondition(script, config);
    final List<PathWithAttributes> pathList = new ArrayList<>();
    final Path base = Paths.get("baseDirectory");
    final List<PathWithAttributes> result = condition.selectFilesToDelete(base, pathList);
    assertSame(result, pathList);
}
Also used : Path(java.nio.file.Path) Script(org.apache.logging.log4j.core.script.Script) DefaultConfiguration(org.apache.logging.log4j.core.config.DefaultConfiguration) Configuration(org.apache.logging.log4j.core.config.Configuration) ArrayList(java.util.ArrayList) DefaultConfiguration(org.apache.logging.log4j.core.config.DefaultConfiguration) Test(org.junit.Test)

Aggregations

Script (org.apache.logging.log4j.core.script.Script)4 Path (java.nio.file.Path)3 ArrayList (java.util.ArrayList)3 Configuration (org.apache.logging.log4j.core.config.Configuration)3 DefaultConfiguration (org.apache.logging.log4j.core.config.DefaultConfiguration)3 Test (org.junit.Test)3 CompiledScript (javax.script.CompiledScript)1 ScriptEngine (javax.script.ScriptEngine)1 Category (org.junit.experimental.categories.Category)1