public void Initialization_InjectExpressionTreeParser () { var expressionTreeParser = new ExpressionTreeParser (new MethodInfoBasedNodeTypeRegistry(), new NullExpressionTreeProcessor()); var queryParser = new QueryParser (expressionTreeParser); Assert.That (queryParser.ExpressionTreeParser, Is.SameAs (expressionTreeParser)); }
public static IQueryParser CreateQueryParser() { //Create Custom node registry var customNodeTypeRegistry = new MethodInfoBasedNodeTypeRegistry(); //register the "Nest" clause type customNodeTypeRegistry.Register(NestExpressionNode.SupportedMethods, typeof(NestExpressionNode)); //register the "Explain" expression node parser customNodeTypeRegistry.Register(ExplainExpressionNode.SupportedMethods, typeof(ExplainExpressionNode)); //register the "UseKeys" expression node parser customNodeTypeRegistry.Register(UseKeysExpressionNode.SupportedMethods, typeof(UseKeysExpressionNode)); //This creates all the default node types var nodeTypeProvider = ExpressionTreeParser.CreateDefaultNodeTypeProvider(); //add custom node provider to the providers nodeTypeProvider.InnerProviders.Add(customNodeTypeRegistry); var transformerRegistry = ExpressionTransformerRegistry.CreateDefault(); var processor = ExpressionTreeParser.CreateDefaultProcessor(transformerRegistry); var expressionTreeParser = new ExpressionTreeParser(nodeTypeProvider, processor); var queryParser = new QueryParser(expressionTreeParser); return queryParser; }
private SubQueryFindingExpressionTreeVisitor(INodeTypeProvider nodeTypeProvider) { ArgumentUtility.CheckNotNull ("nodeTypeProvider", nodeTypeProvider); _nodeTypeProvider = nodeTypeProvider; _expressionTreeParser = new ExpressionTreeParser (_nodeTypeProvider, new NullExpressionTreeProcessor()); _queryParser = new QueryParser (_expressionTreeParser); }
/// <summary> /// Initializes a new instance of the <see cref="QueryParser"/> class, using default parameters for parsing. /// The <see cref="Structure.ExpressionTreeParser.NodeTypeProvider"/> used has all relevant methods of the <see cref="Queryable"/> class /// automatically registered, and the <see cref="Structure.ExpressionTreeParser.Processor"/> comprises partial evaluation, and default /// expression transformations. See <see cref="Structure.ExpressionTreeParser.CreateDefaultNodeTypeProvider"/>, /// <see cref="Structure.ExpressionTreeParser.CreateDefaultProcessor"/>, and <see cref="ExpressionTransformerRegistry.CreateDefault"/> /// for details. /// </summary> public static QueryParser CreateDefault () { var transformerRegistry = ExpressionTransformerRegistry.CreateDefault(); var expressionTreeParser = new ExpressionTreeParser ( ExpressionTreeParser.CreateDefaultNodeTypeProvider (), ExpressionTreeParser.CreateDefaultProcessor (transformerRegistry)); return new QueryParser(expressionTreeParser); }
internal static QueryParser CreateQueryParser() { var expressionTreeParser = new ExpressionTreeParser( CreateNodeTypeProvider(), CreateExpressionTreeProcessor()); return new QueryParser(expressionTreeParser); }
/// <summary> /// Initializes a new instance of the <see cref="QueryParser"/> class, using default parameters for parsing. /// The <see cref="Structure.ExpressionTreeParser.NodeTypeProvider"/> used has all relevant methods of the <see cref="Queryable"/> class /// automatically registered, and the <see cref="Structure.ExpressionTreeParser.Processor"/> comprises partial evaluation, and default /// expression transformations. See <see cref="Structure.ExpressionTreeParser.CreateDefaultNodeTypeProvider"/>, /// <see cref="Structure.ExpressionTreeParser.CreateDefaultProcessor"/>, and <see cref="ExpressionTransformerRegistry.CreateDefault"/> /// for details. /// </summary> public static QueryParser CreateDefault() { var transformerRegistry = ExpressionTransformerRegistry.CreateDefault(); var expressionTreeParser = new ExpressionTreeParser( ExpressionTreeParser.CreateDefaultNodeTypeProvider(), ExpressionTreeParser.CreateDefaultProcessor(transformerRegistry)); return(new QueryParser(expressionTreeParser)); }
/// <summary> /// Creates the parser. /// </summary> private static QueryParser CreateParser() { var transformerRegistry = ExpressionTransformerRegistry.CreateDefault(); var proc = new TransformingExpressionTreeProcessor(transformerRegistry); var parser = new ExpressionTreeParser(ExpressionTreeParser.CreateDefaultNodeTypeProvider(), proc); return new QueryParser(parser); }
public MartenQueryParser() { var transformerRegistry = ExpressionTransformerRegistry.CreateDefault(); var processor = ExpressionTreeParser.CreateDefaultProcessor(transformerRegistry); var expressionTreeParser = new ExpressionTreeParser(MethodInfoBasedNodeTypeRegistry.CreateFromRelinqAssembly(), processor); _parser = new QueryParser(expressionTreeParser); }
public void SetUp () { _methodInfoBasedNodeTypeRegistry = new MethodInfoBasedNodeTypeRegistry(); _methodInfoBasedNodeTypeRegistry.Register (WhereExpressionNode.SupportedMethods, typeof (WhereExpressionNode)); _methodInfoBasedNodeTypeRegistry.Register (SelectExpressionNode.SupportedMethods, typeof (SelectExpressionNode)); _methodInfoBasedNodeTypeRegistry.Register (TakeExpressionNode.SupportedMethods, typeof (TakeExpressionNode)); _methodInfoBasedNodeTypeRegistry.Register (CountExpressionNode.SupportedMethods, typeof (CountExpressionNode)); _methodInfoBasedNodeTypeRegistry.Register (ContainsExpressionNode.SupportedMethods, typeof (ContainsExpressionNode)); _expressionTreeParser = new ExpressionTreeParser (_methodInfoBasedNodeTypeRegistry, new PartialEvaluatingExpressionTreeProcessor() ); _intSource = new[] { 1, 2, 3 }.AsQueryable (); }
public MartenQueryParser(Action<MethodInfoBasedNodeTypeRegistry> registerNodeTypes = null) { var transformerRegistry = ExpressionTransformerRegistry.CreateDefault(); var processor = ExpressionTreeParser.CreateDefaultProcessor(transformerRegistry); var nodeTypeRegistry = MethodInfoBasedNodeTypeRegistry.CreateFromRelinqAssembly(); registerNodeTypes?.Invoke(nodeTypeRegistry); var expressionTreeParser = new ExpressionTreeParser(nodeTypeRegistry, processor); _parser = new QueryParser(expressionTreeParser); }
static NhRelinqQueryParser() { var transformerRegistry = ExpressionTransformerRegistry.CreateDefault(); transformerRegistry.Register(new RemoveCharToIntConversion()); var processor = ExpressionTreeParser.CreateDefaultProcessor(transformerRegistry); // Add custom processors here: // processor.InnerProcessors.Add (new MyExpressionTreeProcessor()); var nodeTypeProvider = new NHibernateNodeTypeProvider(); var expressionTreeParser = new ExpressionTreeParser(nodeTypeProvider, processor); QueryParser = new QueryParser(expressionTreeParser); }
/// <summary> /// Initializes a new instance of the <see cref="QueryParser"/> class, using the given <paramref name="expressionTreeParser"/> to /// convert <see cref="Expression"/> instances into <see cref="IExpressionNode"/>s. Use this constructor if you wish to customize the /// parser. To use a default parser (with the possibility to register custom node types), use the <see cref="CreateDefault"/> method. /// </summary> /// <param name="expressionTreeParser">The expression tree parser.</param> public QueryParser(ExpressionTreeParser expressionTreeParser) { ArgumentUtility.CheckNotNull("expressionTreeParser", expressionTreeParser); _expressionTreeParser = expressionTreeParser; }
/// <summary> /// Initializes a new instance of the <see cref="QueryParser"/> class, using the given <paramref name="expressionTreeParser"/> to /// convert <see cref="Expression"/> instances into <see cref="IExpressionNode"/>s. Use this constructor if you wish to customize the /// parser. To use a default parser (with the possibility to register custom node types), use the <see cref="CreateDefault"/> method. /// </summary> /// <param name="expressionTreeParser">The expression tree parser.</param> public QueryParser (ExpressionTreeParser expressionTreeParser) { ArgumentUtility.CheckNotNull ("expressionTreeParser", expressionTreeParser); _expressionTreeParser = expressionTreeParser; }
public CustomQueryParser(ExpressionTreeParser expressionTreeParser) { Mandate.ParameterNotNull(expressionTreeParser, "expressionTreeParser"); _expressionTreeParser = expressionTreeParser; }
public void ParseTree_AppliesProcessingSteps () { var inputExpression = Expression.Constant (0); Expression<Func<int, bool>> predicate = i => i > 5; var transformedExpression = _intSource.Where (predicate).Expression; var stepMock1 = MockRepository.GenerateStrictMock<IExpressionTreeProcessor> (); stepMock1.Expect (mock => mock.Process (inputExpression)).Return (transformedExpression); stepMock1.Replay(); var parser = new ExpressionTreeParser (_methodInfoBasedNodeTypeRegistry, stepMock1); var result = (WhereExpressionNode) parser.ParseTree (inputExpression); stepMock1.VerifyAllExpectations (); Assert.That (result.Predicate, Is.SameAs (predicate)); }
/// <summary> /// Initializes a new instance of the <see cref="QueryParser"/> class, using the given <paramref name="expressionTreeParser"/> to /// convert <see cref="Expression"/> instances into <see cref="IExpressionNode"/>s. Use this constructor if you wish to customize the /// parser. To use a default parser (with the possibility to register custom node types), use the <see cref="CreateDefault"/> method. /// </summary> /// <param name="expressionTreeParser">The expression tree parser.</param> public QueryParser(ExpressionTreeParser expressionTreeParser) { _expressionTreeParser = expressionTreeParser; }
public void GetQueryOperatorExpression_MemberExpression_NotRegistered () { var expressionTreeParser = new ExpressionTreeParser (new MethodInfoBasedNodeTypeRegistry (), new NullExpressionTreeProcessor ()); var memberExpression = (MemberExpression) ExpressionHelper.MakeExpression (() => new List<int> ().Count); var queryOperatorExpression = expressionTreeParser.GetQueryOperatorExpression (memberExpression); Assert.That (queryOperatorExpression, Is.Null); }
public void GetQueryOperatorExpression_ArrayLength_NotRegistered () { var expressionTreeParser = new ExpressionTreeParser (new MethodInfoBasedNodeTypeRegistry (), new NullExpressionTreeProcessor ()); var memberExpression = (UnaryExpression) ExpressionHelper.MakeExpression (() => new int[0].Length); var queryOperatorExpression = expressionTreeParser.GetQueryOperatorExpression (memberExpression); Assert.That (queryOperatorExpression, Is.Null); }