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

Support Property Default Values #30

Open
TheRealPiotrP opened this issue Feb 11, 2015 · 4 comments
Open

Support Property Default Values #30

TheRealPiotrP opened this issue Feb 11, 2015 · 4 comments

Comments

@TheRealPiotrP
Copy link
Contributor

Default Values

Non-nullable properties that are not set on the client during object creation will typically have their values defaulted on the server and then sent back on subsequent requests. When properties do have default values they should be expressed in the client-side model. This allows for minimizing bits on the wire [values that are default need not be sent] and improves developer experiences [inspecting a 'new' object instance is representative on the server's projection of that object].

OData v4 Description

Property Default Value

Model description

The default values will be represented on the OdcmProperty type. Consider making OdcmProperty generic so that readers can be responsible for parsing the value and store it in a strongly-typed DefaultValue property.

@TheRealPiotrP
Copy link
Contributor Author

Tony, can you please make the required ODCM Model enhancements?

@ghost
Copy link

ghost commented Mar 24, 2015

Is this work completed with PR #36? @piotrpMSFT

@TheRealPiotrP
Copy link
Contributor Author

This work is not yet completed. #36 was required pre-requisite work.

@TheRealPiotrP
Copy link
Contributor Author

We had a discussion about this item and closed on the following strategy:

A property whose value is not yet assigned, whether nullable or not, will be tracked with an unknown value state. So long as the value is unknown it can be set but not retrieved. Setting the property will clear the unknown flag. Retrieving the property value will result in an exception. InvalidOperationException seems like a good candidate but we should consider whether introducing a new exception type makes sense here.

Properties should only be in the unknown state in two scenarios: the containing object was created on the Client and the property was not yet initialized OR the containing object was retrieved from the server and the property is a navigation property that was not expanded.

In the case that the object was created on the Client we would like to take advantage of OData Default Property Values where available. If such a value is defined then the Property will be initialized to said value and will not be unknown.

A new construct akin to Nullable seems like a reasonable implementation for capturing the Unknown value state. We are looking for nearly the identical behavior of Nullable but want an independent concept since the property whose value is not yet known might itself be Nullable. Proposed names include: Fetchable, Retrievable, Initializable, Maybe, Settable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants