Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
package de.bund.bva.isyfact.logging.util;
/*
* #%L
* isy-logging
* %%
*
* %%
* See the NOTICE file distributed with this work for additional
* information regarding copyright ownership.
* The Federal Office of Administration (Bundesverwaltungsamt, BVA)
* 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.
* #L%
*/
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Array;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import de.bund.bva.isyfact.logging.exceptions.SerialisierungException;
import de.bund.bva.isyfact.logging.impl.FehlerSchluessel;
/**
* Konverter, um ein Bean in eine Map umzuwandeln, die als Eingabe der Serialisierung in JSON dient.
*/
public class BeanToMapConverter implements BeanConverter {
/** List mit zu berücksichtigenden Packages. Diese wird für die Filterung einzelner Propterties verwendet. */
private final List includes;
/** List mit zu ignorierenden Packages. Diese wird für die Filterung einzelner Propterties verwendet. */
private final List excludes;
/** Der zu verwendende String für Null-Werte. */
public static final String NULL_STRING = "null";
/** Der zu verwendende String für die Ausgabe des HashCodes. */
public static final String HASHCODE_KEY = "hashCode";
/** Der zu verwendende String für bei der Ausgabe eines excludierten Objects.. */
public static final String EXCLUDED_VALUE = "NICHT_SERIALISIERT";
/**
* Konstruktor der Klasse. Initialisiert die übergebenen Properties.
*
* @param includes
* List der zu berücksichtigenden Packages.
* @param excludes
* List der zu ignorierenden Packages.
*/
public BeanToMapConverter(List includes, List excludes) {
this.includes = includes;
this.excludes = excludes;
}
/** Enum zum bestimmen der Art in der die Verarbeitung einer Property stattfinden soll. */
protected enum ConversionStyle {
/** Die Property wird rekursiv durchlaufen. */
RECURSIVE,
/** Auf der Property wird die "toString-Methode" aufgerufen. */
TOSTRING,
/** Die Property wird ignoriert. */
IGNORE;
}
/**
* {@inheritDoc}
*
* @see de.bund.bva.isyfact.logging.util.BeanConverter#convert(java.lang.Object)
*/
@Override
public Object convert(Object bean) {
// Null wird als 'null' in die Serialisierung gegeben.
if (bean == null) {
return NULL_STRING;
}
try {
return processValue(bean, new HashSet