diff --git a/enterprise-module/src/main/java/com/inteligr8/alfresco/asie/enterprise/rest/AbstractUnregisterNodeWebScript.java b/enterprise-module/src/main/java/com/inteligr8/alfresco/asie/enterprise/rest/AbstractUnregisterNodeWebScript.java index 0b22feb..7824f2c 100755 --- a/enterprise-module/src/main/java/com/inteligr8/alfresco/asie/enterprise/rest/AbstractUnregisterNodeWebScript.java +++ b/enterprise-module/src/main/java/com/inteligr8/alfresco/asie/enterprise/rest/AbstractUnregisterNodeWebScript.java @@ -141,13 +141,13 @@ public abstract class AbstractUnregisterNodeWebScript T createApi(String hostname, int port, Class apiClass) { + String solrBaseUrl = this.formulateSolrBaseUrl(hostname, port); + this.logger.trace("Using Solr base URL: {}", solrBaseUrl); + return this.createApi(solrBaseUrl, apiClass); + } + + public T createApi(ShardInstance instance, Class apiClass) { + URL url = SolrHost.from(instance).toUrl("http"); + return this.createApi(url.toString(), apiClass); + } + + public T createApi(String solrBaseUrl, Class apiClass) { + Client solrClient = this.createClient(solrBaseUrl); + return this.getApi(solrClient, apiClass); + } + + public T getApi(Client solrClient, Class apiClass) { + return solrClient.getApi(apiClass); + } + + public boolean isSecure() { + return "https".equals(this.solrSecureComms); + } + + public int getDefaultSolrPort() { + return this.isSecure() ? this.solrSslPort : this.solrPort; + } + + public String formulateSolrBaseUrl(String hostname, Integer port) { + boolean isSsl = "https".equals(this.solrSecureComms); + StringBuilder baseUrl = new StringBuilder(isSsl ? "https" : "http").append("://").append(hostname); + baseUrl.append(':').append(port == null ? (isSsl ? this.solrSslPort : this.solrPort) : port); + baseUrl.append(this.solrBaseUrl); + return baseUrl.toString(); + } + + public Client createClient(final String baseUrl) { + ClientCxfImpl client = new ClientCxfImpl(new ClientCxfConfiguration() { + @Override + public String getBaseUrl() { + return baseUrl.toString(); + } + + @Override + public AuthorizationFilter createAuthorizationFilter() { + return solrSharedSecret == null ? null : new AuthorizationFilter() { + @Override + public void filter(ClientRequestContext requestContext) throws IOException { + logger.debug("Adding authorization headers for ASIE shared auth: {}", solrSharedSecretHeader); + requestContext.getHeaders().putSingle(solrSharedSecretHeader, solrSharedSecret); + } + }; + } + + @Override + public boolean isDefaultBusEnabled() { + return false; + } + }); + + client.register(); + return client; + } + +}