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 [{}].",

Reply via email to