@Override
public void createAppLink(final ConnectAddonBean addon, final String baseUrl, final AuthenticationType authType, final String publicKey, final String addonUserKey) {
transactionTemplate.execute((TransactionCallback<Void>) () -> {
String pluginKey = addon.getKey();
URI baseUri = URI.create(baseUrl);
final ApplicationId expectedApplicationId = ApplicationIdUtil.generate(baseUri);
final RemotePluginContainerApplicationType applicationType = typeAccessor.getApplicationType(RemotePluginContainerApplicationType.class);
deleteOldAppLinks(pluginKey, expectedApplicationId);
final ApplicationLinkDetails details = ApplicationLinkDetails.builder()
.displayUrl(baseUri)
.isPrimary(false)
.name(addon.getName() != null ? addon.getName() : addon.getKey())
.rpcUrl(baseUri)
.build();
log.info("Creating an application link for Connect add-on with key '{}'", pluginKey);
ApplicationLink link = applicationLinkService.addApplicationLink(expectedApplicationId, applicationType, details);
link.putProperty(PLUGIN_KEY_PROPERTY, pluginKey);
link.putProperty(JwtConstants.AppLinks.ADD_ON_USER_KEY_PROPERTY_NAME, addonUserKey);
link.putProperty("IS_ACTIVITY_ITEM_PROVIDER", Boolean.FALSE.toString());
link.putProperty("system", Boolean.TRUE.toString());
link.putProperty(JwtConstants.AppLinks.AUTH_METHOD_PROPERTY_NAME, authType.toString());
if (authType == AuthenticationType.JWT) {
link.putProperty(JwtConstants.AppLinks.SHARED_SECRET_PROPERTY_NAME, publicKey);
}
return null;
});
}