Skip to content

Commit 4d93b09

Browse files
committed
issue #200: createMergedModule fails with synthetic Service Providers
1 parent 467b9b6 commit 4d93b09

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

src/main/groovy/org/beryx/jlink/data/ModuleInfo.groovy

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ class ModuleInfo implements Serializable {
150150
final String service
151151

152152
UsesBuilder(String service) {
153-
this.service = service.replace('$', '.')
153+
this.service = adjustQualifiedName(service)
154154
}
155155

156156
@Override
@@ -185,12 +185,12 @@ class ModuleInfo implements Serializable {
185185
final TreeSet<String> implementations = new TreeSet<>()
186186

187187
ProvidesBuilder(String service) {
188-
this.service = service.replace('$', '.')
188+
this.service = adjustQualifiedName(service)
189189
}
190190

191191
ProvidesBuilder with(String... implementations) {
192192
for(s in implementations) {
193-
this.implementations.add(s.replace('$', '.'))
193+
this.implementations.add(adjustQualifiedName(s))
194194
}
195195
this
196196
}
@@ -241,4 +241,12 @@ class ModuleInfo implements Serializable {
241241
for(builder in providesBuilders) { entries << blanks + builder.toString(language)}
242242
entries.join('\n')
243243
}
244+
245+
private static String adjustQualifiedName(String s) {
246+
int idx = s.indexOf('.$')
247+
String notAdjusted = (idx < 0) ? '' : s.substring(idx)
248+
String toAdjust = (idx < 0) ? s : s.substring(0, idx)
249+
String adjusted = toAdjust.replaceAll('([^.])\\$', '$1.')
250+
return adjusted + notAdjusted
251+
}
244252
}

0 commit comments

Comments
 (0)