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());
}
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));
}
}
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());
}
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);
}
Aggregations