package org.apache.maven.plugin.failsafe.util; /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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. */ import org.apache.maven.plugin.failsafe.xmlsummary.ErrorType; import org.apache.maven.plugin.failsafe.xmlsummary.FailsafeSummary; import org.apache.maven.surefire.suite.RunResult; import javax.xml.bind.JAXBException; import java.io.File; import java.io.IOException; import java.nio.charset.Charset; import static org.apache.maven.surefire.util.internal.StringUtils.UTF_8; /** * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a> * @since 2.20 */ public final class FailsafeSummaryXmlUtils { private FailsafeSummaryXmlUtils() { throw new IllegalStateException( "No instantiable constructor." ); } public static RunResult toRunResult( File failsafeSummaryXml ) throws JAXBException { FailsafeSummary failsafeSummary = JAXB.unmarshal( failsafeSummaryXml, FailsafeSummary.class ); return new RunResult( failsafeSummary.getCompleted(), failsafeSummary.getErrors(), failsafeSummary.getFailures(), failsafeSummary.getSkipped(), failsafeSummary.getFailureMessage(), failsafeSummary.isTimeout() ); } public static void fromRunResultToFile( RunResult fromRunResult, File toFailsafeSummaryXml ) throws JAXBException, IOException { fromRunResultToFile( fromRunResult, toFailsafeSummaryXml, UTF_8 ); } public static void fromRunResultToFile( RunResult fromRunResult, File toFailsafeSummaryXml, Charset encoding ) throws JAXBException, IOException { FailsafeSummary summary = new FailsafeSummary(); summary.setCompleted( fromRunResult.getCompletedCount() ); summary.setFailureMessage( fromRunResult.getFailure() ); summary.setErrors( fromRunResult.getErrors() ); summary.setFailures( fromRunResult.getFailures() ); summary.setSkipped( fromRunResult.getSkipped() ); summary.setTimeout( fromRunResult.isTimeout() ); Integer errorCode = fromRunResult.getFailsafeCode(); summary.setResult( errorCode == null ? null : ErrorType.fromValue( String.valueOf( errorCode ) ) ); JAXB.marshal( summary, encoding, toFailsafeSummaryXml ); } public static void writeSummary( RunResult mergedSummary, File mergedSummaryFile, boolean inProgress, Charset encoding ) throws IOException, JAXBException { if ( !mergedSummaryFile.getParentFile().isDirectory() ) { //noinspection ResultOfMethodCallIgnored mergedSummaryFile.getParentFile().mkdirs(); } if ( mergedSummaryFile.exists() && inProgress ) { RunResult runResult = toRunResult( mergedSummaryFile ); mergedSummary = mergedSummary.aggregate( runResult ); } fromRunResultToFile( mergedSummary, mergedSummaryFile, encoding ); } }