Add @ValidHost and @ValidPort where appropriate
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/8962adbc Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/8962adbc Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/8962adbc Branch: refs/heads/master Commit: 8962adbc5859d46a5a8147a8b617690fa5de3f3e Parents: b1fa463 Author: Matt Sicker <[email protected]> Authored: Fri Dec 30 15:56:02 2016 -0600 Committer: Matt Sicker <[email protected]> Committed: Fri Dec 30 15:56:02 2016 -0600 ---------------------------------------------------------------------- .../log4j/core/appender/SmtpAppender.java | 8 +++-- .../log4j/core/appender/SocketAppender.java | 4 +++ .../nosql/appender/couchdb/CouchDbProvider.java | 15 ++++---- .../nosql/appender/mongodb/MongoDbProvider.java | 37 ++++++++------------ 4 files changed, 30 insertions(+), 34 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8962adbc/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SmtpAppender.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SmtpAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SmtpAppender.java index 6b9c474..e3aac4d 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SmtpAppender.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SmtpAppender.java @@ -31,6 +31,8 @@ import org.apache.logging.log4j.core.config.plugins.PluginAttribute; 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.PluginFactory; +import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required; +import org.apache.logging.log4j.core.config.plugins.validation.constraints.ValidPort; import org.apache.logging.log4j.core.filter.ThresholdFilter; import org.apache.logging.log4j.core.layout.HtmlLayout; import org.apache.logging.log4j.core.net.SmtpManager; @@ -110,7 +112,7 @@ public final class SmtpAppender extends AbstractAppender { @PluginFactory public static SmtpAppender createAppender( @PluginConfiguration final Configuration config, - @PluginAttribute("name") final String name, + @PluginAttribute("name") @Required final String name, @PluginAttribute("to") final String to, @PluginAttribute("cc") final String cc, @PluginAttribute("bcc") final String bcc, @@ -119,9 +121,9 @@ public final class SmtpAppender extends AbstractAppender { @PluginAttribute("subject") final String subject, @PluginAttribute("smtpProtocol") final String smtpProtocol, @PluginAttribute("smtpHost") final String smtpHost, - @PluginAttribute("smtpPort") final String smtpPortStr, + @PluginAttribute(value = "smtpPort", defaultString = "0") @ValidPort final String smtpPortStr, @PluginAttribute("smtpUsername") final String smtpUsername, - @PluginAttribute("smtpPassword") final String smtpPassword, + @PluginAttribute(value = "smtpPassword", sensitive = true) final String smtpPassword, @PluginAttribute("smtpDebug") final String smtpDebug, @PluginAttribute("bufferSize") final String bufferSizeStr, @PluginElement("Layout") Layout<? extends Serializable> layout, http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8962adbc/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java index 6b5c75a..c61598c 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java @@ -34,6 +34,8 @@ 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.PluginElement; import org.apache.logging.log4j.core.config.plugins.PluginFactory; +import org.apache.logging.log4j.core.config.plugins.validation.constraints.ValidHost; +import org.apache.logging.log4j.core.config.plugins.validation.constraints.ValidPort; import org.apache.logging.log4j.core.layout.SerializedLayout; import org.apache.logging.log4j.core.net.AbstractSocketManager; import org.apache.logging.log4j.core.net.Advertiser; @@ -71,12 +73,14 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM private int connectTimeoutMillis; @PluginBuilderAttribute + @ValidHost private String host = "localhost"; @PluginBuilderAttribute private boolean immediateFail = true; @PluginBuilderAttribute + @ValidPort private int port; @PluginBuilderAttribute http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8962adbc/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbProvider.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbProvider.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbProvider.java index 374da43..72fdee0 100644 --- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbProvider.java +++ b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbProvider.java @@ -19,10 +19,12 @@ package org.apache.logging.log4j.nosql.appender.couchdb; import java.lang.reflect.Method; import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.core.appender.AbstractAppender; 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.PluginFactory; +import org.apache.logging.log4j.core.config.plugins.convert.TypeConverters; +import org.apache.logging.log4j.core.config.plugins.validation.constraints.ValidHost; +import org.apache.logging.log4j.core.config.plugins.validation.constraints.ValidPort; import org.apache.logging.log4j.core.util.NameUtil; import org.apache.logging.log4j.nosql.appender.NoSqlProvider; import org.apache.logging.log4j.status.StatusLogger; @@ -83,8 +85,8 @@ public final class CouchDbProvider implements NoSqlProvider<CouchDbConnection> { public static CouchDbProvider createNoSqlProvider( @PluginAttribute("databaseName") final String databaseName, @PluginAttribute("protocol") String protocol, - @PluginAttribute("server") String server, - @PluginAttribute("port") final String port, + @PluginAttribute(value = "server", defaultString = "localhost") @ValidHost String server, + @PluginAttribute(value = "port", defaultString = "0") @ValidPort final String port, @PluginAttribute("username") final String username, @PluginAttribute(value = "password", sensitive = true) final String password, @PluginAttribute("factoryClassName") final String factoryClassName, @@ -139,12 +141,7 @@ public final class CouchDbProvider implements NoSqlProvider<CouchDbConnection> { LOGGER.warn("No protocol specified, using default port [http]."); } - final int portInt = AbstractAppender.parseInt(port, protocol.equals("https") ? HTTPS : HTTP); - - if (Strings.isEmpty(server)) { - server = "localhost"; - LOGGER.warn("No server specified, using default server localhost."); - } + final int portInt = TypeConverters.convert(port, int.class, protocol.equals("https") ? HTTPS : HTTP); if (Strings.isEmpty(username) || Strings.isEmpty(password)) { LOGGER.error("You must provide a username and password for the CouchDB provider."); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8962adbc/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java index 027f3a1..9ed1d77 100644 --- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java +++ b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java @@ -21,31 +21,33 @@ import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; +import com.mongodb.DB; +import com.mongodb.MongoClient; +import com.mongodb.MongoCredential; +import com.mongodb.ServerAddress; +import com.mongodb.WriteConcern; import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.core.appender.AbstractAppender; 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.PluginFactory; +import org.apache.logging.log4j.core.config.plugins.convert.TypeConverters; +import org.apache.logging.log4j.core.config.plugins.validation.constraints.ValidHost; +import org.apache.logging.log4j.core.config.plugins.validation.constraints.ValidPort; import org.apache.logging.log4j.core.util.NameUtil; import org.apache.logging.log4j.nosql.appender.NoSqlProvider; import org.apache.logging.log4j.status.StatusLogger; import org.apache.logging.log4j.util.LoaderUtil; import org.apache.logging.log4j.util.Strings; -import com.mongodb.DB; -import com.mongodb.MongoClient; -import com.mongodb.MongoCredential; -import com.mongodb.ServerAddress; -import com.mongodb.WriteConcern; - /** * The MongoDB implementation of {@link NoSqlProvider}. */ @Plugin(name = "MongoDb", category = "Core", printObject = true) public final class MongoDbProvider implements NoSqlProvider<MongoDbConnection> { - + private static final WriteConcern DEFAULT_WRITE_CONCERN = WriteConcern.ACKNOWLEDGED; private static final Logger LOGGER = StatusLogger.getLogger(); + private static final int DEFAULT_PORT = 27017; private final String collectionName; private final DB database; @@ -98,8 +100,8 @@ public final class MongoDbProvider implements NoSqlProvider<MongoDbConnection> { @PluginAttribute("writeConcernConstant") final String writeConcernConstant, @PluginAttribute("writeConcernConstantClass") final String writeConcernConstantClassName, @PluginAttribute("databaseName") final String databaseName, - @PluginAttribute("server") final String server, - @PluginAttribute("port") final String port, + @PluginAttribute(value = "server", defaultString = "localhost") @ValidHost final String server, + @PluginAttribute(value = "port", defaultString = "" + DEFAULT_PORT) @ValidPort final String port, @PluginAttribute("userName") final String userName, @PluginAttribute(value = "password", sensitive = true) final String password, @PluginAttribute("factoryClassName") final String factoryClassName, @@ -163,18 +165,9 @@ public final class MongoDbProvider implements NoSqlProvider<MongoDbConnection> { credentials.add(MongoCredential.createCredential(userName, databaseName, password.toCharArray())); } try { - if (Strings.isNotEmpty(server)) { - final int portInt = AbstractAppender.parseInt(port, 0); - description += ", server=" + server; - if (portInt > 0) { - description += ", port=" + portInt; - database = new MongoClient(new ServerAddress(server, portInt), credentials).getDB(databaseName); - } else { - database = new MongoClient(new ServerAddress(server), credentials).getDB(databaseName); - } - } else { - database = new MongoClient(new ServerAddress(), credentials).getDB(databaseName); - } + final int portInt = TypeConverters.convert(port, int.class, DEFAULT_PORT); + description += ", server=" + server + ", port=" + portInt; + database = new MongoClient(new ServerAddress(server, portInt), credentials).getDB(databaseName); } catch (final Exception e) { LOGGER.error( "Failed to obtain a database instance from the MongoClient at server [{}] and " + "port [{}].",
