package com.marklogic.client.spring.config;
import com.marklogic.client.DatabaseClient;
import com.marklogic.client.DatabaseClientFactory;
import com.marklogic.client.helper.DatabaseClientConfig;
import com.marklogic.client.helper.DatabaseClientProvider;
import com.marklogic.client.spring.SimpleDatabaseClientProvider;
import com.marklogic.client.spring.SpringDatabaseClientConfig;
import com.marklogic.xcc.template.XccTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.*;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
@Configuration
@Import(value = { SpringDatabaseClientConfig.class } )
@PropertySource("classpath:application.properties")
public class MarkLogicApplicationContext {
@Value("${mlAppName}")
private String mlAppName;
/**
* Ensures that placeholders are replaced with property values
*/
@Bean
public static PropertySourcesPlaceholderConfigurer propertyPlaceHolderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
@Bean
public DatabaseClientProvider databaseClientProvider(DatabaseClientConfig databaseClientConfig) {
return new SimpleDatabaseClientProvider(databaseClientConfig);
}
@Bean
public XccTemplate xccTemplate(DatabaseClientConfig databaseClientConfig) {
return new XccTemplate(
String.format("xcc://%s:%s@%s:8000/%s",
databaseClientConfig.getUsername(),
databaseClientConfig.getPassword(),
databaseClientConfig.getHost(),
mlAppName + "-content"));
}
}