Skip to content

Commit

Permalink
Merge pull request #282 from UiPath/fix/compat
Browse files Browse the repository at this point in the history
Fixed compatibility issue between 23.4 and 23.10 by removing the base class TextExpressionBase
  • Loading branch information
aoltean16 authored Oct 31, 2023
2 parents bd19569 + e1e8d5e commit b194d9d
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
using System.Activities;
using System.Activities.Expressions;
using System.Activities.Internals;
using System.Activities.Validation;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq.Expressions;
Expand All @@ -15,25 +14,25 @@ namespace Microsoft.CSharp.Activities;

[DebuggerStepThrough]
[ContentProperty("ExpressionText")]
public class CSharpReference<TResult> : TextExpressionBase<Location<TResult>>, ITextExpression
public class CSharpReference<TResult> : CodeActivity<Location<TResult>>, ITextExpression
{
private CompiledExpressionInvoker _invoker;

public CSharpReference() => UseOldFastPath = true;

public CSharpReference(string expressionText) : this() => ExpressionText = expressionText;

public override string ExpressionText { get; set; }
public string ExpressionText { get; set; }

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public override string Language => CSharpHelper.Language;
public string Language => CSharpHelper.Language;

public override Expression GetExpressionTree() => IsMetadataCached ? _invoker.GetExpressionTree() : throw FxTrace.Exception.AsError(new InvalidOperationException(SR.ActivityIsUncached));
public Expression GetExpressionTree() => IsMetadataCached ? _invoker.GetExpressionTree() : throw FxTrace.Exception.AsError(new InvalidOperationException(SR.ActivityIsUncached));

protected override void CacheMetadata(CodeActivityMetadata metadata)
{
_invoker = new CompiledExpressionInvoker(this, true, metadata);
QueueForValidation<TResult>(metadata, true);
TextExpressionHelper.QueueForValidation<TResult>(this, metadata, ExpressionText, Language, true);
}

protected override Location<TResult> Execute(CodeActivityContext context) => (Location<TResult>)_invoker.InvokeExpression(context);
Expand Down
13 changes: 6 additions & 7 deletions src/UiPath.Workflow/Microsoft/CSharp/Activities/CSharpValue.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
using System.Activities;
using System.Activities.Expressions;
using System.Activities.Internals;
using System.Activities.Validation;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq.Expressions;
Expand All @@ -15,26 +14,26 @@ namespace Microsoft.CSharp.Activities;

[DebuggerStepThrough]
[ContentProperty("ExpressionText")]
public class CSharpValue<TResult> : TextExpressionBase<TResult>
public class CSharpValue<TResult> : CodeActivity<TResult>, ITextExpression
{
private CompiledExpressionInvoker _invoker;

public CSharpValue() => UseOldFastPath = true;

public CSharpValue(string expressionText) : this() => ExpressionText = expressionText;

public override string ExpressionText { get; set; }
public string ExpressionText { get; set; }

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public override string Language => CSharpHelper.Language;
public string Language => CSharpHelper.Language;

public override Expression GetExpressionTree() => IsMetadataCached ? _invoker.GetExpressionTree() : throw FxTrace.Exception.AsError(new InvalidOperationException(SR.ActivityIsUncached));
public Expression GetExpressionTree() => IsMetadataCached ? _invoker.GetExpressionTree() : throw FxTrace.Exception.AsError(new InvalidOperationException(SR.ActivityIsUncached));

protected override void CacheMetadata(CodeActivityMetadata metadata)
{
_invoker = new CompiledExpressionInvoker(this, false, metadata);
QueueForValidation<TResult>(metadata, false);
TextExpressionHelper.QueueForValidation<TResult>(this, metadata, ExpressionText, Language, false);
}

protected override TResult Execute(CodeActivityContext context) => (TResult) _invoker.InvokeExpression(context);
protected override TResult Execute(CodeActivityContext context) => (TResult)_invoker.InvokeExpression(context);
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,12 @@
using System.Activities.Expressions;
using System.Activities.Validation;
using System.Linq.Expressions;
using System.Activities.Validation;

namespace System.Activities
{
public abstract class TextExpressionBase<TResult> : CodeActivity<TResult>, ITextExpression
internal static class TextExpressionHelper
{
private static readonly Func<ValidationExtension> _validationFunc = () => new();

public abstract string ExpressionText { get; set; }

public abstract string Language { get; }

public abstract Expression GetExpressionTree();

protected bool QueueForValidation<T>(CodeActivityMetadata metadata, bool isLocation)
public static bool QueueForValidation<T>(Activity activity, CodeActivityMetadata metadata, string expressionText, string language, bool isLocation)
{
if (metadata.Environment.CompileExpressions)
{
Expand All @@ -26,12 +18,12 @@ protected bool QueueForValidation<T>(CodeActivityMetadata metadata, bool isLocat
var extension = metadata.Environment.Extensions.GetOrAdd(_validationFunc);
extension.QueueExpressionForValidation<T>(new()
{
Activity = this,
ExpressionText = ExpressionText,
Activity = activity,
ExpressionText = expressionText,
IsLocation = isLocation,
ResultType = typeof(T),
Environment = metadata.Environment
}, Language);
}, language);

return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
using System.Activities.Expressions;
using System.Activities.Internals;
using System.Activities.Runtime;
using System.Activities.Validation;
using System.Activities.XamlIntegration;
using System.ComponentModel;
using System.Diagnostics;
Expand All @@ -18,8 +17,8 @@
namespace Microsoft.VisualBasic.Activities;

[DebuggerStepThrough]
public sealed class VisualBasicReference<TResult> : TextExpressionBase<Location<TResult>>, IValueSerializableExpression,
IExpressionContainer
public sealed class VisualBasicReference<TResult> : CodeActivity<Location<TResult>>, IValueSerializableExpression,
IExpressionContainer, ITextExpression
{
private Expression<Func<ActivityContext, TResult>> _expressionTree;
private CompiledExpressionInvoker _invoker;
Expand All @@ -29,12 +28,12 @@ public sealed class VisualBasicReference<TResult> : TextExpressionBase<Location<

public VisualBasicReference(string expressionText) : this() => ExpressionText = expressionText;

public override string ExpressionText { get; set; }
public string ExpressionText { get; set; }

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public override string Language => VisualBasicHelper.Language;
public string Language => VisualBasicHelper.Language;

public override Expression GetExpressionTree()
public Expression GetExpressionTree()
{
if (IsMetadataCached)
{
Expand Down Expand Up @@ -86,7 +85,7 @@ protected override void CacheMetadata(CodeActivityMetadata metadata)
_expressionTree = null;
_invoker = new CompiledExpressionInvoker(this, true, metadata);

if (QueueForValidation<TResult>(metadata, true))
if (TextExpressionHelper.QueueForValidation<TResult>(this, metadata, ExpressionText, Language, true))
{
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
using System.Activities.Expressions;
using System.Activities.Internals;
using System.Activities.Runtime;
using System.Activities.Validation;
using System.Activities.XamlIntegration;
using System.ComponentModel;
using System.Diagnostics;
Expand All @@ -18,8 +17,8 @@
namespace Microsoft.VisualBasic.Activities;

[DebuggerStepThrough]
public sealed class VisualBasicValue<TResult> : TextExpressionBase<TResult>, IValueSerializableExpression,
IExpressionContainer
public sealed class VisualBasicValue<TResult> : CodeActivity<TResult>, IValueSerializableExpression,
IExpressionContainer, ITextExpression
{
private Func<ActivityContext, TResult> _compiledExpression;
private Expression<Func<ActivityContext, TResult>> _expressionTree;
Expand All @@ -29,12 +28,12 @@ public sealed class VisualBasicValue<TResult> : TextExpressionBase<TResult>, IVa

public VisualBasicValue(string expressionText) : this() => ExpressionText = expressionText;

public override string ExpressionText { get; set; }
public string ExpressionText { get; set; }

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public override string Language => VisualBasicHelper.Language;
public string Language => VisualBasicHelper.Language;

public override Expression GetExpressionTree()
public Expression GetExpressionTree()
{
if (!IsMetadataCached)
{
Expand Down Expand Up @@ -87,7 +86,7 @@ protected override void CacheMetadata(CodeActivityMetadata metadata)
_expressionTree = null;
_invoker = new CompiledExpressionInvoker(this, false, metadata);

if (QueueForValidation<TResult>(metadata, false))
if (TextExpressionHelper.QueueForValidation<TResult>(this, metadata, ExpressionText, Language, false))
{
return;
}
Expand Down

0 comments on commit b194d9d

Please sign in to comment.