001    /*
002    /*
003     * Copyright (c) 2005 Stephen J. McConnell
004     *
005     * Licensed  under the  Apache License,  Version 2.0  (the "License");
006     * you may not use  this file  except in  compliance with the License.
007     * You may obtain a copy of the License at
008     *
009     *   http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed  under the  License is distributed on an "AS IS" BASIS,
013     * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
014     * implied.
015     *
016     * See the License for the specific language governing permissions and
017     * limitations under the License.
018     */
019    
020    package net.dpml.metro.tools;
021    
022    import java.io.IOException;
023    import java.beans.IntrospectionException;
024    
025    import net.dpml.metro.info.Type;
026    
027    /**
028     * The contract for builders that create component types.
029     *
030     * @author <a href="http://www.dpml.net">Digital Product Meta Library</a>
031     * @version 1.1.3
032     */
033    public interface TypeBuilder
034    {
035       /**
036        * Build a part type.
037        * @param classloader the classloader
038        * @return the serializable part type.
039        * @exception IntrospectionException if a introspection occurs during type construction
040        * @exception IOException if an I/O exception occurs
041        */
042        Type buildType( ClassLoader classloader ) 
043           throws IntrospectionException, IOException;
044    
045    }