Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug/476 multiple methods per interface with JSON serialization doesn´t work #1343

Conversation

paule96
Copy link
Contributor

@paule96 paule96 commented Aug 28, 2024

Description

Now the Actor manager provides the MethodName for the serialization ActorMessageSerializersManager.
This makes it now possible for the JSON serialization to support Actor interfaces with more than one method defined in it.

As a side effect, this PR solves #1342 too.
Changes made in the dev container:

  • use docker-in-docker instead of docker-from-docker
    • now the devcontainer is isolated from the host and is not affected by the host configuration. But it also means accessing the dapr instance of the devcontainer is only accessible from inside the container.
  • install all dotnet sdks that the tests requires. (dotnet 6 is still the default, maybe we should change that too)
  • add the C# DevKit as an additional extension. This can be a breaking change for people that don't have a visual studio license and want to run the dev container on their local host. Users that run the dev container on GitHub get a license automatically injected.
  • Unblocks the localinit.sh script before running it

Changes made to the E2E Tests

  • it's now easier to debug failing start of the E2E test App.

Issue reference

It's part of the issue #476 starting with this comment.

It fixes also #1342

Checklist

Please make sure you've completed the relevant tasks for this PR, out of the following list:

  • Code compiles correctly
  • Created/updated tests
  • Extended the documentation
    • partly, I added at the interesting locations in the code comments.
    • This change shouldn't affect the current documented actor model, it just fixes a broken feature

cc @onionhammer as original contributor :)

@paule96
Copy link
Contributor Author

paule96 commented Aug 28, 2024

@onionhammer it would be nice if you could try out these changes. For me, it seems to not be possible yet. I will look the next days into #1342 to solve the debugging/contribution story for others.

I did found out what is wrong with the devcontainer setup :) Will fix both here. Of course the blind implementation was broken. Will be fixed in the next hour.

@paule96 paule96 force-pushed the bug/476_multiple_methods_per_interface_with_json_serialisation_doesntwork branch 2 times, most recently from f847e87 to a13100b Compare August 28, 2024 15:24
@paule96 paule96 marked this pull request as ready for review August 28, 2024 15:24
@paule96 paule96 requested review from a team as code owners August 28, 2024 15:24
@paule96
Copy link
Contributor Author

paule96 commented Aug 28, 2024

@onionhammer This is now ready to review :) That was a fun research. I tried to don't break existing code paths as much as I could.

Copy link
Contributor

@onionhammer onionhammer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good to me, although I have no authority here :)

cc @halspang @shivamkm07

@WhitWaldo
Copy link
Contributor

WhitWaldo commented Sep 2, 2024

install all dotnet sdks that the tests requires. (dotnet 6 is still the default, maybe we should change that too)

.NET 7 fell out of support May 14 of this year and .NET 8 will do the same on November 10, 2024 with .NET 9 being introduced in the same time frame. That should be right around the 1.15 release, so I think there will be a good case to be made to drop .NET 6 and .NET 7 explicit support, target .NET 8 instead and include .NET 9 in the test suite for 1.16.

paule96 and others added 8 commits September 3, 2024 08:48
Signed-off-by: paule96 <[email protected]>
Signed-off-by: paule96 <[email protected]>
Now the devcontainer uses docker in docker, so you can reach the dapr setup after you did run dapr init. This will then only affect the dev container, without compromising the host of the devcontainer

Signed-off-by: paule96 <[email protected]>
@paule96 paule96 force-pushed the bug/476_multiple_methods_per_interface_with_json_serialisation_doesntwork branch from adb8471 to 7be9077 Compare September 3, 2024 08:48
@paule96
Copy link
Contributor Author

paule96 commented Sep 3, 2024

@WhitWaldo if I change the default version to dotnet 9.0 the new security vulnerability scanning of the dotnet CLI turns on implicitly and produces, of course, a lot of errors.

I guess the upgrading of the default SDK needs to be delayed.

maybe a separate issue is needed to clean up the solution of, the old tests, old implementation, and what else is connected to it. I guess the documentation needs to be updated too.
In that issue, the devcontainer shouldn't be forgotten.

So for now I would try to just update the default to dotnet 8.0 (support until November 10, 2026, it's LTS), and postpone the change to dotnet 9.0 to a later point in time.

@WhitWaldo
Copy link
Contributor

That's right - the plan is to put off changing the targeted releases until after the release of Dapr 1.15. There, we'll target .NET 6 and .NET 8 still, so no changes needed in the short term. But we'll put something prominent announcing EOL in the release notes so it's clear that in 1.16 we'll drop support for .NET 6 in favor of .NET 8 (and language version C# 12). An open question on that thread is whether we should go on targeting .NET 9 as well (though I'm also inclined to lean yes since there are frequently so many performance improvements in each).

You're right, that'll require some significant doc updates in addition to the other projects, but I've got a draft PR that'll likely handle the latter as I'm gradually adding nullability annotations throughout the .NET SDK and there are several other PRs in place that'll shift up some of the project layouts as well that'll help.

Things to tackle after the next release!

@paule96
Copy link
Contributor Author

paule96 commented Sep 12, 2024

@WhitWaldo do you know anybody I could ping to get a review? (maybe yourself)

@WhitWaldo
Copy link
Contributor

@paule96 I'm not a maintainer, so my check isn't worth a whole lot. I suspect this will get more attention as we edge closer to the 1.15 release and there's more of a general code freeze. If it hasn't been looked at closer to that timeline, I'll give it a look myself (for whatever it might be worth).

@yaron2
Copy link
Member

yaron2 commented Sep 26, 2024

cc @halspang @philliphoff

@paule96
Copy link
Contributor Author

paule96 commented Oct 7, 2024

@halspang & @philliphoff friendly reminder

@yaron2 yaron2 requested a review from WhitWaldo October 7, 2024 14:45
@WhitWaldo
Copy link
Contributor

WhitWaldo commented Oct 7, 2024

@paule96 I'm a maintainer now, so happy to give this a look!

I'm not already super familiar with how Dapr handles serialization under the hood, so I'm learning as I read through your changes here. The approach already taken registers the interface and references it throughout using an int, why it does this, I'm not entirely sure, but I'd assume it's to avoid name conflicts and shorten the amount of data passed around. If that's at all accurate, I'm concerned that this approach, which binds the serialization to the name of the method runs a risk of being insufficiently specific (especially in light of #1350 and the opportunity for polymorphic bindings reflecting the same method names).

Now, perhaps that's not a problem, as different interfaces should register different IDs and you're keying the serializers by both this interface and method. Perhaps you've considered this, but given your richer familiarity with the underlying problem space, does it make more sense to have a similar ID registry for the method names as we appear to have for the actor interfaces rather than the approach you've taken here?

Second, could you add some unit tests that prove that this approach works sufficiently well for method overloads?

@paule96
Copy link
Contributor Author

paule96 commented Oct 23, 2024

@WhitWaldo sorry for the late reply. Was kinda busy these days.
Thank you for pointing out the other pullrequest.

My first comment to overloads is:

