Skip to content

Commit 7dd2e85

Browse files
committed
refactored commitIdGenerationMode processing because changing static variable violates thread safety
1 parent 4990e81 commit 7dd2e85

File tree

4 files changed

+27
-32
lines changed

4 files changed

+27
-32
lines changed

src/main/java/pl/project13/maven/git/CommitIdGenerationModeEnum.java renamed to src/main/java/pl/project13/maven/git/CommitIdGenerationMode.java

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,7 @@
1616
*/
1717
package pl.project13.maven.git;
1818

19-
public enum CommitIdGenerationModeEnum{
19+
public enum CommitIdGenerationMode {
2020
FULL,
21-
FLAT,
22-
UNKNOWN;
23-
24-
public static CommitIdGenerationModeEnum getValue(String o){
25-
if(o != null){
26-
for(CommitIdGenerationModeEnum v : values()){
27-
if(v.name().equalsIgnoreCase(o)){
28-
return v;
29-
}
30-
}
31-
}
32-
return CommitIdGenerationModeEnum.UNKNOWN;
33-
}
21+
FLAT;
3422
}

src/main/java/pl/project13/maven/git/GitCommitIdMojo.java

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
import java.net.InetAddress;
4747
import java.net.UnknownHostException;
4848
import java.text.SimpleDateFormat;
49-
import java.util.Collections;
5049
import java.util.Date;
5150
import java.util.HashMap;
5251
import java.util.List;
@@ -65,12 +64,9 @@ public class GitCommitIdMojo extends AbstractMojo {
6564
// these properties will be exposed to maven
6665
public static final String BRANCH = "branch";
6766
public static final String DIRTY = "dirty";
67+
// only one of the following two will be exposed, depending on the commitIdGenerationMode
6868
public static final String COMMIT_ID_FLAT = "commit.id";
6969
public static final String COMMIT_ID_FULL = "commit.id.full";
70-
71-
// TODO this should be private instance field with getter and setter
72-
public static String COMMIT_ID = COMMIT_ID_FLAT;
73-
7470
public static final String COMMIT_ID_ABBREV = "commit.id.abbrev";
7571
public static final String COMMIT_DESCRIBE = "commit.id.describe";
7672
public static final String COMMIT_SHORT_DESCRIBE = "commit.id.describe-short";
@@ -134,7 +130,7 @@ public class GitCommitIdMojo extends AbstractMojo {
134130
*
135131
* <p>Defaults to {@code true}.</p>
136132
*/
137-
@Parameter(defaultValue = "true", name = "git.skipPoms")
133+
@Parameter(defaultValue = "true")
138134
private boolean skipPoms;
139135

140136
/**
@@ -351,6 +347,7 @@ public class GitCommitIdMojo extends AbstractMojo {
351347
*/
352348
@Parameter(defaultValue = "flat")
353349
private String commitIdGenerationMode;
350+
private CommitIdGenerationMode commitIdGenerationModeEnum;
354351

355352
/**
356353
* The properties we store our data in and then expose them.
@@ -399,15 +396,11 @@ public void execute() throws MojoExecutionException {
399396
}
400397

401398
try {
402-
switch(CommitIdGenerationModeEnum.getValue(commitIdGenerationMode)){
403-
default:
399+
try {
400+
commitIdGenerationModeEnum = CommitIdGenerationMode.valueOf(commitIdGenerationMode.toUpperCase());
401+
} catch (IllegalArgumentException e) {
404402
log.warn("Detected wrong setting for 'commitIdGenerationMode'. Falling back to default 'flat' mode!");
405-
case FLAT:
406-
COMMIT_ID = COMMIT_ID_FLAT;
407-
break;
408-
case FULL:
409-
COMMIT_ID = COMMIT_ID_FULL;
410-
break;
403+
commitIdGenerationModeEnum = CommitIdGenerationMode.FLAT;
411404
}
412405

413406
properties = initProperties();
@@ -603,7 +596,8 @@ void loadGitDataWithNativeGit(@NotNull Properties properties) throws IOException
603596
.setAbbrevLength(abbrevLength)
604597
.setDateFormat(dateFormat)
605598
.setDateFormatTimeZone(dateFormatTimeZone)
606-
.setGitDescribe(gitDescribe);
599+
.setGitDescribe(gitDescribe)
600+
.setCommitIdGenerationMode(commitIdGenerationModeEnum);
607601

608602
nativeGitProvider.loadGitData(properties);
609603
}
@@ -615,7 +609,8 @@ void loadGitDataWithJGit(@NotNull Properties properties) throws IOException, Moj
615609
.setAbbrevLength(abbrevLength)
616610
.setDateFormat(dateFormat)
617611
.setDateFormatTimeZone(dateFormatTimeZone)
618-
.setGitDescribe(gitDescribe);
612+
.setGitDescribe(gitDescribe)
613+
.setCommitIdGenerationMode(commitIdGenerationModeEnum);
619614

620615
jGitProvider.loadGitData(properties);
621616
}

src/main/java/pl/project13/maven/git/GitDataProvider.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ public abstract class GitDataProvider {
4545

4646
protected GitDescribeConfig gitDescribe = new GitDescribeConfig();
4747

48+
protected CommitIdGenerationMode commitIdGenerationMode;
49+
4850
public GitDataProvider(@NotNull Mojo mojo) {
4951
this.mojo = mojo;
5052
}
@@ -69,6 +71,11 @@ public GitDataProvider setDateFormat(String dateFormat) {
6971
return this;
7072
}
7173

74+
public GitDataProvider setCommitIdGenerationMode(CommitIdGenerationMode commitIdGenerationMode) {
75+
this.commitIdGenerationMode = commitIdGenerationMode;
76+
return this;
77+
}
78+
7279
public GitDataProvider setDateFormatTimeZone(String dateFormatTimeZone){
7380
this.dateFormatTimeZone = dateFormatTimeZone;
7481
return this;
@@ -110,8 +117,11 @@ public void loadGitData(@NotNull Properties properties) throws IOException, Mojo
110117
// git.commit.id.describe
111118
maybePutGitDescribe(properties);
112119
// git.commit.id
113-
put(properties, GitCommitIdMojo.COMMIT_ID, getCommitId());
114-
// git.commit.id.abbrev
120+
switch (commitIdGenerationMode) {
121+
case FULL: put(properties, GitCommitIdMojo.COMMIT_ID_FULL, getCommitId());
122+
default: put(properties, GitCommitIdMojo.COMMIT_ID_FLAT, getCommitId());
123+
}
124+
// git.commit.id.abbrev
115125
put(properties, GitCommitIdMojo.COMMIT_ID_ABBREV, getAbbrevCommitId());
116126
// git.dirty
117127
put(properties, GitCommitIdMojo.DIRTY, Boolean.toString(isDirty()));

src/test/java/pl/project13/maven/git/GitCommitIdMojoDirtyFilesTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public void testDetectCleanWorkingDirectory() throws Exception {
4747
mojo.setVerbose(true);
4848
mojo.useNativeGit(false);
4949
mojo.setGitDescribe(gitDescribeConfig);
50+
mojo.setCommitIdGenerationMode("flat");
5051

5152

5253
mojo.project = mock(MavenProject.class, RETURNS_MOCKS);
@@ -79,6 +80,7 @@ public void testDetectDirtyWorkingDirectory() throws Exception {
7980
mojo.setVerbose(true);
8081
mojo.useNativeGit(false);
8182
mojo.setGitDescribe(gitDescribeConfig);
83+
mojo.setCommitIdGenerationMode("flat");
8284

8385

8486
mojo.project = mock(MavenProject.class, RETURNS_MOCKS);

0 commit comments

Comments
 (0)