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

org.refcodes.decoupling.DependencyInterceptor Maven / Gradle / Ivy

Go to download

Artifact for breaking up dependencies between components or modules of a software system (dependency injection and inversion of control).

There is a newer version: 3.3.8
Show newest version
// /////////////////////////////////////////////////////////////////////////////
// REFCODES.ORG
// /////////////////////////////////////////////////////////////////////////////
// This code is copyright (c) by Siegfried Steiner, Munich, Germany and licensed
// under the following (see "http://en.wikipedia.org/wiki/Multi-licensing")
// licenses:
// -----------------------------------------------------------------------------
// GNU General Public License, v3.0 ("http://www.gnu.org/licenses/gpl-3.0.html")
// -----------------------------------------------------------------------------
// Apache License, v2.0 ("http://www.apache.org/licenses/LICENSE-2.0")
// -----------------------------------------------------------------------------
// Please contact the copyright holding author(s) of the software artifacts in
// question for licensing issues not being covered by the above listed licenses,
// also regarding commercial licensing models or regarding the compatibility
// with other open source licenses.
// /////////////////////////////////////////////////////////////////////////////

package org.refcodes.decoupling;

/**
 * The {@link DependencyInterceptor} is a {@link FunctionalInterface} used to
 * hook into the process of creating instances from a {@link Dependency}
 * declaration: The instance being created can be decorated or enriched with
 * functionality providing means to implement a proxy mechanism or a decorator.
 * A {@link DependencyInterceptor} is registered with a {@link Reactor}.
 */
@FunctionalInterface
public interface DependencyInterceptor {

	/**
	 * Called by the {@link Reactor} for all registered
	 * {@link DependencyInterceptor} instances upon invoking the
	 * {@link Reactor#createContext() } (or the like) methods (this is the
	 * moment when the {@link Reactor} created the {@link Dependency}
	 * declarations' types). Any instance being created is passed through this
	 * method.
	 * 
	 * @param aInstance The instance created by the {@link Dependency}
	 *        declaration.
	 * @param aDependency The {@link Dependency} declaration used for crating
	 *        instances.
	 * 
	 * @return The dependency as of this {@link #intercept(Object, Dependency)}
	 *         method's processing.
	 */
	Object intercept( Object aInstance, Dependency aDependency );

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy