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

org.hibernate.annotations.common.reflection.ReflectionManager Maven / Gradle / Ivy

There is a newer version: 7.0.3.Final
Show newest version
/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or .
 */
package org.hibernate.annotations.common.reflection;

import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
import java.util.Map;

/**
 * The entry point to the reflection layer (a.k.a. the X* layer).
 *
 * @author Paolo Perrotta
 * @author Davide Marchignoli
 * @author Sanne Grinovero
 */
public interface ReflectionManager {
	/**
	 * Allows injection of a ClassLoaderDelegate into the ReflectionManager
	 *
	 * @param delegate The ClassLoaderDelegate to use
	 * @deprecated This will be removed with no replacement: it will no longer be needed.
	 */
	@Deprecated
	public void injectClassLoaderDelegate(ClassLoaderDelegate delegate);

	/**
	 * Access to the ClassLoaderDelegate currently associated with this ReflectionManager
	 *
	 * @return The current ClassLoaderDelegate
	 * @deprecated This will be removed with no replacement: it will no longer be needed.
	 */
	@Deprecated
	public ClassLoaderDelegate getClassLoaderDelegate();

	public  XClass toXClass(Class clazz);

	public Class toClass(XClass xClazz);

	public Method toMethod(XMethod method);

	/**
	 * Deprecated; do not use.
	 *
	 * @deprecated Instead use:
    *
  • * {@link #toXClass(Class)} after resolving the Class yourself *
  • *
  • * {@link #classForName(String)} after having injected the proper ClassLoaderDelegate to use via * {@link #injectClassLoaderDelegate} *
  • *
* * @param name * @param caller * @param * @return * @throws ClassNotFoundException * @deprecated This will be removed with no replacement: it will no longer be needed. */ @Deprecated public XClass classForName(String name, Class caller) throws ClassNotFoundException; /** * Given the name of a Class, retrieve the XClass representation. *

* Uses ClassLoaderDelegate (via {@link #getClassLoaderDelegate()}) to resolve the Class reference * * @param name The name of the Class to load (as an XClass) * * @return The XClass instance * * @throws ClassLoadingException Indicates a problem resolving the Class; see {@link ClassLoaderDelegate#classForName} * @deprecated This will be removed with no replacement: it will no longer be needed. */ @Deprecated public XClass classForName(String name) throws ClassLoadingException; /** * @deprecated This will be removed with no replacement: it will no longer be needed. * @param packageName * @return * @throws ClassNotFoundException */ @Deprecated public XPackage packageForName(String packageName) throws ClassNotFoundException; public XPackage toXPackage(Package pkg); public boolean equals(XClass class1, Class class2); public AnnotationReader buildAnnotationReader(AnnotatedElement annotatedElement); public Map getDefaults(); /** * This resets any internal caches. * This will free up memory in some implementations, at the cost of * possibly being a bit slower if its services are needed again. *

* Ideally the ReflectionManager should be discarded after use, * but sometimes that's not posible. * This method is intended to be used when there is reasonable * expectation for te ReflectionManager to no longer be needed, * while having the option to still use it in case the assumption * doesn't hold true. *

*

* Careful: after invoking this method, returned X* instances will * no longer honour any identity equality contract with X* instances * which have been returned before resetting the cache. *

* This operation does not affect the configuration. */ default void reset() { //By default a no-op } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy