package org.arquillian.cube.impl.reporter;
import java.util.List;
import org.arquillian.cube.spi.Cube;
import org.arquillian.cube.spi.CubeRegistry;
import org.arquillian.cube.spi.event.lifecycle.AfterAutoStop;
import org.arquillian.cube.spi.metadata.CanReportMetrics;
import org.arquillian.reporter.api.builder.report.ReportInSectionBuilder;
import org.arquillian.reporter.api.event.SectionEvent;
import org.jboss.arquillian.core.api.Event;
import org.jboss.arquillian.core.api.annotation.Inject;
import org.jboss.arquillian.core.api.annotation.Observes;
/**
* Observer that is executed before suite and prints all metrics reported by registered cubes.
*/
public class TakeCubeInformation {
@Inject
Event<SectionEvent> reportEvent;
public void generateReportEntries(@Observes AfterAutoStop event, CubeRegistry cubeRegistry) {
if (cubeRegistry == null) {
return;
}
final List<Cube<?>> reportableCubes = cubeRegistry.getByMetadata(CanReportMetrics.class);
for (Cube cube : reportableCubes) {
final CanReportMetrics metadata = (CanReportMetrics) cube.getMetadata(CanReportMetrics.class);
final ReportInSectionBuilder sectionBuilder = metadata.report();
sectionBuilder.fire(reportEvent);
}
}
}