001    package ezvcard.types;
002    
003    import ezvcard.parameters.TypeParameter;
004    
005    /*
006    Copyright (c) 2012, Michael Angstadt
007    All rights reserved.
008    
009    Redistribution and use in source and binary forms, with or without
010    modification, are permitted provided that the following conditions are met: 
011    
012    1. Redistributions of source code must retain the above copyright notice, this
013       list of conditions and the following disclaimer. 
014    2. Redistributions in binary form must reproduce the above copyright notice,
015       this list of conditions and the following disclaimer in the documentation
016       and/or other materials provided with the distribution. 
017    
018    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
019    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
020    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
021    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
022    ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
023    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
024    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
025    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
026    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
027    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
028    
029    The views and conclusions contained in the software and documentation are those
030    of the authors and should not be interpreted as representing official policies, 
031    either expressed or implied, of the FreeBSD Project.
032    */
033    
034    /**
035     * Represents a type that has a TYPE parameter.
036     * @author Michael Angstadt
037     */
038    public abstract class TypeParameterType<T extends TypeParameter> extends VCardType {
039            public TypeParameterType(String name) {
040                    super(name);
041            }
042            
043            /**
044             * Builds an object that wraps the value of the TYPE parameter.
045             * @param type the value of the TYPE parameter
046             * @return the object wrapper
047             */
048            protected abstract T buildTypeObj(String type);
049    }