Skip to content

v1.0.1

Latest
Compare
Choose a tag to compare
@engenb engenb released this 01 Dec 18:54
· 5 commits to master since this release
746382d
1.0 release (#84)

* reanamed solution

* Mapping (#1)

* initial model mapping framework and tests

* cleans up redundant api surface for resource map

* some further ideas with mapping api, sorting, and filtering

* expanding on filter ideas - will probably change filter op to a filter op class for more options especially for strings - startsWith, endsWith contains

* hasmany maps starting to mature...

* removing busted test project - not a huge value-add atm

* removing config dir - we'll add this back in config branch

* first pass at configuration and session building (#2)

* Session (#3)

* session factory configuration

* more session factory configuration

* just tidying up a bullshit test before moving on to proxy

* Proxy (#4)

* WIP: adding proxy code-gen

* weaving in ctor, session field, and poc accessor that gets from session

* + weaving checks for existence and correctness of id property
+ adds id setter if not present
+ adds ISession field
+ weaves ctor that session will create models with
+ weaves attribute getters/setters

* fixing ctor test

* fixed moq nuget install (was missing required castle.core)

* updating private session fieldname prefix to double underscore to follow some conventions I've seen

* some pre-merge cleanup

* jsonapi models, session, and abandoning map classes in favor of attributes

* fully switched over to attribute code weaving and more session impl

* logging and fixes to attribute weaving
session config enhancements

* + more tests and session updates
+ integration test that actually hits (and works!) with test api

* updated readme

* readme typos and better wording

* one more time, with feeling (#7)

* Update README.md

* fixing the numbered list

* more typeos!

ヽ( ͝° ͜ʖ͡°)ノ

* ugh - more updates!

¯_| ಠ ∧ ಠ |_/¯

* Nuget (#8)

* got the solution set up for nuget packaging

* updates to newget project build dependencies

* Build (#10)

* removing unnecessary dependencies

* fixed build order for AssemblyToWeave

* adding build status badge for development branch

* a change to, hopefully, trigger the CI

* another attempt to kick of a CI build...

* just trying to get CI builds figured out..

* just adding some garbage so we can test a pull request CI buid in vsts (#11)

* just adding some garbage so we can test a pull request CI buid in vsts

* testing...

* removing garbage

* trying again...

* again

* blah

* ps script for assembly info patch

* AssemblyInformationalVersion

* Hasone (#12)

* some fixes and cleanup before starting in on has-one relationships

* first pass at has-one relationships

* setattribute and setrelationship

* adding an approach to eagerly fetch relationships

* session tests

* better configuration design and a little of hasmany - transferring to laptop

* can update a model with a new (detached) to-one reference

* fixing tests, test-woven assembly name change

* fixed integration tests

* integration tests now clean up after themselves

* fixing project dependencies for fody in-solution weaving

* an empty/invalid include= query param was being included regardless of if the model was configured to eagerly load relations (#13)

* Has one.2 (#14)

* splitting client dependencies to different nuget

* some minor, inconsequential updates

* netstandard nuget pack, take 1

* netstandard nuget pack, take 2

* initialize attributes in ctor & equality check before setting fields (#15)

* changing approach to initialize attributes in ctor - should be a performance improvement

* updated readme

* more readme updates

* more readme updates

* and then...

* adding better equality comparison to woven setters to reduce session hits

* :fire: equality checks on most all field types before updating in session :fire:

* rearranging some packaging options

* more nuget packaging changes

* removing these -pre tags from local testing (facepalm)

* setting up a nuget project similar to the fody nuget build, because nuget pack -IncludeReferencedProjects doesn't seem to work with netstandard projects

* one more time, with feeling...

* adding a request builder, overridable HttpMessageHandler for mobile, and a lot of logging

* (doh)

* fixed some bizzare, unexpected task handling problems

* new logo

* scaling down logo

* Update README.md

* Update README.md

renaming project jsorm => Argo

* migrating project name from jsorm to argo (#16)

* Argo rename (#17)

* migrating project name from jsorm to argo

* nuget build projects lost references to argo projects

* trying to get build working post-rename...

* initial, brute force, approach to lazy-loading collections (#19)

* Story2430 (#20)

* queued operations for collections

* add / remove / clear collection - only testing add at this time, but it's working!

* add / remove tests "work" but remove test fails because Count always == 0 so ToArray doesn't trigger an Initialize

* add / remove / clear all working and tested

* initialize before local contains check (#22)

* additional tests and bug fixes

* - fixing bug when to-one relationship json value is JTokenType.Null
- removing all references to past project name "JSORM"

* swapping out backing collection for dictionary to index on id.  can remove and manipulate items by id which is more representative of how json works

* add sparse fieldsets for all GetResource calls (#23)

* rearranged WovenByFody projects to test by .netFx and pcl assemly weaving.  fixed pcl weaving (#24)

* Revert "rearranged WovenByFody projects to test by .netFx and pcl assemly weaving.  fixed pcl weaving (#24)"

This reverts commit fd670f5935eed1597bd3d4984c5430fb81d41f6a.

* only updating TypeDefLoader this time...

* rearranging assembly weaver tests to target specific platforms

* Allow for complex types and collections to be used as [Property]s. (#25)

* Story 4048 (#26)

* add include functionality to resource create

* add includes on create, update and fetch of data. update sparce fieldsets to include data in included resources. update relationships to be assigned to the correct included resources.

* remove pluralize extension method

* Story 4048 (#27)

* add include functionality to resource create

* add includes on create, update and fetch of data. update sparce fieldsets to include data in included resources. update relationships to be assigned to the correct included resources.

* remove pluralize extension method

* fix issues with included and related resources

* Property bag (#28)

* some general updates while adding attribute bag support

* fixes post-merge

* hotfix for (corrupt) relationships w/o data

* Overhaul (#29)

* tearing everything up
- new woven properties to pair resource state more closely (within) the paired model poco
- new approach to detecting required includes on create/update

* clocking out...

* got create hooked up and ready for further integration testing

* work in progress - basic crud

* - more tests around session create w/ complex models, relationships, and includes
- refactored Get/SetReference for new approach, so much simpler!
- support for settable Ids on unmanaged models!

* added GetRelated for remote check when GetReference rltn not found in resource model

* - get/set reference and update
- new configure option to add callback to inspect a copy of any HttpResponseMessage

* a little cleanup...

* tests / fixes for SetReference & Update

* renaming this in prep for eager load includes

* eager load determination during compile time!

* moved includes into private static readonly field for debuggability, yet I can be sure a tricky dev can't mess with the value

* noticed null related was not being handled

* decided to change this around so discovered data on get does not effectively mutate the resource - only setters should mutate the resource

* touchups / cleanups
- new ISession Detach api
- session-specific config like auth and other headers

* collections updated.  integration tests not running yet

* more fixes and improvements to collections.  suddenly getting 403s on update and a couple tests are getting 500s back from the server

* prepping for merge to dev

* updating dependencies before merge

* version bump

* Httpclientcallbackhandler (#30)

* some quick fixes for http message handlers

* - fixed a couple little bugs around http message callbacks
- added newtonsoft.json to nuspec because we're not using nuget.exe to pack, so deps aren't auto-added

* just fixing indent formatting

* readme updates before merge

* found some issues with collections re: eager loading - fixed

* cross checking relationship owner resource with the cache.  if all related resources are already cahced, don't hit the server

* fixing readme

* Feature/linq (#32)

* growndwork for linq provider

* IQuerySession providing base query functionality to be used by linq provider

* whoops....

* Feature/property bag (#33)

* took a different approach from old PropertyBag: the model's Resource and Patch may now be specified by the dev with an attribute

* Revert "took a different approach from old PropertyBag: the model's Resource and Patch may now be specified by the dev with an attribute"

This reverts commit 13685f92fa2aa553ec96b0925354b25d4fbbbd7a.

* reverting back to an approach more like what was previously implemented

* wrapped up enforcing that mapped attributes take priority

* Feature/linq (#37)

* growndwork for linq provider

* IQuerySession providing base query functionality to be used by linq provider

* whoops....

* wip - orderBy and orderByDesc!

* Single, SingleOrDefault, First, FirstOrDefault, Last, LastOrDefault

* some quick fixes

 - something I changed with the shared integration test code broke everything...

* all tests passing

* basic, initial .Where queryable

* good progress on .Where

* adding some more querycontext tests

* scaffolding Skip queryable
data service needs to implement page offset/limit strategy in order to support skip/take linq-style paging

* working through issues with chaining linq statements together

* fixed things up so we can chain linq query statements!

* current version of http handler pipeline builder (#38)

* checking in some documentation updates prior to publishing

* Update README.md

* Update README.md

* where provider enhancements: .StartsWith .EndsWith .Contains .Equals (#39)

* Feature/g zip compression (#40)

* adding gzip compression.  test currently failing due to inability to load system.io.compression 4.1.1.0 - project has 4.3.0 sooooooo yeah...

* messing around with this assembly load problem.....

* experimenting with a binding redirect, but to no avail

* got gzip compression working

* Feature/relationship query (#41)

* first pass at new apis needed to support querying by relationship endpoint

* new approach for relationship querying employs same approach as querying by type, just base path is different

* realized we don't really need query behavior anymore - all based on query context base path

* quick fix test

* some additional query expression tests

* an additional api to query by relationship, not require model

* fixing a test - whoops!

* some cleanup

* fixing target framework

* making these private because people are serializing them!

* reworking the query api so that public-facing IQueryContext implementations don't require ctor resourceType args

* Feature/method call expression (#42)

* first shot at allowing method and property chaining inside of a linq where expression - needs cleanup

* improvements to allow method calling on chains

* adds support for unary expressions such as interpoalted strings

* expression grouping

* Update README.md

* Feature/fody upgrade (#44)

* initial update/migration to fody 2.x for netcore support

* upgrading projects for vs2k17
- sneaking in a bug fix to supply accept-encoding = gzip header when gzip is enabled

* some simple nuspec and copyright updates

* an insignificant change to test vsts build sync

* another try at automated build

* remoed utils as they're no longer needed

* build problems...

* builds fixed, undoing silly changes to trigger builds

* increasing minimum fody version

* adds basic support for using meta within core model (#47)

* adds basic support for using meta within core model

* fixes some issues with integration testing auth

* updates session to use 201 response (#50)

@engenb gave a verbal go-ahead 👍

* ability to configure JsonSerializerSettings, especially ContractResol… (#46)

* ability to configure JsonSerializerSettings, especially ContractResolver for serialization of non-struct values

* adds basic support for using meta within core model (#47)

* adds basic support for using meta within core model

* fixes some issues with integration testing auth

* updates session to use 201 response (#50)

@engenb gave a verbal go-ahead 👍

* ability to configure JsonSerializerSettings, especially ContractResolver for serialization of non-struct values

* adds JsonSerializerSettings to JModel.ToJson and HttpRequestBuilder
formatted code for consistency

* added JsonSerializerSettings to session GetAttribute and GetMeta

* updated tests

* fixes issue #48 (#51)

* adds filtering/sorting against meta and support for multi-level mapping (#52)

* adds filtering/sorting against meta and support for multi-level mapping

* updates README

* makes properties private (for system metadata)

* updates client to not separate out attribute/meta for sort/filter (#53)

* fixed TypeDefLoader - system types shoudl be loeaded from ModuleDef, not Argo.dll
added additional asp.net core 1.1 test weave

* fixes issue by special handling when getting name of prop with IdAttribute (#55)

* fixes issue by special handling when getting name of prop with IdAttribute

* decided to add a test anyway

* adds support for scanning inherited properties on models (#56)

* adds support for scanning inherited properties on models

* fixed type extensions property laoder

* updates session to handle ok responses that MUST contain updated resource per spec (#57)

* updates session to handle ok responses that MUST contain updated resource per spec

* adds check for data nullness because data is not returned if unchanged by server

* only apply patch if NoContent

* update to accept where queryable to use "and" "or" (#59)

* Revert "update to accept where queryable to use "and" "or" (#59)" (#60)

This reverts commit 4bae6c48a1203c7380acf4a4b0ac57a2f0749bb7.

* fixes issue #61 (#62)

* Session configureawait (#65)

* update to accept where queryable to use "and" "or"

* Update the session to use the configure await method so the requests dont get blocked.

* Remove tehe bitwise operators.

* adds weaving support for Id-only property getters (#69)

* Issue 71 (#72)

* adds weaving support for Id-only property getters

* corrects odd datetime serialization error - newtonsoft.json was serializing more precisely than vanilla DateTime.ToString()

* fixes issue

* bah!

* fixes status code check.  no idea where that change originally came from

* #67 On a request failure, return an exception containing response content so the developer can more easily debug those failures. (#70)

* Adds HttpRequestModifier to allow shuffling meta to request (#74)

Based on the need to set the eTag meta value as a request header.  The HttpRequestModifier gives access to the request before it is sent, along with the context of which entity is being changed.  Modifiers are given for every session request type.

*  Convert Meta to JObject.  Merge API responses into model instances (#77)

* Convert Meta from Dictionary to JObject to make Patch object consistent and allow more flexible Meta pathing

* Fixed EtagRequestModifier implementation

* Split model Initialize method from the constructor, so unmanaged model instances can become managed.  This allows the instance passed into Create and Update methods to be updated by JSON API responses.

* Fix model instance management to Update includes

*  Making attribute and meta setters null safe (#81)

* Making attribute and meta setters null safe

* Add meta setter to test

* adds missing liblog build symbol to release profile (#85)