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 Paul Hammant                                             *
009 *****************************************************************************/
010package org.picocontainer.containers;
011
012import org.picocontainer.*;
013import org.picocontainer.converters.ConvertsNothing;
014
015import java.io.Serializable;
016import java.util.Collection;
017import java.util.Collections;
018import java.util.List;
019import java.lang.annotation.Annotation;
020import java.lang.reflect.Type;
021
022/**
023 * Empty pico container serving as recoil damper in situations where you
024 * do not like to check whether container reference supplied to you
025 * is null or not
026 *
027 * @author Konstantin Pribluda
028 */
029@SuppressWarnings("serial")
030public class EmptyPicoContainer implements PicoContainer, Converting, Serializable {
031
032    @SuppressWarnings("unused") 
033    public Object getComponent(Object componentKeyOrType) {
034        return null;
035    }
036
037    @SuppressWarnings("unused") 
038    public Object getComponent(Object componentKeyOrType, Type into) {
039        return null;
040    }
041
042    @SuppressWarnings("unused") 
043    public <T> T getComponent(Class<T> componentType) {
044        return null;
045    }
046
047    @SuppressWarnings("unused") 
048    public <T> T getComponent(Class<T> componentType, Class<? extends Annotation> binding) {
049        return null;
050    }
051
052    public List getComponents() {
053        return Collections.EMPTY_LIST;
054    }
055
056    public PicoContainer getParent() {
057        return null;
058    }
059
060    @SuppressWarnings("unused") 
061    public ComponentAdapter<?> getComponentAdapter(Object componentKey) {
062        return null;
063    }
064
065    @SuppressWarnings("unused") 
066    public <T> ComponentAdapter<T> getComponentAdapter(Class<T> componentType, NameBinding componentNameBinding) {
067        return null;
068    }
069
070    @SuppressWarnings("unused") 
071    public <T> ComponentAdapter<T> getComponentAdapter(Class<T> componentType, Class<? extends Annotation> binding) {
072        return null;
073    }
074
075    public Collection<ComponentAdapter<?>> getComponentAdapters() {
076        return Collections.emptyList();
077    }
078
079    @SuppressWarnings("unused") 
080    public <T> List<ComponentAdapter<T>> getComponentAdapters(Class<T> componentType) {
081        return Collections.emptyList();
082    }
083
084    @SuppressWarnings("unused") 
085    public <T> List<ComponentAdapter<T>> getComponentAdapters(Class<T> componentType, Class<? extends Annotation> binding) {
086        return Collections.emptyList();
087    }
088
089    /**
090     * we do not have anything to do here. 
091     */
092    @SuppressWarnings("unused") 
093    public void accept(PicoVisitor visitor) {
094        //Does nothing.
095    }
096
097    /** {@inheritDoc} **/
098    @SuppressWarnings("unused") 
099    public <T> List<T> getComponents(Class<T> componentType) {
100        return Collections.emptyList();
101    }
102
103    @Override
104    public String toString() {
105        return "(empty)";
106    }
107
108    public Converters getConverters() {
109        return new ConvertsNothing();
110    }
111
112}