Search in sources :

Example 1 with Neo4j2HaGraph

use of com.tinkerpop.blueprints.impls.neo4j2.Neo4j2HaGraph in project blueprints by tinkerpop.

the class Neo4j2GraphConfiguration method configureGraphInstance.

public Graph configureGraphInstance(final GraphConfigurationContext context) throws GraphConfigurationException {
    final String graphFile = context.getProperties().getString(Tokens.REXSTER_GRAPH_LOCATION);
    if (graphFile == null || graphFile.length() == 0) {
        throw new GraphConfigurationException("Check graph configuration. Missing or empty configuration element: " + Tokens.REXSTER_GRAPH_LOCATION);
    }
    final boolean highAvailabilityMode = context.getProperties().getBoolean(Tokens.REXSTER_GRAPH_HA, false);
    // get the <properties> section of the xml configuration
    final HierarchicalConfiguration graphSectionConfig = (HierarchicalConfiguration) context.getProperties();
    SubnodeConfiguration neo4jSpecificConfiguration;
    try {
        neo4jSpecificConfiguration = graphSectionConfig.configurationAt(Tokens.REXSTER_GRAPH_PROPERTIES);
    } catch (IllegalArgumentException iae) {
        throw new GraphConfigurationException("Check graph configuration. Missing or empty configuration element: " + Tokens.REXSTER_GRAPH_PROPERTIES);
    }
    try {
        // properties to initialize the neo4j instance.
        final HashMap<String, String> neo4jProperties = new HashMap<String, String>();
        // read the properties from the xml file and convert them to properties
        // to be injected into neo4j.
        final Iterator<String> neo4jSpecificConfigurationKeys = neo4jSpecificConfiguration.getKeys();
        while (neo4jSpecificConfigurationKeys.hasNext()) {
            String key = neo4jSpecificConfigurationKeys.next();
            // replace the ".." put in play by apache commons configuration.  that's expected behavior
            // due to parsing key names to xml.
            neo4jProperties.put(key.replace("..", "."), neo4jSpecificConfiguration.getString(key));
        }
        if (highAvailabilityMode) {
            if (!neo4jProperties.containsKey("ha.machine_id")) {
                throw new GraphConfigurationException("Check graph configuration. Neo4j HA requires [ha.machine_id] in the <properties> of the configuration");
            }
            if (!neo4jProperties.containsKey("ha.server")) {
                throw new GraphConfigurationException("Check graph configuration. Neo4j HA requires [ha.server] <properties> of the configuration");
            }
            if (!neo4jProperties.containsKey("ha.initial_hosts")) {
                throw new GraphConfigurationException("Check graph configuration. Neo4j HA requires [ha.initial_hosts] <properties> of the configuration");
            }
            return new Neo4j2HaGraph(graphFile, neo4jProperties);
        } else {
            return new Neo4j2Graph(graphFile, neo4jProperties);
        }
    } catch (GraphConfigurationException gce) {
        throw gce;
    } catch (Exception ex) {
        throw new GraphConfigurationException(ex);
    }
}
Also used : SubnodeConfiguration(org.apache.commons.configuration.SubnodeConfiguration) HashMap(java.util.HashMap) GraphConfigurationException(com.tinkerpop.rexster.config.GraphConfigurationException) Neo4j2HaGraph(com.tinkerpop.blueprints.impls.neo4j2.Neo4j2HaGraph) HierarchicalConfiguration(org.apache.commons.configuration.HierarchicalConfiguration) GraphConfigurationException(com.tinkerpop.rexster.config.GraphConfigurationException) Neo4j2Graph(com.tinkerpop.blueprints.impls.neo4j2.Neo4j2Graph)

Aggregations

Neo4j2Graph (com.tinkerpop.blueprints.impls.neo4j2.Neo4j2Graph)1 Neo4j2HaGraph (com.tinkerpop.blueprints.impls.neo4j2.Neo4j2HaGraph)1 GraphConfigurationException (com.tinkerpop.rexster.config.GraphConfigurationException)1 HashMap (java.util.HashMap)1 HierarchicalConfiguration (org.apache.commons.configuration.HierarchicalConfiguration)1 SubnodeConfiguration (org.apache.commons.configuration.SubnodeConfiguration)1