Skip to content
This repository has been archived by the owner on May 9, 2023. It is now read-only.

Commit

Permalink
git-commit-id#413: use maven's PluginParameterExpressionEvaluator to …
Browse files Browse the repository at this point in the history
…allow replacements with values that contain unresolved variables (maven sometimes just behaves weird)
  • Loading branch information
TheSnoozer committed Oct 12, 2019
1 parent a556257 commit 311a8f6
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.PluginParameterExpressionEvaluator;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
Expand Down Expand Up @@ -386,9 +387,6 @@ public class GitCommitIdMojo extends AbstractMojo {
@Nonnull
private PropertiesFilterer propertiesFilterer = new PropertiesFilterer(log);

@Nonnull
PropertiesReplacer propertiesReplacer = new PropertiesReplacer(log);

@Override
public void execute() throws MojoExecutionException {
try {
Expand Down Expand Up @@ -490,6 +488,7 @@ public void execute() throws MojoExecutionException {

loadGitData(properties);
loadBuildData(properties);
PropertiesReplacer propertiesReplacer = new PropertiesReplacer(log, new PluginParameterExpressionEvaluator(session));
propertiesReplacer.performReplacement(properties, replacementProperties);
propertiesFilterer.filter(properties, includeOnlyProperties, this.prefixDot);
propertiesFilterer.filterNot(properties, excludeProperties, this.prefixDot);
Expand Down
17 changes: 11 additions & 6 deletions maven/src/main/java/pl/project13/maven/git/PropertiesReplacer.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,19 @@

package pl.project13.maven.git;

import org.apache.maven.plugin.PluginParameterExpressionEvaluator;
import pl.project13.core.log.LoggerBridge;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.*;
import java.util.regex.Pattern;

public class PropertiesReplacer {
private final LoggerBridge log;
private final PluginParameterExpressionEvaluator expressionEvaluator;

public PropertiesReplacer(LoggerBridge log) {
public PropertiesReplacer(LoggerBridge log, PluginParameterExpressionEvaluator expressionEvaluator) {
this.log = log;
this.expressionEvaluator = expressionEvaluator;
}

/**
Expand Down Expand Up @@ -81,7 +81,12 @@ private void performReplacementOnSingleProperty(Properties properties, Replaceme
}

private String performReplacement(ReplacementProperty replacementProperty, String content) {
String result = content;
String result = "";
try {
result = Optional.ofNullable(expressionEvaluator.evaluate(content)).map(x -> x.toString()).orElse("");
} catch (Exception e) {
log.error("Something went wrong performing the replacement.", e);
}
if (replacementProperty != null) {
result = performTransformationRules(replacementProperty, result, TransformationRule.ApplyEnum.BEFORE);
if (replacementProperty.isRegex()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import junitparams.JUnitParamsRunner;
import junitparams.Parameters;
import org.apache.maven.plugin.PluginParameterExpressionEvaluator;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
Expand All @@ -35,7 +36,10 @@
import java.util.Properties;

import static java.util.Arrays.asList;
import static org.mockito.AdditionalAnswers.returnsFirstArg;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

@RunWith(JUnitParamsRunner.class)
public class PropertiesReplacerTest {
Expand All @@ -46,8 +50,10 @@ public static Collection<?> useRegexReplacement() {
private PropertiesReplacer propertiesReplacer;

@Before
public void setUp() {
this.propertiesReplacer = new PropertiesReplacer(mock(MavenLoggerBridge.class));
public void setUp() throws Throwable {
PluginParameterExpressionEvaluator pluginParameterExpressionEvaluator = mock(PluginParameterExpressionEvaluator.class);
when(pluginParameterExpressionEvaluator.evaluate(anyString())).then(returnsFirstArg());
this.propertiesReplacer = new PropertiesReplacer(mock(MavenLoggerBridge.class), pluginParameterExpressionEvaluator);
}

@Test
Expand Down

0 comments on commit 311a8f6

Please sign in to comment.