/*
* Hibernate OGM, Domain model persistence for NoSQL datastores
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.ogm.datastore.neo4j.query.impl;
import org.hibernate.engine.query.spi.ParameterParser.Recognizer;
import org.hibernate.ogm.dialect.query.spi.ParameterMetadataBuilder;
import org.hibernate.ogm.dialect.query.spi.RecognizerBasedParameterMetadataBuilder;
import org.parboiled.Parboiled;
import org.parboiled.parserunners.RecoveringParseRunner;
/**
* {@link ParameterMetadataBuilder} for native Neo4j queries. The implementation is based on a <a
* href="http://parboiled.org">parboiled</a> grammar.
*
* @author Gunnar Morling
*/
public class Neo4jParameterMetadataBuilder extends RecognizerBasedParameterMetadataBuilder {
@Override
public void parseQueryParameters(String nativeQuery, Recognizer journaler) {
QueryParser parser = Parboiled.createParser( QueryParser.class, journaler );
new RecoveringParseRunner<Recognizer>( parser.Query() ).run( nativeQuery );
}
}