Skip to content

Commit 631b664

Browse files
committed
Use maven injection for GAV helper
1 parent e05f4e6 commit 631b664

File tree

5 files changed

+105
-42
lines changed

5 files changed

+105
-42
lines changed

src/main/java/com/e_gineering/maven/gitflowhelper/AbstractGitflowBasedRepositoryMojo.java

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,17 @@ private static PrintWriter newPrintWriter(File catalog) throws FileNotFoundExcep
8080
@Component(role = ArtifactRepositoryLayout.class)
8181
private Map<String, ArtifactRepositoryLayout> repositoryLayouts;
8282

83-
private GavCoordinateFactory gavCoordinateFactory;
83+
@Component
84+
private GavCoordinateHelperFactory gavCoordinateFactory;
85+
86+
private GavCoordinateHelper gavCoordinateHelper;
87+
88+
@Override
89+
public void execute() throws MojoExecutionException, MojoFailureException {
90+
gavCoordinateHelper = gavCoordinateFactory.using(session);
91+
92+
super.execute();
93+
}
8494

8595
/**
8696
* Builds an ArtifactRepository for targeting deployments.
@@ -216,7 +226,7 @@ void attachArtifactCatalog() throws MojoExecutionException {
216226
}
217227

218228
private void catalogArtifact(PrintWriter writer, Artifact artifact) {
219-
String coords = gavCoordinateFactory().getCoordinates(artifact);
229+
String coords = gavCoordinateHelper.getCoordinates(artifact);
220230
getLog().info("Cataloging: " + coords);
221231
writer.println(coords);
222232
}
@@ -320,7 +330,7 @@ void attachExistingArtifacts(final String sourceRepository, final boolean disabl
320330
}
321331

322332
// Get the current build artifact coordinates, so that we replace rather than re-attach.
323-
String projectArtifactCoordinates = gavCoordinateFactory().getCoordinates(project.getArtifact());
333+
String projectArtifactCoordinates = gavCoordinateHelper.getCoordinates(project.getArtifact());
324334
getLog().debug("Current Project Coordinates: " + projectArtifactCoordinates);
325335

326336
// For each artifactResult, copy it to the build directory,
@@ -331,12 +341,12 @@ void attachExistingArtifacts(final String sourceRepository, final boolean disabl
331341
FileUtils.copyFileToDirectory(artifactResult.getArtifact().getFile(), buildDirectory);
332342
artifactResult.setArtifact(artifactResult.getArtifact().setFile(new File(buildDirectory, artifactResult.getArtifact().getFile().getName())));
333343

334-
if (gavCoordinateFactory().getCoordinates(artifactResult).equals(projectArtifactCoordinates)) {
344+
if (gavCoordinateHelper.getCoordinates(artifactResult).equals(projectArtifactCoordinates)) {
335345
getLog().debug(" Setting primary artifact: " + artifactResult.getArtifact().getFile());
336346
project.getArtifact().setFile(artifactResult.getArtifact().getFile());
337347
} else {
338348
getLog().debug(
339-
" Attaching artifact: " + gavCoordinateFactory().getCoordinates(artifactResult) + " "
349+
" Attaching artifact: " + gavCoordinateHelper.getCoordinates(artifactResult) + " "
340350
+ artifactResult.getArtifact().getFile());
341351
projectHelper.attachArtifact(project, artifactResult.getArtifact().getExtension(), artifactResult.getArtifact().getClassifier(), artifactResult.getArtifact().getFile());
342352
}
@@ -388,12 +398,4 @@ private boolean hasFile(@Nullable Artifact artifact) {
388398
&& project.getArtifact().getFile().exists()
389399
&& project.getArtifact().getFile().isFile();
390400
}
391-
392-
private GavCoordinateFactory gavCoordinateFactory() {
393-
if (gavCoordinateFactory == null) {
394-
// TODO(somebody): this could probably be nicely injected as a maven component
395-
gavCoordinateFactory = new GavCoordinateFactory(session, project, getLog());
396-
}
397-
return gavCoordinateFactory;
398-
}
399401
}

src/main/java/com/e_gineering/maven/gitflowhelper/GavCoordinateFactory.java renamed to src/main/java/com/e_gineering/maven/gitflowhelper/DefaultGavCoordinateHelper.java

Lines changed: 13 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
import com.google.common.base.Joiner;
44
import org.apache.maven.artifact.Artifact;
5-
import org.apache.maven.plugin.logging.Log;
65
import org.apache.maven.project.MavenProject;
6+
import org.codehaus.plexus.logging.Logger;
77
import org.eclipse.aether.RepositorySystemSession;
88
import org.eclipse.aether.resolution.ArtifactResult;
99

@@ -15,47 +15,36 @@
1515
/**
1616
* A helper factory for creating maven (GroupId, ArtifactId, Extension, Classifier, Version) coordinates.
1717
*/
18-
class GavCoordinateFactory {
19-
// TODO(somebody): Consider using maven @Component to make this an injectable component in the mojo
18+
class DefaultGavCoordinateHelper implements GavCoordinateHelper {
2019

2120
private static final Joiner GAV_JOINER = Joiner.on(':').skipNulls();
2221

23-
private final RepositorySystemSession session;
22+
private final Logger log;
2423

2524
private final MavenProject project;
26-
private final Log log;
25+
26+
private final RepositorySystemSession session;
2727

2828
/**
29-
* Creates a new {@link GavCoordinateFactory}.
29+
* Creates a new {@link DefaultGavCoordinateHelperFactory}.
3030
*
3131
* @param session the repository session
3232
* @param project the project
3333
* @param log the logger
3434
*/
35-
GavCoordinateFactory(RepositorySystemSession session, MavenProject project, Log log) {
35+
DefaultGavCoordinateHelper(RepositorySystemSession session, MavenProject project, Logger log) {
3636
this.session = checkNotNull(session, "session must not be null");
3737
this.project = checkNotNull(project, "project must not be null");
3838
this.log = checkNotNull(log, "log must not be null");
3939
}
4040

41-
/**
42-
* Get GAV coordinates for the {@link ArtifactResult}.
43-
*
44-
* @param result the result
45-
* @return the GAV coordinate string
46-
*/
47-
String getCoordinates(ArtifactResult result) {
41+
@Override
42+
public String getCoordinates(ArtifactResult result) {
4843
return getCoordinates(result.getArtifact());
4944
}
5045

51-
/**
52-
* Get GAV coordinates for the {@link org.eclipse.aether.artifact.Artifact}.
53-
*
54-
* @param artifact the artifact
55-
* @return the GAV coordinate string
56-
*/
57-
@SuppressWarnings("WeakerAccess")
58-
String getCoordinates(org.eclipse.aether.artifact.Artifact artifact) {
46+
@Override
47+
public String getCoordinates(org.eclipse.aether.artifact.Artifact artifact) {
5948
return getCoordinates(
6049
emptyToNull(artifact.getGroupId()),
6150
emptyToNull(artifact.getArtifactId()),
@@ -65,13 +54,8 @@ String getCoordinates(org.eclipse.aether.artifact.Artifact artifact) {
6554
);
6655
}
6756

68-
/**
69-
* Get GAV coordinates for the {@link Artifact}.
70-
*
71-
* @param artifact the artifact
72-
* @return the GAV coordinate string
73-
*/
74-
String getCoordinates(Artifact artifact) {
57+
@Override
58+
public String getCoordinates(Artifact artifact) {
7559
log.debug(" Encoding Coordinates For: " + artifact);
7660

7761
// Get the extension according to the artifact type.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.e_gineering.maven.gitflowhelper;
2+
3+
import org.apache.maven.project.MavenProject;
4+
import org.codehaus.plexus.component.annotations.Component;
5+
import org.codehaus.plexus.component.annotations.Requirement;
6+
import org.codehaus.plexus.logging.Logger;
7+
import org.eclipse.aether.RepositorySystemSession;
8+
9+
/**
10+
* A helper factory for creating {@link GavCoordinateHelper} instances scoped to a repository session.
11+
*/
12+
@Component(role = GavCoordinateHelperFactory.class)
13+
class DefaultGavCoordinateHelperFactory implements GavCoordinateHelperFactory {
14+
15+
@Requirement
16+
private Logger log;
17+
18+
@Requirement
19+
private MavenProject project;
20+
21+
@Override
22+
public GavCoordinateHelper using(RepositorySystemSession session) {
23+
return new DefaultGavCoordinateHelper(session, project, log);
24+
}
25+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.e_gineering.maven.gitflowhelper;
2+
3+
import org.apache.maven.artifact.Artifact;
4+
import org.eclipse.aether.resolution.ArtifactResult;
5+
6+
/**
7+
* A helper factory for creating maven (GroupId, ArtifactId, Extension, Classifier, Version) coordinates.
8+
*/
9+
public interface GavCoordinateHelper {
10+
/**
11+
* Get GAV coordinates for the {@link ArtifactResult}.
12+
*
13+
* @param result the result
14+
* @return the GAV coordinate string
15+
*/
16+
String getCoordinates(ArtifactResult result);
17+
18+
/**
19+
* Get GAV coordinates for the {@link org.eclipse.aether.artifact.Artifact}.
20+
*
21+
* @param artifact the artifact
22+
* @return the GAV coordinate string
23+
*/
24+
String getCoordinates(org.eclipse.aether.artifact.Artifact artifact);
25+
26+
/**
27+
* Get GAV coordinates for the {@link Artifact}.
28+
*
29+
* @param artifact the artifact
30+
* @return the GAV coordinate string
31+
*/
32+
String getCoordinates(Artifact artifact);
33+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.e_gineering.maven.gitflowhelper;
2+
3+
import org.eclipse.aether.RepositorySystemSession;
4+
5+
/**
6+
* A {@link GavCoordinateHelper} factory.
7+
*/
8+
public interface GavCoordinateHelperFactory {
9+
10+
String ROLE = GavCoordinateHelperFactory.class.getName();
11+
12+
/**
13+
* Create a coordinate helper scoped to the {@link RepositorySystemSession}.
14+
*
15+
* @param session the session
16+
* @return the coordinate helper
17+
*/
18+
GavCoordinateHelper using(RepositorySystemSession session);
19+
}

0 commit comments

Comments
 (0)