public Expression CreateExpression(IQueryable query, OeConstantToVariableVisitor constantToVariableVisitor)
        {
            Expression expression;
            var        expressionBuilder = new OeExpressionBuilder(EdmModel, EntitySetAdapter.EntityType);

            expression = Expression.Constant(null, typeof(IEnumerable <>).MakeGenericType(EntitySetAdapter.EntityType));
            expression = expressionBuilder.ApplyNavigation(expression, ParseNavigationSegments);
            expression = expressionBuilder.ApplyFilter(expression, ODataUri.Filter);
            expression = expressionBuilder.ApplySkipToken(expression, SkipTokenParser, ODataUri.SkipToken);
            expression = expressionBuilder.ApplyAggregation(expression, ODataUri.Apply);
            expression = expressionBuilder.ApplySelect(expression, this);
            expression = expressionBuilder.ApplyOrderBy(expression, ODataUri.OrderBy);
            expression = expressionBuilder.ApplySkip(expression, ODataUri.Skip, ODataUri.Path);
            expression = expressionBuilder.ApplyTake(expression, ODataUri.Top, ODataUri.Path);
            expression = expressionBuilder.ApplyCount(expression, IsCountSegment);

            if (!IsCountSegment)
            {
                EntryFactory = CreateEntryFactory(expressionBuilder);
            }

            expression = constantToVariableVisitor.Translate(expression, expressionBuilder.Constants);
            if (ODataUri.QueryCount.GetValueOrDefault())
            {
                CountExpression = CreateCountExpression(query, expression);
            }

            return(SourceVisitor.Translate(query, expression));
        }
Beispiel #2
0
    private static Dictionary <string, ConditionSpecSource> ExtractConditionSourceInfo(string projectDir)
    {
        // Attempt to set the version of MSBuild.
        var visualStudioInstances = MSBuildLocator.QueryVisualStudioInstances().ToArray();
        var instance = visualStudioInstances[0];

        Console.WriteLine($"Using MSBuild at '{instance.MSBuildPath}' to load projects.");

        // NOTE: Be sure to register an instance with the MSBuildLocator
        //       before calling MSBuildWorkspace.Create()
        //       otherwise, MSBuildWorkspace won't MEF compose.
        MSBuildLocator.RegisterInstance(instance);

        var solutionPath = Path.Join(projectDir, "Core/Core.csproj");

        using var workspace = MSBuildWorkspace.Create();
        // Print message for WorkspaceFailed event to help diagnosing project load failures.
        workspace.WorkspaceFailed += (o, e) => Console.WriteLine(e.Diagnostic.Message);

        Console.WriteLine($"Loading solution '{solutionPath}'");

        // Attach progress reporter so we print projects as they are loaded.
        var project = workspace.OpenProjectAsync(solutionPath).Result;

        Console.WriteLine($"Finished loading solution '{solutionPath}'");

        var compilation = project.GetCompilationAsync().Result;

        var visitor = new SourceVisitor(projectDir);

        foreach (var sourceTree in compilation.SyntaxTrees)
        {
            if (!sourceTree.FilePath.Contains("Conditions"))
            {
                continue;
            }

            var semanticModel = compilation.GetSemanticModel(sourceTree);

            var root = sourceTree.GetRoot();
            visitor.SemanticModel = semanticModel;
            visitor.Visit(root);
        }

        return(visitor.ConditionSpecs);
    }
        public Expression CreateExpression(IQueryable query, OeConstantToVariableVisitor constantToVariableVisitor)
        {
            Expression expression;
            var        expressionBuilder = new OeExpressionBuilder(EdmModel, EntitySetAdapter.EntityType);

            expression = Expression.Constant(null, typeof(IEnumerable <>).MakeGenericType(EntitySetAdapter.EntityType));
            expression = expressionBuilder.ApplyNavigation(expression, ParseNavigationSegments);
            expression = expressionBuilder.ApplyFilter(expression, ODataUri.Filter);
            expression = expressionBuilder.ApplyAggregation(expression, ODataUri.Apply);
            expression = expressionBuilder.ApplySelect(expression, ODataUri.SelectAndExpand, ODataUri.Path, Headers.MetadataLevel);
            expression = expressionBuilder.ApplyOrderBy(expression, ODataUri.OrderBy);
            expression = expressionBuilder.ApplySkip(expression, ODataUri.Skip, ODataUri.Path);
            expression = expressionBuilder.ApplyTake(expression, ODataUri.Top, ODataUri.Path);
            expression = expressionBuilder.ApplyCount(expression, IsCountSegment);

            if (!IsCountSegment)
            {
                EntryFactory = CreateEntryFactory(expressionBuilder);
            }

            expression = constantToVariableVisitor.Translate(expression, expressionBuilder.Constants);
            return(SourceVisitor.Translate(query, expression));
        }
        public void Handle(BrokeredMessage brokeredMessage, QueueClient queue)
        {
            var message = brokeredMessage.GetBody <GoToUrlMessage>();
            var browser = _sessions.GetOrAdd(message.SessionId, new OffscreenBrowser());

            while (browser.GetBrowser() == null)
            {
                Thread.Sleep(50);
            }

            browser.GetBrowser().GetMainFrame().LoadUrl(message.Url);

            var loaded = WaitForBrowserLoadingAsync(browser).Result;

            if (!loaded)
            {
                return;
            }

            var visitor = new SourceVisitor(s =>
            {
                Console.Write(s);

                var fileName = $"{message.SessionId}-{Guid.NewGuid()}";
                _storage.CreateOrUpdate(fileName, s);
                var reply = new ContentReadyMessage()
                {
                    SessionId = message.SessionId,
                    FileName  = fileName
                };
                queue.Send(reply.ToBrokeredMessage());
                CompletedEvent.Set();
            });

            browser.GetBrowser().GetMainFrame().GetSource(visitor);
            CompletedEvent.WaitOne();
        }
