1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.script;
18
19 import org.apache.logging.log4j.Logger;
20 import org.apache.logging.log4j.core.config.Configuration;
21 import org.apache.logging.log4j.core.config.Node;
22 import org.apache.logging.log4j.core.config.plugins.Plugin;
23 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
24 import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
25 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
26 import org.apache.logging.log4j.status.StatusLogger;
27
28
29
30
31 @Plugin(name = "ScriptRef", category = Node.CATEGORY, printObject = true)
32 public class ScriptRef extends AbstractScript {
33
34 private static final Logger logger = StatusLogger.getLogger();
35 private final ScriptManager scriptManager;
36
37 public ScriptRef(String name, ScriptManager scriptManager) {
38 super(name, null, null);
39 this.scriptManager = scriptManager;
40 }
41
42 @Override
43 public String getLanguage() {
44 AbstractScript script = this.scriptManager.getScript(getName());
45 return script != null ? script.getLanguage() : null;
46 }
47
48
49 @Override
50 public String getScriptText() {
51 AbstractScript script = this.scriptManager.getScript(getName());
52 return script != null ? script.getScriptText() : null;
53 }
54
55 @PluginFactory
56 public static ScriptRef createReference(
57
58 @PluginAttribute("ref") final String name,
59 @PluginConfiguration Configuration configuration) {
60
61 if (name == null) {
62 logger.error("No script name provided");
63 return null;
64 }
65 return new ScriptRef(name, configuration.getScriptManager());
66
67 }
68
69 @Override
70 public String toString() {
71 return "ref=" + getName();
72 }
73 }