Skip to content

Commit f15f26b

Browse files
authored
[MSHADE-443] Fix problems with shadeSourcesContent (#185)
Due to MSHADE-396, some cases which were made to work in MSHADE-252, started breaking. This change fixes them.
1 parent 06d9058 commit f15f26b

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,17 @@ public class SimpleRelocator implements Relocator {
4040
* Match <ul>
4141
* <li>certain Java keywords + space</li>
4242
* <li>beginning of Javadoc link + optional line breaks and continuations with '*'</li>
43+
* <li>(opening curly brace / opening parenthesis / comma / equals / semicolon) + space</li>
44+
* <li>(closing curly brace / closing multi-line comment) + space</li>
4345
* </ul>
4446
* at end of string
4547
*/
46-
private static final Pattern RX_ENDS_WITH_JAVA_KEYWORD =
47-
Pattern.compile("\\b(import|package|public|protected|private|static|final|synchronized|abstract|volatile) $"
48+
private static final Pattern RX_ENDS_WITH_JAVA_KEYWORD = Pattern.compile(
49+
"\\b(import|package|public|protected|private|static|final|synchronized|abstract|volatile|extends|implements|throws) $"
4850
+ "|"
49-
+ "\\{@link( \\*)* $");
51+
+ "\\{@link( \\*)* $"
52+
+ "|"
53+
+ "([{}(=;,]|\\*/) $");
5054

5155
private final String pattern;
5256

@@ -217,7 +221,7 @@ private String shadeSourceWithExcludes(
217221
// Usually shading makes package names a bit longer, so make buffer 10% bigger than original source
218222
StringBuilder shadedSourceContent = new StringBuilder(sourceContent.length() * 11 / 10);
219223
boolean isFirstSnippet = true;
220-
// Make sure that search pattern starts at word boundary and we look for literal ".", not regex jokers
224+
// Make sure that search pattern starts at word boundary and that we look for literal ".", not regex jokers
221225
String[] snippets = sourceContent.split("\\b" + patternFrom.replace(".", "[.]") + "\\b");
222226
for (int i = 0, snippetsLength = snippets.length; i < snippetsLength; i++) {
223227
String snippet = snippets[i];

src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,10 @@ public void testRelocateMavenFiles() {
205205
+ " private org.apache.maven.h.H h;\n"
206206
+ " private String ioInput;\n"
207207
+ "\n"
208-
+ " public void doSomething() {\n"
208+
+ " /** Javadoc, followed by default visibility method with fully qualified return type */\n"
209+
+ " org.apache.maven.MyReturnType doSomething( org.apache.maven.Bar bar, org.objectweb.asm.sub.Something something) {\n"
210+
+ " org.apache.maven.Bar bar;\n"
211+
+ " org.objectweb.asm.sub.Something something;\n"
209212
+ " String io, val;\n"
210213
+ " String noRelocation = \"NoWordBoundaryXXXorg.apache.maven.In\";\n"
211214
+ " String relocationPackage = \"org.apache.maven.In\";\n"
@@ -235,7 +238,10 @@ public void testRelocateMavenFiles() {
235238
+ " private com.acme.maven.h.H h;\n"
236239
+ " private String ioInput;\n"
237240
+ "\n"
238-
+ " public void doSomething() {\n"
241+
+ " /** Javadoc, followed by default visibility method with fully qualified return type */\n"
242+
+ " com.acme.maven.MyReturnType doSomething( com.acme.maven.Bar bar, aj.org.objectweb.asm.sub.Something something) {\n"
243+
+ " com.acme.maven.Bar bar;\n"
244+
+ " aj.org.objectweb.asm.sub.Something something;\n"
239245
+ " String io, val;\n"
240246
+ " String noRelocation = \"NoWordBoundaryXXXorg.apache.maven.In\";\n"
241247
+ " String relocationPackage = \"com.acme.maven.In\";\n"

0 commit comments

Comments
 (0)