001 /*****************************************************************************
002 * Copyright (C) PicoContainer Organization. All rights reserved. *
003 * ------------------------------------------------------------------------- *
004 * The software in this package is published under the terms of the BSD *
005 * style license a copy of which has been included with this distribution in *
006 * the LICENSE.txt file. *
007 * *
008 * Original code by Leo Simmons & J?rg Schaible *
009 *****************************************************************************/
010 package org.picocontainer.gems.adapters;
011
012 import org.picocontainer.PicoContainer;
013 import org.picocontainer.PicoInitializationException;
014 import org.picocontainer.PicoIntrospectionException;
015 import org.picocontainer.PicoVerificationException;
016 import org.picocontainer.defaults.AbstractComponentAdapter;
017
018
019 /**
020 * Component adapter that wrapps a static factory with the help of {@link StaticFactory}.
021 *
022 * @author Jörg Schaible
023 * @author Leo Simmons
024 * @since 1.1
025 */
026 public class StaticFactoryComponentAdapter extends AbstractComponentAdapter {
027 private StaticFactory staticFactory;
028
029 /**
030 * Construct a ComponentAdapter accessing a static factory creating the component.
031 *
032 * @param type The type of the created component.
033 * @param staticFactory Wrapper instance for the static factory.
034 */
035 public StaticFactoryComponentAdapter(Class type, StaticFactory staticFactory) {
036
037 this(type, type, staticFactory);
038 }
039
040 /**
041 * Construct a ComponentAdapter accessing a static factory creating the component using a special key for component
042 * registration.
043 *
044 * @param componentKey The key of the created component.
045 * @param type The type of the created component.
046 * @param staticFactory Wrapper instance for the static factory.
047 */
048 public StaticFactoryComponentAdapter(Object componentKey, Class type, StaticFactory staticFactory) {
049 super(componentKey, type);
050 this.staticFactory = staticFactory;
051 }
052
053 /**
054 * @return Returns the component created by the static factory.
055 * @see org.picocontainer.ComponentAdapter#getComponentInstance(org.picocontainer.PicoContainer)
056 */
057 public Object getComponentInstance(PicoContainer container) throws PicoInitializationException, PicoIntrospectionException {
058 return staticFactory.get();
059 }
060
061 /**
062 * {@inheritDoc}
063 *
064 * @see org.picocontainer.ComponentAdapter#verify(org.picocontainer.PicoContainer)
065 */
066 public void verify(PicoContainer container) throws PicoVerificationException {
067 }
068 }