logging-log4j2 git commit: [LOG4J2-1597] Fix FindBugs warnings.

2016-09-20 Thread ggregory
Repository: logging-log4j2
Updated Branches:
  refs/heads/master 33765882b -> 53ad0d7d3


[LOG4J2-1597] Fix FindBugs warnings.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/53ad0d7d
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/53ad0d7d
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/53ad0d7d

Branch: refs/heads/master
Commit: 53ad0d7d32a8f042220c7be4744e3c0e5819c6a9
Parents: 3376588
Author: Gary Gregory 
Authored: Tue Sep 20 12:11:08 2016 -0700
Committer: Gary Gregory 
Committed: Tue Sep 20 12:11:08 2016 -0700

--
 .../logging/log4j/core/appender/AppenderSet.java   | 13 +
 1 file changed, 9 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/53ad0d7d/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
--
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
index 2f53224..4eed071 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
@@ -48,18 +48,23 @@ public class AppenderSet {
 @Override
 public AppenderSet build() {
 if (configuration == null) {
-LOGGER.error("Configuration is missing from AppenderSet");
+LOGGER.error("Configuration is missing from AppenderSet {}", 
this);
+return null;
+}
+if (node == null) {
+LOGGER.error("No node in AppenderSet {}", this);
+return null;
 }
 final List children = node.getChildren();
-final Map map = new HashMap<>(node == null ? 0 : 
children.size());
 if (children == null) {
-LOGGER.error("No child node in the AppenderSet {}", this);
+LOGGER.error("No children node in AppenderSet {}", this);
 return null;
 }
+final Map map = new HashMap<>(children.size());
 for (final Node childNode : children) {
 final String key = childNode.getAttributes().get("name");
 if (key == null) {
-LOGGER.error("The attribute 'name' is missing from from 
the node {} in the AppenderSet {}",
+LOGGER.error("The attribute 'name' is missing from from 
the node {} in AppenderSet {}",
 childNode, children);
 } else {
 map.put(key, childNode);



logging-log4j2 git commit: [LOG4J2-1597] Fix NPEs.

2016-09-20 Thread ggregory
Repository: logging-log4j2
Updated Branches:
  refs/heads/master 60bcf168d -> 33765882b


[LOG4J2-1597] Fix NPEs.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/33765882
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/33765882
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/33765882

Branch: refs/heads/master
Commit: 33765882bddfd34f8d2913612d3bc2bda9f35e40
Parents: 60bcf16
Author: Gary Gregory 
Authored: Tue Sep 20 11:56:23 2016 -0700
Committer: Gary Gregory 
Committed: Tue Sep 20 11:56:23 2016 -0700

--
 .../logging/log4j/core/appender/ScriptAppenderSelector.java  | 4 
 1 file changed, 4 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/33765882/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java
--
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java
index ae6da0a..7782b96 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java
@@ -63,15 +63,19 @@ public class ScriptAppenderSelector extends 
AbstractAppender {
 public Appender build() {
 if (name == null) {
 LOGGER.error("Name missing.");
+return null;
 }
 if (script == null) {
 LOGGER.error("Script missing for ScriptAppenderSelector 
appender {}", name);
+return null;
 }
 if (appenderSet == null) {
 LOGGER.error("AppenderSet missing for ScriptAppenderSelector 
appender {}", name);
+return null;
 }
 if (configuration == null) {
 LOGGER.error("Configuration missing for ScriptAppenderSelector 
appender {}", name);
+return null;
 }
 final ScriptManager scriptManager = 
configuration.getScriptManager();
 scriptManager.addScript(script);



logging-log4j2 git commit: [LOG4J2-1597] Rename ScriptSelectorAppender to ScriptAppenderSelector.

2016-09-19 Thread ggregory
Repository: logging-log4j2
Updated Branches:
  refs/heads/master 9960888f0 -> 29fe81328


[LOG4J2-1597] Rename ScriptSelectorAppender to ScriptAppenderSelector.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/29fe8132
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/29fe8132
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/29fe8132

Branch: refs/heads/master
Commit: 29fe81328ad551d7439a73e91a5d81db85709e87
Parents: 9960888
Author: Gary Gregory 
Authored: Mon Sep 19 21:51:09 2016 -0700
Committer: Gary Gregory 
Committed: Mon Sep 19 21:51:09 2016 -0700

--
 src/site/xdoc/manual/appenders.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/29fe8132/src/site/xdoc/manual/appenders.xml
--
diff --git a/src/site/xdoc/manual/appenders.xml 
b/src/site/xdoc/manual/appenders.xml
index 99460a5..874e21a 100644
--- a/src/site/xdoc/manual/appenders.xml
+++ b/src/site/xdoc/manual/appenders.xml
@@ -3671,7 +3671,7 @@ public class JpaLogEntity extends 
AbstractLogEventWrapperEntity {
 the name of the ScriptAppenderSelector, not the name 
of the selected appender, in this example, 
 "SelectIt".
   

[3/9] logging-log4j2 git commit: [LOG4J2-1597]

2016-09-19 Thread ggregory
[LOG4J2-1597]

Add Groovy test to make sure all is well with any javax.script engine.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/9a50278f
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/9a50278f
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/9a50278f

Branch: refs/heads/master
Commit: 9a50278fccd41a282bd3a2d641f1b4e7223c2f31
Parents: c5ee9dc
Author: Gary Gregory 
Authored: Mon Sep 19 00:05:44 2016 -0700
Committer: Gary Gregory 
Committed: Mon Sep 19 00:05:44 2016 -0700

--
 .../appender/ScriptSelectorAppenderTest.java|  4 +--
 .../log4j-appender-selector-groovy.xml  | 35 
 2 files changed, 37 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9a50278f/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java
--
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java
index e1c8a14..c5095c2 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java
@@ -38,11 +38,11 @@ import org.junit.runners.Parameterized;
 @RunWith(Parameterized.class)
 public class ScriptSelectorAppenderTest {
 
-@Parameterized.Parameters(name = "{0} {1}")
+@Parameterized.Parameters(name = "{0}")
 public static Object[][] getParameters() {
 // @formatter:off
 return new Object[][] { 
-// { "log4j-appender-selector-groovy.xml" },
+{ "log4j-appender-selector-groovy.xml" },
 { "log4j-appender-selector-javascript.xml" },
 };
 // @formatter:on

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9a50278f/log4j-core/src/test/resources/log4j-appender-selector-groovy.xml
--
diff --git a/log4j-core/src/test/resources/log4j-appender-selector-groovy.xml 
b/log4j-core/src/test/resources/log4j-appender-selector-groovy.xml
new file mode 100644
index 000..4a15273
--- /dev/null
+++ b/log4j-core/src/test/resources/log4j-appender-selector-groovy.xml
@@ -0,0 +1,35 @@
+
+
+
+  
+
+  
+  
+  
+
+
+  
+
+  
+  
+
+  
+
+  
+
\ No newline at end of file



[4/9] logging-log4j2 git commit: [LOG4J2-1597] Remove unused method.

2016-09-19 Thread ggregory
[LOG4J2-1597] Remove unused method.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/123448f5
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/123448f5
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/123448f5

Branch: refs/heads/master
Commit: 123448f596299bcb313d2e29c96dfe120072ed7f
Parents: 9a50278
Author: Gary Gregory 
Authored: Mon Sep 19 00:10:23 2016 -0700
Committer: Gary Gregory 
Committed: Mon Sep 19 00:10:23 2016 -0700

--
 .../java/org/apache/logging/log4j/core/appender/AppenderSet.java | 4 
 1 file changed, 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/123448f5/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
--
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
index 472e456..b5fc59c 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
@@ -129,8 +129,4 @@ public class AppenderSet {
 LOGGER.error("No Appender was configured for name {} " + appenderName);
 return null;
 }
-
-public Map getAppenders() {
-return nodeMap;
-}
 }



[8/9] logging-log4j2 git commit: [LOG4J2-1597] Rename ScriptSelectorAppender to ScriptAppenderSelector.

2016-09-19 Thread ggregory
[LOG4J2-1597] Rename ScriptSelectorAppender to ScriptAppenderSelector.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/f8482f1b
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/f8482f1b
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/f8482f1b

Branch: refs/heads/master
Commit: f8482f1ba6c83c3345f247d396c62a853fe093e7
Parents: cd570f8
Author: Gary Gregory 
Authored: Mon Sep 19 17:06:51 2016 -0700
Committer: Gary Gregory 
Committed: Mon Sep 19 17:06:51 2016 -0700

--
 .../core/appender/ScriptAppenderSelector.java   | 137 +++
 .../log4j/core/appender/ScriptSelector.java | 137 ---
 .../appender/ScriptAppenderSelectorTest.java| 100 ++
 .../appender/ScriptSelectorAppenderTest.java| 100 --
 .../log4j-appender-selector-groovy.xml  |   4 +-
 .../log4j-appender-selector-javascript.xml  |   4 +-
 6 files changed, 241 insertions(+), 241 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f8482f1b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java
--
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java
new file mode 100644
index 000..ae6da0a
--- /dev/null
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java
@@ -0,0 +1,137 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.appender;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+import javax.script.Bindings;
+
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.Filter;
+import org.apache.logging.log4j.core.Layout;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
+import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
+import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
+import org.apache.logging.log4j.core.config.plugins.PluginElement;
+import 
org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
+import org.apache.logging.log4j.core.script.AbstractScript;
+import org.apache.logging.log4j.core.script.ScriptManager;
+
+@Plugin(name = "ScriptAppenderSelector", category = "Core", elementType = 
"appender", printObject = true)
+public class ScriptAppenderSelector extends AbstractAppender {
+
+/**
+ * Builds an appender.
+ */
+public static final class Builder implements 
org.apache.logging.log4j.core.util.Builder {
+
+@PluginElement("AppenderSet")
+@Required
+private AppenderSet appenderSet;
+
+@PluginConfiguration
+@Required
+private Configuration configuration;
+
+@PluginBuilderAttribute
+@Required
+private String name;
+
+@PluginElement("Script")
+@Required
+private AbstractScript script;
+
+@Override
+public Appender build() {
+if (name == null) {
+LOGGER.error("Name missing.");
+}
+if (script == null) {
+LOGGER.error("Script missing for ScriptAppenderSelector 
appender {}", name);
+}
+if (appenderSet == null) {
+LOGGER.error("AppenderSet missing for ScriptAppenderSelector 
appender {}", name);
+}
+if (configuration == null) {
+LOGGER.error("Configuration missing for ScriptAppenderSelector 
appender {}", name);
+}
+final ScriptManager scriptManager = 

[1/9] logging-log4j2 git commit: [LOG4J2-1597]

2016-09-19 Thread ggregory
Repository: logging-log4j2
Updated Branches:
  refs/heads/master d59bb7137 -> 21ac645e0


[LOG4J2-1597]

Add a ScriptSelector Appender to create an Appender specified by a
Script. First cut. See failing
org.apache.logging.log4j.core.appender.ScriptSelectorAppenderTest. See
status logger output.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/79d9e113
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/79d9e113
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/79d9e113

Branch: refs/heads/master
Commit: 79d9e11373b8246c7725cbf5c115be4a4b7c05f0
Parents: 5599aed
Author: Gary Gregory 
Authored: Sun Sep 18 21:20:52 2016 -0700
Committer: Gary Gregory 
Committed: Sun Sep 18 21:20:52 2016 -0700

--
 .../log4j/core/appender/AppenderSet.java| 135 ++
 .../log4j/core/appender/ScriptSelector.java | 139 +++
 .../appender/ScriptSelectorAppenderTest.java|  95 +
 .../log4j-appender-selector-javascript.xml  |  35 +
 4 files changed, 404 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/79d9e113/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
--
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
new file mode 100644
index 000..4403ab4
--- /dev/null
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
@@ -0,0 +1,135 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.appender;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.config.Node;
+import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
+import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
+import org.apache.logging.log4j.core.config.plugins.PluginNode;
+import 
org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
+import org.apache.logging.log4j.status.StatusLogger;
+
+/**
+ * A deferred plugin for appenders.
+ */
+@Plugin(name = "AppenderSet", category = "Core", printObject = true, 
deferChildren = true)
+public class AppenderSet {
+
+public static class Builder implements 
org.apache.logging.log4j.core.util.Builder {
+
+@PluginNode
+private Node node;
+
+@PluginConfiguration
+@Required
+private Configuration configuration;
+
+@Override
+public AppenderSet build() {
+if (configuration == null) {
+LOGGER.error("Configuration is missing from AppenderNodeSet");
+}
+final List children = node.getChildren();
+final Map map = new HashMap<>(node == null ? 0 : 
children.size());
+if (children == null) {
+LOGGER.error("No child node in the AppenderSet {}", this);
+return null;
+}
+for (final Node childNode : children) {
+final String key = childNode.getAttributes().get("name");
+if (key == null) {
+LOGGER.error("The attribute 'name' is missing from from 
the node {} in the AppenderNodeSet {}",
+childNode, children);
+} else {
+map.put(key, childNode);
+}
+}
+return new AppenderSet(configuration, map);
+}
+
+public Node getNode() {
+return node;
+}
+
+public Configuration getConfiguration() {
+return configuration;
+}
+
+ 

[9/9] logging-log4j2 git commit: [LOG4J2-1597]

2016-09-19 Thread ggregory
[LOG4J2-1597] 

Add a ScriptAppenderSelector to create an Appender specified by a
Script. Update changes.xml.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/21ac645e
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/21ac645e
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/21ac645e

Branch: refs/heads/master
Commit: 21ac645e0528b4f03ac7a448631ca1a8e341673b
Parents: f8482f1
Author: Gary Gregory 
Authored: Mon Sep 19 17:09:14 2016 -0700
Committer: Gary Gregory 
Committed: Mon Sep 19 17:09:14 2016 -0700

--
 src/changes/changes.xml | 3 +++
 1 file changed, 3 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/21ac645e/src/changes/changes.xml
--
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 1698408..d48f10b 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -159,6 +159,9 @@
   
 RoutingAppender can be configured with scripts. Add Script in a Routes 
element.
   
+  
+Add a ScriptAppenderSelector to create an Appender specified by a 
Script.
+  
   
 (GC) Added support for garbage-free ThreadContext map. Disabled by 
default, users need to enable this explicitly.
   



[7/9] logging-log4j2 git commit: [LOG4J2-1597] site docs.

2016-09-19 Thread ggregory
[LOG4J2-1597] site docs.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/cd570f83
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/cd570f83
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/cd570f83

Branch: refs/heads/master
Commit: cd570f830cecdee1df86a44494a831c5207b739a
Parents: ae159dc
Author: Gary Gregory 
Authored: Mon Sep 19 00:47:35 2016 -0700
Committer: Gary Gregory 
Committed: Mon Sep 19 00:47:35 2016 -0700

--
 src/site/site.xml  |  1 +
 src/site/xdoc/manual/appenders.xml | 34 +
 2 files changed, 35 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/cd570f83/src/site/site.xml
--
diff --git a/src/site/site.xml b/src/site/site.xml
index 9db99eb..a4da321 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -137,6 +137,7 @@
 
 
 
+
 
 
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/cd570f83/src/site/xdoc/manual/appenders.xml
--
diff --git a/src/site/xdoc/manual/appenders.xml 
b/src/site/xdoc/manual/appenders.xml
index b82b716..5196f2e 100644
--- a/src/site/xdoc/manual/appenders.xml
+++ b/src/site/xdoc/manual/appenders.xml
@@ -3657,6 +3657,40 @@ public class JpaLogEntity extends 
AbstractLogEventWrapperEntity {
   
 ]]>
 
+
+
+  
+When the configuration is built, the ScriptSelector 
appender calls a Script 
+to compute an appender name. Log4j then creates one of the 
appender named listed under 
+AppenderSet using the name of the 
ScriptSelector. After configuration, Log4j 
+ignores the ScriptSelector. Log4j only builds the one 
selected appender from the 
+configuration tree, and ignores other AppenderSet 
child nodes. 
+  
+  
+In the following example, the script returns the name "List2". The 
appender name is recorded under 
+the name of the ScriptSelector, not the name of the 
selected appender, in this example, 
+"SelectIt".
+  
+  
+
 
 
   



logging-log4j2 git commit: [LOG4J2-1597]

2016-09-19 Thread ggregory
Repository: logging-log4j2
Updated Branches:
  refs/heads/LOG4J2-1597 f8482f1ba -> 21ac645e0


[LOG4J2-1597] 

Add a ScriptAppenderSelector to create an Appender specified by a
Script. Update changes.xml.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/21ac645e
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/21ac645e
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/21ac645e

Branch: refs/heads/LOG4J2-1597
Commit: 21ac645e0528b4f03ac7a448631ca1a8e341673b
Parents: f8482f1
Author: Gary Gregory 
Authored: Mon Sep 19 17:09:14 2016 -0700
Committer: Gary Gregory 
Committed: Mon Sep 19 17:09:14 2016 -0700

--
 src/changes/changes.xml | 3 +++
 1 file changed, 3 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/21ac645e/src/changes/changes.xml
--
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 1698408..d48f10b 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -159,6 +159,9 @@
   
 RoutingAppender can be configured with scripts. Add Script in a Routes 
element.
   
+  
+Add a ScriptAppenderSelector to create an Appender specified by a 
Script.
+  
   
 (GC) Added support for garbage-free ThreadContext map. Disabled by 
default, users need to enable this explicitly.
   



logging-log4j2 git commit: [LOG4J2-1597] Rename ScriptSelectorAppender to ScriptAppenderSelector.

2016-09-19 Thread ggregory
Repository: logging-log4j2
Updated Branches:
  refs/heads/LOG4J2-1597 cd570f830 -> f8482f1ba


[LOG4J2-1597] Rename ScriptSelectorAppender to ScriptAppenderSelector.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/f8482f1b
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/f8482f1b
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/f8482f1b

Branch: refs/heads/LOG4J2-1597
Commit: f8482f1ba6c83c3345f247d396c62a853fe093e7
Parents: cd570f8
Author: Gary Gregory 
Authored: Mon Sep 19 17:06:51 2016 -0700
Committer: Gary Gregory 
Committed: Mon Sep 19 17:06:51 2016 -0700

--
 .../core/appender/ScriptAppenderSelector.java   | 137 +++
 .../log4j/core/appender/ScriptSelector.java | 137 ---
 .../appender/ScriptAppenderSelectorTest.java| 100 ++
 .../appender/ScriptSelectorAppenderTest.java| 100 --
 .../log4j-appender-selector-groovy.xml  |   4 +-
 .../log4j-appender-selector-javascript.xml  |   4 +-
 6 files changed, 241 insertions(+), 241 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f8482f1b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java
--
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java
new file mode 100644
index 000..ae6da0a
--- /dev/null
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java
@@ -0,0 +1,137 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.appender;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+import javax.script.Bindings;
+
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.Filter;
+import org.apache.logging.log4j.core.Layout;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
+import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
+import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
+import org.apache.logging.log4j.core.config.plugins.PluginElement;
+import 
org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
+import org.apache.logging.log4j.core.script.AbstractScript;
+import org.apache.logging.log4j.core.script.ScriptManager;
+
+@Plugin(name = "ScriptAppenderSelector", category = "Core", elementType = 
"appender", printObject = true)
+public class ScriptAppenderSelector extends AbstractAppender {
+
+/**
+ * Builds an appender.
+ */
+public static final class Builder implements 
org.apache.logging.log4j.core.util.Builder {
+
+@PluginElement("AppenderSet")
+@Required
+private AppenderSet appenderSet;
+
+@PluginConfiguration
+@Required
+private Configuration configuration;
+
+@PluginBuilderAttribute
+@Required
+private String name;
+
+@PluginElement("Script")
+@Required
+private AbstractScript script;
+
+@Override
+public Appender build() {
+if (name == null) {
+LOGGER.error("Name missing.");
+}
+if (script == null) {
+LOGGER.error("Script missing for ScriptAppenderSelector 
appender {}", name);
+}
+if (appenderSet == null) {
+LOGGER.error("AppenderSet missing for ScriptAppenderSelector 
appender {}", name);
+}
+if (configuration == null) {
+LOGGER.error("Configuration missing for ScriptAppenderSelector 
appender 

logging-log4j2 git commit: [LOG4J2-1597] site docs.

2016-09-19 Thread ggregory
Repository: logging-log4j2
Updated Branches:
  refs/heads/LOG4J2-1597 ae159dcf8 -> cd570f830


[LOG4J2-1597] site docs.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/cd570f83
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/cd570f83
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/cd570f83

Branch: refs/heads/LOG4J2-1597
Commit: cd570f830cecdee1df86a44494a831c5207b739a
Parents: ae159dc
Author: Gary Gregory 
Authored: Mon Sep 19 00:47:35 2016 -0700
Committer: Gary Gregory 
Committed: Mon Sep 19 00:47:35 2016 -0700

--
 src/site/site.xml  |  1 +
 src/site/xdoc/manual/appenders.xml | 34 +
 2 files changed, 35 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/cd570f83/src/site/site.xml
--
diff --git a/src/site/site.xml b/src/site/site.xml
index 9db99eb..a4da321 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -137,6 +137,7 @@
 
 
 
+
 
 
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/cd570f83/src/site/xdoc/manual/appenders.xml
--
diff --git a/src/site/xdoc/manual/appenders.xml 
b/src/site/xdoc/manual/appenders.xml
index b82b716..5196f2e 100644
--- a/src/site/xdoc/manual/appenders.xml
+++ b/src/site/xdoc/manual/appenders.xml
@@ -3657,6 +3657,40 @@ public class JpaLogEntity extends 
AbstractLogEventWrapperEntity {
   
 ]]>
 
+
+
+  
+When the configuration is built, the ScriptSelector 
appender calls a Script 
+to compute an appender name. Log4j then creates one of the 
appender named listed under 
+AppenderSet using the name of the 
ScriptSelector. After configuration, Log4j 
+ignores the ScriptSelector. Log4j only builds the one 
selected appender from the 
+configuration tree, and ignores other AppenderSet 
child nodes. 
+  
+  
+In the following example, the script returns the name "List2". The 
appender name is recorded under 
+the name of the ScriptSelector, not the name of the 
selected appender, in this example, 
+"SelectIt".
+  
+  
+
 
 
   



logging-log4j2 git commit: [LOG4J2-1597] Remove unused method.

2016-09-19 Thread ggregory
Repository: logging-log4j2
Updated Branches:
  refs/heads/LOG4J2-1597 9a50278fc -> 123448f59


[LOG4J2-1597] Remove unused method.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/123448f5
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/123448f5
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/123448f5

Branch: refs/heads/LOG4J2-1597
Commit: 123448f596299bcb313d2e29c96dfe120072ed7f
Parents: 9a50278
Author: Gary Gregory 
Authored: Mon Sep 19 00:10:23 2016 -0700
Committer: Gary Gregory 
Committed: Mon Sep 19 00:10:23 2016 -0700

--
 .../java/org/apache/logging/log4j/core/appender/AppenderSet.java | 4 
 1 file changed, 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/123448f5/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
--
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
index 472e456..b5fc59c 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
@@ -129,8 +129,4 @@ public class AppenderSet {
 LOGGER.error("No Appender was configured for name {} " + appenderName);
 return null;
 }
-
-public Map getAppenders() {
-return nodeMap;
-}
 }



logging-log4j2 git commit: [LOG4J2-1597]

2016-09-19 Thread ggregory
Repository: logging-log4j2
Updated Branches:
  refs/heads/LOG4J2-1597 c5ee9dc34 -> 9a50278fc


[LOG4J2-1597]

Add Groovy test to make sure all is well with any javax.script engine.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/9a50278f
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/9a50278f
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/9a50278f

Branch: refs/heads/LOG4J2-1597
Commit: 9a50278fccd41a282bd3a2d641f1b4e7223c2f31
Parents: c5ee9dc
Author: Gary Gregory 
Authored: Mon Sep 19 00:05:44 2016 -0700
Committer: Gary Gregory 
Committed: Mon Sep 19 00:05:44 2016 -0700

--
 .../appender/ScriptSelectorAppenderTest.java|  4 +--
 .../log4j-appender-selector-groovy.xml  | 35 
 2 files changed, 37 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9a50278f/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java
--
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java
index e1c8a14..c5095c2 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java
@@ -38,11 +38,11 @@ import org.junit.runners.Parameterized;
 @RunWith(Parameterized.class)
 public class ScriptSelectorAppenderTest {
 
-@Parameterized.Parameters(name = "{0} {1}")
+@Parameterized.Parameters(name = "{0}")
 public static Object[][] getParameters() {
 // @formatter:off
 return new Object[][] { 
-// { "log4j-appender-selector-groovy.xml" },
+{ "log4j-appender-selector-groovy.xml" },
 { "log4j-appender-selector-javascript.xml" },
 };
 // @formatter:on

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9a50278f/log4j-core/src/test/resources/log4j-appender-selector-groovy.xml
--
diff --git a/log4j-core/src/test/resources/log4j-appender-selector-groovy.xml 
b/log4j-core/src/test/resources/log4j-appender-selector-groovy.xml
new file mode 100644
index 000..4a15273
--- /dev/null
+++ b/log4j-core/src/test/resources/log4j-appender-selector-groovy.xml
@@ -0,0 +1,35 @@
+
+
+
+  
+
+  
+  
+  
+
+
+  
+
+  
+  
+
+  
+
+  
+
\ No newline at end of file



logging-log4j2 git commit: [LOG4J2-1597]

2016-09-18 Thread ggregory
Repository: logging-log4j2
Updated Branches:
  refs/heads/LOG4J2-1597 [created] 79d9e1137


[LOG4J2-1597]

Add a ScriptSelector Appender to create an Appender specified by a
Script. First cut. See failing
org.apache.logging.log4j.core.appender.ScriptSelectorAppenderTest. See
status logger output.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/79d9e113
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/79d9e113
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/79d9e113

Branch: refs/heads/LOG4J2-1597
Commit: 79d9e11373b8246c7725cbf5c115be4a4b7c05f0
Parents: 5599aed
Author: Gary Gregory 
Authored: Sun Sep 18 21:20:52 2016 -0700
Committer: Gary Gregory 
Committed: Sun Sep 18 21:20:52 2016 -0700

--
 .../log4j/core/appender/AppenderSet.java| 135 ++
 .../log4j/core/appender/ScriptSelector.java | 139 +++
 .../appender/ScriptSelectorAppenderTest.java|  95 +
 .../log4j-appender-selector-javascript.xml  |  35 +
 4 files changed, 404 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/79d9e113/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
--
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
new file mode 100644
index 000..4403ab4
--- /dev/null
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java
@@ -0,0 +1,135 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.appender;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.config.Node;
+import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
+import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
+import org.apache.logging.log4j.core.config.plugins.PluginNode;
+import 
org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
+import org.apache.logging.log4j.status.StatusLogger;
+
+/**
+ * A deferred plugin for appenders.
+ */
+@Plugin(name = "AppenderSet", category = "Core", printObject = true, 
deferChildren = true)
+public class AppenderSet {
+
+public static class Builder implements 
org.apache.logging.log4j.core.util.Builder {
+
+@PluginNode
+private Node node;
+
+@PluginConfiguration
+@Required
+private Configuration configuration;
+
+@Override
+public AppenderSet build() {
+if (configuration == null) {
+LOGGER.error("Configuration is missing from AppenderNodeSet");
+}
+final List children = node.getChildren();
+final Map map = new HashMap<>(node == null ? 0 : 
children.size());
+if (children == null) {
+LOGGER.error("No child node in the AppenderSet {}", this);
+return null;
+}
+for (final Node childNode : children) {
+final String key = childNode.getAttributes().get("name");
+if (key == null) {
+LOGGER.error("The attribute 'name' is missing from from 
the node {} in the AppenderNodeSet {}",
+childNode, children);
+} else {
+map.put(key, childNode);
+}
+}
+return new AppenderSet(configuration, map);
+}
+
+public Node getNode() {
+return node;
+}
+
+public Configuration getConfiguration() {
+return configuration;
+}