Beispiel #5
0
 /// <summary>
 /// Calls visitor.Visit(LoopInvariant).
 /// </summary>
 public override void Dispatch(SourceVisitor visitor)
 {
     visitor.Visit(this);
 }
Beispiel #6
0
 public override void Dispatch(SourceVisitor visitor)
 {
     this.WrappedStatement.Dispatch(visitor);
 }
            public static Expression Translate(IQueryable query, Expression expression)
            {
                var visitor = new SourceVisitor(query);

                return(visitor.Visit(expression));
            }
Beispiel #8
0
 /// <summary>
 /// Calls visitor.Visit((SourceDeclaration)this).
 /// </summary>
 public virtual void Dispatch(SourceVisitor visitor) {
   visitor.Visit(this);
 }
Beispiel #9
0
 /// <summary>
 /// Calls the visitor.Visit(SourceCustomAttribute) method.
 /// </summary>
 public override void Dispatch(SourceVisitor visitor)
 {
     visitor.Visit(this);
 }
Beispiel #10
0
 /// <summary>
 /// Calls visitor.Visit((SourceDeclaration)this).
 /// </summary>
 public virtual void Dispatch(SourceVisitor visitor)
 {
     visitor.Visit(this);
 }
Beispiel #11
0
 public override void Dispatch(SourceVisitor visitor)
 {
     this.WrappedStatement.Dispatch(visitor);
 }
Beispiel #12
0
 public abstract TResult Accept <TResult>(SourceVisitor <TResult> visitor);
Beispiel #13
0
 public abstract void Accept(SourceVisitor visitor);
Beispiel #14
0
 public override void Dispatch(SourceVisitor visitor)
 {
     this.Expression.Dispatch(visitor);
 }
Beispiel #15
0
 public static Expression TranslateSource(Expression query, Expression expression)
 {
     return(SourceVisitor.Translate(query, expression));
 }