You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by mi...@apache.org on 2017/10/19 19:48:32 UTC
[05/11] logging-log4j2 git commit: LOG4J2-2076 CouchDB and MongoDB
appenders in own modules, remove log4j-nosql module
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlObject.java
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlObject.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlObject.java
deleted file mode 100644
index 191d1a8..0000000
--- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlObject.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.nosql.appender;
-
-/**
- * Represents a simple POJO object inserted into a NoSQL object.
- *
- * @param <W> Specifies what type of underlying object (such as a MongoDB BasicDBObject) this NoSqlObject wraps.
- */
-public interface NoSqlObject<W> {
- /**
- * Sets the value of a property on this object to a String or primitive.
- *
- * @param field The name of the property
- * @param value The value of the property
- */
- void set(String field, Object value);
-
- /**
- * Sets the value of a property on this object to a nested complex object.
- *
- * @param field The name of the property
- * @param value The value of the property
- */
- void set(String field, NoSqlObject<W> value);
-
- /**
- * Sets the value of a property on this object to an array of Strings or primitives.
- *
- * @param field The name of the property
- * @param values The values for the property
- */
- void set(String field, Object[] values);
-
- /**
- * Sets the value of a property on this object to an array of nested complex objects.
- *
- * @param field The name of the property
- * @param values The values for the property
- */
- void set(String field, NoSqlObject<W>[] values);
-
- /**
- * Obtains the underlying NoSQL library-specific object that this object wraps.
- *
- * @return the wrapped object.
- */
- W unwrap();
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlProvider.java
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlProvider.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlProvider.java
deleted file mode 100644
index 75692bd..0000000
--- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlProvider.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.nosql.appender;
-
-/**
- * Implementations of this class are plugins for configuring the {@link NoSqlAppender} with the proper provider
- * (MongoDB, etc.).
- *
- * @param <C> Specifies which implementation of {@link NoSqlConnection} this provider provides.
- */
-public interface NoSqlProvider<C extends NoSqlConnection<?, ? extends NoSqlObject<?>>> {
-
- /**
- * Obtains a connection from this provider. The concept of a connection in this case is not strictly an active
- * duplex UDP or TCP connection to the underlying database. It can be thought of more as a gateway, a path for
- * inserting objects that may use a persistent connection or may use HTTP web service calls, etc.
- * <p>
- * Where applicable, this method should return a connection from the connection pool as opposed to opening a
- * brand new connection every time.
- * </p>
- *
- * @return a connection that can be used to create and persist objects to this database.
- * @see NoSqlConnection
- */
- C getConnection();
-
- /**
- * All implementations must override {@link Object#toString()} to provide information about the provider
- * configuration (obscuring passwords with one-way hashes).
- *
- * @return the string representation of this NoSQL provider.
- */
- @Override
- String toString();
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbConnection.java
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbConnection.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbConnection.java
deleted file mode 100644
index 2494a5c..0000000
--- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbConnection.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.nosql.appender.couchdb;
-
-import java.util.Map;
-
-import org.apache.logging.log4j.core.appender.AppenderLoggingException;
-import org.apache.logging.log4j.nosql.appender.AbstractNoSqlConnection;
-import org.apache.logging.log4j.nosql.appender.DefaultNoSqlObject;
-import org.apache.logging.log4j.nosql.appender.NoSqlConnection;
-import org.apache.logging.log4j.nosql.appender.NoSqlObject;
-import org.apache.logging.log4j.util.Strings;
-import org.lightcouch.CouchDbClient;
-import org.lightcouch.Response;
-
-/**
- * The Apache CouchDB implementation of {@link NoSqlConnection}.
- */
-public final class CouchDbConnection extends AbstractNoSqlConnection<Map<String, Object>, DefaultNoSqlObject> {
- private final CouchDbClient client;
-
- public CouchDbConnection(final CouchDbClient client) {
- this.client = client;
- }
-
- @Override
- public DefaultNoSqlObject createObject() {
- return new DefaultNoSqlObject();
- }
-
- @Override
- public DefaultNoSqlObject[] createList(final int length) {
- return new DefaultNoSqlObject[length];
- }
-
- @Override
- public void insertObject(final NoSqlObject<Map<String, Object>> object) {
- try {
- final Response response = this.client.save(object.unwrap());
- if (Strings.isNotEmpty(response.getError())) {
- throw new AppenderLoggingException(
- "Failed to write log event to CouchDB due to error: " + response.getError() + '.');
- }
- } catch (final Exception e) {
- throw new AppenderLoggingException("Failed to write log event to CouchDB due to error: " + e.getMessage(),
- e);
- }
- }
-
- @Override
- protected void closeImpl() {
- this.client.shutdown();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/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
deleted file mode 100644
index cafe644..0000000
--- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbProvider.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * 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.nosql.appender.couchdb;
-
-import java.lang.reflect.Method;
-
-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.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 org.lightcouch.CouchDbClient;
-import org.lightcouch.CouchDbProperties;
-
-/**
- * The Apache CouchDB implementation of {@link NoSqlProvider}.
- */
-@Plugin(name = "CouchDB", category = "Core", printObject = true)
-public final class CouchDbProvider implements NoSqlProvider<CouchDbConnection> {
- private static final int HTTP = 80;
- private static final int HTTPS = 443;
- private static final Logger LOGGER = StatusLogger.getLogger();
-
- private final CouchDbClient client;
- private final String description;
-
- private CouchDbProvider(final CouchDbClient client, final String description) {
- this.client = client;
- this.description = "couchDb{ " + description + " }";
- }
-
- @Override
- public CouchDbConnection getConnection() {
- return new CouchDbConnection(this.client);
- }
-
- @Override
- public String toString() {
- return this.description;
- }
-
- /**
- * Factory method for creating an Apache CouchDB provider within the plugin manager.
- *
- * @param databaseName The name of the database to which log event documents will be written.
- * @param protocol Either "http" or "https," defaults to "http" and mutually exclusive with
- * {@code factoryClassName&factoryMethodName!=null}.
- * @param server The host name of the CouchDB server, defaults to localhost and mutually exclusive with
- * {@code factoryClassName&factoryMethodName!=null}.
- * @param port The port that CouchDB is listening on, defaults to 80 if {@code protocol} is "http" and 443 if
- * {@code protocol} is "https," and mutually exclusive with
- * {@code factoryClassName&factoryMethodName!=null}.
- * @param username The username to authenticate against the MongoDB server with, mutually exclusive with
- * {@code factoryClassName&factoryMethodName!=null}.
- * @param password The password to authenticate against the MongoDB server with, mutually exclusive with
- * {@code factoryClassName&factoryMethodName!=null}.
- * @param factoryClassName A fully qualified class name containing a static factory method capable of returning a
- * {@link CouchDbClient} or {@link CouchDbProperties}.
- * @param factoryMethodName The name of the public static factory method belonging to the aforementioned factory
- * class.
- * @return a new Apache CouchDB provider.
- */
- @PluginFactory
- public static CouchDbProvider createNoSqlProvider(
- @PluginAttribute("databaseName") final String databaseName,
- @PluginAttribute("protocol") String protocol,
- @PluginAttribute(value = "server", defaultString = "localhost") @ValidHost final 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,
- @PluginAttribute("factoryMethodName") final String factoryMethodName) {
- CouchDbClient client;
- String description;
- if (Strings.isNotEmpty(factoryClassName) && Strings.isNotEmpty(factoryMethodName)) {
- try {
- final Class<?> factoryClass = LoaderUtil.loadClass(factoryClassName);
- final Method method = factoryClass.getMethod(factoryMethodName);
- final Object object = method.invoke(null);
-
- if (object instanceof CouchDbClient) {
- client = (CouchDbClient) object;
- description = "uri=" + client.getDBUri();
- } else if (object instanceof CouchDbProperties) {
- final CouchDbProperties properties = (CouchDbProperties) object;
- client = new CouchDbClient(properties);
- description = "uri=" + client.getDBUri() + ", username=" + properties.getUsername()
- + ", passwordHash=" + NameUtil.md5(password + CouchDbProvider.class.getName())
- + ", maxConnections=" + properties.getMaxConnections() + ", connectionTimeout="
- + properties.getConnectionTimeout() + ", socketTimeout=" + properties.getSocketTimeout();
- } else if (object == null) {
- LOGGER.error("The factory method [{}.{}()] returned null.", factoryClassName, factoryMethodName);
- return null;
- } else {
- LOGGER.error("The factory method [{}.{}()] returned an unsupported type [{}].", factoryClassName,
- factoryMethodName, object.getClass().getName());
- return null;
- }
- } catch (final ClassNotFoundException e) {
- LOGGER.error("The factory class [{}] could not be loaded.", factoryClassName, e);
- return null;
- } catch (final NoSuchMethodException e) {
- LOGGER.error("The factory class [{}] does not have a no-arg method named [{}].", factoryClassName,
- factoryMethodName, e);
- return null;
- } catch (final Exception e) {
- LOGGER.error("The factory method [{}.{}()] could not be invoked.", factoryClassName, factoryMethodName,
- e);
- return null;
- }
- } else if (Strings.isNotEmpty(databaseName)) {
- if (protocol != null && protocol.length() > 0) {
- protocol = protocol.toLowerCase();
- if (!protocol.equals("http") && !protocol.equals("https")) {
- LOGGER.error("Only protocols [http] and [https] are supported, [{}] specified.", protocol);
- return null;
- }
- } else {
- protocol = "http";
- LOGGER.warn("No protocol specified, using default port [http].");
- }
-
- 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.");
- return null;
- }
-
- client = new CouchDbClient(databaseName, false, protocol, server, portInt, username, password);
- description = "uri=" + client.getDBUri() + ", username=" + username + ", passwordHash="
- + NameUtil.md5(password + CouchDbProvider.class.getName());
- } else {
- LOGGER.error("No factory method was provided so the database name is required.");
- return null;
- }
-
- return new CouchDbProvider(client, description);
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/package-info.java
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/package-info.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/package-info.java
deleted file mode 100644
index b783f87..0000000
--- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * 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.
- */
-/**
- * The classes in this package contain the Apache CouchDB provider for the NoSQL Appender.
- */
-package org.apache.logging.log4j.nosql.appender.couchdb;
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbConnection.java
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbConnection.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbConnection.java
deleted file mode 100644
index 0edbb66..0000000
--- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbConnection.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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.nosql.appender.mongodb;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.appender.AppenderLoggingException;
-import org.apache.logging.log4j.nosql.appender.AbstractNoSqlConnection;
-import org.apache.logging.log4j.nosql.appender.NoSqlConnection;
-import org.apache.logging.log4j.nosql.appender.NoSqlObject;
-import org.apache.logging.log4j.status.StatusLogger;
-import org.bson.BSON;
-import org.bson.Transformer;
-
-import com.mongodb.BasicDBObject;
-import com.mongodb.DB;
-import com.mongodb.DBCollection;
-import com.mongodb.MongoException;
-import com.mongodb.WriteConcern;
-
-/**
- * The MongoDB implementation of {@link NoSqlConnection}.
- */
-public final class MongoDbConnection extends AbstractNoSqlConnection<BasicDBObject, MongoDbObject> {
-
- private static final Logger LOGGER = StatusLogger.getLogger();
-
- static {
- BSON.addEncodingHook(Level.class, new Transformer() {
- @Override
- public Object transform(final Object o) {
- if (o instanceof Level) {
- return ((Level) o).name();
- }
- return o;
- }
- });
- }
-
- private final DBCollection collection;
- private final WriteConcern writeConcern;
-
- public MongoDbConnection(final DB database, final WriteConcern writeConcern, final String collectionName,
- final Boolean isCapped, final Integer collectionSize) {
- if (database.collectionExists(collectionName)) {
- collection = database.getCollection(collectionName);
- } else {
- final BasicDBObject options = new BasicDBObject();
- options.put("capped", isCapped);
- options.put("size", collectionSize);
- this.collection = database.createCollection(collectionName, options);
- }
- this.writeConcern = writeConcern;
- }
-
- @Override
- public MongoDbObject createObject() {
- return new MongoDbObject();
- }
-
- @Override
- public MongoDbObject[] createList(final int length) {
- return new MongoDbObject[length];
- }
-
- @Override
- public void insertObject(final NoSqlObject<BasicDBObject> object) {
- try {
- this.collection.insert(object.unwrap(), this.writeConcern);
- } catch (final MongoException e) {
- throw new AppenderLoggingException("Failed to write log event to MongoDB due to error: " + e.getMessage(),
- e);
- }
- }
-
- @Override
- public void closeImpl() {
- // LOG4J2-1196
- this.collection.getDB().getMongo().close();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbObject.java
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbObject.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbObject.java
deleted file mode 100644
index 9c39cc3..0000000
--- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbObject.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.nosql.appender.mongodb;
-
-import java.util.Collections;
-
-import org.apache.logging.log4j.nosql.appender.NoSqlObject;
-
-import com.mongodb.BasicDBList;
-import com.mongodb.BasicDBObject;
-
-/**
- * The MongoDB implementation of {@link NoSqlObject}.
- */
-public final class MongoDbObject implements NoSqlObject<BasicDBObject> {
- private final BasicDBObject mongoObject;
-
- public MongoDbObject() {
- this.mongoObject = new BasicDBObject();
- }
-
- @Override
- public void set(final String field, final Object value) {
- this.mongoObject.append(field, value);
- }
-
- @Override
- public void set(final String field, final NoSqlObject<BasicDBObject> value) {
- this.mongoObject.append(field, value.unwrap());
- }
-
- @Override
- public void set(final String field, final Object[] values) {
- final BasicDBList list = new BasicDBList();
- Collections.addAll(list, values);
- this.mongoObject.append(field, list);
- }
-
- @Override
- public void set(final String field, final NoSqlObject<BasicDBObject>[] values) {
- final BasicDBList list = new BasicDBList();
- for (final NoSqlObject<BasicDBObject> value : values) {
- list.add(value.unwrap());
- }
- this.mongoObject.append(field, list);
- }
-
- @Override
- public BasicDBObject unwrap() {
- return this.mongoObject;
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/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
deleted file mode 100644
index 69a1f00..0000000
--- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * 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.nosql.appender.mongodb;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.Core;
-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.PluginFactory;
-import org.apache.logging.log4j.core.config.plugins.convert.TypeConverters;
-import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
-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.filter.AbstractFilterable;
-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.CATEGORY_NAME, 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 static final int DEFAULT_COLLECTION_SIZE = 536870912;
-
- private final String collectionName;
- private final DB database;
- private final String description;
- private final WriteConcern writeConcern;
- private final boolean isCapped;
- private final Integer collectionSize;
-
- private MongoDbProvider(final DB database, final WriteConcern writeConcern, final String collectionName,
- final boolean isCapped, final Integer collectionSize, final String description) {
- this.database = database;
- this.writeConcern = writeConcern;
- this.collectionName = collectionName;
- this.isCapped = isCapped;
- this.collectionSize = collectionSize;
- this.description = "mongoDb{ " + description + " }";
- }
-
- @Override
- public MongoDbConnection getConnection() {
- return new MongoDbConnection(this.database, this.writeConcern, this.collectionName, this.isCapped, this.collectionSize);
- }
-
- @Override
- public String toString() {
- return this.description;
- }
-
- /**
- * Factory method for creating a MongoDB provider within the plugin manager.
- *
- * @param collectionName The name of the MongoDB collection to which log events should be written.
- * @param writeConcernConstant The {@link WriteConcern} constant to control writing details, defaults to
- * {@link WriteConcern#ACKNOWLEDGED}.
- * @param writeConcernConstantClassName The name of a class containing the aforementioned static WriteConcern
- * constant. Defaults to {@link WriteConcern}.
- * @param databaseName The name of the MongoDB database containing the collection to which log events should be
- * written. Mutually exclusive with {@code factoryClassName&factoryMethodName!=null}.
- * @param server The host name of the MongoDB server, defaults to localhost and mutually exclusive with
- * {@code factoryClassName&factoryMethodName!=null}.
- * @param port The port the MongoDB server is listening on, defaults to the default MongoDB port and mutually
- * exclusive with {@code factoryClassName&factoryMethodName!=null}.
- * @param userName The username to authenticate against the MongoDB server with.
- * @param password The password to authenticate against the MongoDB server with.
- * @param factoryClassName A fully qualified class name containing a static factory method capable of returning a
- * {@link DB} or a {@link MongoClient}.
- * @param factoryMethodName The name of the public static factory method belonging to the aforementioned factory
- * class.
- * @return a new MongoDB provider.
- * @deprecated in 2.8; use {@link #newBuilder()} instead.
- */
- @PluginFactory
- public static MongoDbProvider createNoSqlProvider(
- final String collectionName,
- final String writeConcernConstant,
- final String writeConcernConstantClassName,
- final String databaseName,
- final String server,
- final String port,
- final String userName,
- final String password,
- final String factoryClassName,
- final String factoryMethodName) {
- LOGGER.info("createNoSqlProvider");
- return newBuilder().setCollectionName(collectionName).setWriteConcernConstant(writeConcernConstantClassName)
- .setWriteConcernConstant(writeConcernConstant).setDatabaseName(databaseName).setServer(server)
- .setPort(port).setUserName(userName).setPassword(password).setFactoryClassName(factoryClassName)
- .setFactoryMethodName(factoryMethodName).build();
- }
-
- @PluginBuilderFactory
- public static <B extends Builder<B>> B newBuilder() {
- return new Builder<B>().asBuilder();
- }
-
- public static class Builder<B extends Builder<B>> extends AbstractFilterable.Builder<B>
- implements org.apache.logging.log4j.core.util.Builder<MongoDbProvider> {
-
- @PluginBuilderAttribute
- @ValidHost
- private String server = "localhost";
-
- @PluginBuilderAttribute
- @ValidPort
- private String port = "" + DEFAULT_PORT;
-
- @PluginBuilderAttribute
- @Required(message = "No database name provided")
- private String databaseName;
-
- @PluginBuilderAttribute
- @Required(message = "No collection name provided")
- private String collectionName;
-
- @PluginBuilderAttribute
- private String userName;
-
- @PluginBuilderAttribute(sensitive = true)
- private String password;
-
- @PluginBuilderAttribute("capped")
- private boolean isCapped = false;
-
- @PluginBuilderAttribute
- private int collectionSize = DEFAULT_COLLECTION_SIZE;
-
- @PluginBuilderAttribute
- private String factoryClassName;
-
- @PluginBuilderAttribute
- private String factoryMethodName;
-
- @PluginBuilderAttribute
- private String writeConcernConstantClassName;
-
- @PluginBuilderAttribute
- private String writeConcernConstant;
-
- public B setServer(final String server) {
- this.server = server;
- return asBuilder();
- }
-
- public B setPort(final String port) {
- this.port = port;
- return asBuilder();
- }
-
- public B setDatabaseName(final String databaseName) {
- this.databaseName = databaseName;
- return asBuilder();
- }
-
- public B setCollectionName(final String collectionName) {
- this.collectionName = collectionName;
- return asBuilder();
- }
-
- public B setUserName(final String userName) {
- this.userName = userName;
- return asBuilder();
- }
-
- public B setPassword(final String password) {
- this.password = password;
- return asBuilder();
- }
-
- public B setCapped(final boolean isCapped) {
- this.isCapped = isCapped;
- return asBuilder();
- }
-
- public B setCollectionSize(final int collectionSize) {
- this.collectionSize = collectionSize;
- return asBuilder();
- }
-
- public B setFactoryClassName(final String factoryClassName) {
- this.factoryClassName = factoryClassName;
- return asBuilder();
- }
-
- public B setFactoryMethodName(final String factoryMethodName) {
- this.factoryMethodName = factoryMethodName;
- return asBuilder();
- }
-
- public B setWriteConcernConstantClassName(final String writeConcernConstantClassName) {
- this.writeConcernConstantClassName = writeConcernConstantClassName;
- return asBuilder();
- }
-
- public B setWriteConcernConstant(final String writeConcernConstant) {
- this.writeConcernConstant = writeConcernConstant;
- return asBuilder();
- }
-
- @Override
- public MongoDbProvider build() {
- DB database;
- String description;
- if (Strings.isNotEmpty(factoryClassName) && Strings.isNotEmpty(factoryMethodName)) {
- try {
- final Class<?> factoryClass = LoaderUtil.loadClass(factoryClassName);
- final Method method = factoryClass.getMethod(factoryMethodName);
- final Object object = method.invoke(null);
-
- if (object instanceof DB) {
- database = (DB) object;
- } else if (object instanceof MongoClient) {
- if (Strings.isNotEmpty(databaseName)) {
- database = ((MongoClient) object).getDB(databaseName);
- } else {
- LOGGER.error("The factory method [{}.{}()] returned a MongoClient so the database name is "
- + "required.", factoryClassName, factoryMethodName);
- return null;
- }
- } else if (object == null) {
- LOGGER.error("The factory method [{}.{}()] returned null.", factoryClassName, factoryMethodName);
- return null;
- } else {
- LOGGER.error("The factory method [{}.{}()] returned an unsupported type [{}].", factoryClassName,
- factoryMethodName, object.getClass().getName());
- return null;
- }
-
- description = "database=" + database.getName();
- final List<ServerAddress> addresses = database.getMongo().getAllAddress();
- if (addresses.size() == 1) {
- description += ", server=" + addresses.get(0).getHost() + ", port=" + addresses.get(0).getPort();
- } else {
- description += ", servers=[";
- for (final ServerAddress address : addresses) {
- description += " { " + address.getHost() + ", " + address.getPort() + " } ";
- }
- description += "]";
- }
- } catch (final ClassNotFoundException e) {
- LOGGER.error("The factory class [{}] could not be loaded.", factoryClassName, e);
- return null;
- } catch (final NoSuchMethodException e) {
- LOGGER.error("The factory class [{}] does not have a no-arg method named [{}].", factoryClassName,
- factoryMethodName, e);
- return null;
- } catch (final Exception e) {
- LOGGER.error("The factory method [{}.{}()] could not be invoked.", factoryClassName, factoryMethodName,
- e);
- return null;
- }
- } else if (Strings.isNotEmpty(databaseName)) {
- final List<MongoCredential> credentials = new ArrayList<>();
- description = "database=" + databaseName;
- if (Strings.isNotEmpty(userName) && Strings.isNotEmpty(password)) {
- description += ", username=" + userName + ", passwordHash="
- + NameUtil.md5(password + MongoDbProvider.class.getName());
- credentials.add(MongoCredential.createCredential(userName, databaseName, password.toCharArray()));
- }
- try {
- 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 [{}].",
- server, port);
- return null;
- }
- } else {
- LOGGER.error("No factory method was provided so the database name is required.");
- return null;
- }
-
- try {
- database.getCollectionNames(); // Check if the database actually requires authentication
- } catch (final Exception e) {
- LOGGER.error(
- "The database is not up, or you are not authenticated, try supplying a username and password to the MongoDB provider.",
- e);
- return null;
- }
-
- final WriteConcern writeConcern = toWriteConcern(writeConcernConstant, writeConcernConstantClassName);
-
- return new MongoDbProvider(database, writeConcern, collectionName, isCapped, collectionSize, description);
- }
-
- private static WriteConcern toWriteConcern(final String writeConcernConstant,
- final String writeConcernConstantClassName) {
- WriteConcern writeConcern;
- if (Strings.isNotEmpty(writeConcernConstant)) {
- if (Strings.isNotEmpty(writeConcernConstantClassName)) {
- try {
- final Class<?> writeConcernConstantClass = LoaderUtil.loadClass(writeConcernConstantClassName);
- final Field field = writeConcernConstantClass.getField(writeConcernConstant);
- writeConcern = (WriteConcern) field.get(null);
- } catch (final Exception e) {
- LOGGER.error("Write concern constant [{}.{}] not found, using default.",
- writeConcernConstantClassName, writeConcernConstant);
- writeConcern = DEFAULT_WRITE_CONCERN;
- }
- } else {
- writeConcern = WriteConcern.valueOf(writeConcernConstant);
- if (writeConcern == null) {
- LOGGER.warn("Write concern constant [{}] not found, using default.", writeConcernConstant);
- writeConcern = DEFAULT_WRITE_CONCERN;
- }
- }
- } else {
- writeConcern = DEFAULT_WRITE_CONCERN;
- }
- return writeConcern;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/package-info.java
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/package-info.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/package-info.java
deleted file mode 100644
index 54a2878..0000000
--- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * 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.
- */
-/**
- * The classes in this package contain the MongoDB provider for the NoSQL Appender.
- */
-package org.apache.logging.log4j.nosql.appender.mongodb;
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/package-info.java
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/package-info.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/package-info.java
deleted file mode 100644
index 9560e9d..0000000
--- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/package-info.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.
- */
-/**
- * The NoSQL Appender supports writing log events to NoSQL databases. The following NoSQL databases are currently
- * supported. You can also easily extend this to support other NoSQL databases by implementing just three interfaces:
- * {@link org.apache.logging.log4j.nosql.appender.NoSqlObject NoSqlObject},
- * {@link org.apache.logging.log4j.nosql.appender.NoSqlConnection NoSqlConnection}, and
- * {@link org.apache.logging.log4j.nosql.appender.NoSqlProvider NoSqlProvider}. You will need the client library for your
- * NoSQL database of choice on the classpath to use this appender; these Maven dependencies are optional and will not
- * automatically be added to your classpath.<br>
- * <br>
- * <ul>
- * <li><a href="http://www.mongodb.org/" target="_blank">MongoDB</a>: org.mongodb:mongo-java-driver:3.0.4 or newer
- * must be on the classpath.</li>
- * <li><a href="http://couchdb.apache.org/" target="_blank">Apache CouchDB</a>: org.lightcouch:lightcouch:0.0.6 or
- * newer must be on the classpath.</li>
- * </ul>
- */
-package org.apache.logging.log4j.nosql.appender;
-
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/site/markdown/index.md.vm
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/site/markdown/index.md.vm b/log4j-nosql/src/site/markdown/index.md.vm
deleted file mode 100644
index 48c80c4..0000000
--- a/log4j-nosql/src/site/markdown/index.md.vm
+++ /dev/null
@@ -1,77 +0,0 @@
-<!-- vim: set syn=markdown : -->
-<!--
- 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.
--->
-#set($h1='#')
-#set($h2='##')
-## TODO: use properties for dynamic dependency versions
-
-$h1 NoSQL Appenders
-
-The NoSQL Appenders allow applications to send events to NoSQL repositories.
-To use it, you need both the `log4j-nosql` as well as the appropriate
-driver for your NoSQL database type.
-
-$h2 CouchDB
-
-[Apache CouchDB](https://couchdb.apache.org/) is supported through the
-[LightCouch](http://www.lightcouch.org/) driver.
-
-```
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.lightcouch</groupId>
- <artifactId>lightcouch</artifactId>
- <version>0.0.6</version>
- </dependency>
- </dependencies>
- </dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.lightcouch</groupId>
- <artifactId>lightcouch</artifactId>
- </dependency>
- </dependencies>
-```
-
-$h2 MongoDB
-
-[MongoDB](http://www.mongodb.org/) is supported through the
-[Java MongoDB Driver](http://docs.mongodb.org/ecosystem/drivers/java/).
-
-```
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.mongodb</groupId>
- <artifactId>mongo-java-driver</artifactId>
- <version>2.12.3</version>
- </dependency>
- </dependencies>
- </dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.mongodb</groupId>
- <artifactId>mongo-java-driver</artifactId>
- </dependency>
- </dependencies>
-```
-
-$h2 Requirements
-
-The NoSQL Appenders is dependent on the Log4j 2 API and implementation.
-For more information, see [Runtime Dependencies](../runtime-dependencies.html).
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/site/site.xml
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/site/site.xml b/log4j-nosql/src/site/site.xml
deleted file mode 100644
index bc6efc3..0000000
--- a/log4j-nosql/src/site/site.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<!--
- 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.
-
--->
-<project name="Log4j NoSQL Appenders"
- xmlns="http://maven.apache.org/DECORATION/1.4.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.4.0 http://maven.apache.org/xsd/decoration-1.4.0.xsd">
- <body>
- <links>
- <item name="Apache" href="http://www.apache.org/" />
- <item name="Logging Services" href="http://logging.apache.org/"/>
- <item name="Log4j" href="../index.html"/>
- </links>
-
- <!-- Component-specific reports -->
- <menu ref="reports"/>
-
- <!-- Overall Project Info -->
- <menu name="Log4j Project Information" img="icon-info-sign">
- <item name="Dependencies" href="../dependencies.html" />
- <item name="Dependency Convergence" href="../dependency-convergence.html" />
- <item name="Dependency Management" href="../dependency-management.html" />
- <item name="Project Team" href="../team-list.html" />
- <item name="Mailing Lists" href="../mail-lists.html" />
- <item name="Issue Tracking" href="../issue-tracking.html" />
- <item name="Project License" href="../license.html" />
- <item name="Source Repository" href="../source-repository.html" />
- <item name="Project Summary" href="../project-summary.html" />
- </menu>
-
- <menu name="Log4j Project Reports" img="icon-cog">
- <item name="Changes Report" href="../changes-report.html" />
- <item name="JIRA Report" href="../jira-report.html" />
- <item name="Surefire Report" href="../surefire-report.html" />
- <item name="RAT Report" href="../rat-report.html" />
- </menu>
- </body>
-</project>
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbAuthTest.java
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbAuthTest.java b/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbAuthTest.java
deleted file mode 100644
index f87d91d..0000000
--- a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbAuthTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.nosql.appender;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.categories.Appenders;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.junit.ClassRule;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-@Ignore("Requires a running MongoDB server")
-@Category(Appenders.MongoDb.class)
-public class MongoDbAuthTest {
-
- @ClassRule
- public static LoggerContextRule context = new LoggerContextRule("log4j2-mongodb-auth.xml");
-
- @Test
- public void test() {
- final Logger logger = LogManager.getLogger();
- logger.info("Hello log");
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbCappedTest.java
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbCappedTest.java b/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbCappedTest.java
deleted file mode 100644
index a622716..0000000
--- a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbCappedTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.nosql.appender;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.categories.Appenders;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.junit.ClassRule;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-@Ignore("Requires a running MongoDB server")
-@Category(Appenders.MongoDb.class)
-public class MongoDbCappedTest {
-
- @ClassRule
- public static LoggerContextRule context = new LoggerContextRule("log4j2-mongodb-capped.xml");
-
- @Test
- public void test() {
- final Logger logger = LogManager.getLogger();
- logger.info("Hello log");
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbTest.java
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbTest.java b/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbTest.java
deleted file mode 100644
index b480798..0000000
--- a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.nosql.appender;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.categories.Appenders;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.junit.ClassRule;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-@Ignore("Requires a running MongoDB server")
-@Category(Appenders.MongoDb.class)
-public class MongoDbTest {
-
- @ClassRule
- public static LoggerContextRule context = new LoggerContextRule("log4j2-mongodb.xml");
-
- @Test
- public void test() {
- final Logger logger = LogManager.getLogger();
- logger.info("Hello log");
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlAppenderTest.java b/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlAppenderTest.java
deleted file mode 100644
index 236218c..0000000
--- a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlAppenderTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.nosql.appender;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
-
-import static org.junit.Assert.*;
-
-@RunWith(MockitoJUnitRunner.class)
-public class NoSqlAppenderTest {
-
- @Mock
- private NoSqlProvider<?> provider;
-
- @Test
- public void testNoProvider() {
- final NoSqlAppender appender = NoSqlAppender.createAppender("myName01", null, null, null, null);
-
- assertNull("The appender should be null.", appender);
- }
-
- @Test
- public void testProvider() {
- final NoSqlAppender appender = NoSqlAppender.createAppender("myName01", null, null, null, provider);
-
- assertNotNull("The appender should not be null.", appender);
- assertEquals("The toString value is not correct.",
- "myName01{ manager=noSqlManager{ description=myName01, bufferSize=0, provider=" + provider + " } }",
- appender.toString());
-
- appender.stop();
- }
-
- @Test
- public void testProviderBuffer() {
- final NoSqlAppender appender = NoSqlAppender.createAppender("anotherName02", null, null, "25", provider);
-
- assertNotNull("The appender should not be null.", appender);
- assertEquals("The toString value is not correct.",
- "anotherName02{ manager=noSqlManager{ description=anotherName02, bufferSize=25, provider=" + provider
- + " } }", appender.toString());
-
- appender.stop();
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java b/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java
deleted file mode 100644
index af55e2c..0000000
--- a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java
+++ /dev/null
@@ -1,427 +0,0 @@
-/*
- * 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.nosql.appender;
-
-import java.io.IOException;
-import java.sql.SQLException;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.MarkerManager;
-import org.apache.logging.log4j.ThreadContext;
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.core.appender.AppenderLoggingException;
-import org.apache.logging.log4j.core.impl.Log4jLogEvent;
-import org.apache.logging.log4j.junit.ThreadContextStackRule;
-import org.apache.logging.log4j.message.Message;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.Mock;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.runners.MockitoJUnitRunner;
-import org.mockito.stubbing.Answer;
-
-import static org.junit.Assert.*;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.BDDMockito.given;
-import static org.mockito.BDDMockito.then;
-import static org.mockito.Mockito.mock;
-
-@RunWith(MockitoJUnitRunner.class)
-public class NoSqlDatabaseManagerTest {
- @Mock
- private NoSqlConnection<Map<String, Object>, DefaultNoSqlObject> connection;
- @Mock
- private NoSqlProvider<NoSqlConnection<Map<String, Object>, DefaultNoSqlObject>> provider;
- @Mock
- private Message message;
- @Captor
- private ArgumentCaptor<NoSqlObject<Map<String, Object>>> captor;
-
- @Rule
- public final ThreadContextStackRule threadContextRule = new ThreadContextStackRule();
- @Rule
- public final ExpectedException expectedException = ExpectedException.none();
-
- @Before
- public void setUp() {
- given(provider.getConnection()).willReturn(connection);
- given(connection.createObject()).willAnswer(new Answer<DefaultNoSqlObject>() {
- @Override
- public DefaultNoSqlObject answer(final InvocationOnMock invocation) throws Throwable {
- return new DefaultNoSqlObject();
- }
- });
- given(connection.createList(anyInt())).willAnswer(new Answer<DefaultNoSqlObject[]>() {
- @Override
- public DefaultNoSqlObject[] answer(final InvocationOnMock invocation) throws Throwable {
- return new DefaultNoSqlObject[invocation.<Integer>getArgument(0)];
- }
- });
- }
-
- @Test
- public void testConnection() {
- try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0,
- provider)) {
-
- assertNotNull("The manager should not be null.", manager);
-
- manager.connectAndStart();
- then(provider).should().getConnection();
- manager.commitAndClose();
- }
- }
-
- @Test
- public void testWriteInternalNotConnected01() {
- try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0,
- provider)) {
- expectedException.expect(AppenderLoggingException.class);
- manager.writeInternal(mock(LogEvent.class));
- }
- }
-
- @Test
- public void testWriteInternalNotConnected02() {
- given(connection.isClosed()).willReturn(true);
-
- try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0,
- provider)) {
-
- manager.startup();
- manager.connectAndStart();
- then(provider).should().getConnection();
-
- expectedException.expect(AppenderLoggingException.class);
- manager.writeInternal(mock(LogEvent.class));
- }
- }
-
- @Test
- public void testWriteInternal01() {
- given(connection.isClosed()).willReturn(false);
- given(message.getFormattedMessage()).willReturn("My formatted message 01.");
-
- try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0,
- provider)) {
-
- manager.startup();
- manager.connectAndStart();
- then(provider).should().getConnection();
-
- final LogEvent event = Log4jLogEvent.newBuilder()
- .setLevel(Level.WARN)
- .setLoggerName("com.foo.NoSQLDbTest.testWriteInternal01")
- .setMessage(message)
- .setSource(new StackTraceElement("com.foo.Bar", "testMethod01", "Bar.java", 15))
- .setThreadId(1L)
- .setThreadName("MyThread-A")
- .setThreadPriority(1)
- .setTimeMillis(1234567890123L)
- .build();
-
- manager.writeInternal(event);
- then(connection).should().insertObject(captor.capture());
-
- final NoSqlObject<Map<String, Object>> inserted = captor.getValue();
- assertNotNull("The inserted value should not be null.", inserted);
- final Map<String, Object> object = inserted.unwrap();
- assertNotNull("The unwrapped object should not be null.", object);
-
- assertEquals("The level is not correct.", Level.WARN, object.get("level"));
- assertEquals("The logger is not correct.", "com.foo.NoSQLDbTest.testWriteInternal01",
- object.get("loggerName"));
- assertEquals("The message is not correct.", "My formatted message 01.", object.get("message"));
- assertEquals("The thread is not correct.", "MyThread-A", object.get("threadName"));
- assertEquals("The millis is not correct.", 1234567890123L, object.get("millis"));
- assertEquals("The date is not correct.", 1234567890123L, ((Date) object.get("date")).getTime());
-
- assertTrue("The source should be a map.", object.get("source") instanceof Map);
- @SuppressWarnings("unchecked")
- final Map<String, Object> source = (Map<String, Object>) object.get("source");
- assertEquals("The class is not correct.", "com.foo.Bar", source.get("className"));
- assertEquals("The method is not correct.", "testMethod01", source.get("methodName"));
- assertEquals("The file name is not correct.", "Bar.java", source.get("fileName"));
- assertEquals("The line number is not correct.", 15, source.get("lineNumber"));
-
- assertNull("The marker should be null.", object.get("marker"));
-
- assertNull("The thrown should be null.", object.get("thrown"));
-
- assertTrue("The context map should be empty.", ((Map) object.get("contextMap")).isEmpty());
-
- assertTrue("The context stack should be null.", ((Collection) object.get("contextStack")).isEmpty());
-
- }
- }
-
- @Test
- public void testWriteInternal02() {
- given(connection.isClosed()).willReturn(false);
- given(message.getFormattedMessage()).willReturn("Another cool message 02.");
-
- try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0,
- provider)) {
- manager.startup();
-
- manager.connectAndStart();
- then(provider).should().getConnection();
-
- final RuntimeException exception = new RuntimeException("This is something cool!");
- final Map<String, String> context = new HashMap<>();
- context.put("hello", "world");
- context.put("user", "pass");
-
- ThreadContext.push("message1");
- ThreadContext.push("stack2");
- final ThreadContext.ContextStack stack = ThreadContext.getImmutableStack();
- ThreadContext.clearStack();
-
- final LogEvent event = Log4jLogEvent.newBuilder()
- .setLevel(Level.DEBUG)
- .setLoggerName("com.foo.NoSQLDbTest.testWriteInternal02")
- .setMessage(message)
- .setSource(new StackTraceElement("com.bar.Foo", "anotherMethod03", "Foo.java", 9))
- .setMarker(MarkerManager.getMarker("LoneMarker"))
- .setThreadId(1L)
- .setThreadName("AnotherThread-B")
- .setThreadPriority(1)
- .setTimeMillis(987654321564L)
- .setThrown(exception)
- .setContextMap(context)
- .setContextStack(stack)
- .build();
-
- manager.writeInternal(event);
- then(connection).should().insertObject(captor.capture());
-
- final NoSqlObject<Map<String, Object>> inserted = captor.getValue();
- assertNotNull("The inserted value should not be null.", inserted);
- final Map<String, Object> object = inserted.unwrap();
- assertNotNull("The unwrapped object should not be null.", object);
-
- assertEquals("The level is not correct.", Level.DEBUG, object.get("level"));
- assertEquals("The logger is not correct.", "com.foo.NoSQLDbTest.testWriteInternal02",
- object.get("loggerName"));
- assertEquals("The message is not correct.", "Another cool message 02.", object.get("message"));
- assertEquals("The thread is not correct.", "AnotherThread-B", object.get("threadName"));
- assertEquals("The millis is not correct.", 987654321564L, object.get("millis"));
- assertEquals("The date is not correct.", 987654321564L, ((Date) object.get("date")).getTime());
-
- assertTrue("The source should be a map.", object.get("source") instanceof Map);
- @SuppressWarnings("unchecked")
- final Map<String, Object> source = (Map<String, Object>) object.get("source");
- assertEquals("The class is not correct.", "com.bar.Foo", source.get("className"));
- assertEquals("The method is not correct.", "anotherMethod03", source.get("methodName"));
- assertEquals("The file name is not correct.", "Foo.java", source.get("fileName"));
- assertEquals("The line number is not correct.", 9, source.get("lineNumber"));
-
- assertTrue("The marker should be a map.", object.get("marker") instanceof Map);
- @SuppressWarnings("unchecked")
- final Map<String, Object> marker = (Map<String, Object>) object.get("marker");
- assertEquals("The marker name is not correct.", "LoneMarker", marker.get("name"));
- assertNull("The marker parent should be null.", marker.get("parent"));
-
- assertTrue("The thrown should be a map.", object.get("thrown") instanceof Map);
- @SuppressWarnings("unchecked")
- final Map<String, Object> thrown = (Map<String, Object>) object.get("thrown");
- assertEquals("The thrown type is not correct.", "java.lang.RuntimeException", thrown.get("type"));
- assertEquals("The thrown message is not correct.", "This is something cool!", thrown.get("message"));
- assertTrue("The thrown stack trace should be a list.", thrown.get("stackTrace") instanceof List);
- @SuppressWarnings("unchecked")
- final List<Map<String, Object>> stackTrace = (List<Map<String, Object>>) thrown.get("stackTrace");
- assertEquals("The thrown stack trace length is not correct.", exception.getStackTrace().length,
- stackTrace.size());
- for (int i = 0; i < exception.getStackTrace().length; i++) {
- final StackTraceElement e1 = exception.getStackTrace()[i];
- final Map<String, Object> e2 = stackTrace.get(i);
-
- assertEquals("Element class name [" + i + "] is not correct.", e1.getClassName(), e2.get("className"));
- assertEquals("Element method name [" + i + "] is not correct.", e1.getMethodName(),
- e2.get("methodName"));
- assertEquals("Element file name [" + i + "] is not correct.", e1.getFileName(), e2.get("fileName"));
- assertEquals("Element line number [" + i + "] is not correct.", e1.getLineNumber(),
- e2.get("lineNumber"));
- }
- assertNull("The thrown should have no cause.", thrown.get("cause"));
-
- assertTrue("The context map should be a map.", object.get("contextMap") instanceof Map);
- assertEquals("The context map is not correct.", context, object.get("contextMap"));
-
- assertTrue("The context stack should be list.", object.get("contextStack") instanceof List);
- assertEquals("The context stack is not correct.", stack.asList(), object.get("contextStack"));
- }
- }
-
- @Test
- public void testWriteInternal03() {
- given(connection.isClosed()).willReturn(false);
- given(message.getFormattedMessage()).willReturn("Another cool message 02.");
-
- try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0,
- provider)) {
- manager.startup();
-
- manager.connectAndStart();
- then(provider).should().getConnection();
-
- final IOException exception1 = new IOException("This is the cause.");
- final SQLException exception2 = new SQLException("This is the result.", exception1);
- final Map<String, String> context = new HashMap<>();
- context.put("hello", "world");
- context.put("user", "pass");
-
- ThreadContext.push("message1");
- ThreadContext.push("stack2");
- final ThreadContext.ContextStack stack = ThreadContext.getImmutableStack();
- ThreadContext.clearStack();
-
- final LogEvent event = Log4jLogEvent.newBuilder()
- .setLevel(Level.DEBUG)
- .setLoggerName("com.foo.NoSQLDbTest.testWriteInternal02")
- .setMessage(message)
- .setSource(new StackTraceElement("com.bar.Foo", "anotherMethod03", "Foo.java", 9))
- .setMarker(MarkerManager.getMarker("AnotherMarker").addParents(
- MarkerManager.getMarker("Parent1").addParents(MarkerManager.getMarker("GrandParent1")),
- MarkerManager.getMarker("Parent2")))
- .setThreadId(1L)
- .setThreadName("AnotherThread-B")
- .setThreadPriority(1)
- .setTimeMillis(987654321564L)
- .setThrown(exception2)
- .setContextMap(context)
- .setContextStack(stack)
- .build();
-
- manager.writeInternal(event);
- then(connection).should().insertObject(captor.capture());
-
- final NoSqlObject<Map<String, Object>> inserted = captor.getValue();
- assertNotNull("The inserted value should not be null.", inserted);
- final Map<String, Object> object = inserted.unwrap();
- assertNotNull("The unwrapped object should not be null.", object);
-
- assertEquals("The level is not correct.", Level.DEBUG, object.get("level"));
- assertEquals("The logger is not correct.", "com.foo.NoSQLDbTest.testWriteInternal02",
- object.get("loggerName"));
- assertEquals("The message is not correct.", "Another cool message 02.", object.get("message"));
- assertEquals("The thread is not correct.", "AnotherThread-B", object.get("threadName"));
- assertEquals("The millis is not correct.", 987654321564L, object.get("millis"));
- assertEquals("The date is not correct.", 987654321564L, ((Date) object.get("date")).getTime());
-
- assertTrue("The source should be a map.", object.get("source") instanceof Map);
- @SuppressWarnings("unchecked")
- final Map<String, Object> source = (Map<String, Object>) object.get("source");
- assertEquals("The class is not correct.", "com.bar.Foo", source.get("className"));
- assertEquals("The method is not correct.", "anotherMethod03", source.get("methodName"));
- assertEquals("The file name is not correct.", "Foo.java", source.get("fileName"));
- assertEquals("The line number is not correct.", 9, source.get("lineNumber"));
-
- assertTrue("The marker should be a map.", object.get("marker") instanceof Map);
- @SuppressWarnings("unchecked")
- final Map<String, Object> marker = (Map<String, Object>) object.get("marker");
- assertEquals("The marker name is not correct.", "AnotherMarker", marker.get("name"));
-
- assertTrue("The marker parents should be a list.", marker.get("parents") instanceof List);
- @SuppressWarnings("unchecked")
- final List<Object> markerParents = (List<Object>) marker.get("parents");
- assertEquals("The marker parents should contain two parents", 2, markerParents.size());
-
- assertTrue("The marker parents[0] should be a map.", markerParents.get(0) instanceof Map);
- @SuppressWarnings("unchecked")
- final Map<String, Object> parent1 = (Map<String, Object>) markerParents.get(0);
- assertEquals("The first marker parent name is not correct.", "Parent1", parent1.get("name"));
-
- assertTrue("The marker parents[1] should be a map.", markerParents.get(1) instanceof Map);
- @SuppressWarnings("unchecked")
- final Map<String, Object> parent2 = (Map<String, Object>) markerParents.get(1);
- assertEquals("The second marker parent name is not correct.", "Parent2", parent2.get("name"));
- assertNull("The second marker should have no parent.", parent2.get("parent"));
-
- assertTrue("The parent1 parents should be a list.", parent1.get("parents") instanceof List);
- @SuppressWarnings("unchecked")
- final List<Object> parent1Parents = (List<Object>) parent1.get("parents");
- assertEquals("The parent1 parents should have only one parent", 1, parent1Parents.size());
-
- assertTrue("The parent1Parents[0] should be a map.", parent1Parents.get(0) instanceof Map);
- @SuppressWarnings("unchecked")
- final Map<String, Object> parent1parent = (Map<String, Object>) parent1Parents.get(0);
- assertEquals("The first parent1 parent name is not correct.", "GrandParent1", parent1parent.get("name"));
- assertNull("The parent1parent marker should have no parent.", parent1parent.get("parent"));
-
- assertTrue("The thrown should be a map.", object.get("thrown") instanceof Map);
- @SuppressWarnings("unchecked")
- final Map<String, Object> thrown = (Map<String, Object>) object.get("thrown");
- assertEquals("The thrown type is not correct.", "java.sql.SQLException", thrown.get("type"));
- assertEquals("The thrown message is not correct.", "This is the result.", thrown.get("message"));
- assertTrue("The thrown stack trace should be a list.", thrown.get("stackTrace") instanceof List);
- @SuppressWarnings("unchecked")
- final List<Map<String, Object>> stackTrace = (List<Map<String, Object>>) thrown.get("stackTrace");
- assertEquals("The thrown stack trace length is not correct.", exception2.getStackTrace().length,
- stackTrace.size());
- for (int i = 0; i < exception2.getStackTrace().length; i++) {
- final StackTraceElement e1 = exception2.getStackTrace()[i];
- final Map<String, Object> e2 = stackTrace.get(i);
-
- assertEquals("Element class name [" + i + "] is not correct.", e1.getClassName(), e2.get("className"));
- assertEquals("Element method name [" + i + "] is not correct.", e1.getMethodName(),
- e2.get("methodName"));
- assertEquals("Element file name [" + i + "] is not correct.", e1.getFileName(), e2.get("fileName"));
- assertEquals("Element line number [" + i + "] is not correct.", e1.getLineNumber(),
- e2.get("lineNumber"));
- }
- assertTrue("The thrown cause should be a map.", thrown.get("cause") instanceof Map);
- @SuppressWarnings("unchecked")
- final Map<String, Object> cause = (Map<String, Object>) thrown.get("cause");
- assertEquals("The cause type is not correct.", "java.io.IOException", cause.get("type"));
- assertEquals("The cause message is not correct.", "This is the cause.", cause.get("message"));
- assertTrue("The cause stack trace should be a list.", cause.get("stackTrace") instanceof List);
- @SuppressWarnings("unchecked")
- final List<Map<String, Object>> causeStackTrace = (List<Map<String, Object>>) cause.get("stackTrace");
- assertEquals("The cause stack trace length is not correct.", exception1.getStackTrace().length,
- causeStackTrace.size());
- for (int i = 0; i < exception1.getStackTrace().length; i++) {
- final StackTraceElement e1 = exception1.getStackTrace()[i];
- final Map<String, Object> e2 = causeStackTrace.get(i);
-
- assertEquals("Element class name [" + i + "] is not correct.", e1.getClassName(), e2.get("className"));
- assertEquals("Element method name [" + i + "] is not correct.", e1.getMethodName(),
- e2.get("methodName"));
- assertEquals("Element file name [" + i + "] is not correct.", e1.getFileName(), e2.get("fileName"));
- assertEquals("Element line number [" + i + "] is not correct.", e1.getLineNumber(),
- e2.get("lineNumber"));
- }
- assertNull("The cause should have no cause.", cause.get("cause"));
-
- assertTrue("The context map should be a map.", object.get("contextMap") instanceof Map);
- assertEquals("The context map is not correct.", context, object.get("contextMap"));
-
- assertTrue("The context stack should be list.", object.get("contextStack") instanceof List);
- assertEquals("The context stack is not correct.", stack.asList(), object.get("contextStack"));
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/test/resources/log4j2-mongodb-auth.xml
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/test/resources/log4j2-mongodb-auth.xml b/log4j-nosql/src/test/resources/log4j2-mongodb-auth.xml
deleted file mode 100644
index 2eec2b6..0000000
--- a/log4j-nosql/src/test/resources/log4j2-mongodb-auth.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
-
--->
-<Configuration status="error">
- <Appenders>
- <NoSql name="MongoDbAppender">
- <MongoDb databaseName="test" collectionName="applog" server="localhost" userName="log4jUser" password="12345678"/>
- </NoSql>
- </Appenders>
- <Loggers>
- <Root level="ALL">
- <AppenderRef ref="MongoDbAppender" />
- </Root>
- </Loggers>
-</Configuration>
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/test/resources/log4j2-mongodb-capped.xml
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/test/resources/log4j2-mongodb-capped.xml b/log4j-nosql/src/test/resources/log4j2-mongodb-capped.xml
deleted file mode 100644
index 24d964b..0000000
--- a/log4j-nosql/src/test/resources/log4j2-mongodb-capped.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
-
--->
-<Configuration status="error">
- <Appenders>
- <NoSql name="MongoDbAppender">
- <MongoDb databaseName="test" collectionName="applog" server="localhost" capped="true" collectionSize="1073741824" />
- </NoSql>
- </Appenders>
- <Loggers>
- <Root level="ALL">
- <AppenderRef ref="MongoDbAppender" />
- </Root>
- </Loggers>
-</Configuration>