@Override public DatabaseClient getObject() { if (client == null) { if (logger.isInfoEnabled()) { logger.info("Connecting to REST server with: " + config); } client = new DefaultConfiguredDatabaseClientFactory().newDatabaseClient(config); } return client; }
@Bean public DatabaseClientConfig databaseClientConfig() { return new DatabaseClientConfig(getMlHost(), getRestPort(), getMlUsername(), getMlPassword()); }
public DatabaseClient newJobDbClient() { AppConfig appConfig = getAppConfig(); DatabaseClientConfig config = new DatabaseClientConfig(appConfig.getHost(), jobPort, mlUsername, mlPassword); config.setDatabase(jobDbName); config.setSecurityContextType(SecurityContextType.valueOf(jobAuthMethod.toUpperCase())); config.setSslHostnameVerifier(jobSslHostnameVerifier); config.setSslContext(jobSslContext); config.setCertFile(jobCertFile); config.setCertPassword(jobCertPassword); config.setExternalName(jobExternalName); config.setTrustManager(jobTrustManager); if (isHostLoadBalancer) { config.setConnectionType(DatabaseClient.ConnectionType.GATEWAY); } return appConfig.getConfiguredDatabaseClientFactory().newDatabaseClient(config); }
public DatabaseClient newAppServicesDatabaseClient(String databaseName) { DatabaseClientConfig config = new DatabaseClientConfig(getHost(), getAppServicesPort(), getAppServicesUsername(), getAppServicesPassword()); config.setDatabase(databaseName); config.setSecurityContextType(appServicesSecurityContextType); config.setSslHostnameVerifier(getAppServicesSslHostnameVerifier()); config.setSslContext(getAppServicesSslContext()); config.setCertFile(getAppServicesCertFile()); config.setCertPassword(getAppServicesCertPassword()); config.setExternalName(getAppServicesExternalName()); return configuredDatabaseClientFactory.newDatabaseClient(config); }
public DatabaseClientConfig newRestDatabaseClientConfig(int port) { DatabaseClientConfig config = new DatabaseClientConfig(getHost(), port, getRestAdminUsername(), getRestAdminPassword()); config.setSecurityContextType(restSecurityContextType); config.setSslHostnameVerifier(getRestSslHostnameVerifier()); config.setSslContext(getRestSslContext()); config.setCertFile(getRestCertFile()); config.setCertPassword(getRestCertPassword()); config.setExternalName(getRestExternalName()); return config; }
DatabaseClientFactory.SecurityContext securityContext; SecurityContextType securityContextType = config.getSecurityContextType(); if (SecurityContextType.BASIC.equals(securityContextType)) { securityContext = new DatabaseClientFactory.BasicAuthContext(config.getUsername(), config.getPassword()); } else if (SecurityContextType.CERTIFICATE.equals(securityContextType)) { securityContext = buildCertificateAuthContent(config); } else if (SecurityContextType.DIGEST.equals(securityContextType)) { securityContext = new DatabaseClientFactory.DigestAuthContext(config.getUsername(), config.getPassword()); } else if (SecurityContextType.KERBEROS.equals(securityContextType)) { securityContext = new DatabaseClientFactory.KerberosAuthContext(config.getExternalName()); } else if (SecurityContextType.NONE.equals(securityContextType)) { securityContext = null; SSLContext sslContext = config.getSslContext(); DatabaseClientFactory.SSLHostnameVerifier verifier = config.getSslHostnameVerifier(); if (sslContext != null) { securityContext = securityContext.withSSLContext(sslContext, config.getTrustManager()); String host = config.getHost(); int port = config.getPort(); String database = config.getDatabase();
protected DatabaseClientFactory.SecurityContext buildCertificateAuthContent(DatabaseClientConfig config) { X509TrustManager trustManager = config.getTrustManager(); String certFile = config.getCertFile(); if (certFile != null) { try { if (config.getCertPassword() != null) { return new DatabaseClientFactory.CertificateAuthContext(certFile, config.getCertPassword(), trustManager); } return new DatabaseClientFactory.CertificateAuthContext(certFile, trustManager); } catch (Exception ex) { throw new RuntimeException("Unable to build CertificateAuthContext: " + ex.getMessage(), ex); } } DatabaseClientFactory.SSLHostnameVerifier verifier = config.getSslHostnameVerifier(); if (verifier != null) { return new DatabaseClientFactory.CertificateAuthContext(config.getSslContext(), verifier, trustManager); } return new DatabaseClientFactory.CertificateAuthContext(config.getSslContext(), trustManager); } }
/** * Just like newDatabaseClient, but uses testRestPort. * * @return */ public DatabaseClient newTestDatabaseClient() { return configuredDatabaseClientFactory.newDatabaseClient(newRestDatabaseClientConfig(getTestRestPort())); }
/** * This is needed so that mlFinal* properties that configure the connection to the final REST server are also used * for any feature in ml-gradle that expects to use the same mlRest* properties. For example, LoadModulesCommand * uses those properties to construct a DatabaseClient for loading modules; we want to ensure that the properties * mirror the mlFinal* properties. * * @param config */ private void applyFinalConnectionSettingsToMlGradleDefaultRestSettings(AppConfig config) { if (finalAuthMethod != null) { config.setRestSecurityContextType(SecurityContextType.valueOf(finalAuthMethod.toUpperCase())); } config.setRestPort(finalPort); config.setRestCertFile(finalCertFile); config.setRestCertPassword(finalCertPassword); config.setRestExternalName(finalExternalName); config.setRestSslContext(finalSslContext); config.setRestSslHostnameVerifier(finalSslHostnameVerifier); config.setRestTrustManager(finalTrustManager); }
@Override public void destroy() { if (client != null) { if (logger.isInfoEnabled()) { logger.info("Releasing client with username: " + config.getUsername()); } client.release(); } }
private DatabaseClient newStagingClient(String dbName) { AppConfig appConfig = getAppConfig(); DatabaseClientConfig config = new DatabaseClientConfig(appConfig.getHost(), stagingPort, getMlUsername(), getMlPassword()); config.setDatabase(dbName); config.setSecurityContextType(SecurityContextType.valueOf(stagingAuthMethod.toUpperCase())); config.setSslHostnameVerifier(stagingSslHostnameVerifier); config.setSslContext(stagingSslContext); config.setCertFile(stagingCertFile); config.setCertPassword(stagingCertPassword); config.setExternalName(stagingExternalName); config.setTrustManager(stagingTrustManager); if (isHostLoadBalancer) { config.setConnectionType(DatabaseClient.ConnectionType.GATEWAY); } return appConfig.getConfiguredDatabaseClientFactory().newDatabaseClient(config); }
/** * Convenience method for constructing a MarkLogic Java API DatabaseClient based on the the host and rest* * properties defined on this class. * * @return */ public DatabaseClient newDatabaseClient() { return configuredDatabaseClientFactory.newDatabaseClient(newRestDatabaseClientConfig(getRestPort())); }
propertyConsumerMap.put("mlAppServicesAuthentication", (config, prop) -> { logger.info("App Services authentication: " + prop); config.setAppServicesSecurityContextType(SecurityContextType.valueOf(prop.toUpperCase())); }); propertyConsumerMap.put("mlAppServicesCertFile", (config, prop) -> { propertyConsumerMap.put("mlRestAuthentication", (config, prop) -> { logger.info("App REST authentication: " + prop); config.setRestSecurityContextType(SecurityContextType.valueOf(prop.toUpperCase())); }); propertyConsumerMap.put("mlRestCertFile", (config, prop) -> {
public DatabaseClient newModulesDbClient() { AppConfig appConfig = getAppConfig(); // this has to be finalPort because final is a stock REST API. // staging will not be; but its rewriter isn't loaded yet. DatabaseClientConfig config = new DatabaseClientConfig(appConfig.getHost(), finalPort, mlUsername, mlPassword); config.setDatabase(appConfig.getModulesDatabaseName()); config.setSecurityContextType(SecurityContextType.valueOf(finalAuthMethod.toUpperCase())); config.setSslHostnameVerifier(finalSslHostnameVerifier); config.setSslContext(finalSslContext); config.setCertFile(finalCertFile); config.setCertPassword(finalCertPassword); config.setExternalName(finalExternalName); config.setTrustManager(finalTrustManager); if (isHostLoadBalancer) { config.setConnectionType(DatabaseClient.ConnectionType.GATEWAY); } return appConfig.getConfiguredDatabaseClientFactory().newDatabaseClient(config); }
@Override public DatabaseClient newFinalClient() { AppConfig appConfig = getAppConfig(); DatabaseClientConfig config = new DatabaseClientConfig(appConfig.getHost(), finalPort, getMlUsername(), getMlPassword()); config.setDatabase(finalDbName); config.setSecurityContextType(SecurityContextType.valueOf(finalAuthMethod.toUpperCase())); config.setSslHostnameVerifier(finalSslHostnameVerifier); config.setSslContext(finalSslContext); config.setCertFile(finalCertFile); config.setCertPassword(finalCertPassword); config.setExternalName(finalExternalName); config.setTrustManager(finalTrustManager); if (isHostLoadBalancer) { config.setConnectionType(DatabaseClient.ConnectionType.GATEWAY); } return appConfig.getConfiguredDatabaseClientFactory().newDatabaseClient(config); }