001package org.relaxng.datatype.helpers;
002
003import org.relaxng.datatype.*;
004
005/**
006 * Dummy implementation of {@link DatatypeBuilder}.
007 * 
008 * This implementation can be used for Datatypes which have no parameters.
009 * Any attempt to add parameters will be rejected.
010 * 
011 * <p>
012 * Typical usage would be:
013 * <PRE><XMP>
014 * class MyDatatypeLibrary implements DatatypeLibrary {
015 *     ....
016 *     DatatypeBuilder createDatatypeBuilder( String typeName ) {
017 *         return new ParameterleessDatatypeBuilder(createDatatype(typeName));
018 *     }
019 *     ....
020 * }
021 * </XMP></PRE>
022 * 
023 * @author <a href="mailto:kohsuke.kawaguchi@sun.com">Kohsuke KAWAGUCHI</a>
024 */
025public final class ParameterlessDatatypeBuilder implements DatatypeBuilder {
026
027        /** This type object is returned for the derive method. */
028        private final Datatype baseType;
029        
030        public ParameterlessDatatypeBuilder( Datatype baseType ) {
031                this.baseType = baseType;
032        }
033        
034        public void addParameter( String name, String strValue, ValidationContext context )
035                        throws DatatypeException {
036                throw new DatatypeException();
037        }
038        
039        public Datatype createDatatype() throws DatatypeException {
040                return baseType;
041        }
042}