/*
* *****************************************************************************
* Cloud Foundry
* Copyright (c) [2009-2015] Pivotal Software, Inc. All Rights Reserved.
* This product is licensed to you under the Apache License, Version 2.0 (the "License").
* You may not use this product except in compliance with the License.
*
* This product includes a number of subcomponents with
* separate copyright notices and license terms. Your use of these
* subcomponents is subject to the terms and conditions of the
* subcomponent's license, as noted in the LICENSE file.
* *****************************************************************************
*/
package org.cloudfoundry.identity.uaa.util;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
public class NullifyFields {
public static void nullifyFields(Class clazz, Object o, boolean staticFieldsToo) throws Exception {
if (clazz==null) {
return;
}
if (!clazz.getName().startsWith("org.cloudfoundry.identity")) {
return;
}
for ( Field f : clazz.getDeclaredFields() ) {
boolean isStatic = Modifier.isStatic(f.getModifiers());
f.setAccessible(true);
if ( f.getType().isPrimitive() ) {
continue;
} else {
if ( staticFieldsToo && isStatic) {
nullifyField(clazz, f);
} else if (!isStatic && o!=null) {
nullifyField(o, f);
}
}
}
nullifyFields(clazz.getSuperclass(),o, staticFieldsToo);
}
protected static void nullifyField(Class clazz, Field f) throws IllegalAccessException {
boolean isStatic = Modifier.isStatic(f.getModifiers());
boolean isFinal = Modifier.isFinal(f.getModifiers());
if (isStatic && !isFinal) {
Object value = f.get(clazz);
if (value != null) {
f.set(clazz, null);
}
}
}
protected static void nullifyField(Object o, Field f) throws IllegalAccessException {
boolean isFinal = Modifier.isFinal(f.getModifiers());
Object value = f.get(o);
if ( value != null && !isFinal) {
f.set( o , null);
}
}
}