001// Copyright 2004, 2005 The Apache Software Foundation
002//
003// Licensed under the Apache License, Version 2.0 (the "License");
004// you may not use this file except in compliance with the License.
005// You may obtain a copy of the License at
006//
007//     http://www.apache.org/licenses/LICENSE-2.0
008//
009// Unless required by applicable law or agreed to in writing, software
010// distributed under the License is distributed on an "AS IS" BASIS,
011// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012// See the License for the specific language governing permissions and
013// limitations under the License.
014
015package org.apache.tapestry;
016
017import java.util.Collection;
018
019import org.apache.hivemind.ClassResolver;
020
021/**
022 *  An object that provides a component with access to helper beans.
023 *  Helper beans are JavaBeans associated with a page or component
024 *  that are used to extend the functionality of the component via
025 *  aggregation.
026 *
027 *  @author Howard Lewis Ship
028 *  @since 1.0.4
029 **/
030
031
032public interface IBeanProvider
033{
034        /**
035         *  Returns the JavaBean with the specified name.  The bean is created as needed.
036         *
037         *  @throws ApplicationRuntimeException if no such bean is available.
038         *
039         **/
040        
041        public Object getBean(String name);
042        
043        /**
044         *  Returns the {@link IComponent} (which may be a 
045         *  {@link org.apache.tapestry.IPage}) for which
046         *  this bean provider is providing beans.
047         *
048         *  @since 1.0.5
049         **/
050        
051        public IComponent getComponent();
052        
053        /**
054         *  Returns a collection of the names of any beans which may
055         *  be provided.
056         *
057         *  @since 1.0.6
058         *  @see org.apache.tapestry.spec.IComponentSpecification#getBeanNames()
059         *
060         **/
061        
062        public Collection getBeanNames();
063        
064    /**
065     *  Returns true if the provider can provide the named bean.
066     * 
067     *  @since 2.2
068     * 
069     **/
070    
071    public boolean canProvideBean(String name);
072    
073        /**
074         *  Returns a resource resolver.
075         * 
076         *  @since 1.0.8
077         * 
078         **/
079        
080        public ClassResolver getClassResolver();
081        
082}
083