001: /*
002: * Created on 01-Jan-2005
003: *
004: */
005: package com.jofti.introspect;
006:
007: import java.util.List;
008: import java.util.Map;
009: import java.util.Set;
010:
011: import com.jofti.config.IndexConfig;
012: import com.jofti.exception.JoftiException;
013:
014: /**
015: *
016: *
017: * Internal Interface used by the index implementations to obtain information about the
018: * Classes and objects to be indexed.<p>
019: *
020: * @author Steve Woodcock (Steve@jofti.com)
021: * @version 1.0
022: */
023: public interface ClassIntrospector {
024:
025: /**
026: * Parses the IndexConfig ovject to retrieve the class mappings to be used in the introspector.
027: * @param config
028: * @throws JoftiException
029: */
030: public void parseConfig(IndexConfig config) throws JoftiException;
031:
032: /**
033: * Returns the dimension in the introspector for the class and property name.<p>
034: * Key dimensions are negative and property dimenions are positive.
035: * @param className
036: * @param propertyName
037: * @return an int value representing dimensions.
038: * @throws JoftiException
039: */
040: public int getDimension(String className, String propertyName)
041: throws JoftiException;
042:
043: public int getDimension(Class clazz, String propertyName)
044: throws JoftiException;
045:
046: /**
047: Returns the dimension in the introspector for the class.<p>
048: * Key dimensions are negative.
049: * @param className
050: * @return an int representing the dimension
051: */
052: public int getKeyDimension(Class className);
053:
054: /**
055: * A map containing all the key dimensions and classes.
056: * @return a Map
057: */
058: public Map getKeyDimensions();
059:
060: /**
061: * A map containing all the non-key dimensions and classes.
062: * @return a Map
063: */
064: public Map getDimensions();
065:
066: /**
067: * Takes an object and returns a Map containing the values of the to be indexed properties in that class. The values are
068: * obtained by introspection from the class. The keys are dimesnions and the value is the actual value in the object for that dimension.<p>
069: * @param obj - the object to be introspected.
070: * @return A map of dimension to value mappings
071: * @throws JoftiException
072: */
073: public Map getAttributeValues(Object obj) throws JoftiException;
074:
075: /**
076: * Returns all the primitive classes the introspector has registered.
077: * @return a set of class names.
078: */
079: public Set getPrimitiveClasses();
080:
081: /**
082: *
083: * Gets the actual class that the className will return for the attribute name.
084: * @param className
085: * @param attribute
086: * @return the class of the return parameter.
087: * @throws JoftiException
088: */
089: public Class getClassForAttribute(Class className, String attribute)
090: throws JoftiException;
091:
092: public List getParsedObjectsForClass(Class clazz);
093:
094: public Object[] getMethodsForAttribute(Class clazz, String attribute)
095: throws JoftiException;
096:
097: public Object getResultFromMethods(Object obj, Object[] methods)
098: throws JoftiException;
099:
100: public Map getResultValuesFromObject(Map temp, Object obj,
101: Map methodMap);
102:
103: public Class boxPrimitive(Class clazz);
104:
105: }
|