All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.tinkerpop.gremlin.server.op.OpLoader Maven / Gradle / Ivy

The newest version!
package com.tinkerpop.gremlin.server.op;

import com.tinkerpop.gremlin.server.OpProcessor;
import com.tinkerpop.gremlin.server.op.standard.StandardOpProcessor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.ServiceLoader;

/**
 * Uses {@code ServiceLoader} to load {@link OpProcessor} instances into a cache.
 *
 * @author Stephen Mallette (http://stephen.genoprime.com)
 */
public final class OpLoader {
    private static final Logger logger = LoggerFactory.getLogger(OpLoader.class);

    private static final Map processors = new HashMap<>();

    static {
        ServiceLoader.load(OpProcessor.class).forEach(op -> {
            final String name = op.getName();
            logger.info("Adding the {} OpProcessor.", name.equals(StandardOpProcessor.OP_PROCESSOR_NAME) ? "standard" : name);
            if (processors.containsKey(name))
                throw new RuntimeException(String.format("There is a naming conflict with the %s OpProcessor implementations.", name));

            processors.put(name, op);
        });
    }

    public static Optional getProcessor(final String name) {
        return Optional.ofNullable(processors.get(name));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy