为 Scala 构建 JVM 2_11
Building JVM for Scala 2_11
这是关于项目https://github.com/DiUS/pact-jvm的问题。
问题
当我验证契约时,我需要能够使用客户端身份验证,因为提供商实际上需要客户端身份验证。我将在我所说的内容前面加上一个我不太熟悉的声明 groovy:我主要使用 scala、java 或 javascript 进行编程。查看代码后,我认为目前不支持客户端身份验证,因此我想提出一个包含该支持的拉取请求。
到目前为止我做了什么
我已经设法让 Https 与信任库一起工作:我复制了 HttpTarget 并创建了一个 HttpsTarget,并在 HttpsTarget 中指定了 providerinfo 中的信任库。不幸的是,查看代码似乎没有指定客户端证书的方法,所以我需要更改 providerinfo class 以便能够指定它的位置(与提供信任库的方式相同).
我的问题是我已经使用 'for contributors' 中的建议编译了代码,但是当我在本地发布时,我只发布了 scala 版本 2_12。由于版本问题和scala版本之间的二进制不兼容,我需要发布到scala2_11。我的 gradle 技能甚至比我的 groovy 技能还差。我已经搜索了所有对 scalaVersion 的引用,发现围绕它有很多逻辑,但我没有设法找到它的指定位置。
问题
如果我可以使用当前契约验证器的客户端身份验证,你能告诉我吗?如果没有,你能告诉我如何发布支持 scala 的项目吗2_11?
谢谢
最后我做了自己的Http Target。我需要的是从 Junit 运行,不是一般情况,这就足够了:
public class HttpsTarget extends HttpTarget {
public HttpsTarget(final int port) {
super("https", "localhost", port, "/", false);
}
static class HttpsClientFactory implements IHttpClientFactory {
@NotNull
@Override
public CloseableHttpClient newClient(Object o) {
SSLContext sslContext = // put here code to make ssl context
CloseableHttpClient httpClient = HttpClients
.custom()
.setSSLContext(sslContext)
.build();
return httpClient;
}
}
@Override
public void testInteraction(final String consumerName, final Interaction interaction, PactSource source) {
ProviderInfo provider = getProviderInfo(source);
ConsumerInfo consumer = new ConsumerInfo(consumerName);
ProviderVerifier verifier = setupVerifier(interaction, provider, consumer);
Map<String, Object> failures = new HashMap<>();
ProviderClient client = new ProviderClient(provider, new HttpsClientFactory());
verifier.verifyResponseFromProvider(provider, interaction, interaction.getDescription(), failures, client);
reportTestResult(failures.isEmpty(), verifier);
try {
if (!failures.isEmpty()) {
verifier.displayFailures(failures);
throw getAssertionError(failures);
}
} finally {
verifier.finialiseReports();
}
}
}
这是关于项目https://github.com/DiUS/pact-jvm的问题。
问题
当我验证契约时,我需要能够使用客户端身份验证,因为提供商实际上需要客户端身份验证。我将在我所说的内容前面加上一个我不太熟悉的声明 groovy:我主要使用 scala、java 或 javascript 进行编程。查看代码后,我认为目前不支持客户端身份验证,因此我想提出一个包含该支持的拉取请求。
到目前为止我做了什么
我已经设法让 Https 与信任库一起工作:我复制了 HttpTarget 并创建了一个 HttpsTarget,并在 HttpsTarget 中指定了 providerinfo 中的信任库。不幸的是,查看代码似乎没有指定客户端证书的方法,所以我需要更改 providerinfo class 以便能够指定它的位置(与提供信任库的方式相同).
我的问题是我已经使用 'for contributors' 中的建议编译了代码,但是当我在本地发布时,我只发布了 scala 版本 2_12。由于版本问题和scala版本之间的二进制不兼容,我需要发布到scala2_11。我的 gradle 技能甚至比我的 groovy 技能还差。我已经搜索了所有对 scalaVersion 的引用,发现围绕它有很多逻辑,但我没有设法找到它的指定位置。
问题
如果我可以使用当前契约验证器的客户端身份验证,你能告诉我吗?如果没有,你能告诉我如何发布支持 scala 的项目吗2_11?
谢谢
最后我做了自己的Http Target。我需要的是从 Junit 运行,不是一般情况,这就足够了:
public class HttpsTarget extends HttpTarget {
public HttpsTarget(final int port) {
super("https", "localhost", port, "/", false);
}
static class HttpsClientFactory implements IHttpClientFactory {
@NotNull
@Override
public CloseableHttpClient newClient(Object o) {
SSLContext sslContext = // put here code to make ssl context
CloseableHttpClient httpClient = HttpClients
.custom()
.setSSLContext(sslContext)
.build();
return httpClient;
}
}
@Override
public void testInteraction(final String consumerName, final Interaction interaction, PactSource source) {
ProviderInfo provider = getProviderInfo(source);
ConsumerInfo consumer = new ConsumerInfo(consumerName);
ProviderVerifier verifier = setupVerifier(interaction, provider, consumer);
Map<String, Object> failures = new HashMap<>();
ProviderClient client = new ProviderClient(provider, new HttpsClientFactory());
verifier.verifyResponseFromProvider(provider, interaction, interaction.getDescription(), failures, client);
reportTestResult(failures.isEmpty(), verifier);
try {
if (!failures.isEmpty()) {
verifier.displayFailures(failures);
throw getAssertionError(failures);
}
} finally {
verifier.finialiseReports();
}
}
}