use of org.modeshape.schematic.document.EditableDocument in project kylo by Teradata.
the class ModeShapeEngineConfig method metadataRepoConfig.
@Bean
public RepositoryConfiguration metadataRepoConfig() throws IOException {
// for variable substitution in the ModeShape json config.
for (String prop : CONFIG_PROPS) {
if (this.environment.containsProperty(prop)) {
System.setProperty(prop, this.environment.getProperty(prop));
}
}
File dir = DEFAULT_INDEX_DIR;
if (this.environment.containsProperty(INDEX_DIR_PROP)) {
String idxPath = this.environment.getProperty(INDEX_DIR_PROP);
dir = new File(idxPath);
}
try {
// Create index directory if necessary.
dir.mkdirs();
} catch (Exception e) {
log.error("Failed to verify Modeshape index directory in property: {}", INDEX_DIR_PROP, e);
throw new IllegalStateException("Failed to verify Modeshape index directory in property: " + INDEX_DIR_PROP, e);
}
ClassPathResource res = new ClassPathResource("/metadata-repository.json");
final AtomicReference<RepositoryConfiguration> config = new AtomicReference<>(RepositoryConfiguration.read(res.getURL()));
repositoryIndexConfiguration.ifPresent(idxConfig -> {
RepositoryConfiguration updatedConfigWithIndexes = idxConfig.build();
EditableDocument original = config.get().edit();
EditableDocument added = updatedConfigWithIndexes.edit();
original.merge(added);
RepositoryConfiguration updatedConfig = new RepositoryConfiguration(original, config.get().getName());
log.debug("Original ModeShape configuration: {}", config.toString());
log.debug("ModeShape indexing configuration: {}", updatedConfigWithIndexes.toString());
log.debug("Updated ModeShape configuration: {}", updatedConfig.toString());
config.set(updatedConfig);
log.info("ModeShape indexing configured");
});
Problems problems = config.get().validate();
if (problems.hasErrors()) {
log.error("Problems with the ModeShape repository configuration: \n{}", problems);
throw new RuntimeException("Problems with the ModeShape repository configuration: " + problems);
}
return config.get();
}
use of org.modeshape.schematic.document.EditableDocument in project kylo by Teradata.
the class ElasticSearchRestModeShapeConfigurationService method build.
@Override
public RepositoryConfiguration build() {
RepositoryConfiguration repositoryConfiguration;
final String EMPTY_CONFIG = "{}";
final String KYLO_CATEGORIES = "kylo-categories";
final String KYLO_FEEDS = "kylo-feeds";
final String INDEXES = "indexes";
final String INDEX_PROVIDERS = "indexProviders";
try {
repositoryConfiguration = RepositoryConfiguration.read(EMPTY_CONFIG);
} catch (ParsingException | FileNotFoundException e) {
e.printStackTrace();
return null;
}
Editor editor = repositoryConfiguration.edit();
EditableDocument indexesDocument = editor.getOrCreateDocument(INDEXES);
EditableDocument categoriesIndexDocument = indexesDocument.getOrCreateDocument(KYLO_CATEGORIES);
EditableDocument feedsIndexDocument = indexesDocument.getOrCreateDocument(KYLO_FEEDS);
categoriesIndexDocument.putAll(getCategoriesIndexConfiguration());
feedsIndexDocument.putAll(getFeedsIndexConfiguration());
EditableDocument indexProvidersDocument = editor.getOrCreateDocument(INDEX_PROVIDERS);
EditableDocument elasticSearchIndexProviderDocument = indexProvidersDocument.getOrCreateDocument(ELASTIC_SEARCH);
elasticSearchIndexProviderDocument.putAll(getElasticSearchIndexProviderConfiguration());
repositoryConfiguration = new RepositoryConfiguration(editor, repositoryConfiguration.getName());
return repositoryConfiguration;
}
use of org.modeshape.schematic.document.EditableDocument in project kylo by Teradata.
the class ElasticSearchModeShapeConfigurationService method build.
@Override
public RepositoryConfiguration build() {
RepositoryConfiguration repositoryConfiguration;
final String EMPTY_CONFIG = "{}";
final String KYLO_CATEGORIES = "kylo-categories";
final String KYLO_FEEDS = "kylo-feeds";
final String INDEXES = "indexes";
final String INDEX_PROVIDERS = "indexProviders";
try {
repositoryConfiguration = RepositoryConfiguration.read(EMPTY_CONFIG);
} catch (ParsingException | FileNotFoundException e) {
log.error("Error loading the repository configuration", e);
return null;
}
Editor editor = repositoryConfiguration.edit();
EditableDocument indexesDocument = editor.getOrCreateDocument(INDEXES);
EditableDocument categoriesIndexDocument = indexesDocument.getOrCreateDocument(KYLO_CATEGORIES);
EditableDocument feedsIndexDocument = indexesDocument.getOrCreateDocument(KYLO_FEEDS);
categoriesIndexDocument.putAll(getCategoriesIndexConfiguration());
feedsIndexDocument.putAll(getFeedsIndexConfiguration());
EditableDocument indexProvidersDocument = editor.getOrCreateDocument(INDEX_PROVIDERS);
EditableDocument elasticSearchIndexProviderDocument = indexProvidersDocument.getOrCreateDocument(ELASTIC_SEARCH);
elasticSearchIndexProviderDocument.putAll(getElasticSearchIndexProviderConfiguration());
repositoryConfiguration = new RepositoryConfiguration(editor, repositoryConfiguration.getName());
return repositoryConfiguration;
}
use of org.modeshape.schematic.document.EditableDocument in project kylo by Teradata.
the class SolrSearchModeShapeConfigurationService method build.
@Override
public RepositoryConfiguration build() {
RepositoryConfiguration repositoryConfiguration;
final String EMPTY_CONFIG = "{}";
final String KYLO_CATEGORIES_METADATA = "kylo-categories-metadata";
final String KYLO_FEEDS_METADATA = "kylo-feeds-metadata";
final String INDEXES = "indexes";
final String INDEX_PROVIDERS = "indexProviders";
try {
repositoryConfiguration = RepositoryConfiguration.read(EMPTY_CONFIG);
} catch (ParsingException | FileNotFoundException e) {
e.printStackTrace();
repositoryConfiguration = new RepositoryConfiguration();
}
Editor editor = repositoryConfiguration.edit();
EditableDocument indexesDocument = editor.getOrCreateDocument(INDEXES);
EditableDocument categoriesIndexDocument = indexesDocument.getOrCreateDocument(KYLO_CATEGORIES_METADATA);
EditableDocument feedsIndexDocument = indexesDocument.getOrCreateDocument(KYLO_FEEDS_METADATA);
categoriesIndexDocument.putAll(getCategoriesIndexConfiguration());
feedsIndexDocument.putAll(getFeedsIndexConfiguration());
EditableDocument indexProvidersDocument = editor.getOrCreateDocument(INDEX_PROVIDERS);
EditableDocument localNamedIndexProviderDocument = indexProvidersDocument.getOrCreateDocument(LUCENE);
localNamedIndexProviderDocument.putAll(getLuceneIndexProviderConfiguration());
repositoryConfiguration = new RepositoryConfiguration(editor, repositoryConfiguration.getName());
return repositoryConfiguration;
}
Aggregations