View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements. See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache license, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License. You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the license for the specific language governing permissions and
15   * limitations under the license.
16   */
17  package org.apache.logging.log4j.core.appender.nosql;
18  
19  /**
20   * Represents a simple POJO object inserted into a NoSQL object.
21   *
22   * @param <W> Specifies what type of underlying object (such as a MongoDB BasicDBObject) this NoSqlObject wraps.
23   */
24  public interface NoSqlObject<W> {
25      /**
26       * Sets the value of a property on this object to a String or primitive.
27       *
28       * @param field The name of the property
29       * @param value The value of the property
30       */
31      void set(String field, Object value);
32  
33      /**
34       * Sets the value of a property on this object to a nested complex object.
35       *
36       * @param field The name of the property
37       * @param value The value of the property
38       */
39      void set(String field, NoSqlObject<W> value);
40  
41      /**
42       * Sets the value of a property on this object to an array of Strings or primitives.
43       *
44       * @param field The name of the property
45       * @param values The values for the property
46       */
47      void set(String field, Object[] values);
48  
49      /**
50       * Sets the value of a property on this object to an array of nested complex objects.
51       *
52       * @param field The name of the property
53       * @param values The values for the property
54       */
55      void set(String field, NoSqlObject<W>[] values);
56  
57      /**
58       * Obtains the underlying NoSQL library-specific object that this object wraps.
59       *
60       * @return the wrapped object.
61       */
62      W unwrap();
63  }