Skip to content

Commit 8726a7b

Browse files
committed
Minor refactor to LicenseHeaderStep to a more functional/immutable style. Makes it clear that an inner class ought to be used in the future, especially to support diffplug#496.
1 parent 85741fa commit 8726a7b

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

lib/src/main/java/com/diffplug/spotless/generic/LicenseHeaderStep.java

+19-14
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@ public final class LicenseHeaderStep implements Serializable {
4444
"package-info.java", "package-info.groovy", "module-info.java");
4545

4646
private final String licenseHeader;
47+
private final boolean hasYearToken;
4748
private final Pattern delimiterPattern;
48-
private Pattern yearMatcherPattern;
49-
private boolean hasYearToken;
50-
private String licenseHeaderBeforeYearToken;
51-
private String licenseHeaderAfterYearToken;
52-
private String licenseHeaderWithYearTokenReplaced;
49+
private final Pattern yearMatcherPattern;
50+
private final String licenseHeaderBeforeYearToken;
51+
private final String licenseHeaderAfterYearToken;
52+
private final String licenseHeaderWithYearTokenReplaced;
5353

5454
/** Creates a FormatterStep which forces the start of each file to match a license header. */
5555
public static FormatterStep createFromHeader(String licenseHeader, String delimiter) {
@@ -112,14 +112,19 @@ private LicenseHeaderStep(String licenseHeader, String delimiter, String yearSep
112112
this.licenseHeader = licenseHeader;
113113
this.delimiterPattern = Pattern.compile('^' + delimiter, Pattern.UNIX_LINES | Pattern.MULTILINE);
114114

115-
if (getToken(licenseHeader).isPresent()) {
116-
String token = getToken(licenseHeader).get();
117-
this.hasYearToken = true;
118-
int yearTokenIndex = licenseHeader.indexOf(token);
119-
this.licenseHeaderBeforeYearToken = licenseHeader.substring(0, yearTokenIndex);
120-
this.licenseHeaderAfterYearToken = licenseHeader.substring(yearTokenIndex + 5);
121-
this.licenseHeaderWithYearTokenReplaced = licenseHeader.replace(token, String.valueOf(YearMonth.now().getYear()));
122-
this.yearMatcherPattern = Pattern.compile("[0-9]{4}(" + Pattern.quote(yearSeparator) + "[0-9]{4})?");
115+
Optional<String> yearToken = getYearToken(licenseHeader);
116+
this.hasYearToken = yearToken.isPresent();
117+
if (hasYearToken) {
118+
int yearTokenIndex = licenseHeader.indexOf(yearToken.get());
119+
licenseHeaderBeforeYearToken = licenseHeader.substring(0, yearTokenIndex);
120+
licenseHeaderAfterYearToken = licenseHeader.substring(yearTokenIndex + 5);
121+
licenseHeaderWithYearTokenReplaced = licenseHeader.replace(yearToken.get(), String.valueOf(YearMonth.now().getYear()));
122+
yearMatcherPattern = Pattern.compile("[0-9]{4}(" + Pattern.quote(yearSeparator) + "[0-9]{4})?");
123+
} else {
124+
licenseHeaderBeforeYearToken = null;
125+
licenseHeaderAfterYearToken = null;
126+
licenseHeaderWithYearTokenReplaced = null;
127+
yearMatcherPattern = null;
123128
}
124129
}
125130

@@ -130,7 +135,7 @@ private LicenseHeaderStep(String licenseHeader, String delimiter, String yearSep
130135
* @param licenseHeader String representation of the license header
131136
* @return Matching value from YEAR_TOKENS or null if none exist
132137
*/
133-
private Optional<String> getToken(String licenseHeader) {
138+
private static Optional<String> getYearToken(String licenseHeader) {
134139
return YEAR_TOKENS.stream().filter(licenseHeader::contains).findFirst();
135140
}
136141

0 commit comments

Comments
 (0)