Skip to content

Commit

Permalink
[MNG-8494] Restore Maven 3 compatibility (#2031)
Browse files Browse the repository at this point in the history
  • Loading branch information
gnodet authored Jan 10, 2025
1 parent 71c662f commit 5cef91e
Show file tree
Hide file tree
Showing 152 changed files with 8,023 additions and 6,409 deletions.
9 changes: 9 additions & 0 deletions api/maven-api-model/src/main/mdo/maven.mdo
Original file line number Diff line number Diff line change
Expand Up @@ -1315,6 +1315,15 @@
]]>
</code>
</codeSegment>
<codeSegment>
<version>4.0.0/4.0.99</version>
<code>
public void clearManagementKey() {
managementKey = null;
}

</code>
</codeSegment>
</codeSegments>
</class>
<class>
Expand Down
4 changes: 4 additions & 0 deletions api/maven-api-settings/src/main/mdo/settings.mdo
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,10 @@
}
return profileMap;
}
public void setModelEncoding(String modelEncoding) {
update(getDelegate().with().modelEncoding(modelEncoding).build());
}
]]>
</code>
</codeSegment>
Expand Down
10 changes: 10 additions & 0 deletions api/maven-api-toolchain/src/main/mdo/toolchains.mdo
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,16 @@
</association>
</field>
</fields>
<codeSegments>
<codeSegment>
<version>1.0.0/1.1.0</version>
<code>
public void setModelEncoding(String modelEncoding) {
update(getDelegate().with().modelEncoding(modelEncoding).build());
}
</code>
</codeSegment>
</codeSegments>
</class>
<class>
<name>ToolchainModel</name>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1425,10 +1425,9 @@ private File determinePom(final CommandLine commandLine, final String workingDir
}

if (modelProcessor != null) {
return modelProcessor.locateExistingPom(current);
} else {
return current.isFile() ? current : null;
current = modelProcessor.locatePom(current);
}
return current.isFile() ? current : null;
}

