/maven-testability-plugin/src/main/java/com/google/maven/MavenConfigModule.java
http://testability-explorer.googlecode.com/ · Java · 105 lines · 89 code · 12 blank · 4 comment · 7 complexity · 1fb6958380f6ff5b3983bd45fd8f812e MD5 · raw file
- // Copyright 2009 Google Inc. All Rights Reserved.
- package com.google.maven;
- import com.google.classpath.ClassPath;
- import com.google.classpath.ClassPathFactory;
- import com.google.inject.AbstractModule;
- import com.google.inject.Provides;
- import com.google.inject.TypeLiteral;
- import com.google.inject.name.Names;
- import com.google.test.metric.ClassRepository;
- import com.google.test.metric.ConfigModule.Error;
- import com.google.test.metric.ConfigModule.Output;
- import com.google.test.metric.JavaClassRepository;
- import com.google.test.metric.JavaTestabilityRunner;
- import com.google.test.metric.RegExpWhiteList;
- import com.google.test.metric.ReportGeneratorProvider;
- import com.google.test.metric.ReportGeneratorProvider.ReportFormat;
- import com.google.test.metric.WhiteList;
- import com.google.test.metric.report.MultiReportGenerator;
- import com.google.test.metric.report.ReportGenerator;
- import com.google.test.metric.report.ReportOptions;
- import com.google.test.metric.report.issues.HypotheticalCostModel;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.PrintStream;
- import java.util.Arrays;
- import java.util.List;
- /**
- * @author alexeagle@google.com (Alex Eagle)
- */
- public class MavenConfigModule extends AbstractModule {
- private TestabilityExplorerMojo testabilityExplorerMojo;
- public MavenConfigModule(TestabilityExplorerMojo testabilityExplorerMojo) {
- this.testabilityExplorerMojo = testabilityExplorerMojo;
- }
- @Override
- protected void configure() {
- bind(ClassPath.class).toInstance(new ClassPathFactory().createFromPath(
- testabilityExplorerMojo.mavenProject.getBuild().getOutputDirectory()));
- ReportOptions options = new ReportOptions(testabilityExplorerMojo.cyclomatic,
- testabilityExplorerMojo.global, testabilityExplorerMojo.constructor,
- testabilityExplorerMojo.maxExcellentCost,
- testabilityExplorerMojo.maxAcceptableCost,
- testabilityExplorerMojo.worstOffenderCount, 0, 0, testabilityExplorerMojo.printDepth,
- testabilityExplorerMojo.minCost, "", "");
- bind(ReportOptions.class).toInstance(options);
- bind(TestabilityExplorerMojo.class).toInstance(testabilityExplorerMojo);
- bind(WhiteList.class).toInstance(new RegExpWhiteList(testabilityExplorerMojo.whiteList));
- bind(ReportFormat.class).toInstance(ReportFormat.valueOf(testabilityExplorerMojo.format));
- bindConstant().annotatedWith(Names.named("printDepth")).to(testabilityExplorerMojo.printDepth);
- bind(new TypeLiteral<List<String>>() {}).toInstance(Arrays.asList(testabilityExplorerMojo.filter));
- bind(Runnable.class).to(JavaTestabilityRunner.class);
- }
- @Provides ReportGenerator generateHtmlReportAsWellAsRequestedFormat(
- ReportGeneratorProvider requestedReportProvider,
- ClassPath classPath, ReportOptions options,
- HypotheticalCostModel hypotheticalCostModel,
- TestabilityExplorerMojo mojo,
- ReportFormat requestedFormat) {
- if (requestedFormat == ReportFormat.html) {
- return requestedReportProvider.get();
- }
- ReportGenerator htmlReportGenerator =
- new ReportGeneratorProvider(classPath, options, getOutput(mojo, ReportFormat.html),
- hypotheticalCostModel, ReportFormat.html).get();
- return new MultiReportGenerator(htmlReportGenerator, requestedReportProvider.get());
- }
- @Provides ClassRepository getClassRepo(TestabilityExplorerMojo mojo) {
- return new JavaClassRepository(mojo.getProjectClasspath());
- }
- @Provides @Output PrintStream getOutput(TestabilityExplorerMojo mojo, ReportFormat format) {
- File directory = (format == ReportFormat.html ? mojo.outputDirectory : mojo.targetDirectory);
- if (!directory.exists()) {
- directory.mkdirs();
- }
- try {
- String outFile = mojo.resultfile + "." + format.toString();
- return new PrintStream(new FileOutputStream(new File(directory, outFile)));
- } catch (FileNotFoundException e) {
- throw new RuntimeException(e);
- }
- }
- @Provides @Error PrintStream getError(TestabilityExplorerMojo mojo) {
- if (mojo.errorfile != null && mojo.errorfile.exists()) {
- try {
- return new PrintStream(new FileOutputStream(mojo.errorfile));
- } catch (FileNotFoundException e) {
- throw new RuntimeException(e);
- }
- }
- return System.err;
- }
- }