Skip to content

Commit 5cef91e

Browse files
authored
[MNG-8494] Restore Maven 3 compatibility (#2031)
1 parent 71c662f commit 5cef91e

File tree

152 files changed

+8023
-6409
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

152 files changed

+8023
-6409
lines changed

api/maven-api-model/src/main/mdo/maven.mdo

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1315,6 +1315,15 @@
13151315
]]>
13161316
</code>
13171317
</codeSegment>
1318+
<codeSegment>
1319+
<version>4.0.0/4.0.99</version>
1320+
<code>
1321+
public void clearManagementKey() {
1322+
managementKey = null;
1323+
}
1324+
1325+
</code>
1326+
</codeSegment>
13181327
</codeSegments>
13191328
</class>
13201329
<class>

api/maven-api-settings/src/main/mdo/settings.mdo

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,10 @@
331331
}
332332
return profileMap;
333333
}
334+
335+
public void setModelEncoding(String modelEncoding) {
336+
update(getDelegate().with().modelEncoding(modelEncoding).build());
337+
}
334338
]]>
335339
</code>
336340
</codeSegment>

api/maven-api-toolchain/src/main/mdo/toolchains.mdo

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,16 @@
102102
</association>
103103
</field>
104104
</fields>
105+
<codeSegments>
106+
<codeSegment>
107+
<version>1.0.0/1.1.0</version>
108+
<code>
109+
public void setModelEncoding(String modelEncoding) {
110+
update(getDelegate().with().modelEncoding(modelEncoding).build());
111+
}
112+
</code>
113+
</codeSegment>
114+
</codeSegments>
105115
</class>
106116
<class>
107117
<name>ToolchainModel</name>

compat/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1425,10 +1425,9 @@ private File determinePom(final CommandLine commandLine, final String workingDir
14251425
}
14261426

14271427
if (modelProcessor != null) {
1428-
return modelProcessor.locateExistingPom(current);
1429-
} else {
1430-
return current.isFile() ? current : null;
1428+
current = modelProcessor.locatePom(current);
14311429
}
1430+
return current.isFile() ? current : null;
14321431
}
14331432

