/* This file is part of the db4o object database http://www.db4o.com
Copyright (C) 2004 - 2011 Versant Corporation http://www.versant.com
db4o is free software; you can redistribute it and/or modify it under
the terms of version 3 of the GNU General Public License as published
by the Free Software Foundation.
db4o is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/. */
package com.db4o.reflect;
import com.db4o.foundation.DeepClone;
/**
* root of the reflection implementation API.
* <br><br>The open reflection interface is supplied to allow to implement
* reflection functionality on JDKs that do not come with the
* java.lang.reflect.* package.<br><br>
* Use {@link com.db4o.config.CommonConfiguration#reflectWith configuration.commmon().reflectWith(IReflect reflector)}
* to register the use of your implementation before opening database
* files.
*/
public interface Reflector extends DeepClone{
void configuration(ReflectorConfiguration config);
/**
* returns an ReflectArray object, the equivalent to java.lang.reflect.Array.
*/
public ReflectArray array();
/**
* returns an ReflectClass for a Class
*/
public ReflectClass forClass(Class clazz);
/**
* returns an ReflectClass class reflector for a class name or null
* if no such class is found
*/
public ReflectClass forName(String className);
/**
* returns an ReflectClass for an object or null if the passed object is null.
*/
public ReflectClass forObject(Object obj);
public boolean isCollection(ReflectClass clazz);
public void setParent(Reflector reflector);
}