Deprecate factory method in favor of a builder.

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

Branch: refs/heads/master
Commit: 3846e2a87b94639466c7ab25b333fdb4ded8defc
Parents: 981677f
Author: Gary Gregory <ggreg...@apache.org>
Authored: Tue Sep 13 20:58:56 2016 -0700
Committer: Gary Gregory <ggreg...@apache.org>
Committed: Tue Sep 13 20:58:56 2016 -0700

----------------------------------------------------------------------
 .../log4j/core/appender/routing/Routes.java     | 51 ++++++++++++++++++--
 1 file changed, 47 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3846e2a8/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/Routes.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/Routes.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/Routes.java
index aae4087..c95b64a 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/Routes.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/Routes.java
@@ -21,8 +21,8 @@ import java.util.Objects;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
+import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
 import org.apache.logging.log4j.core.config.plugins.PluginElement;
-import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 import org.apache.logging.log4j.status.StatusLogger;
 
 /**
@@ -31,6 +31,48 @@ import org.apache.logging.log4j.status.StatusLogger;
 @Plugin(name = "Routes", category = "Core", printObject = true)
 public final class Routes {
 
+    public static class Builder implements 
org.apache.logging.log4j.core.util.Builder<Routes>  {
+
+        @PluginAttribute("pattern") 
+        private String pattern;
+        
+        @PluginElement("Routes") 
+        private Route[] routes;
+
+        @Override
+        public Routes build() {
+            if (routes == null || routes.length == 0) {
+                LOGGER.error("No routes configured");
+                return null;
+            }
+            return new Routes(pattern, routes);
+        }
+
+        public String getPattern() {
+            return pattern;
+        }
+
+        public Route[] getRoutes() {
+            return routes;
+        }
+
+        public Builder withPattern(@SuppressWarnings("hiding") String pattern) 
{
+            this.pattern = pattern;
+            return this;
+        }
+
+        public Builder withRoutes(@SuppressWarnings("hiding") Route[] routes) {
+            this.routes = routes;
+            return this;
+        }
+        
+    }
+
+    @PluginBuilderFactory
+    public static Builder newBuilder() {
+        return new Builder();
+    }
+
     private static final Logger LOGGER = StatusLogger.getLogger();
 
     private final String pattern;
@@ -90,11 +132,12 @@ public final class Routes {
      * @param pattern The pattern.
      * @param routes An array of Route elements.
      * @return The Routes container.
+     * @deprecated since 2.7; use {@link #newBuilder()}.
      */
-    @PluginFactory
+    @Deprecated
     public static Routes createRoutes(
-            @PluginAttribute("pattern") final String pattern,
-            @PluginElement("Routes") final Route... routes) {
+            final String pattern,
+            final Route... routes) {
         if (routes == null || routes.length == 0) {
             LOGGER.error("No routes configured");
             return null;

Reply via email to