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)); }
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(); }
/// <summary> /// Calls visitor.Visit(LoopInvariant). /// </summary> public override void Dispatch(SourceVisitor visitor) { visitor.Visit(this); }
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)); }
/// <summary> /// Calls visitor.Visit((SourceDeclaration)this). /// </summary> public virtual void Dispatch(SourceVisitor visitor) { visitor.Visit(this); }
/// <summary> /// Calls the visitor.Visit(SourceCustomAttribute) method. /// </summary> public override void Dispatch(SourceVisitor visitor) { visitor.Visit(this); }
public abstract TResult Accept <TResult>(SourceVisitor <TResult> visitor);
public abstract void Accept(SourceVisitor visitor);
public override void Dispatch(SourceVisitor visitor) { this.Expression.Dispatch(visitor); }
public static Expression TranslateSource(Expression query, Expression expression) { return(SourceVisitor.Translate(query, expression)); }