001    /*
002     * JBoss DNA (http://www.jboss.org/dna)
003     * See the COPYRIGHT.txt file distributed with this work for information
004     * regarding copyright ownership.  Some portions may be licensed
005     * to Red Hat, Inc. under one or more contributor license agreements.
006     * See the AUTHORS.txt file in the distribution for a full listing of 
007     * individual contributors.
008     *
009     * JBoss DNA is free software. Unless otherwise indicated, all code in JBoss DNA
010     * is licensed to you under the terms of the GNU Lesser General Public License as
011     * published by the Free Software Foundation; either version 2.1 of
012     * the License, or (at your option) any later version.
013     * 
014     * JBoss DNA is distributed in the hope that it will be useful,
015     * but WITHOUT ANY WARRANTY; without even the implied warranty of
016     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017     * Lesser General Public License for more details.
018     *
019     * You should have received a copy of the GNU Lesser General Public
020     * License along with this software; if not, write to the Free
021     * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
022     * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
023     */
024    package org.jboss.dna.jcr.nodetype;
025    
026    import javax.jcr.RepositoryException;
027    import org.jboss.dna.common.util.CheckArg;
028    import org.jboss.dna.graph.property.Name;
029    
030    /**
031     * An exception that captures the error condition that a referenced node type already exists.
032     */
033    public class NodeTypeExistsException extends RepositoryException {
034    
035        /**
036         */
037        private static final long serialVersionUID = 1L;
038    
039        private Name nodeType;
040    
041        /**
042         * @param nodeType the name of the existing node type
043         */
044        public NodeTypeExistsException( Name nodeType ) {
045            super();
046            CheckArg.isNotNull(nodeType, "nodeType");
047            this.nodeType = nodeType;
048        }
049    
050        /**
051         * @param nodeType the name of the existing node type
052         * @param message
053         * @param rootCause
054         */
055        public NodeTypeExistsException( Name nodeType,
056                                        String message,
057                                        Throwable rootCause ) {
058            super(message, rootCause);
059            CheckArg.isNotNull(nodeType, "nodeType");
060            this.nodeType = nodeType;
061        }
062    
063        /**
064         * @param nodeType the name of the existing node type
065         * @param message
066         */
067        public NodeTypeExistsException( Name nodeType,
068                                        String message ) {
069            super(message);
070            CheckArg.isNotNull(nodeType, "nodeType");
071            this.nodeType = nodeType;
072        }
073    
074        /**
075         * @param nodeType the name of the existing node type
076         * @param rootCause
077         */
078        public NodeTypeExistsException( Name nodeType,
079                                        Throwable rootCause ) {
080            super(rootCause);
081            CheckArg.isNotNull(nodeType, "nodeType");
082            this.nodeType = nodeType;
083        }
084    
085        /**
086         * Get the name of the existing node type.
087         * 
088         * @return the existing node type name
089         */
090        public Name getNodeType() {
091            return nodeType;
092        }
093    
094    }