14341433
// Visible for testing
@@ -1742,8 +1741,7 @@ static class ExitException extends Exception {
17421741
//
17431742

17441743
protected TransferListener getConsoleTransferListener(boolean printResourceNames) {
1745-
return new SimplexTransferListener(
1746-
new ConsoleMavenTransferListener(messageBuilderFactory, System.out, printResourceNames));
1744+
return new SimplexTransferListener(new ConsoleMavenTransferListener(System.out, printResourceNames));
17471745
}
17481746

17491747
protected TransferListener getBatchTransferListener() {

compat/maven-embedder/src/main/java/org/apache/maven/cli/transfer/AbstractMavenTransferListener.java

Lines changed: 174 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@
1919
package org.apache.maven.cli.transfer;
2020

2121
import java.io.PrintStream;
22-
import java.io.PrintWriter;
22+
import java.text.DecimalFormat;
23+
import java.text.DecimalFormatSymbols;
24+
import java.util.Locale;
2325

24-
import org.apache.maven.api.services.MessageBuilder;
25-
import org.apache.maven.api.services.MessageBuilderFactory;
26+
import org.apache.maven.jline.MessageUtils;
2627
import org.eclipse.aether.transfer.AbstractTransferListener;
2728
import org.eclipse.aether.transfer.TransferCancelledException;
2829
import org.eclipse.aether.transfer.TransferEvent;
@@ -33,31 +34,177 @@
3334
*/
3435
@Deprecated
3536
public abstract class AbstractMavenTransferListener extends AbstractTransferListener {
36-
public static final String STYLE = ".transfer:-faint";
3737

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

41-
protected AbstractMavenTransferListener(MessageBuilderFactory messageBuilderFactory, PrintStream out) {
42-
this(messageBuilderFactory, new PrintWriter(out));
42+
// CHECKSTYLE_OFF: LineLength
43+
/**
44+
* Formats file size with the associated <a href="https://en.wikipedia.org/wiki/Metric_prefix">SI</a> prefix
45+
* (GB, MB, kB) and using the patterns <code>#0.0</code> for numbers between 1 and 10
46+
* and <code>###0</code> for numbers between 10 and 1000+ by default.
47+
*
48+
* @see <a href="https://en.wikipedia.org/wiki/Metric_prefix">https://en.wikipedia.org/wiki/Metric_prefix</a>
49+
* @see <a href="https://en.wikipedia.org/wiki/Binary_prefix">https://en.wikipedia.org/wiki/Binary_prefix</a>
50+
* @see <a
51+
* href="https://en.wikipedia.org/wiki/Octet_%28computing%29">https://en.wikipedia.org/wiki/Octet_(computing)</a>
52+
*/
53+
// CHECKSTYLE_ON: LineLength
54+
// TODO Move me to Maven Shared Utils
55+
static class FileSizeFormat {
56+
enum ScaleUnit {
57+
BYTE {
58+
@Override
59+
public long bytes() {
60+
return 1L;
61+
}
62+
63+
@Override
64+
public String symbol() {
65+
return "B";
66+
}
67+
},
68+
KILOBYTE {
69+
@Override
70+
public long bytes() {
71+
return 1000L;
72+
}
73+
74+
@Override
75+
public String symbol() {
76+
return "kB";
77+
}
78+
},
79+
MEGABYTE {
80+
@Override
81+
public long bytes() {
82+
return KILOBYTE.bytes() * KILOBYTE.bytes();
83+
}
84+
85+
@Override
86+
public String symbol() {
87+
return "MB";
88+
}
89+
},
90+
GIGABYTE {
91+
@Override
92+
public long bytes() {
93+
return MEGABYTE.bytes() * KILOBYTE.bytes();
94+
}
95+
;
96+
97+
@Override
98+
public String symbol() {
99+
return "GB";
100+
}
101+
};
102+
103+
public abstract long bytes();
104+
105+
public abstract String symbol();
106+
107+
public static ScaleUnit getScaleUnit(long size) {
108+
if (size < 0L) {
109+
throw new IllegalArgumentException("file size cannot be negative: " + size);
110+
}
111+
112+
if (size >= GIGABYTE.bytes()) {
113+
return GIGABYTE;
114+
} else if (size >= MEGABYTE.bytes()) {
115+
return MEGABYTE;
116+
} else if (size >= KILOBYTE.bytes()) {
117+
return KILOBYTE;
118+
} else {
119+
return BYTE;
120+
}
121+
}
122+
}
123+
124+
private DecimalFormat smallFormat;
125+
private DecimalFormat largeFormat;
126+
127+
FileSizeFormat(Locale locale) {
128+
smallFormat = new DecimalFormat("#0.0", new DecimalFormatSymbols(locale));
129+
largeFormat = new DecimalFormat("###0", new DecimalFormatSymbols(locale));
130+
}
131+
132+
public String format(long size) {
133+
return format(size, null);
134+
}
135+
136+
public String format(long size, ScaleUnit unit) {
137+
return format(size, unit, false);
138+
}
139+
140+
public String format(long size, ScaleUnit unit, boolean omitSymbol) {
141+
if (size < 0L) {
142+
throw new IllegalArgumentException("file size cannot be negative: " + size);
143+
}
144+
145+
if (unit == null) {
146+
unit = ScaleUnit.getScaleUnit(size);
147+
}
148+
149+
double scaledSize = (double) size / unit.bytes();
150+
String scaledSymbol = " " + unit.symbol();
151+
152+
if (omitSymbol) {
153+
scaledSymbol = "";
154+
}
155+
156+
if (unit == ScaleUnit.BYTE) {
157+
return largeFormat.format(size) + scaledSymbol;
158+
}
159+
160+
if (scaledSize < 0.05 || scaledSize >= 10.0) {
161+
return largeFormat.format(scaledSize) + scaledSymbol;
162+
} else {
163+
return smallFormat.format(scaledSize) + scaledSymbol;
164+
}
165+
}
166+
167+
public String formatProgress(long progressedSize, long size) {
168+
if (progressedSize < 0L) {
169+
throw new IllegalArgumentException("progressed file size cannot be negative: " + progressedSize);
170+
}
171+
if (size >= 0L && progressedSize > size) {
172+
throw new IllegalArgumentException(
173+
"progressed file size cannot be greater than size: " + progressedSize + " > " + size);
174+
}
175+
176+
if (size >= 0L && progressedSize != size) {
177+
ScaleUnit unit = ScaleUnit.getScaleUnit(size);
178+
String formattedProgressedSize = format(progressedSize, unit, true);
179+
String formattedSize = format(size, unit);
180+
181+
return formattedProgressedSize + "/" + formattedSize;
182+
} else {
183+
return format(progressedSize);
184+
}
185+
}
43186
}
44187

45-
protected AbstractMavenTransferListener(MessageBuilderFactory messageBuilderFactory, PrintWriter out) {
46-
this.messageBuilderFactory = messageBuilderFactory;
188+
protected PrintStream out;
189+
190+
protected AbstractMavenTransferListener(PrintStream out) {
47191
this.out = out;
48192
}
49193

50194
@Override
51195
public void transferInitiated(TransferEvent event) {
196+
String darkOn = MessageUtils.isColorEnabled() ? ANSI_DARK_SET : "";
197+
String darkOff = MessageUtils.isColorEnabled() ? ANSI_DARK_RESET : "";
198+
52199
String action = event.getRequestType() == TransferEvent.RequestType.PUT ? "Uploading" : "Downloading";
53200
String direction = event.getRequestType() == TransferEvent.RequestType.PUT ? "to" : "from";
54201

55202
TransferResource resource = event.getResource();
56-
MessageBuilder message = messageBuilderFactory.builder();
57-
message.style(STYLE).append(action).append(' ').append(direction).append(' ');
58-
message.resetStyle().append(resource.getRepositoryId());
59-
message.style(STYLE).append(": ").append(resource.getRepositoryUrl());
60-
message.resetStyle().append(resource.getResourceName());
203+
StringBuilder message = new StringBuilder();
204+
message.append(darkOn).append(action).append(' ').append(direction).append(' ');
205+
message.append(darkOff).append(resource.getRepositoryId());
206+
message.append(darkOn).append(": ").append(resource.getRepositoryUrl());
207+
message.append(darkOff).append(resource.getResourceName());
61208

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

73220
@Override
74221
public void transferSucceeded(TransferEvent event) {
222+
String darkOn = MessageUtils.isColorEnabled() ? ANSI_DARK_SET : "";
223+
String darkOff = MessageUtils.isColorEnabled() ? ANSI_DARK_RESET : "";
224+
75225
String action = (event.getRequestType() == TransferEvent.RequestType.PUT ? "Uploaded" : "Downloaded");
76226
String direction = event.getRequestType() == TransferEvent.RequestType.PUT ? "to" : "from";
77227

78228
TransferResource resource = event.getResource();
79229
long contentLength = event.getTransferredBytes();
80-
FileSizeFormat format = new FileSizeFormat();
230+
FileSizeFormat format = new FileSizeFormat(Locale.ENGLISH);
81231

82-
MessageBuilder message = messageBuilderFactory.builder();
83-
message.append(action).style(STYLE).append(' ').append(direction).append(' ');
84-
message.resetStyle().append(resource.getRepositoryId());
85-
message.style(STYLE).append(": ").append(resource.getRepositoryUrl());
86-
message.resetStyle().append(resource.getResourceName());
87-
message.style(STYLE).append(" (").append(format.format(contentLength));
232+
StringBuilder message = new StringBuilder();
233+
message.append(action).append(darkOn).append(' ').append(direction).append(' ');
234+
message.append(darkOff).append(resource.getRepositoryId());
235+
message.append(darkOn).append(": ").append(resource.getRepositoryUrl());
236+
message.append(darkOff).append(resource.getResourceName());
237+
message.append(darkOn).append(" (").append(format.format(contentLength));
88238

89239
long duration = System.currentTimeMillis() - resource.getTransferStartTime();
90240
if (duration > 0L) {
91241
double bytesPerSecond = contentLength / (duration / 1000.0);
92-
message.append(" at ");
93-
format.format(message, (long) bytesPerSecond);
94-
message.append("/s");
242+
message.append(" at ").append(format.format((long) bytesPerSecond)).append("/s");
95243
}
96244

97-
message.append(')').resetStyle();
245+
message.append(')').append(darkOff);
98246
out.println(message.toString());
99247
}
100248
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one
3+
* or more contributor license agreements. See the NOTICE file
4+
* distributed with this work for additional information
5+
* regarding copyright ownership. The ASF licenses this file
6+
* to you under the Apache License, Version 2.0 (the
7+
* "License"); you may not use this file except in compliance
8+
* with the License. You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
package org.apache.maven.cli.transfer;
20+
21+
import java.io.PrintStream;
22+
23+
/**
24+
* BatchModeMavenTransferListener
25+
*/
26+
@Deprecated
27+
public class BatchModeMavenTransferListener extends AbstractMavenTransferListener {
28+
public BatchModeMavenTransferListener(PrintStream out) {
29+
super(out);
30+
}
31+
}

0 commit comments

Comments
 (0)