Skip to content

Commit

Permalink
Get rid of maven-shared-utils
Browse files Browse the repository at this point in the history
Given maven-shared-utils is now deprecated (see MSHARED-1269), we need to remove its usage in maven.  Maven core only uses the logging/message related classes from maven-shared-utils, so this PR enhance the initial v4 api with the needed interfaces and move the jansi specific code into maven-embedder
  • Loading branch information
gnodet committed Jun 13, 2023
1 parent 90ce98d commit 7ea1048
Show file tree
Hide file tree
Showing 24 changed files with 789 additions and 146 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,22 @@
*/
public interface MessageBuilder {
/**
* Append message content in success style.
* By default, bold green
* Append message content in debug style.
* By default, bold cyan
* @param message the message to append
* @return the current builder
*/
@Nonnull
MessageBuilder success(Object message);
MessageBuilder debug(Object message);

/**
* Append message content in info style.
* By default, bold blue
* @param message the message to append
* @return the current builder
*/
@Nonnull
MessageBuilder info(Object message);

/**
* Append message content in warning style.
Expand All @@ -45,6 +54,24 @@ public interface MessageBuilder {
@Nonnull
MessageBuilder warning(Object message);

/**
* Append message content in error style.
* By default, bold red
* @param message the message to append
* @return the current builder
*/
@Nonnull
MessageBuilder error(Object message);

/**
* Append message content in success style.
* By default, bold green
* @param message the message to append
* @return the current builder
*/
@Nonnull
MessageBuilder success(Object message);

/**
* Append message content in failure style.
* By default, bold red
Expand Down
4 changes: 0 additions & 4 deletions maven-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -99,10 +99,6 @@ under the License.
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-util</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-shared-utils</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.sisu</groupId>
<artifactId>org.eclipse.sisu.plexus</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,106 +24,128 @@

@Experimental
public class DefaultMessageBuilder implements MessageBuilder {
private final @Nonnull org.apache.maven.shared.utils.logging.MessageBuilder delegate;

public DefaultMessageBuilder(@Nonnull org.apache.maven.shared.utils.logging.MessageBuilder delegate) {
this.delegate = delegate;
private final StringBuilder buffer;

public DefaultMessageBuilder() {
this(new StringBuilder());
}

public DefaultMessageBuilder(StringBuilder buffer) {
this.buffer = buffer;
}

@Override
@Nonnull
public MessageBuilder success(Object o) {
delegate.success(o);
return this;
public MessageBuilder debug(Object o) {
return a(o);
}

@Override
@Nonnull
public MessageBuilder info(Object o) {
return a(o);
}

@Override
@Nonnull
public MessageBuilder warning(Object o) {
delegate.warning(o);
return this;
return a(o);
}

@Override
@Nonnull
public MessageBuilder error(Object o) {
return a(o);
}

@Override
@Nonnull
public MessageBuilder success(Object o) {
return a(o);
}

@Override
@Nonnull
public MessageBuilder failure(Object o) {
delegate.failure(o);
return this;
return a(o);
}

@Override
@Nonnull
public MessageBuilder strong(Object o) {
delegate.strong(o);
return this;
return a(o);
}

@Override
@Nonnull
public MessageBuilder mojo(Object o) {
delegate.mojo(o);
return this;
return a(o);
}

@Override
@Nonnull
public MessageBuilder project(Object o) {
delegate.project(o);
return this;
return a(o);
}

@Override
@Nonnull
public MessageBuilder a(char[] chars, int i, int i1) {
delegate.a(chars, i, i1);
buffer.append(chars, i, i1);
return this;
}

@Override
@Nonnull
public MessageBuilder a(char[] chars) {
delegate.a(chars);
buffer.append(chars);
return this;
}

@Override
@Nonnull
public MessageBuilder a(CharSequence charSequence, int i, int i1) {
delegate.a(charSequence, i, i1);
buffer.append(charSequence, i, i1);
return this;
}

@Override
@Nonnull
public MessageBuilder a(CharSequence charSequence) {
delegate.a(charSequence);
buffer.append(charSequence);
return this;
}

@Override
@Nonnull
public MessageBuilder a(Object o) {
delegate.a(o);
buffer.append(o);
return this;
}

@Override
@Nonnull
public MessageBuilder newline() {
delegate.newline();
buffer.append(System.getProperty("line.separator"));
return this;
}

@Override
@Nonnull
public MessageBuilder format(String s, Object... objects) {
delegate.format(s, objects);
buffer.append(String.format(s, objects));
return this;
}

@Override
@Nonnull
public String build() {
return delegate.toString();
return buffer.toString();
}

@Override
public String toString() {
return build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
*/
package org.apache.maven.internal.impl;

import javax.annotation.Priority;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;

Expand All @@ -27,32 +29,35 @@
import org.apache.maven.api.annotations.Nonnull;
import org.apache.maven.api.services.MessageBuilder;
import org.apache.maven.api.services.MessageBuilderFactory;
import org.apache.maven.shared.utils.logging.MessageUtils;

@Experimental
@Named
@Singleton
@Priority(-1)
public class DefaultMessageBuilderFactory implements MessageBuilderFactory {

@Inject
public DefaultMessageBuilderFactory() {}

@Override
public boolean isColorEnabled() {
return MessageUtils.isColorEnabled();
return false;
}

@Override
public int getTerminalWidth() {
return MessageUtils.getTerminalWidth();
return -1;
}

@Override
@Nonnull
public MessageBuilder builder() {
return new DefaultMessageBuilder(MessageUtils.buffer());
return new DefaultMessageBuilder();
}

@Override
@Nonnull
public MessageBuilder builder(@Nonnull StringBuilder stringBuilder) {
return new DefaultMessageBuilder(MessageUtils.buffer(Objects.requireNonNull(stringBuilder)));
return new DefaultMessageBuilder(Objects.requireNonNull(stringBuilder));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@
*/
package org.apache.maven.lifecycle;

import org.apache.maven.api.services.MessageBuilder;
import org.apache.maven.api.services.MessageBuilderFactory;
import org.apache.maven.internal.impl.DefaultMessageBuilderFactory;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.utils.logging.MessageBuilder;

import static org.apache.maven.shared.utils.logging.MessageUtils.buffer;

/**
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
Expand Down Expand Up @@ -58,15 +58,27 @@ public LifecycleExecutionException(String message, MojoExecution execution, Mave
}

public LifecycleExecutionException(MojoExecution execution, MavenProject project, Throwable cause) {
this(createMessage(execution, project, cause), execution, project, cause);
this(new DefaultMessageBuilderFactory(), execution, project, cause);
}

public LifecycleExecutionException(
MessageBuilderFactory messageBuilderFactory,
MojoExecution execution,
MavenProject project,
Throwable cause) {
this(createMessage(messageBuilderFactory, execution, project, cause), execution, project, cause);
}

public MavenProject getProject() {
return project;
}

private static String createMessage(MojoExecution execution, MavenProject project, Throwable cause) {
MessageBuilder buffer = buffer(256);
private static String createMessage(
MessageBuilderFactory messageBuilderFactory,
MojoExecution execution,
MavenProject project,
Throwable cause) {
MessageBuilder buffer = messageBuilderFactory.builder(256);

buffer.a("Failed to execute goal");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
*/
package org.apache.maven.lifecycle.internal;

import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;

Expand All @@ -26,6 +27,8 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.apache.maven.api.services.MessageBuilder;
import org.apache.maven.api.services.MessageBuilderFactory;
import org.apache.maven.api.xml.XmlNode;
import org.apache.maven.internal.xml.XmlNodeImpl;
import org.apache.maven.lifecycle.MojoExecutionConfigurator;
Expand All @@ -35,8 +38,6 @@
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.Parameter;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.utils.logging.MessageBuilder;
import org.apache.maven.shared.utils.logging.MessageUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -50,6 +51,9 @@
public class DefaultMojoExecutionConfigurator implements MojoExecutionConfigurator {
private final Logger logger = LoggerFactory.getLogger(getClass());

@Inject
MessageBuilderFactory messageBuilderFactory;

@Override
public void configure(MavenProject project, MojoExecution mojoExecution, boolean allowPluginLevelConfig) {
String g = mojoExecution.getPlugin().getGroupId();
Expand Down Expand Up @@ -136,7 +140,8 @@ private void checkUnknownMojoConfigurationParameters(MojoExecution mojoExecution
unknownParameters = getUnknownParameters(mojoExecution, parametersNamesAll);

unknownParameters.forEach(name -> {
MessageBuilder messageBuilder = MessageUtils.buffer()
MessageBuilder messageBuilder = messageBuilderFactory
.builder()
.warning("Parameter '")
.warning(name)
.warning("' is unknown for plugin '")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import java.util.stream.Collectors;

import org.apache.maven.RepositoryUtils;
import org.apache.maven.api.services.MessageBuilderFactory;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.eventspy.internal.EventSpyDispatcher;
Expand Down Expand Up @@ -75,16 +76,20 @@ public class LifecycleDependencyResolver {

private final ProjectArtifactsCache projectArtifactsCache;

private final MessageBuilderFactory messageBuilderFactory;

@Inject
public LifecycleDependencyResolver(
ProjectDependenciesResolver dependenciesResolver,
ProjectArtifactFactory artifactFactory,
EventSpyDispatcher eventSpyDispatcher,
ProjectArtifactsCache projectArtifactsCache) {
ProjectArtifactsCache projectArtifactsCache,
MessageBuilderFactory messageBuilderFactory) {
this.dependenciesResolver = dependenciesResolver;
this.artifactFactory = artifactFactory;
this.eventSpyDispatcher = eventSpyDispatcher;
this.projectArtifactsCache = projectArtifactsCache;
this.messageBuilderFactory = messageBuilderFactory;
}

public static List<MavenProject> getProjects(MavenProject project, MavenSession session, boolean aggregator) {
Expand Down Expand Up @@ -253,7 +258,7 @@ private Set<Artifact> getDependencies(

logger.warn("Try running the build up to the lifecycle phase \"package\"");
} else {
throw new LifecycleExecutionException(null, project, e);
throw new LifecycleExecutionException(messageBuilderFactory, null, project, e);
}
}

Expand Down
Loading

0 comments on commit 7ea1048

Please sign in to comment.