/** * */ package org.openntf.domino.graph; import java.lang.reflect.Method; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import com.tinkerpop.blueprints.Element; /** * @author nfreeman * */ @Deprecated public interface IDominoProperties { public enum Reflect { ; private static IDominoProperties[] EMPTY_PROPS = new IDominoProperties[0]; private static Map<Class<?>, IDominoProperties[]> MAPPED_PROPERTIES = new ConcurrentHashMap<Class<?>, IDominoProperties[]>(); public static IDominoProperties[] getMappedProperties(final Class<? extends Element> cls) { if (MAPPED_PROPERTIES.get(cls) == null) { try { Method crystal = cls.getMethod("getMappedProperties", (Class[]) null); if (crystal != null) { Object raw = crystal.invoke(null, (Object[]) null); if (IDominoProperties[].class.isAssignableFrom(raw.getClass())) { synchronized (MAPPED_PROPERTIES) { MAPPED_PROPERTIES.put(cls, (IDominoProperties[]) raw); } return (IDominoProperties[]) raw; } } } catch (Exception e) { } MAPPED_PROPERTIES.put(cls, EMPTY_PROPS); } return MAPPED_PROPERTIES.get(cls); } public static IDominoProperties findMappedProperty(final Class<? extends Element> cls, final String prop) { IDominoProperties result = null; for (IDominoProperties curProp : getMappedProperties(cls)) { if (curProp.getName().equalsIgnoreCase(prop)) { result = curProp; break; } } return result; } } public String getName(); public Class<?> getType(); }