package com.thinkbiganalytics.nifi.rest.config; /*- * #%L * thinkbig-nifi-rest-client-api * %% * Copyright (C) 2017 ThinkBig Analytics * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ import com.thinkbiganalytics.nifi.rest.client.LegacyNifiRestClient; import com.thinkbiganalytics.nifi.rest.client.NifiRestClientConfig; import org.apache.commons.lang3.BooleanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.core.env.Environment; import java.net.MalformedURLException; import java.net.URL; /** */ @Configuration @EnableAspectJAutoProxy(proxyTargetClass = true) public class SpringNifiRestConfiguration { @Autowired private Environment env; @Bean(name = "nifiRestClient") public LegacyNifiRestClient nifiRestClient() { LegacyNifiRestClient restClient = new LegacyNifiRestClient(); return restClient; } /** * Gets the configuration for the NiFi REST client. * * <p>Looks for {@code thinkbig.nifi.rest} properties first then for {@code nifi.rest} properties.</p> * * @return the NiFi REST client configuration */ @Bean(name = "nifiRestClientConfig") @ConfigurationProperties(prefix = "nifi.rest") public NifiRestClientConfig nifiRestClientConfig() { final NifiRestClientConfig config = new NifiRestClientConfig(); config.setUsername(env.getProperty("thinkbig.nifi.rest.username")); config.setPassword(env.getProperty("thinkbig.nifi.rest.password")); config.setHttps(BooleanUtils.toBoolean(env.getProperty("thinkbig.nifi.rest.https"))); config.setUseConnectionPooling(BooleanUtils.toBoolean(env.getProperty("thinkbig.nifi.rest.useConnectionPooling"))); config.setTruststorePath(env.getProperty("thinkbig.nifi.rest.truststorePath")); config.setTruststorePassword(env.getProperty("thinkbig.nifi.rest.truststorePassword")); config.setKeystorePassword(env.getProperty("thinkbig.nifi.rest.keystorePassword")); config.setKeystorePath(env.getProperty("thinkbig.nifi.rest.keystorePath")); config.setTrustStoreType(env.getProperty("thinkbig.nifi.rest.truststoreType")); config.setKeystoreType(env.getProperty("thinkbig.nifi.rest.keystoreType")); final String host = env.getProperty("thinkbig.nifi.rest.host"); if (host != null) { try { final URL url = new URL(host); config.setHost(url.getHost()); config.setPort((url.getPort() > -1) ? url.getPort() : 8079); } catch (final MalformedURLException e) { throw new IllegalArgumentException("Invalid thinkbig.nifi.rest.host: " + host, e); } } return config; } @Bean public NifiRestClientAroundAspect nifiRestClientAroundAspect() { return new NifiRestClientAroundAspect(); } }