// Visible for testing
Expand Down Expand Up @@ -1742,8 +1741,7 @@ static class ExitException extends Exception {
//

protected TransferListener getConsoleTransferListener(boolean printResourceNames) {
return new SimplexTransferListener(
new ConsoleMavenTransferListener(messageBuilderFactory, System.out, printResourceNames));
return new SimplexTransferListener(new ConsoleMavenTransferListener(System.out, printResourceNames));
}

protected TransferListener getBatchTransferListener() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,11 @@
package org.apache.maven.cli.transfer;

import java.io.PrintStream;
import java.io.PrintWriter;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;

import org.apache.maven.api.services.MessageBuilder;
import org.apache.maven.api.services.MessageBuilderFactory;
import org.apache.maven.jline.MessageUtils;
import org.eclipse.aether.transfer.AbstractTransferListener;
import org.eclipse.aether.transfer.TransferCancelledException;
import org.eclipse.aether.transfer.TransferEvent;
Expand All @@ -33,31 +34,177 @@
*/
@Deprecated
public abstract class AbstractMavenTransferListener extends AbstractTransferListener {
public static final String STYLE = ".transfer:-faint";

protected final MessageBuilderFactory messageBuilderFactory;
protected final PrintWriter out;
private static final String ESC = "\u001B";
private static final String ANSI_DARK_SET = ESC + "[90m";
private static final String ANSI_DARK_RESET = ESC + "[0m";

protected AbstractMavenTransferListener(MessageBuilderFactory messageBuilderFactory, PrintStream out) {
this(messageBuilderFactory, new PrintWriter(out));
// CHECKSTYLE_OFF: LineLength
/**
* Formats file size with the associated <a href="https://en.wikipedia.org/wiki/Metric_prefix">SI</a> prefix
* (GB, MB, kB) and using the patterns <code>#0.0</code> for numbers between 1 and 10
* and <code>###0</code> for numbers between 10 and 1000+ by default.
*
* @see <a href="https://en.wikipedia.org/wiki/Metric_prefix">https://en.wikipedia.org/wiki/Metric_prefix</a>
* @see <a href="https://en.wikipedia.org/wiki/Binary_prefix">https://en.wikipedia.org/wiki/Binary_prefix</a>
* @see <a
* href="https://en.wikipedia.org/wiki/Octet_%28computing%29">https://en.wikipedia.org/wiki/Octet_(computing)</a>
*/
// CHECKSTYLE_ON: LineLength
// TODO Move me to Maven Shared Utils
static class FileSizeFormat {
enum ScaleUnit {
BYTE {
@Override
public long bytes() {
return 1L;
}

@Override
public String symbol() {
return "B";
}
},
KILOBYTE {
@Override
public long bytes() {
return 1000L;
}

@Override
public String symbol() {
return "kB";
}
},
MEGABYTE {
@Override
public long bytes() {
return KILOBYTE.bytes() * KILOBYTE.bytes();
}

@Override
public String symbol() {
return "MB";
}
},
GIGABYTE {
@Override
public long bytes() {
return MEGABYTE.bytes() * KILOBYTE.bytes();
}
;

@Override
public String symbol() {
return "GB";
}
};

public abstract long bytes();

public abstract String symbol();

public static ScaleUnit getScaleUnit(long size) {
if (size < 0L) {
throw new IllegalArgumentException("file size cannot be negative: " + size);
}

if (size >= GIGABYTE.bytes()) {
return GIGABYTE;
} else if (size >= MEGABYTE.bytes()) {
return MEGABYTE;
} else if (size >= KILOBYTE.bytes()) {
return KILOBYTE;
} else {
return BYTE;
}
}
}

private DecimalFormat smallFormat;
private DecimalFormat largeFormat;

FileSizeFormat(Locale locale) {
smallFormat = new DecimalFormat("#0.0", new DecimalFormatSymbols(locale));
largeFormat = new DecimalFormat("###0", new DecimalFormatSymbols(locale));
}

public String format(long size) {
return format(size, null);
}

public String format(long size, ScaleUnit unit) {
return format(size, unit, false);
}

public String format(long size, ScaleUnit unit, boolean omitSymbol) {
if (size < 0L) {
throw new IllegalArgumentException("file size cannot be negative: " + size);
}

if (unit == null) {
unit = ScaleUnit.getScaleUnit(size);
}

double scaledSize = (double) size / unit.bytes();
String scaledSymbol = " " + unit.symbol();

if (omitSymbol) {
scaledSymbol = "";
}

if (unit == ScaleUnit.BYTE) {
return largeFormat.format(size) + scaledSymbol;
}

if (scaledSize < 0.05 || scaledSize >= 10.0) {
return largeFormat.format(scaledSize) + scaledSymbol;
} else {
return smallFormat.format(scaledSize) + scaledSymbol;
}
}

public String formatProgress(long progressedSize, long size) {
if (progressedSize < 0L) {
throw new IllegalArgumentException("progressed file size cannot be negative: " + progressedSize);
}
if (size >= 0L && progressedSize > size) {
throw new IllegalArgumentException(
"progressed file size cannot be greater than size: " + progressedSize + " > " + size);
}

if (size >= 0L && progressedSize != size) {
ScaleUnit unit = ScaleUnit.getScaleUnit(size);
String formattedProgressedSize = format(progressedSize, unit, true);
String formattedSize = format(size, unit);

return formattedProgressedSize + "/" + formattedSize;
} else {
return format(progressedSize);
}
}
}

protected AbstractMavenTransferListener(MessageBuilderFactory messageBuilderFactory, PrintWriter out) {
this.messageBuilderFactory = messageBuilderFactory;
protected PrintStream out;

protected AbstractMavenTransferListener(PrintStream out) {
this.out = out;
}

@Override
public void transferInitiated(TransferEvent event) {
String darkOn = MessageUtils.isColorEnabled() ? ANSI_DARK_SET : "";
String darkOff = MessageUtils.isColorEnabled() ? ANSI_DARK_RESET : "";

String action = event.getRequestType() == TransferEvent.RequestType.PUT ? "Uploading" : "Downloading";
String direction = event.getRequestType() == TransferEvent.RequestType.PUT ? "to" : "from";

TransferResource resource = event.getResource();
MessageBuilder message = messageBuilderFactory.builder();
message.style(STYLE).append(action).append(' ').append(direction).append(' ');
message.resetStyle().append(resource.getRepositoryId());
message.style(STYLE).append(": ").append(resource.getRepositoryUrl());
message.resetStyle().append(resource.getResourceName());
StringBuilder message = new StringBuilder();
message.append(darkOn).append(action).append(' ').append(direction).append(' ');
message.append(darkOff).append(resource.getRepositoryId());
message.append(darkOn).append(": ").append(resource.getRepositoryUrl());
message.append(darkOff).append(resource.getResourceName());

out.println(message.toString());
}
Expand All @@ -72,29 +219,30 @@ public void transferCorrupted(TransferEvent event) throws TransferCancelledExcep

@Override
public void transferSucceeded(TransferEvent event) {
String darkOn = MessageUtils.isColorEnabled() ? ANSI_DARK_SET : "";
String darkOff = MessageUtils.isColorEnabled() ? ANSI_DARK_RESET : "";

String action = (event.getRequestType() == TransferEvent.RequestType.PUT ? "Uploaded" : "Downloaded");
String direction = event.getRequestType() == TransferEvent.RequestType.PUT ? "to" : "from";

TransferResource resource = event.getResource();
long contentLength = event.getTransferredBytes();
FileSizeFormat format = new FileSizeFormat();
FileSizeFormat format = new FileSizeFormat(Locale.ENGLISH);

MessageBuilder message = messageBuilderFactory.builder();
message.append(action).style(STYLE).append(' ').append(direction).append(' ');
message.resetStyle().append(resource.getRepositoryId());
message.style(STYLE).append(": ").append(resource.getRepositoryUrl());
message.resetStyle().append(resource.getResourceName());
message.style(STYLE).append(" (").append(format.format(contentLength));
StringBuilder message = new StringBuilder();
message.append(action).append(darkOn).append(' ').append(direction).append(' ');
message.append(darkOff).append(resource.getRepositoryId());
message.append(darkOn).append(": ").append(resource.getRepositoryUrl());
message.append(darkOff).append(resource.getResourceName());
message.append(darkOn).append(" (").append(format.format(contentLength));

long duration = System.currentTimeMillis() - resource.getTransferStartTime();
if (duration > 0L) {
double bytesPerSecond = contentLength / (duration / 1000.0);
message.append(" at ");
format.format(message, (long) bytesPerSecond);
message.append("/s");
message.append(" at ").append(format.format((long) bytesPerSecond)).append("/s");
}

message.append(')').resetStyle();
message.append(')').append(darkOff);
out.println(message.toString());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.maven.cli.transfer;

import java.io.PrintStream;

/**
* BatchModeMavenTransferListener
*/
@Deprecated
public class BatchModeMavenTransferListener extends AbstractMavenTransferListener {
public BatchModeMavenTransferListener(PrintStream out) {
super(out);
}
}
Loading

0 comments on commit 5cef91e

Please sign in to comment.