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);
        }
Exemple #4
0
 /// <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);
        }
Exemple #6
0
        /// <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);
        }
Exemple #8
0
        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);
		}
Exemple #12
0
 /// <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;
 }
Exemple #13
0
 /// <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));
    }
Exemple #16
0
 /// <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);
    }