All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.leopard.web.security.xss.FieldCache Maven / Gradle / Ivy

The newest version!
package io.leopard.web.security.xss;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class FieldCache {

	private static Map> map = new ConcurrentHashMap>();

	protected static List listFields(Class clazz) {
		String className = clazz.getName();
		List list = map.get(className);
		if (list != null) {
			return list;
		}
		return loadFields(clazz, className);
	}

	protected static synchronized List loadFields(Class clazz, String className) {
		List list = map.get(className);
		if (list != null) {
			return list;
		}
		list = new ArrayList();
		while (true) {
			Field[] fields = clazz.getDeclaredFields();
			for (Field field : fields) {
				list.add(field);
			}
			if (clazz.getSuperclass() == null) {
				break;
			}
			clazz = clazz.getSuperclass();
		}
		map.put(className, list);
		return list;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy