Coverage Report - net.sf.jguiraffe.gui.builder.BeanBuilder
 
Classes in this File Line Coverage Branch Coverage Complexity
BeanBuilder
N/A
N/A
1
 
 1  
 /*
 2  
  * Copyright 2006-2016 The JGUIraffe Team.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License")
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *     http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 package net.sf.jguiraffe.gui.builder;
 17  
 
 18  
 import net.sf.jguiraffe.di.ClassLoaderProvider;
 19  
 import net.sf.jguiraffe.di.InvocationHelper;
 20  
 import net.sf.jguiraffe.di.MutableBeanStore;
 21  
 import net.sf.jguiraffe.locators.Locator;
 22  
 
 23  
 /**
 24  
  * <p>
 25  
  * Definition of an interface for processing scripts with bean definitions.
 26  
  * </p>
 27  
  * <p>
 28  
  * A <em>bean builder</em> is able to create and populate
 29  
  * {@link net.sf.jguiraffe.di.BeanStore BeanStore} objects to be used by the
 30  
  * <em>dependency injection</em> framework. After a successful build operation
 31  
  * the defined beans can be easily accessed.
 32  
  * </p>
 33  
  * <p>
 34  
  * This interface is pretty lean. It defines methods for executing a script with
 35  
  * bean definitions. The return value is a data object, from which the
 36  
  * initialized <code>BeanStore</code> instances can be queried. Another method
 37  
  * can be called to free all resources used by produced beans. This method
 38  
  * should be called if the builder results are no longer needed.
 39  
  * </p>
 40  
  * <p>
 41  
  * For obtaining concrete implementations of this interface, usually a
 42  
  * {@link BeanBuilderFactory} is used.
 43  
  * </p>
 44  
  *
 45  
  * @author Oliver Heger
 46  
  * @version $Id: BeanBuilder.java 205 2012-01-29 18:29:57Z oheger $
 47  
  */
 48  
 public interface BeanBuilder
 49  
 {
 50  
     /**
 51  
      * Executes a script with bean definitions.
 52  
      *
 53  
      * @param script points to the script to be executed (must not be
 54  
      *        <b>null</b>)
 55  
      * @param rootStore the root <code>BeanStore</code> object; if defined, the
 56  
      *        processed bean definitions will be added to this store unless
 57  
      *        otherwise specified; if <b>null</b>, a new bean store will be
 58  
      *        created
 59  
      * @param loaderProvider an object with information about registered class
 60  
      *        loaders; can be <b>null</b>, then a default class loader provider
 61  
      *        will be used
 62  
      * @return an object providing access to the <code>BeanStore</code>
 63  
      *         instances created or populated during the builder operation
 64  
      * @throws BuilderException if an error occurs
 65  
      * @throws IllegalArgumentException if the script is <b>null</b>
 66  
      */
 67  
     BeanBuilderResult build(Locator script, MutableBeanStore rootStore,
 68  
             ClassLoaderProvider loaderProvider) throws BuilderException;
 69  
 
 70  
     /**
 71  
      * Executes a script with bean definitions and the specified helper objects.
 72  
      * With this method all helper objects taking part in the builder operation
 73  
      * can be specified. Passing the {@link InvocationHelper} can be useful if
 74  
      * the script defines special beans which require custom data type
 75  
      * converters. These converters can be configured in the
 76  
      * {@link net.sf.jguiraffe.di.ConversionHelper ConversionHelper} instance
 77  
      * contained in the {@link InvocationHelper}. It is possible to pass
 78  
      * <b>null</b> references for the helper objects. In this case default
 79  
      * objects are created.
 80  
      *
 81  
      * @param script points to the script to be executed (must not be
 82  
      *        <b>null</b>)
 83  
      * @param rootStore the root <code>BeanStore</code> object; if defined, the
 84  
      *        processed bean definitions will be added to this store unless
 85  
      *        otherwise specified; if <b>null</b>, a new bean store will be
 86  
      *        created
 87  
      * @param loaderProvider an object with information about registered class
 88  
      *        loaders; can be <b>null</b>, then a default class loader provider
 89  
      *        will be used
 90  
      * @param invHlp a helper object for reflection operations; can be
 91  
      *        <b>null</b>, then a default helper object will be used
 92  
      * @return an object providing access to the <code>BeanStore</code>
 93  
      *         instances created or populated during the builder operation
 94  
      * @throws BuilderException if an error occurs
 95  
      * @throws IllegalArgumentException if the script is <b>null</b>
 96  
      */
 97  
     BeanBuilderResult build(Locator script, MutableBeanStore rootStore,
 98  
             ClassLoaderProvider loaderProvider, InvocationHelper invHlp)
 99  
             throws BuilderException;
 100  
 
 101  
     /**
 102  
      * Releases the specified {@code BeanBuilderResult} object. This frees all
 103  
      * resources associated with that data object. Especially on all
 104  
      * {@code BeanProvider} objects found in one of the {@code BeanStore}s
 105  
      * referenced by the {@code BeanBuilderResult} object the {@code shutdown()}
 106  
      * method is called. When the data produced by a {@code BeanBuilder} is no
 107  
      * more needed clients should invoke this method to ensure a proper clean
 108  
      * up.
 109  
      *
 110  
      * @param result the {@code BeanBuilderResult} object to be released (must
 111  
      *        not be <b>null</b>)
 112  
      * @throws IllegalArgumentException if the data object is <b>null</b>
 113  
      */
 114  
     void release(BeanBuilderResult result);
 115  
 }