AbstractGremlinConfiguration.java

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.azure.spring.data.gremlin.config;

import com.azure.spring.data.gremlin.common.GremlinConfig;
import com.azure.spring.data.gremlin.common.GremlinFactory;
import com.azure.spring.data.gremlin.conversion.MappingGremlinConverter;
import com.azure.spring.data.gremlin.query.GremlinTemplate;
import org.springframework.context.annotation.Bean;

public abstract class AbstractGremlinConfiguration extends GremlinConfigurationSupport {

    public abstract GremlinConfig getGremlinConfig();

    @Bean
    public GremlinFactory gremlinFactory() {
        return new GremlinFactory(getGremlinConfig());
    }

    /**
     * Create bean for {@link MappingGremlinConverter}.
     *
     * @return The {@link MappingGremlinConverter} bean.
     * @throws ClassNotFoundException If ClassNotFoundException has occurred.
     */
    @Bean
    public MappingGremlinConverter mappingGremlinConverter() throws ClassNotFoundException {
        return new MappingGremlinConverter(gremlinMappingContext());
    }

    /**
     * Create bean for {@link GremlinTemplate}.
     *
     * @param factory The gremlin factory.
     * @return The {@link GremlinTemplate} bean.
     * @throws ClassNotFoundException If ClassNotFoundException has occurred.
     */
    @Bean
    public GremlinTemplate gremlinTemplate(GremlinFactory factory) throws ClassNotFoundException {
        return new GremlinTemplate(factory, mappingGremlinConverter());
    }
}