Skip to content

Commit 9022926

Browse files
authored
Convert to Guice constructor injection (#90)
* Convert to Guice constructor injection
1 parent 1694db8 commit 9022926

18 files changed

+286
-90
lines changed

pom.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,18 @@ under the License.
267267
<version>${doxiaSitetoolsVersion}</version>
268268
</dependency>
269269

270+
<dependency>
271+
<groupId>javax.inject</groupId>
272+
<artifactId>javax.inject</artifactId>
273+
<version>1</version>
274+
<scope>provided</scope>
275+
</dependency>
276+
<dependency>
277+
<groupId>org.eclipse.sisu</groupId>
278+
<artifactId>org.eclipse.sisu.plexus</artifactId>
279+
<version>0.9.0.M3</version>
280+
<scope>provided</scope>
281+
</dependency>
270282
<!-- Plexus -->
271283
<dependency>
272284
<groupId>org.codehaus.plexus</groupId>

src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoReport.java

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import org.apache.maven.execution.MavenSession;
3737
import org.apache.maven.model.Plugin;
3838
import org.apache.maven.plugin.MojoExecution;
39-
import org.apache.maven.plugins.annotations.Component;
4039
import org.apache.maven.plugins.annotations.Parameter;
4140
import org.apache.maven.project.MavenProject;
4241
import org.apache.maven.project.ProjectBuilder;
@@ -61,31 +60,6 @@
6160
* @since 2.0
6261
*/
6362
public abstract class AbstractProjectInfoReport extends AbstractMavenReport {
64-
// ----------------------------------------------------------------------
65-
// Mojo components
66-
// ----------------------------------------------------------------------
67-
68-
/**
69-
* Artifact Resolver component.
70-
*/
71-
@Component
72-
protected ArtifactResolver resolver;
73-
74-
/**
75-
* Artifact Factory component.
76-
*/
77-
@Component
78-
RepositorySystem repositorySystem;
79-
80-
/**
81-
* Internationalization component, could support also custom bundle using {@link #customBundle}.
82-
*/
83-
@Component
84-
private I18N i18n;
85-
86-
@Component
87-
protected ProjectBuilder projectBuilder;
88-
8963
// ----------------------------------------------------------------------
9064
// Mojo parameters
9165
// ----------------------------------------------------------------------
@@ -152,6 +126,35 @@ public abstract class AbstractProjectInfoReport extends AbstractMavenReport {
152126
@Parameter(defaultValue = "${localRepository}", readonly = true, required = true)
153127
protected ArtifactRepository localRepository;
154128

129+
// ----------------------------------------------------------------------
130+
// Mojo components
131+
// ----------------------------------------------------------------------
132+
133+
/**
134+
* Artifact Resolver component.
135+
*/
136+
protected final ArtifactResolver resolver;
137+
138+
/**
139+
* Artifact Factory component.
140+
*/
141+
final RepositorySystem repositorySystem;
142+
143+
/**
144+
* Internationalization component, could support also custom bundle using {@link #customBundle}.
145+
*/
146+
private I18N i18n;
147+
148+
protected final ProjectBuilder projectBuilder;
149+
150+
protected AbstractProjectInfoReport(
151+
ArtifactResolver resolver, RepositorySystem repositorySystem, I18N i18n, ProjectBuilder projectBuilder) {
152+
this.resolver = resolver;
153+
this.repositorySystem = repositorySystem;
154+
this.i18n = i18n;
155+
this.projectBuilder = projectBuilder;
156+
}
157+
155158
// ----------------------------------------------------------------------
156159
// Public methods
157160
// ----------------------------------------------------------------------
@@ -209,7 +212,7 @@ protected MojoExecution getMojoExecution() {
209212

210213
/**
211214
* @param pluginId The id of the plugin
212-
* @return The information about the plugin.
215+
* @return The information about the plugin
213216
*/
214217
protected Plugin getPlugin(String pluginId) {
215218
if ((getProject().getBuild() == null) || (getProject().getBuild().getPluginsAsMap() == null)) {
@@ -232,9 +235,9 @@ protected Plugin getPlugin(String pluginId) {
232235
}
233236

234237
/**
235-
* @param pluginId The pluginId
236-
* @param param The child which should be checked.
237-
* @return The value of the dom tree.
238+
* @param pluginId the pluginId
239+
* @param param the child which should be checked
240+
* @return the value of the dom tree
238241
*/
239242
protected String getPluginParameter(String pluginId, String param) {
240243
Plugin plugin = getPlugin(pluginId);

src/main/java/org/apache/maven/report/projectinfo/CiManagementReport.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*/
1919
package org.apache.maven.report.projectinfo;
2020

21+
import javax.inject.Inject;
22+
2123
import java.util.Arrays;
2224
import java.util.HashSet;
2325
import java.util.List;
@@ -29,7 +31,10 @@
2931
import org.apache.maven.model.Model;
3032
import org.apache.maven.model.Notifier;
3133
import org.apache.maven.plugins.annotations.Mojo;
34+
import org.apache.maven.project.ProjectBuilder;
3235
import org.apache.maven.reporting.MavenReportException;
36+
import org.apache.maven.repository.RepositorySystem;
37+
import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolver;
3338
import org.codehaus.plexus.i18n.I18N;
3439

3540
/**
@@ -40,6 +45,12 @@
4045
*/
4146
@Mojo(name = "ci-management")
4247
public class CiManagementReport extends AbstractProjectInfoReport {
48+
49+
@Inject
50+
public CiManagementReport(
51+
ArtifactResolver resolver, RepositorySystem repositorySystem, I18N i18n, ProjectBuilder projectBuilder) {
52+
super(resolver, repositorySystem, i18n, projectBuilder);
53+
}
4354
// ----------------------------------------------------------------------
4455
// Public methods
4556
// ----------------------------------------------------------------------

src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
*/
1919
package org.apache.maven.report.projectinfo;
2020

21+
import javax.inject.Inject;
22+
import javax.inject.Named;
23+
2124
import java.io.BufferedReader;
2225
import java.io.File;
2326
import java.io.FileOutputStream;
@@ -32,21 +35,24 @@
3235
import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
3336
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
3437
import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
35-
import org.apache.maven.plugins.annotations.Component;
3638
import org.apache.maven.plugins.annotations.Mojo;
3739
import org.apache.maven.plugins.annotations.Parameter;
3840
import org.apache.maven.plugins.annotations.ResolutionScope;
3941
import org.apache.maven.project.DefaultProjectBuildingRequest;
42+
import org.apache.maven.project.ProjectBuilder;
4043
import org.apache.maven.project.ProjectBuildingRequest;
4144
import org.apache.maven.report.projectinfo.dependencies.Dependencies;
4245
import org.apache.maven.report.projectinfo.dependencies.DependenciesReportConfiguration;
4346
import org.apache.maven.report.projectinfo.dependencies.RepositoryUtils;
4447
import org.apache.maven.report.projectinfo.dependencies.renderer.DependenciesRenderer;
4548
import org.apache.maven.reporting.MavenReportException;
49+
import org.apache.maven.repository.RepositorySystem;
4650
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
4751
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
4852
import org.apache.maven.shared.dependency.graph.DependencyNode;
4953
import org.apache.maven.shared.jar.classes.JarClassesAnalysis;
54+
import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolver;
55+
import org.codehaus.plexus.i18n.I18N;
5056
import org.codehaus.plexus.util.IOUtil;
5157
import org.codehaus.plexus.util.ReaderFactory;
5258

@@ -64,6 +70,19 @@ public class DependenciesReport extends AbstractProjectInfoReport {
6470
*/
6571
private static final String RESOURCES_DIR = "org/apache/maven/report/projectinfo/resources";
6672

73+
// ----------------------------------------------------------------------
74+
// Mojo parameters
75+
// ----------------------------------------------------------------------
76+
77+
/**
78+
* Display file details for each dependency, such as: file size, number of
79+
* classes, number of packages etc.
80+
*
81+
* @since 2.1
82+
*/
83+
@Parameter(property = "dependency.details.enabled", defaultValue = "true")
84+
private boolean dependencyDetailsEnabled;
85+
6786
// ----------------------------------------------------------------------
6887
// Mojo components
6988
// ----------------------------------------------------------------------
@@ -73,37 +92,36 @@ public class DependenciesReport extends AbstractProjectInfoReport {
7392
*
7493
* @since 2.5
7594
*/
76-
@Component(hint = "default")
77-
private DependencyGraphBuilder dependencyGraphBuilder;
95+
private final DependencyGraphBuilder dependencyGraphBuilder;
7896

7997
/**
8098
* Jar classes analyzer component.
8199
*
82100
* @since 2.1
83101
*/
84-
@Component
85-
private JarClassesAnalysis classesAnalyzer;
102+
private final JarClassesAnalysis classesAnalyzer;
86103

87104
/**
88105
* Repository metadata component.
89106
*
90107
* @since 2.1
91108
*/
92-
@Component
93-
private RepositoryMetadataManager repositoryMetadataManager;
109+
private final RepositoryMetadataManager repositoryMetadataManager;
94110

95-
// ----------------------------------------------------------------------
96-
// Mojo parameters
97-
// ----------------------------------------------------------------------
98-
99-
/**
100-
* Display file details for each dependency, such as: file size, number of
101-
* classes, number of packages etc.
102-
*
103-
* @since 2.1
104-
*/
105-
@Parameter(property = "dependency.details.enabled", defaultValue = "true")
106-
private boolean dependencyDetailsEnabled;
111+
@Inject
112+
protected DependenciesReport(
113+
ArtifactResolver resolver,
114+
RepositorySystem repositorySystem,
115+
I18N i18n,
116+
ProjectBuilder projectBuilder,
117+
@Named("default") DependencyGraphBuilder dependencyGraphBuilder,
118+
JarClassesAnalysis classesAnalyzer,
119+
RepositoryMetadataManager repositoryMetadataManager) {
120+
super(resolver, repositorySystem, i18n, projectBuilder);
121+
this.dependencyGraphBuilder = dependencyGraphBuilder;
122+
this.classesAnalyzer = classesAnalyzer;
123+
this.repositoryMetadataManager = repositoryMetadataManager;
124+
}
107125

108126
// ----------------------------------------------------------------------
109127
// Public methods

src/main/java/org/apache/maven/report/projectinfo/DependencyConvergenceReport.java

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*/
1919
package org.apache.maven.report.projectinfo;
2020

21+
import javax.inject.Inject;
22+
2123
import java.util.ArrayList;
2224
import java.util.Arrays;
2325
import java.util.Collections;
@@ -37,14 +39,15 @@
3739
import org.apache.maven.doxia.sink.SinkEventAttributes;
3840
import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
3941
import org.apache.maven.model.Dependency;
40-
import org.apache.maven.plugins.annotations.Component;
4142
import org.apache.maven.plugins.annotations.Mojo;
4243
import org.apache.maven.project.DefaultProjectBuildingRequest;
4344
import org.apache.maven.project.MavenProject;
45+
import org.apache.maven.project.ProjectBuilder;
4446
import org.apache.maven.project.ProjectBuildingRequest;
4547
import org.apache.maven.report.projectinfo.dependencies.DependencyVersionMap;
4648
import org.apache.maven.report.projectinfo.dependencies.SinkSerializingDependencyNodeVisitor;
4749
import org.apache.maven.reporting.MavenReportException;
50+
import org.apache.maven.repository.RepositorySystem;
4851
import org.apache.maven.shared.artifact.filter.StrictPatternIncludesArtifactFilter;
4952
import org.apache.maven.shared.dependency.graph.DependencyCollectorBuilder;
5053
import org.apache.maven.shared.dependency.graph.DependencyCollectorBuilderException;
@@ -57,6 +60,8 @@
5760
import org.apache.maven.shared.dependency.graph.traversal.CollectingDependencyNodeVisitor;
5861
import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
5962
import org.apache.maven.shared.dependency.graph.traversal.FilteringDependencyNodeVisitor;
63+
import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolver;
64+
import org.codehaus.plexus.i18n.I18N;
6065

6166
/**
6267
* Generates the Project Dependency Convergence report for (reactor) builds.
@@ -80,19 +85,29 @@ public class DependencyConvergenceReport extends AbstractProjectInfoReport {
8085

8186
private static final int FULL_CONVERGENCE = 100;
8287

88+
private ArtifactFilter filter = null;
89+
90+
private Map<MavenProject, DependencyNode> projectMap = new HashMap<>();
91+
8392
// ----------------------------------------------------------------------
8493
// Mojo parameters
8594
// ----------------------------------------------------------------------
8695

8796
/**
8897
* Raw dependency collector builder, will use it to build dependency tree.
8998
*/
90-
@Component
91-
private DependencyCollectorBuilder dependencyCollectorBuilder;
92-
93-
private ArtifactFilter filter = null;
94-
95-
private Map<MavenProject, DependencyNode> projectMap = new HashMap<>();
99+
private final DependencyCollectorBuilder dependencyCollectorBuilder;
100+
101+
@Inject
102+
protected DependencyConvergenceReport(
103+
ArtifactResolver resolver,
104+
RepositorySystem repositorySystem,
105+
I18N i18n,
106+
ProjectBuilder projectBuilder,
107+
DependencyCollectorBuilder dependencyCollectorBuilder) {
108+
super(resolver, repositorySystem, i18n, projectBuilder);
109+
this.dependencyCollectorBuilder = dependencyCollectorBuilder;
110+
}
96111

97112
// ----------------------------------------------------------------------
98113
// Public methods

src/main/java/org/apache/maven/report/projectinfo/DependencyInformationReport.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,18 @@
1818
*/
1919
package org.apache.maven.report.projectinfo;
2020

21+
import javax.inject.Inject;
22+
2123
import java.util.Formatter;
2224
import java.util.Locale;
2325

2426
import org.apache.maven.doxia.sink.Sink;
2527
import org.apache.maven.plugins.annotations.Mojo;
2628
import org.apache.maven.plugins.annotations.Parameter;
29+
import org.apache.maven.project.ProjectBuilder;
2730
import org.apache.maven.reporting.MavenReportException;
31+
import org.apache.maven.repository.RepositorySystem;
32+
import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolver;
2833
import org.codehaus.plexus.i18n.I18N;
2934

3035
/**
@@ -39,26 +44,24 @@ public final class DependencyInformationReport extends AbstractProjectInfoReport
3944
private static final String JAR_PACKAGING = "jar";
4045
private static final String PLUGIN_PACKAGING = "maven-plugin";
4146

42-
/**
43-
*/
4447
@Parameter(defaultValue = "${project.groupId}", required = true)
4548
protected String groupId;
4649

47-
/**
48-
*/
4950
@Parameter(defaultValue = "${project.artifactId}", required = true)
5051
protected String artifactId;
5152

52-
/**
53-
*/
5453
@Parameter(defaultValue = "${project.version}", required = true)
5554
protected String version;
5655

57-
/**
58-
*/
5956
@Parameter(defaultValue = "${project.packaging}", required = true)
6057
protected String packaging;
6158

59+
@Inject
60+
public DependencyInformationReport(
61+
ArtifactResolver resolver, RepositorySystem repositorySystem, I18N i18n, ProjectBuilder projectBuilder) {
62+
super(resolver, repositorySystem, i18n, projectBuilder);
63+
}
64+
6265
// ----------------------------------------------------------------------
6366
// Public methods
6467
// ----------------------------------------------------------------------

0 commit comments

Comments
 (0)