001/* 002 * JDrupes Builder 003 * Copyright (C) 2026 Michael N. Lipp 004 * 005 * This program is free software: you can redistribute it and/or modify 006 * it under the terms of the GNU Affero General Public License as 007 * published by the Free Software Foundation, either version 3 of the 008 * License, or (at your option) any later version. 009 * 010 * This program is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Affero General Public License for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License 016 * along with this program. If not, see <https://www.gnu.org/licenses/>. 017 */ 018 019package org.jdrupes.builder.core; 020 021import org.jdrupes.builder.api.BuildException; 022import org.jdrupes.builder.api.BuildException.Reason; 023 024/// The Class BuildExceptionFormatter. 025/// 026public class DefaultBuildExceptionFormatter implements BuildExceptionFormatter { 027 028 /// Initializes a new default build exception formatter. 029 /// 030 public DefaultBuildExceptionFormatter() { 031 // Make javadoc happy 032 } 033 034 @Override 035 public String summary(BuildException exc) { 036 if (exc.reason() == Reason.Unavailable) { 037 return "Build failed"; 038 } 039 StringBuilder text = new StringBuilder(100); 040 exc.origin().ifPresent(p -> { 041 text.append(p.toString()); 042 }); 043 if (text.length() > 0) { 044 text.append(": "); 045 } 046 if (exc.getMessage() != null) { 047 text.append(exc.getMessage()); 048 } else if (exc.getCause() != null 049 && exc.getCause().getMessage() != null) { 050 text.append(exc.getCause().getMessage()); 051 } else { 052 switch (exc.reason()) { 053 case Unavailable: 054 text.append("failed"); 055 break; 056 case Configuration: 057 text.append("problem with build configuration"); 058 break; 059 default: 060 text.append("unspecified problem"); 061 } 062 } 063 return text.toString(); 064 } 065}