Rutger Lubbers
04/22/2024, 12:32 PMLee Turner
04/22/2024, 12:39 PMRutger Lubbers
04/22/2024, 12:43 PMRutger Lubbers
04/22/2024, 5:24 PMLee Turner
04/22/2024, 5:26 PMRutger Lubbers
04/22/2024, 5:27 PMLee Turner
04/22/2024, 5:37 PMRutger Lubbers
04/23/2024, 11:10 AMval jettyVersion = "12.0.7"
val wiremockVersion = "3.5.3"
implementation("org.wiremock:wiremock-jetty12:${wiremockVersion}")
implementation("org.eclipse.jetty.http2:jetty-http2-server:${jettyVersion}")
implementation("org.wiremock:wiremock:${wiremockVersion}") {
// excluded because this seems to require more native compilation hints
exclude("org.eclipse.jetty.http2")
}
Further, where we start-up a WireMock server:
WireMockServer wireMockServer = new WireMockServer(
wireMockConfig()
...
);
added:
.templatingEnabled(false)
removed:
.usingFilesUnderClasspath(WIREMOCK_BASE_DIRECTORY)
Both are to make sure I don't have to add more compilation hints.Rutger Lubbers
04/23/2024, 11:11 AM**
* Configuration that holds the WireMock native compilation hints.
*/
@Configuration
@ImportRuntimeHints(WireMockNativeCompilationHints.RuntimeHintsRegistrar.class)
@SuppressWarnings("PrivateConstructorForUtilityClass")
public class WireMockNativeCompilationHints {
/**
* The runtime-hints registrar.
*/
static class RuntimeHintsRegistrar implements org.springframework.aot.hint.RuntimeHintsRegistrar {
@Override
public void registerHints(RuntimeHints hints,
ClassLoader classLoader) {
hints.reflection()
.registerType(HashSet.class, // wiremock / jetty
INVOKE_PUBLIC_CONSTRUCTORS,
INVOKE_PUBLIC_METHODS)
.registerType(PathSpecSet.class, // wiremock / jetty
INVOKE_PUBLIC_CONSTRUCTORS,
INVOKE_PUBLIC_METHODS)
.registerType(AsciiLowerCaseSet.class, // wiremock / jetty
INVOKE_PUBLIC_CONSTRUCTORS,
INVOKE_PUBLIC_METHODS)
.registerType(org.eclipse.jetty.ee10.servlets.CrossOriginFilter.class, // wiremock / jetty
INVOKE_PUBLIC_CONSTRUCTORS,
INVOKE_PUBLIC_METHODS)
.registerType(CrossOriginFilter.class, // wiremock / jetty
INVOKE_PUBLIC_CONSTRUCTORS,
INVOKE_PUBLIC_METHODS)
.registerType(ContentTypeSettingFilter.class, // wiremock / jetty
INVOKE_PUBLIC_CONSTRUCTORS,
INVOKE_PUBLIC_METHODS)
.registerType(TrailingSlashFilter.class, // wiremock / jetty
INVOKE_PUBLIC_CONSTRUCTORS,
INVOKE_PUBLIC_METHODS)
.registerType(WireMockHandlerDispatchingServlet.class, // wiremock / jetty
INVOKE_PUBLIC_CONSTRUCTORS,
INVOKE_PUBLIC_METHODS)
.registerType(StringValuePattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(AbsentPattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(AbstractDateTimePattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(AbstractLogicalMatcher.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(AbstractRegexPattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(AbstractDateTimePattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(AnythingPattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(BeforeDateTimePattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(ContainsPattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(EqualToDateTimePattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(EqualToJsonPattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(EqualToPattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(EqualToXmlPattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(LogicalAnd.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(LogicalOr.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(MatchesJsonPathPattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(MatchesJsonSchemaPattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(MatchesXPathPattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(NegativeContainsPattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(NegativeRegexPattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(NotPattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(PathPattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(PathTemplatePattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(RegexPattern.class, // wiremock
INVOKE_DECLARED_CONSTRUCTORS,
INTROSPECT_DECLARED_CONSTRUCTORS)
.registerType(Byte.class, // wiremock / jetty
INVOKE_PUBLIC_METHODS)
.registerType(HTTP2ServerConnection.class, INVOKE_PUBLIC_METHODS) // wiremock / jetty
;
try {
String valueOf = "valueOf";
hints.reflection()
.registerMethod(Boolean.class.getDeclaredMethod(valueOf, String.class),
INVOKE) // wiremock / jetty
.registerMethod(Byte.class.getDeclaredMethod(valueOf, String.class),
INVOKE) // wiremock / jetty
.registerMethod(Double.class.getDeclaredMethod(valueOf, String.class),
INVOKE) // wiremock / jetty
.registerMethod(Float.class.getDeclaredMethod(valueOf, String.class),
INVOKE) // wiremock / jetty
.registerMethod(Integer.class.getDeclaredMethod(valueOf, String.class),
INVOKE) // wiremock / jetty
.registerMethod(Long.class.getDeclaredMethod(valueOf, String.class),
INVOKE) // wiremock / jetty
.registerMethod(Short.class.getDeclaredMethod(valueOf, String.class),
INVOKE) // wiremock / jetty
;
} catch (NoSuchMethodException e) {
throw new HawaiiException(e);
}
hints.resources()
.registerPattern("assets/*") // wiremock
.registerPattern("doc-index.html") // wiremock
.registerPattern("helpers.nashorn.js") // wiremock
.registerResourceBundle("jsv-messages") // wiremock
.registerPattern("leap-second-dates.csv") // wiremock
.registerPattern("keystore") // wiremock
.registerPattern("version.properties") // wiremock
.registerPattern("wiremock/jakarta/servlet/LocalStrings*") // wiremock
;
}
}
}
Rutger Lubbers
04/23/2024, 11:12 AM