Search in sources :

Example 1 with EditableDocument

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();
}
Also used : Problems(org.modeshape.common.collection.Problems) EditableDocument(org.modeshape.schematic.document.EditableDocument) AtomicReference(java.util.concurrent.atomic.AtomicReference) RepositoryConfiguration(org.modeshape.jcr.RepositoryConfiguration) File(java.io.File) IOException(java.io.IOException) ClassPathResource(org.springframework.core.io.ClassPathResource) Bean(org.springframework.context.annotation.Bean)

Example 2 with EditableDocument

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;
}
Also used : EditableDocument(org.modeshape.schematic.document.EditableDocument) ParsingException(org.modeshape.schematic.document.ParsingException) FileNotFoundException(java.io.FileNotFoundException) RepositoryConfiguration(org.modeshape.jcr.RepositoryConfiguration) Editor(org.modeshape.schematic.document.Editor)

Example 3 with EditableDocument

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;
}
Also used : EditableDocument(org.modeshape.schematic.document.EditableDocument) ParsingException(org.modeshape.schematic.document.ParsingException) FileNotFoundException(java.io.FileNotFoundException) RepositoryConfiguration(org.modeshape.jcr.RepositoryConfiguration) Editor(org.modeshape.schematic.document.Editor)

Example 4 with EditableDocument

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;
}
Also used : EditableDocument(org.modeshape.schematic.document.EditableDocument) ParsingException(org.modeshape.schematic.document.ParsingException) FileNotFoundException(java.io.FileNotFoundException) RepositoryConfiguration(org.modeshape.jcr.RepositoryConfiguration) Editor(org.modeshape.schematic.document.Editor)

Aggregations

RepositoryConfiguration (org.modeshape.jcr.RepositoryConfiguration)4 EditableDocument (org.modeshape.schematic.document.EditableDocument)4 FileNotFoundException (java.io.FileNotFoundException)3 Editor (org.modeshape.schematic.document.Editor)3 ParsingException (org.modeshape.schematic.document.ParsingException)3 File (java.io.File)1 IOException (java.io.IOException)1 AtomicReference (java.util.concurrent.atomic.AtomicReference)1 Problems (org.modeshape.common.collection.Problems)1 Bean (org.springframework.context.annotation.Bean)1 ClassPathResource (org.springframework.core.io.ClassPathResource)1