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

org.infinispan.factories.AbstractComponentFactory Maven / Gradle / Ivy

There is a newer version: 9.1.7.Final
Show newest version
package org.infinispan.factories;

import org.infinispan.commons.CacheConfigurationException;
import org.infinispan.configuration.global.GlobalConfiguration;
import org.infinispan.factories.annotations.Inject;
import org.infinispan.factories.scopes.Scope;
import org.infinispan.factories.scopes.Scopes;

/**
 * Factory that creates components used internally within Infinispan, and also wires dependencies into the components.
 * 

* The {@link InternalCacheFactory} is a special subclass of this, which bootstraps the construction of other * components. When this class is loaded, it maintains a static list of known default factories for known components, * which it then delegates to, when actually performing the construction. *

* * @author Manik Surtani ([email protected]) * @see Inject * @see ComponentRegistry * @since 4.0 */ @Scope(Scopes.GLOBAL) public abstract class AbstractComponentFactory { protected GlobalComponentRegistry globalComponentRegistry; protected GlobalConfiguration globalConfiguration; /** * Constructs a new ComponentFactory. */ public AbstractComponentFactory() { } @Inject private void injectGlobalDependencies(GlobalConfiguration globalConfiguration, GlobalComponentRegistry globalComponentRegistry) { this.globalComponentRegistry = globalComponentRegistry; this.globalConfiguration = globalConfiguration; } /** * Constructs a component. * * @param componentType type of component * @return a component */ public abstract T construct(Class componentType); protected void assertTypeConstructable(Class requestedType, Class... ableToConstruct) { boolean canConstruct = false; for (Class c : ableToConstruct) { canConstruct = canConstruct || requestedType.isAssignableFrom(c); } if (!canConstruct) throw new CacheConfigurationException("Don't know how to construct " + requestedType); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy