blob: a6fc3e4045426a90e9f41b6ece845c009d4995ca [file] [log] [blame]
/*
* Copyright 2012-present Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package com.facebook.buck.json;
import static com.facebook.buck.util.BuckConstant.BUILD_RULES_FILE_NAME;
import com.facebook.buck.util.ExceptionWithHumanReadableMessage;
import java.io.IOException;
/**
* Thrown if we encounter an unexpected, fatal condition while interacting with the
* build file parser.
*/
@SuppressWarnings("serial")
public class BuildFileParseException extends Exception
implements ExceptionWithHumanReadableMessage {
private BuildFileParseException(String message) {
super(message);
}
static BuildFileParseException createForUnknownParseError(String message) {
return new BuildFileParseException(message);
}
private static String formatMessageWithCause(String message, IOException cause) {
if (cause != null && cause.getMessage() != null) {
return message + ": " + cause.getMessage();
} else {
return message;
}
}
static BuildFileParseException createForGenericBuildFileParseError(IOException cause) {
String message = String.format("Parse error while collecting %s files",
BUILD_RULES_FILE_NAME);
return new BuildFileParseException(formatMessageWithCause(message, cause));
}
static BuildFileParseException createForBuildFileParseError(String buildFilePath,
IOException cause) {
String message = String.format("Parse error for %s file %s",
BUILD_RULES_FILE_NAME,
buildFilePath);
return new BuildFileParseException(formatMessageWithCause(message, cause));
}
@Override
public String getHumanReadableErrorMessage() {
return getMessage();
}
}