It's not supported. Their is an explicit exception for that in the file:

private static void EnsureNotOverloaded(
string remotedInterfaceKindName,
Type remotedInterfaceType,
MethodInfo methodInfo,
ISet<string> methodNameSet)
{
if (methodNameSet.Contains(methodInfo.Name))
{
ThrowArgumentExceptionForMethodChecks(
remotedInterfaceKindName,
remotedInterfaceType,
methodInfo,
SR.ErrorRemotedMethodsIsOverloaded);
}
methodNameSet.Add((methodInfo.Name));
}

I will try to see what I can do to enable support for it. But I guess it will still work with names instead of Ids. The problematic part is, that we need to type match here. And because the transport types are json, it maybe becomes a challenge. (not sure yet)

And I can understand that actors get an "id". Because their polymorphy is possible. By the language design of methods I'm not aware of any function that will provide polymophic behavior to methods.

The only thing that I could see, if to trick around with inheritance, to like use the new modifier in a class for methods. But that would effectively not work in dapr actors space, because the actors are proxied with the interface, and the interface needs to point to an exact method and not to a new flagged method.

@paule96
Copy link
Contributor Author

paule96 commented Oct 24, 2024

@WhitWaldo I now have created the basic changes for method overloading. I will not push it to this branch or PR. The problem is, that by the design of the actors part of dapr, it doesn't seem to be supported.

For now I would put it on hold, but would like to know where we can find the framework independent documentation for dapr. Where you can see how dapr works outside of the SDK you use.
The reason is write now on my local changes, I changed the method name from:

yourcoolnamespace.evenbetterclassname.SuperFancyMethod

to:

yourcoolnamespace.evenbetterclassname.SuperFancyMethod()

or if it has parameters:

yourcoolnamespace.evenbetterclassname.SuperFancyMethod(FullNameOfParameterType, FullNameOfParameterType)

And I'm quite sure that this will be a breaking change, in special if you try to call an actor from example a python app.
But I couldn't find the documentation where this standards are documented

@WhitWaldo
Copy link
Contributor

@WhitWaldo I now have created the basic changes for method overloading. I will not push it to this branch or PR. The problem is, that by the design of the actors part of dapr, it doesn't seem to be supported.

For now I would put it on hold, but would like to know where we can find the framework independent documentation for dapr. Where you can see how dapr works outside of the SDK you use. The reason is write now on my local changes, I changed the method name from:

yourcoolnamespace.evenbetterclassname.SuperFancyMethod

to:

yourcoolnamespace.evenbetterclassname.SuperFancyMethod()

or if it has parameters:

yourcoolnamespace.evenbetterclassname.SuperFancyMethod(FullNameOfParameterType, FullNameOfParameterType)

And I'm quite sure that this will be a breaking change, in special if you try to call an actor from example a python app. But I couldn't find the documentation where this standards are documented

The actor runtime itself is in dapr/dapr, but I don't know that there's any specific documentation available that details any of it. As I understand it, it works similarly under the hood to Orleans (well, sort of) and Service Fabric Actors (closer)

@paule96
Copy link
Contributor Author

paule96 commented Oct 29, 2024

@WhitWaldo so can we skip the topic for now on this pullrequest and maybe open a new issue for method overloading? Because that was not scope of this PR

@WhitWaldo
Copy link
Contributor

@paule96 I agree method overloading isn't in scope, but I'm concerned about the opportunity for developers attempt to do so and then run into an odd runtime experience (as happens where with more than one method per interface).

I'm going to review this again this week and see if we can't get it merged as-is.

@paule96
Copy link
Contributor Author

paule96 commented Dec 2, 2024

@WhitWaldo is their a chance that you can take a look to this :)

@WhitWaldo
Copy link
Contributor

@paule96 It's in the queue - trying to get to it before the 1.15 release.

@WhitWaldo
Copy link
Contributor

@paule96 If you could go through and fix the minor naming notes throughout (e.g. "dapr" -> "Dapr" and "github" -> "GitHub" on the exceptions that are noted, I'd be happy to merge it.

Signed-off-by: paule96 <[email protected]>
…erface_with_json_serialisation_doesntwork' into bug/476_multiple_methods_per_interface_with_json_serialisation_doesntwork

Signed-off-by: paule96 <[email protected]>
@paule96
Copy link
Contributor Author

paule96 commented Dec 3, 2024

@WhitWaldo done :)

Copy link
Contributor

@WhitWaldo WhitWaldo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me!

