If you use @Required on an array, it checks for non-null and non-empty. Works on strings, collections, and maps with the same semantics.
---------- Forwarded message ---------- From: <ggreg...@apache.org> Date: 13 September 2016 at 22:59 Subject: [2/2] logging-log4j2 git commit: Deprecate factory method in favor of a builder. To: comm...@logging.apache.org 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; -- Matt Sicker <boa...@gmail.com>