001 /* -*- mode: Java; c-basic-offset: 2; indent-tabs-mode: nil -*- 002 * 003 * $Id$ 004 * 005 * Copyright (c) 2010-2011 Edugility LLC. 006 * 007 * Permission is hereby granted, free of charge, to any person 008 * obtaining a copy of this software and associated documentation 009 * files (the "Software"), to deal in the Software without 010 * restriction, including without limitation the rights to use, copy, 011 * modify, merge, publish, distribute, sublicense and/or sell copies 012 * of the Software, and to permit persons to whom the Software is 013 * furnished to do so, subject to the following conditions: 014 * 015 * The above copyright notice and this permission notice shall be 016 * included in all copies or substantial portions of the Software. 017 * 018 * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 019 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 020 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 021 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 022 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 023 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 024 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 025 * DEALINGS IN THE SOFTWARE. 026 * 027 * The original copy of this license is available at 028 * http://www.opensource.org/license/mit-license.html. 029 */ 030 package com.edugility.jpa.maven.plugin; 031 032 import java.io.File; 033 import java.io.IOException; 034 035 /** 036 * An {@link IOException} that results from a {@link File} failing 037 * validation of some kind. 038 * 039 * @author <a href="mailto:ljnelson@gmail.com">Laird Nelson</a> 040 * 041 * @version 1.0-SNAPSHOT 042 * 043 * @since 1.0-SNAPSHOT 044 * 045 * @see DirectoryException 046 */ 047 public abstract class FileException extends IOException { 048 049 /** 050 * The {@link File} that failed validation. This field may be 051 * {@code null}. 052 */ 053 private final File file; 054 055 /** 056 * Creates a new {@link FileException}. 057 * 058 * @param file the {@link File} whose validation failure caused this 059 * {@link FileException} to be thrown; may be {@code null} 060 */ 061 protected FileException(final File file) { 062 this(file, (Throwable)null, (String)null); 063 } 064 065 /** 066 * Creates a new {@link FileException}. 067 * 068 * @param file the {@link File} whose validation failure caused this 069 * {@link FileException} to be thrown; may be {@code null} 070 * 071 * @param message a detail message further explaining this {@link 072 * FileException}; may be {@code null} 073 */ 074 protected FileException(final File file, final String message) { 075 this(file, (Throwable)null, message); 076 } 077 078 /** 079 * Creates a new {@link FileException}. 080 * 081 * @param file the {@link File} whose validation failure caused this 082 * {@link FileException} to be thrown; may be {@code null} 083 * 084 * @param cause the {@link Throwable} that contributed to this 085 * {@link FileException}'s cause; may be {@code null} 086 * 087 * @param message a detail message further explaining this {@link 088 * FileException}; may be {@code null} 089 */ 090 protected FileException(final File file, final Throwable cause, final String message) { 091 super(message, cause); 092 this.file = file; 093 } 094 095 /** 096 * Returns the {@link File} whose validation failure caused this 097 * {@link FileException} to be thrown. 098 * 099 * <p>This method may return {@code null}.</p> 100 * 101 * @return the {@link File} whose validation failure caused this 102 * {@link FileException} to be thrown, or {@code null} 103 */ 104 public File getFile() { 105 return this.file; 106 } 107 108 }