"ghcr.io/devcontainers/features/docker-from-docker:1": {
"version": "20.10"
"ghcr.io/devcontainers/features/docker-in-docker": {
"version": "latest"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally, this should be pinned to a particular version in case breaking changes are introduced later on.


if(_wrappedRequestMessageTypes.Count > 1){
throw new NotSupportedException("JSON serialisation should always provide the actor method (or nothing), that was called" +
" to support (de)serialisation. This is a dapr sdk error, open an issue on github.");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"dapr" -> "Dapr"
"github" -> "GitHub"

@WhitWaldo WhitWaldo added this to the v1.15 milestone Dec 3, 2024
@WhitWaldo WhitWaldo merged commit 2e0fa80 into dapr:master Dec 3, 2024
10 checks passed
@WhitWaldo
Copy link
Contributor

I neglected to say it earlier - thank you very much for your contribution here @paule96 !

divzi-p pushed a commit to divzi-p/dotnet-sdk that referenced this pull request Dec 10, 2024
…t work (dapr#1343)

* update devcontainer

Signed-off-by: paule96 <[email protected]>

* update test setup

Signed-off-by: paule96 <[email protected]>

* Now the json serialization should work with multiple methods in an interface

Signed-off-by: paule96 <[email protected]>

* fixed devcontainer to run actors

Now the devcontainer uses docker in docker, so you can reach the dapr setup after you did run dapr init. This will then only affect the dev container, without compromising the host of the devcontainer

Signed-off-by: paule96 <[email protected]>

* fix bugs with the current implementation

Signed-off-by: paule96 <[email protected]>

* add a test that checks excatly the behavior

Signed-off-by: paule96 <[email protected]>

* fix devcontainer post creatd command

Signed-off-by: paule96 <[email protected]>

* change the default to dotnet 8.0

Signed-off-by: paule96 <[email protected]>

* I don't know what is different but we commit.

Maybe it resolves the need of chmod for it 🤷‍♀️

Signed-off-by: paule96 <[email protected]>

* make it easier to see why the application of an E2E test couldn't start

Signed-off-by: paule96 <[email protected]>

* make the exception in E2E more percise

Signed-off-by: paule96 <[email protected]>

* fix exception message

Signed-off-by: paule96 <[email protected]>

---------

Signed-off-by: paule96 <[email protected]>
Co-authored-by: Yaron Schneider <[email protected]>
Co-authored-by: Whit Waldo <[email protected]>
Signed-off-by: Divya Perumal <[email protected]>
siri-varma pushed a commit to siri-varma/dotnet-sdk that referenced this pull request Dec 20, 2024
…t work (dapr#1343)

* update devcontainer

Signed-off-by: paule96 <[email protected]>

* update test setup

Signed-off-by: paule96 <[email protected]>

* Now the json serialization should work with multiple methods in an interface

Signed-off-by: paule96 <[email protected]>

* fixed devcontainer to run actors

Now the devcontainer uses docker in docker, so you can reach the dapr setup after you did run dapr init. This will then only affect the dev container, without compromising the host of the devcontainer

Signed-off-by: paule96 <[email protected]>

* fix bugs with the current implementation

Signed-off-by: paule96 <[email protected]>

* add a test that checks excatly the behavior

Signed-off-by: paule96 <[email protected]>

* fix devcontainer post creatd command

Signed-off-by: paule96 <[email protected]>

* change the default to dotnet 8.0

Signed-off-by: paule96 <[email protected]>

* I don't know what is different but we commit.

Maybe it resolves the need of chmod for it 🤷‍♀️

Signed-off-by: paule96 <[email protected]>

* make it easier to see why the application of an E2E test couldn't start

Signed-off-by: paule96 <[email protected]>

* make the exception in E2E more percise

Signed-off-by: paule96 <[email protected]>

* fix exception message

Signed-off-by: paule96 <[email protected]>

---------

Signed-off-by: paule96 <[email protected]>
Co-authored-by: Yaron Schneider <[email protected]>
Co-authored-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>
WhitWaldo added a commit that referenced this pull request Dec 28, 2024
* Make context mockable

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Fix project

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Consolidated version of coverlet.msbuild, coverlet.collector, xunit, xunit.runner.visualstudio, Microsoft.AspNetCore.Mvc.Testing, Moq to the same version in all projects.

Signed-off-by: Manuel Menegazzo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Make context mockable

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Fix project

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Added unit test to prove out concern raised on Discord

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Removed unused using

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Added unit test to validate that headers aren't being stripped off request

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Fixed spelling typo

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Added fix to handle null return values

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Removed unnecessary null check

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Removed deprecated methods from DaprClient and tests as well as unused types

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Removed unused (and invalid) reference

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Removed E2E workflow test as it validated DaprClient and the functionality has been moved out to the Dapr.Workflow project instead.

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Adding instance-based CreateInvokableHttpClient (#1319)

This PR takes the implementation of the static method and puts it into the DaprClient instance, pulling from the existing apiTokenHeader on the instance to populate the daprApiToken, pulling the endpoint from the instance's httpEndpoint value and accepting only an appId argument so as to specify the ID of the Dapr app to connect to and place in the resulting URI.

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Fixed security advisory updates across dependencies (transitive and direct) (#1366)

Migrating whole solution to Central Package Management - several package version upgrades to address security advisories and otherwise.

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Removes floating classes and introduces Dapr.Common project (#1365)

Extracting classes out to common project

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Extracted Protos out to common project (#1367)

Protos pulled out to separate shared project

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Improvement of the dotnet-contributing files (#1330)

Add link about Dapr bot to contribution documentation

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Support case insensitive cloudevent payloads and forward cloudevent props s headers (#1153)

* forward cloudevent props
Signed-off-by: Ilias Politsopoulos <[email protected]>

* refactor middleware
Signed-off-by: Ilias Politsopoulos <[email protected]>

* add cloud event property filters
Signed-off-by: Ilias Politsopoulos <[email protected]>

* update string check
Signed-off-by: Ilias Politsopoulos <[email protected]>

* forward cloudevent props
Signed-off-by: Ilias Politsopoulos <[email protected]>

* refactor middleware
Signed-off-by: Ilias Politsopoulos <[email protected]>

* add cloud event property filters
Signed-off-by: Ilias Politsopoulos <[email protected]>

* update checks
Signed-off-by: Ilias Politsopoulos <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Co-authored-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Updating actor serialization documentation (#1371)

* Changed headers, updated introduction to reflect the difference in serialization between either type and added a brief section to detail the use of System.Text.Json for weakly-typed Dapr actor clients and to point to official documentation on it

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Prioritize retrieval of environment variables from IConfiguration instead of directly (#1363)

* Implemented against Dapr.Client.AspNetCore and Dapr.Client

Signed-off-by: Whit Waldo <[email protected]>

* SImplified DaprWorkflow DI registration and updated to use IConfiguration preference. Needs testing.

Signed-off-by: Whit Waldo <[email protected]>

* Added missing copyright header

Signed-off-by: Whit Waldo <[email protected]>

* Updated actor registration to prefer the updated IConfiguration-based approach for pulling the HTTP endpoint and API token

Signed-off-by: Whit Waldo <[email protected]>

* Adopted accepted proposal's guidelines for favoring different environment variables for determining the sidecar endpoint. Added notes to explain this in the code going forward.

Signed-off-by: Whit Waldo <[email protected]>

* Made some lines a little more concise, added hostname default to DaprDefaults to use when building endpoints.

Signed-off-by: Whit Waldo <[email protected]>

* Fixed and updated unit tests

Signed-off-by: Whit Waldo <[email protected]>

* Updated to put endpoint resolution mechanism in DaprDefaults within Dapr.Common  - updating projects and unit tests

Signed-off-by: Whit Waldo <[email protected]>

* Updated packages to fix security advisory https://github.com/advisories/GHSA-447r-wph3-92pm

Signed-off-by: Whit Waldo <[email protected]>

* Updated Workflow builder to use DaprDefaults with IConfiguration

Signed-off-by: Whit Waldo <[email protected]>

* Updating global.json

Signed-off-by: Whit Waldo <[email protected]>

* Tweaked global.json comment

Signed-off-by: Whit Waldo <[email protected]>

* Adding braces per nit

Signed-off-by: Whit Waldo <[email protected]>

* Consolidated both registration extension methods to remove duplication

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* cleanup: Removed Serilog nuget from Directory.Packages.props (#1376)

* Removed Serilog nuget from Directory.Packages.props

Signed-off-by: Manuel Menegazzo <[email protected]>

* Update Directory.Packages.props

Signed-off-by: Manuel Menegazzo <[email protected]>

---------

Signed-off-by: Manuel Menegazzo <[email protected]>
Signed-off-by: Manuel Menegazzo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Removed sample folder (#1375)

Signed-off-by: Manuel Menegazzo <[email protected]>
Co-authored-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Remove unused variables (#1314)

* Remove unused variables

Signed-off-by: Rafael Camara <[email protected]>
Signed-off-by: Rafael Câmara <[email protected]>
Co-authored-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Remove unused using statements. (#1313)

Signed-off-by: Rafael Camara <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Incremental source generator for actors (#1334)

* Samples - Add k8s deployment yaml to DemoActor sample (#1308)

* up

Signed-off-by: Manuel Menegazzo <[email protected]>

* Fixed build

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added scripts for image build

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added readme Build and push Docker image

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added demo-actor.yaml

Signed-off-by: Manuel Menegazzo <[email protected]>

* Fixed typo

Signed-off-by: Manuel Menegazzo <[email protected]>

* Updated guide, fixed invocation throw curl

Signed-off-by: Manuel Menegazzo <[email protected]>

* Removed dockerfile, updated readme, removed ps1 and sh scripts

Signed-off-by: Manuel Menegazzo <[email protected]>

* Updated base image

Signed-off-by: Manuel Menegazzo <[email protected]>
Signed-off-by: Manuel Menegazzo <[email protected]>

* Update demo-actor.yaml

Signed-off-by: Manuel Menegazzo <[email protected]>
Signed-off-by: Manuel Menegazzo <[email protected]>

* Added overload for DaprClient DI registration (#1289)

* Added overload for DaprClient DI registration allowing the consumer to easily use values from injected services (e.g. IConfiguration).

Signed-off-by: Whit Waldo <[email protected]>

* Added supporting unit test

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Co-authored-by: Phillip Hoff <[email protected]>
Signed-off-by: Manuel Menegazzo <[email protected]>

* Merge `release-1.13` back into `master` (#1285)

* Update protos and related use for Dapr 1.13. (#1236)

* Update protos and related use.

Signed-off-by: Phillip Hoff <[email protected]>

* Update Dapr runtime version.

Signed-off-by: Phillip Hoff <[email protected]>

* Init properties.

Signed-off-by: Phillip Hoff <[email protected]>

---------

Signed-off-by: Phillip Hoff <[email protected]>

* Update artifact action versions. (#1240)

Signed-off-by: Phillip Hoff <[email protected]>

* Make recursive true as default (#1243)

Signed-off-by: Shivam Kumar <[email protected]>

* Fix for secret key transformation in multi-value scenarios (#1274)

* Add repro test.

Signed-off-by: Phillip Hoff <[email protected]>

* Fix for secret key transformation in multi-value scenarios.

Signed-off-by: Phillip Hoff <[email protected]>

---------

Signed-off-by: Phillip Hoff <[email protected]>

* Update Dapr version numbers used during testing.

Signed-off-by: Phillip Hoff <[email protected]>

---------

Signed-off-by: Phillip Hoff <[email protected]>
Signed-off-by: Shivam Kumar <[email protected]>
Co-authored-by: Shivam Kumar <[email protected]>
Signed-off-by: Manuel Menegazzo <[email protected]>

---------

Signed-off-by: Manuel Menegazzo <[email protected]>
Signed-off-by: Manuel Menegazzo <[email protected]>
Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Phillip Hoff <[email protected]>
Signed-off-by: Shivam Kumar <[email protected]>
Co-authored-by: Whit Waldo <[email protected]>
Co-authored-by: Phillip Hoff <[email protected]>
Co-authored-by: Shivam Kumar <[email protected]>
Signed-off-by: Manuel Menegazzo <[email protected]>

* Aligned nuget version

Signed-off-by: Manuel Menegazzo <[email protected]>

* UP

Signed-off-by: Manuel Menegazzo <[email protected]>

* UP

Signed-off-by: Manuel Menegazzo <[email protected]>

* Debug profile added

Signed-off-by: Manuel Menegazzo <[email protected]>

* Updated implementation

Signed-off-by: Manuel Menegazzo <[email protected]>

* Emitted DAPR001 Diagnostic warning

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added DAPR002 diagnostic

Signed-off-by: Manuel Menegazzo <[email protected]>

* Cleaun

Signed-off-by: Manuel Menegazzo <[email protected]>

* UP

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added summaries

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added base interface to ActorClient

Signed-off-by: Manuel Menegazzo <[email protected]>

* Updated

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added ctor

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added nullable directive

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added null check for actorproxy ctor parameter

Signed-off-by: Manuel Menegazzo <[email protected]>

* Moved DiagnoticException in a dedicate cs file

Signed-off-by: Manuel Menegazzo <[email protected]>

* Moved generator costants to dedicated class

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added ActorReference creation from the ActorBase class informations (#1277)

* Handled creation of ActorReference from Actor base class

Signed-off-by: Manuel Menegazzo <[email protected]>

* Updated null check

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added unit test for GetActorReference from null actore and actor proxy

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added test for ActorReference created inside Actor implementation

Signed-off-by: Manuel Menegazzo <[email protected]>

* Updated description

Signed-off-by: Manuel Menegazzo <[email protected]>

* Fixed test method naming

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added unit test for exception generated in case the type is not convertible to an ActorReference

Signed-off-by: Manuel Menegazzo <[email protected]>

---------

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added overload to support SDK supplying query string on invoked URL (#1310)

* Refactored extensions and their tests into separate directories

Signed-off-by: Whit Waldo <[email protected]>

* Added overload to method invocation to allow query string parameters to be passed in via the SDK instead of being uncermoniously added to the end of the produced HttpRequestMessage URI

Signed-off-by: Whit Waldo <[email protected]>

* Added unit tests to support implementation

Signed-off-by: Whit Waldo <[email protected]>

* Marking HttpExtensions as internal to prevent external usage and updating to work against Uri instead of HttpRequestMessage.

Signed-off-by: Whit Waldo <[email protected]>

* Updated unit tests to match new extension purpose

Signed-off-by: Whit Waldo <[email protected]>

* Resolved an ambiguous method invocation wherein it was taking the query string and passing it as the payload for a request. Removed the offending method and reworked the remaining configurations so there's no API impact.

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Manuel Menegazzo <[email protected]>

* Fixed actorProxy argument null check

Signed-off-by: Manuel Menegazzo <[email protected]>

* Moved ActorClientDesciptor into separta cs file

Signed-off-by: Manuel Menegazzo <[email protected]>

* Moved textual templates to dedicated class

Signed-off-by: Manuel Menegazzo <[email protected]>

* Updated comments, property names

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added argument null check to SyntaxFactoryHelpers

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added comments

Signed-off-by: Manuel Menegazzo <[email protected]>

* Removed obsolete testing packages https://github.com/dotnet/roslyn-sdk/blob/main/src/Microsoft.CodeAnalysis.Testing/README.md#obsolete-packages

Signed-off-by: Manuel Menegazzo <[email protected]>

* Adapted existing unit test to new source generated code

Signed-off-by: Manuel Menegazzo <[email protected]>

* Up

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added tests for SyntaxFactoryHelpers

Signed-off-by: Manuel Menegazzo <[email protected]>

* Updated generation of ArgumentNullException

Signed-off-by: Manuel Menegazzo <[email protected]>

* Updated nullability

Signed-off-by: Manuel Menegazzo <[email protected]>

* Fixed internal methods tests

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added test to IEnumerableExtensions

Signed-off-by: Manuel Menegazzo <[email protected]>

* Unittested GetSyntaxKinds from Accessibility

Signed-off-by: Manuel Menegazzo <[email protected]>

* UP

Signed-off-by: Manuel Menegazzo <[email protected]>

* Updated assignment implementation of ctor body

Signed-off-by: Manuel Menegazzo <[email protected]>

* Improved unit test

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added implementation of method generation

Signed-off-by: Manuel Menegazzo <[email protected]>

* Fixed ArgumentNullException invocation

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added test for NameOfExpression

Signed-off-by: Manuel Menegazzo <[email protected]>

* Fixed ActorProxy method invocation

Signed-off-by: Manuel Menegazzo <[email protected]>

* Simplified proxy argument definition

Signed-off-by: Manuel Menegazzo <[email protected]>

* Explicit generic arguments of the proxy call during generation

Signed-off-by: Manuel Menegazzo <[email protected]>

* Handled cancellation token with default value

Signed-off-by: Manuel Menegazzo <[email protected]>

* Fixed typo

Signed-off-by: Manuel Menegazzo <[email protected]>

* Configured eol used in NormalizeWhitespace function

Signed-off-by: Manuel Menegazzo <[email protected]>

* Normalized expected source

Signed-off-by: Manuel Menegazzo <[email protected]>

* Moved to constat the ActorProxyTypeName

Signed-off-by: Manuel Menegazzo <[email protected]>

* Fix typo

Signed-off-by: Manuel Menegazzo <[email protected]>

* Created ActorProxyInvokeMethodAsync SyntaxFactoryHelper

Signed-off-by: Manuel Menegazzo <[email protected]>

* Removed custom concat implementation

Signed-off-by: Manuel Menegazzo <[email protected]>

* fix (#1329)

Signed-off-by: Hannah Hunter <[email protected]>
Signed-off-by: Manuel Menegazzo <[email protected]>

* link to non-dapr endpoint howto (#1335)

Signed-off-by: Hannah Hunter <[email protected]>
Signed-off-by: Manuel Menegazzo <[email protected]>

* Merge 1.14 release branch back into `master`. (#1337)

Signed-off-by: Manuel Menegazzo <[email protected]>

* Fixed merge errors
Signed-off-by: Manuel Menegazzo <[email protected]>

Signed-off-by: Manuel Menegazzo <[email protected]>

* Updated some summaries

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added some missing summaries

Signed-off-by: Manuel Menegazzo <[email protected]>

* Fixed typo

Signed-off-by: Manuel Menegazzo <[email protected]>

* Improved some summary text

Signed-off-by: Manuel Menegazzo <[email protected]>

* Improved summaries

Signed-off-by: Manuel Menegazzo <[email protected]>

* Handled review requests

Signed-off-by: Manuel Menegazzo <[email protected]>

* Changed SyntaxFactoryHelpers accessor to internal

Signed-off-by: Manuel Menegazzo <[email protected]>

---------

Signed-off-by: Manuel Menegazzo <[email protected]>
Signed-off-by: Manuel Menegazzo <[email protected]>
Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Phillip Hoff <[email protected]>
Signed-off-by: Shivam Kumar <[email protected]>
Signed-off-by: Hannah Hunter <[email protected]>
Co-authored-by: Whit Waldo <[email protected]>
Co-authored-by: Phillip Hoff <[email protected]>
Co-authored-by: Shivam Kumar <[email protected]>
Co-authored-by: Hannah Hunter <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Add .NET client for Dapr Jobs API (#1384)

* Package addition + updates

Signed-off-by: Whit Waldo <[email protected]>

* Added Dapr.Jobs project

Signed-off-by: Whit Waldo <[email protected]>

* Initial commit - unable to proceed without update on master from streaming sub PR

Signed-off-by: Whit Waldo <[email protected]>

* Added class to Dapr.Common, fixed compilation errors

Signed-off-by: Whit Waldo <[email protected]>

* Added unit tests for Dapr.Common enum extensions

Signed-off-by: Whit Waldo <[email protected]>

* Added unit tests

Signed-off-by: Whit Waldo <[email protected]>

* Added missing copyright header

Signed-off-by: Whit Waldo <[email protected]>

* Added sample Jobs project

Signed-off-by: Whit Waldo <[email protected]>

* Added documentation

Signed-off-by: Whit Waldo <[email protected]>

* Added missing copyright header

Signed-off-by: Whit Waldo <[email protected]>

* Downgraded Roslyn packages since master doesn't yet have the incremental source generator updates

Signed-off-by: Whit Waldo <[email protected]>

* Missed a reference regarding incremental source generators

Signed-off-by: Whit Waldo <[email protected]>

* Downgraded packages to fix nullability issues on build

Signed-off-by: Whit Waldo <[email protected]>

* Downgraded from 8.* packages back to 6.* packages for the various Microsoft.Extensions.* packages to fix build issues

Signed-off-by: Whit Waldo <[email protected]>

* Removed unnecessary assignment

Signed-off-by: Whit Waldo <[email protected]>

* Added braces for clarity

Signed-off-by: Whit Waldo <[email protected]>

* Added more curley braces

Signed-off-by: Whit Waldo <[email protected]>

* More curly braces again

Signed-off-by: Whit Waldo <[email protected]>

* Marked two properties as static

Signed-off-by: Whit Waldo <[email protected]>

* Updated to handle any order of parameters to endpoint route builder delegate

Signed-off-by: Whit Waldo <[email protected]>

* Updated default cancellation token value

Signed-off-by: Whit Waldo <[email protected]>

* Added missing package version in Directory.Packages

Signed-off-by: Whit Waldo <[email protected]>

* Fixed unit tests

Signed-off-by: Whit Waldo <[email protected]>

* Added test to ensure that even if cancellation token is provided, it'll handle the mapping properly

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Updated prereqs to specify .NET 6 and .NET 8 in v1.15 (#1398)

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Refactor DaprWorkflowClientBuilderFactory and WorkflowRuntimeOptions (#1244)

This commit refactors the DaprWorkflowClientBuilderFactory and WorkflowRuntimeOptions classes.

In DaprWorkflowClientBuilderFactory:
- Added a new method, UseGrpcChannelOptions, to allow the use of custom GrpcChannelOptions for creating the GrpcChannel.
- Updated the UseGrpc method to use the GrpcChannelOptions provided by the WorkflowRuntimeOptions.

In WorkflowRuntimeOptions:
- Added a new property, GrpcChannelOptions, to store the custom GrpcChannelOptions.
- Added a new method, UseGrpcChannelOptions, to set the GrpcChannelOptions.

These changes improve the flexibility and customization options for the Dapr workflow client.

Signed-off-by: Michiel van Praat <[email protected]>
Co-authored-by: Michiel van Praat <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Fix for DI registration not completing as expected (#1386)

* Tentative fix for DI registration not completing as expected

Signed-off-by: Whit Waldo <[email protected]>

* Making injected IConfiguration optional as it might not be populated if user isn't utilizing ASP.NET Core from caller

Signed-off-by: Whit Waldo <[email protected]>

* Fixed DI injection issue

Signed-off-by: Whit Waldo <[email protected]>

* Removed registration of DaprWorkflowClientBuilderFactory

Signed-off-by: Whit Waldo <[email protected]>

* Updated field names for consistency

Signed-off-by: Whit Waldo <[email protected]>

* Minor formatting changes

Signed-off-by: Whit Waldo <[email protected]>

* Fixed build error caused by bad merge resolution

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Add .NET client for pub/sub support - streaming subscriptions (#1381)

* Building out Dapr.Messaging and test project for streaming pubsub subscriptions

Signed-off-by: Whit Waldo <[email protected]>

* Added copyright notices

Signed-off-by: Whit Waldo <[email protected]>

* Minor stylistic updates

Signed-off-by: Whit Waldo <[email protected]>

* Added generic client builder to support publish/subscribe client builder

Signed-off-by: Whit Waldo <[email protected]>

* Tweaked XML comment

Signed-off-by: Whit Waldo <[email protected]>

* Added several unit tests for the generic client builder

Signed-off-by: Whit Waldo <[email protected]>

* Updated to include latest review changes:
- Added lock so that while we guarantee the method is called only once, it should be thread-safe now
- Marked PublishSubscribeReceiver as internal so its members aren't part of the public API
- Updated TopicMessage to use IReadOnlyDictionary

Signed-off-by: Whit Waldo <[email protected]>

* Switched to interlock exchange instead of lock to slightly simplify code

Signed-off-by: Whit Waldo <[email protected]>

* Added sample project

Signed-off-by: Whit Waldo <[email protected]>

* Minor changes to unit test

Signed-off-by: Whit Waldo <[email protected]>

* Deleted protos folder

Signed-off-by: Whit Waldo <[email protected]>

* Using lowercase protos dir name

Signed-off-by: Whit Waldo <[email protected]>

* Added registration extension methods

Signed-off-by: Whit Waldo <[email protected]>

* Updated example to use DI registration

Signed-off-by: Whit Waldo <[email protected]>

* Added default cancellation token

Signed-off-by: Whit Waldo <[email protected]>

* Passing stream into method instead of creating it twice

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* ci: set fail-fast to false (#1405)

Signed-off-by: Mike Nguyen <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Added async operations workflow sample (#1394)

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Added workflow example: Fan out/fan in (#1396)

* Added workflow fan out/fan in example

Signed-off-by: Whit Waldo <[email protected]>

* Added copyright headers

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Added workflow sample: Sub-workflows (#1395)

* Added Workflow with sub-workflow

Signed-off-by: Whit Waldo <[email protected]>

* Removed duplicate package version reference

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Added workflow sample: Task chaining (#1387)

* Added Workflow Task Chaining example to replace https://github.com/dapr/dotnet-sdk/pull/1206

Signed-off-by: Whit Waldo <[email protected]>

* Targeting .NET 6, fixed transposition error

Signed-off-by: Whit Waldo <[email protected]>

* Added missing copyright headers

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Added workflow sample: Monitor (#1388)

* Added workflow monitor

Signed-off-by: Whit Waldo <[email protected]>

* Restore to original argument names

Signed-off-by: Whit Waldo <[email protected]>

* Update to target .NET 6

Signed-off-by: Whit Waldo <[email protected]>

* Added missing copyright headers

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Added workflow example: External interaction (#1389)

* Added workflow example demonstrating external interaction

Signed-off-by: Whit Waldo <[email protected]>

* Added copyright headers

Signed-off-by: Whit Waldo <[email protected]>

* Fixed .sln file

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Optional DI lifecycle change (#1408)

* Added mechanism to allow the service lifetime to be overridden from a singleton (default) to another lifetime

Signed-off-by: Whit Waldo <[email protected]>

* Added unit tests - updated dependencies accordingly

Signed-off-by: Whit Waldo <[email protected]>

* Added service lifetime to DaprClient as well

Signed-off-by: Whit Waldo <[email protected]>

* Added update to DaprClient to pass service lifetime through

Signed-off-by: Whit Waldo <[email protected]>

* Added documentation indicating how to register DaprWorkflowClient with different lifecycle options.

Signed-off-by: Whit Waldo <[email protected]>

* Removed unnecessary line from csproj

Signed-off-by: Whit Waldo <[email protected]>

* Simplified registrations

Signed-off-by: Whit Waldo <[email protected]>

* Called out an important point about registrations

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Additional lifecycle registration changes (#1410)

* Added service lifetime to Jobs client

Signed-off-by: Whit Waldo <[email protected]>

* Added service lifetime to messaging client

Signed-off-by: Whit Waldo <[email protected]>

* Added service lifetime to actors registration

Signed-off-by: Whit Waldo <[email protected]>

* Added unit tests for DaprClient

Signed-off-by: Whit Waldo <[email protected]>

* Minor naming tweaks

Signed-off-by: Whit Waldo <[email protected]>

* Removed invalid using

Signed-off-by: Whit Waldo <[email protected]>

* Added service lifetime tests for actors

Signed-off-by: Whit Waldo <[email protected]>

* Added unit tests for jobs client lifecycle registrations

Signed-off-by: Whit Waldo <[email protected]>

* Added unit tests for PubSub and lifecycle registration

Signed-off-by: Whit Waldo <[email protected]>

* Fixed missing registration dependency

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Preserve comparer of the original dictionary from ConfigurationProvider (#935)

Signed-off-by: Tomas Hrebicek <[email protected]>
Co-authored-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Update all.sln

Removed duplicate project include of Dapr.Workflow.Test

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Bug/476 multiple methods per interface with JSON serialization doesn´t work (#1343)

* update devcontainer

Signed-off-by: paule96 <[email protected]>

* update test setup

Signed-off-by: paule96 <[email protected]>

* Now the json serialization should work with multiple methods in an interface

Signed-off-by: paule96 <[email protected]>

* fixed devcontainer to run actors

Now the devcontainer uses docker in docker, so you can reach the dapr setup after you did run dapr init. This will then only affect the dev container, without compromising the host of the devcontainer

Signed-off-by: paule96 <[email protected]>

* fix bugs with the current implementation

Signed-off-by: paule96 <[email protected]>

* add a test that checks excatly the behavior

Signed-off-by: paule96 <[email protected]>

* fix devcontainer post creatd command

Signed-off-by: paule96 <[email protected]>

* change the default to dotnet 8.0

Signed-off-by: paule96 <[email protected]>

* I don't know what is different but we commit.

Maybe it resolves the need of chmod for it 🤷‍♀️

Signed-off-by: paule96 <[email protected]>

* make it easier to see why the application of an E2E test couldn't start

Signed-off-by: paule96 <[email protected]>

* make the exception in E2E more percise

Signed-off-by: paule96 <[email protected]>

* fix exception message

Signed-off-by: paule96 <[email protected]>

---------

Signed-off-by: paule96 <[email protected]>
Co-authored-by: Yaron Schneider <[email protected]>
Co-authored-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Support .NET 9 (#1404)

* Updated build and integration test scripts to include .NET 9

Signed-off-by: Whit Waldo <[email protected]>

* Removed unused matrix values

Signed-off-by: Whit Waldo <[email protected]>

* Reverted some .NET 8 requirement

Signed-off-by: Whit Waldo <[email protected]>

* Updated setup-dotnet to use latest action version + updated script to prefer a GA release, but use RC if available.

Signed-off-by: Whit Waldo <[email protected]>

* Removed unnecessary secondary build step

Signed-off-by: Whit Waldo <[email protected]>

* Updating TFM moniker

Signed-off-by: Whit Waldo <[email protected]>

* Added test to install VStest

Signed-off-by: Whit Waldo <[email protected]>

* Rolling back use of tool as it doesn't independently exist outside of the SDK

Signed-off-by: Whit Waldo <[email protected]>

* Added .NET 9 to build targets

Signed-off-by: Whit Waldo <[email protected]>

* Added .NET 9 to target frameworks across solution

Signed-off-by: Whit Waldo <[email protected]>

* I understand the reason for the required install step now - adding it back with a .NET 9 install step

Signed-off-by: Whit Waldo <[email protected]>

* Placing install steps before build

Signed-off-by: Whit Waldo <[email protected]>

* Updating global.json

Signed-off-by: Whit Waldo <[email protected]>

* Disabled analyzer errors in unit tests

Signed-off-by: Whit Waldo <[email protected]>

* Added .NET 9 to test

Signed-off-by: Whit Waldo <[email protected]>

* Changed from #pragma error to #pragma warning

Signed-off-by: Whit Waldo <[email protected]>

* Fixed unit tests to resolve analyzer warning

Signed-off-by: Whit Waldo <[email protected]>

* Updated integration test to always include .NET 8 and .NET 9 installs

Signed-off-by: Whit Waldo <[email protected]>

* Falling back to add separate .NET 9 support
Signed-off-by: Whit Waldo <[email protected]>

* Updated referenced projects to target appropriate frameworks

Signed-off-by: Whit Waldo <[email protected]>

* Added all target frameworks back to Dapr.Commono

Signed-off-by: Whit Waldo <[email protected]>

* Added warnings to fix nullability analyzer warnings when targeting .NET 6

Signed-off-by: Whit Waldo <[email protected]>

* Updated build step to use .NET 9 instead

Signed-off-by: Whit Waldo <[email protected]>

* Fixed cloud event middleware tests - the ApplicationBuilder requires a non-null ServiceProvider per https://learn.microsoft.com/en-us/dotnet/core/compatibility/extensions/8.0/activatorutilities-createinstance-null-provider

Signed-off-by: Whit Waldo <[email protected]>

* Including target for .NET 6, 7, 8 and 9

Signed-off-by: Whit Waldo <[email protected]>

* Trialing fix to E2E integration test - excluding use of AppWebApplicationFactory in favor of direct use of HttpClient

Signed-off-by: Whit Waldo <[email protected]>

* Reverting as it breaks the other .NET versions

Signed-off-by: Whit Waldo <[email protected]>

* Potentially fixed unit tests in .NET 9

Signed-off-by: Whit Waldo <[email protected]>

* Removed extra line from build definition

Signed-off-by: Whit Waldo <[email protected]>

* Updated documentation to reflect .NET 9 and a note highlighting that .NET 6 and .NET 7 will be deprecated in v1.16

Signed-off-by: Whit Waldo <[email protected]>

* Removed unintentionally added file to commit

Signed-off-by: Whit Waldo <[email protected]>

* Added .NET 9 to E2E test setup

Signed-off-by: Whit Waldo <[email protected]>

* Fixed typo

Signed-off-by: Whit Waldo <[email protected]>

* Removed RC version from .NET 9 build

Signed-off-by: Whit Waldo <[email protected]>

* Apparently the solution file got a minor change

Signed-off-by: Whit Waldo <[email protected]>

* Removed unnecessary null checks

Signed-off-by: Whit Waldo <[email protected]>

* Whoops - didn't mean to commit that project to the solution

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* update .net workflow docs to stable (#1418)

Signed-off-by: Hannah Hunter <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* FIX: Actor source generator generates invalid code for generic interfaces (#1419)

* Handled generic actor interface

Signed-off-by: Manuel Menegazzo <[email protected]>

* Added more actor examples

Signed-off-by: Manuel Menegazzo <[email protected]>

* Updated actor namespace in example project

Signed-off-by: Manuel Menegazzo <[email protected]>

---------

Signed-off-by: Manuel Menegazzo <[email protected]>
Co-authored-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Add .NET client for LLM Conversations support (#1382)

* Updated prototype

Signed-off-by: Whit Waldo <[email protected]>

* Added Dapr.AI project and unit test project to contain the conversational building block (and potentially future other projects)

Signed-off-by: Whit Waldo <[email protected]>

* Changed default values

Signed-off-by: Whit Waldo <[email protected]>

* Removed unnecessary method

Signed-off-by: Whit Waldo <[email protected]>

* Added a few unit tests

Signed-off-by: Whit Waldo <[email protected]>

* Added example project

Signed-off-by: Whit Waldo <[email protected]>

* Added missing copyright headers

Signed-off-by: Whit Waldo <[email protected]>

* Changed type name -> DaprLlmInput to DaprConversationInput

Signed-off-by: Whit Waldo <[email protected]>

* Returning read only list

Signed-off-by: Whit Waldo <[email protected]>

* Update to use IReadOnlyDictionary

Signed-off-by: Whit Waldo <[email protected]>

* Added method to abstract class

Signed-off-by: Whit Waldo <[email protected]>

* Striving for consistency in how properties are specified on the record

Signed-off-by: Whit Waldo <[email protected]>

* Refactored enum extensions out to Dapr.Common since it will be used in AI project

Signed-off-by: Whit Waldo <[email protected]>

* Added JSON converter for System.Text.Json to handle enum serialization based on the enum member attributes

Signed-off-by: Whit Waldo <[email protected]>

* Added unit tests to prove out generic enum JSON converter using EnumMember attributes

Signed-off-by: Whit Waldo <[email protected]>

* Added JSON converter to new enum for Dapr Conversation role

Signed-off-by: Whit Waldo <[email protected]>

* Set up role to map to the string used in grpc call to sidecar

Signed-off-by: Whit Waldo <[email protected]>

* No need for the JSON converter after all

Signed-off-by: Whit Waldo <[email protected]>

* Added missing package version to fix build error

Signed-off-by: Whit Waldo <[email protected]>

* Removed duplicate using statement breaking build

Signed-off-by: Whit Waldo <[email protected]>

* Fixed missing [Fact] annotation

Signed-off-by: Whit Waldo <[email protected]>

* Updated proto types to reflect type name changes in https://github.com/dapr/dapr/pull/8250

Signed-off-by: Whit Waldo <[email protected]>

* Added support for service lifetime

Signed-off-by: Whit Waldo <[email protected]>

* Building out documentation for Dapr AI

Signed-off-by: Whit Waldo <[email protected]>

* Simplified registration

Signed-off-by: Whit Waldo <[email protected]>

* Tweaked package version

Signed-off-by: Whit Waldo <[email protected]>

* Using IConfiguration to source DaprClient values if provided in service provider

Signed-off-by: Whit Waldo <[email protected]>

* Removed Models.* directories, flattened into Conversation namespace

Signed-off-by: Whit Waldo <[email protected]>

* Swapped out to use IReadOnlyDictionary

Signed-off-by: Whit Waldo <[email protected]>

* Added suggested optimization

Signed-off-by: Whit Waldo <[email protected]>

* Fixed bad using statement

Signed-off-by: Whit Waldo <[email protected]>

* Updates to use uniform method for standing up new Dapr clients

Signed-off-by: Whit Waldo <[email protected]>

* Removed duplicate project reference

Signed-off-by: Whit Waldo <[email protected]>

* Fixed build error

Signed-off-by: Whit Waldo <[email protected]>

* Fixing build errors

Signed-off-by: Whit Waldo <[email protected]>

* Fixed bad references

Signed-off-by: Whit Waldo <[email protected]>

* Fixed several build errors

Signed-off-by: Whit Waldo <[email protected]>

* Fixing more build errors

Signed-off-by: Whit Waldo <[email protected]>

* Updated to fix several build errors

Signed-off-by: Whit Waldo <[email protected]>

* Fixed bad refernce

Signed-off-by: Whit Waldo <[email protected]>

* Fixing more build errors

Signed-off-by: Whit Waldo <[email protected]>

* Role is required when submitting conversation input

Signed-off-by: Whit Waldo <[email protected]>

* Removed impossible path since the role cannot be nullable

Signed-off-by: Whit Waldo <[email protected]>

* Removed impossible path from logic now that role cannot be null

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Updated protos to latest in dapr/dapr (#1420)

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Conversation builder consistency changes (#1423)

* Corrected several unit tests

Signed-off-by: Whit Waldo <[email protected]>

* Updated extension name for consistency

Signed-off-by: Whit Waldo <[email protected]>

* Updated registration name for consistency

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* #906 -Added methods in status API supports for saving and reading binary data (#1116)

* Added methods in status API supports for direct storage and reading of byte arrays #906

Signed-off-by: Divya Perumal <[email protected]>
Signed-off-by: Divya Perumal <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Fixes + unit tests for streaming PubSub implementation (#1415)

* Added null check - the proto suggests this shouldn't ever be null, but there's an issue reporting as much, so this fixes that

Signed-off-by: Whit Waldo <[email protected]>

* Removed the Task.WhenAll making the operation non-blocking

Signed-off-by: Whit Waldo <[email protected]>

* Added unit test to validate that the subscription is no longer blocking

Signed-off-by: Whit Waldo <[email protected]>

* Removed unused line from previous test, added another test

Signed-off-by: Whit Waldo <[email protected]>

* Added another test

Signed-off-by: Whit Waldo <[email protected]>

* More unit tests

Signed-off-by: Whit Waldo <[email protected]>

* Added more unit tests

Signed-off-by: Whit Waldo <[email protected]>

* Updated to make DaprPublishSubscribeClientBuilder configurable via a registered IConfiguration

Signed-off-by: Whit Waldo <[email protected]>

* Added missing copyright statements

Signed-off-by: Whit Waldo <[email protected]>

* Added missing package reference

Signed-off-by: Whit Waldo <[email protected]>

* Fixed bad reference (missed in merge)

Signed-off-by: Whit Waldo <[email protected]>

* Fixed failing unit test

Signed-off-by: Whit Waldo <[email protected]>

* Tweak to only pass along EventMessage payloads to developers as it's expected that the initial response will be null if EventMessage is populated

Signed-off-by: Whit Waldo <[email protected]>

* Was missing assignment of the Data property in the TopicMessage. Shout out to both @tommorvolloriddle and @Aimless321 for catching this!

Signed-off-by: Whit Waldo <[email protected]>

* Fix - return would be bad. Continue is the right move.

Signed-off-by: Whit Waldo <[email protected]>

* Added a simple test

Signed-off-by: Whit Waldo <[email protected]>

* Fixed unit tests

Signed-off-by: Whit Waldo <[email protected]>

* Merged in tweaks from #1422

Signed-off-by: Whit Waldo <[email protected]>

---------

Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Fix nulls

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Delete examples/Client/PublishSubscribe/StreamingSubscriptionExample/Properties/launchSettings.json

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Delete examples/AI/ConversationalAI/Properties/launchSettings.json

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Delete daprdocs/content/en/dotnet-sdk-docs/dotnet-ai/dotnet-ai-usage.md

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Update dotnet-jobs-howto.md

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Update dotnet-jobs-howto.md

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Update dotnet-workflowclient-usage.md

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Update dotnet-workflowclient-usage.md

Signed-off-by: Siri Varma Vegiraju <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* fix thing

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Update WorkflowActivityContext.cs

Signed-off-by: Siri Varma Vegiraju <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Update WorkflowActivityContext.cs

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Fix version

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Update Dapr.Workflow.Test.csproj

Signed-off-by: Siri Varma Vegiraju <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* fix things

Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Delete examples/AI/ConversationalAI/Properties/launchSettings.json

Signed-off-by: Siri Varma Vegiraju <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Delete examples/Client/PublishSubscribe/StreamingSubscriptionExample/Properties/launchSettings.json

Signed-off-by: Siri Varma Vegiraju <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>

* Update WorkflowActivityContext.cs

Signed-off-by: Siri Varma Vegiraju <[email protected]>

---------

Signed-off-by: Siri Varma Vegiraju <[email protected]>
Signed-off-by: Manuel Menegazzo <[email protected]>
Signed-off-by: Whit Waldo <[email protected]>
Signed-off-by: Manuel Menegazzo <[email protected]>
Signed-off-by: Rafael Camara <[email protected]>
Signed-off-by: Rafael Câmara <[email protected]>
Signed-off-by: Phillip Hoff <[email protected]>
Signed-off-by: Shivam Kumar <[email protected]>
Signed-off-by: Hannah Hunter <[email protected]>
Signed-off-by: Michiel van Praat <[email protected]>
Signed-off-by: Mike Nguyen <[email protected]>
Signed-off-by: Tomas Hrebicek <[email protected]>
Signed-off-by: paule96 <[email protected]>
Signed-off-by: Divya Perumal <[email protected]>
Signed-off-by: Divya Perumal <[email protected]>
Signed-off-by: Siri Varma Vegiraju <[email protected]>
Co-authored-by: Siri Varma Vegiraju <[email protected]>
Co-authored-by: Manuel Menegazzo <[email protected]>
Co-authored-by: Whit Waldo <[email protected]>
Co-authored-by: Shubhdeep Singh <[email protected]>
Co-authored-by: Ilias <[email protected]>
Co-authored-by: Manuel Menegazzo <[email protected]>
Co-authored-by: Rafael Câmara <[email protected]>
Co-authored-by: Phillip Hoff <[email protected]>
Co-authored-by: Shivam Kumar <[email protected]>
Co-authored-by: Hannah Hunter <[email protected]>
Co-authored-by: Ruud van Falier <[email protected]>
Co-authored-by: Michiel van Praat <[email protected]>
Co-authored-by: Mike Nguyen <[email protected]>
Co-authored-by: Tomas Hrebicek <[email protected]>
Co-authored-by: paule96 <[email protected]>
Co-authored-by: Yaron Schneider <[email protected]>
Co-authored-by: Divya Perumal <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants