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 net.dpml.lang.Value;
023    
024    /**
025     * The contract for builders that create value datatypes.
026     *
027     * @author <a href="http://www.dpml.net">Digital Product Meta Library</a>
028     * @version 1.1.3
029     */
030    public interface ValueBuilder
031    {
032       /**
033        * Build a value datastructure.
034        * @param classloader the working classloader
035        * @return the serializable value descriptor
036        */
037        Value buildValue( ClassLoader classloader );
038        
039       /**
040        * Return the base classname.
041        * @param classloader the working classloader
042        * @return the target class
043        */
044        Class getTargetClass( ClassLoader classloader );
045    }