Microsoft.Data.OData.SL Component for formatting literals for use in URIs, ETags, and skip-tokens. Constant table of nibble-to-hex convertion values. Default singleton instance for parenthetical keys, etags, or skiptokens. Default singleton instance which does not URL-encode the resulting string. Default singleton instance for keys formatted as segments. Gets the literal formatter for keys. if set to true then the key is going to be written as a segment, rather than in parentheses. The literal formatter for keys. Converts the specified value to an encoded, serializable string for URI key. Non-null value to convert. value converted to a serializable string for URI key. Escapes the result accoridng to URI escaping rules. The result to escape. The escaped string. Converts the given byte[] into string. byte[] that needs to be converted. String containing hex values representing the byte[]. Formats the literal without a type prefix, quotes, or escaping. The non-null value to format. The formatted literal, without type marker or quotes. Formats the literal without a type prefix or quotes, but does escape it. The non-null value to format. The formatted literal, without type marker or quotes. Gets the literal formatter for URL constants. Gets the literal formatter for URL constants which does not URL-encode the string. Helper utilities that capture any deltas between ODL, the WCF DS Client, and the WCF DS Server. Creates a new exception instance to be thrown if the value is not a type that can be formatted as a literal. DEVNOTE: Will return a different exception depending on whether this is ODataLib, the WCF DS Server, or the WCF DS client. The literal value that could not be converted. The exception that should be thrown. Tries to convert the given value to one of the standard recognized types. Used specifically for handling XML and binary types. The original value. The value converted to one of the standard types. Whether or not the value was converted. Appends the decimal marker to string form of double value if necessary. DEVNOTE: Only used by the client and ODL, for legacy/back-compat reasons. Input string. String with decimal marker optionally added. Returns whether a 'd' literal suffix to a double value based on its value. DEVNOTE: The WCF DS client never added the 'd', but WCF DS Server and ODL do. The value itself. Whether or not to append the 'd' suffix. Tries to convert an instance of System.Data.Linq.Binary to a byte array. The original value which might be an instance of System.Data.Linq.Binary. The converted byte array, if it was converted. Whether or not the value was converted. Default literal formatter implementation. If true, literals will not be URL encoded. Creates a new instance of . Creates a new instance of . If true, literals will not be URL encoded. Converts the specified value to an encoded, serializable string for URI key. Non-null value to convert. value converted to a serializable string for URI key. Escapes the result accoridng to URI escaping rules. The result to escape. The escaped string. Formats the literal with a type prefix and quotes (if the type requires it). The value to format. The formatted literal, with type marker if needed. Literal formatter for keys which are written as URI segments. Very similar to the default, but it never puts the type markers or single quotes around the value. Creates a new instance of . Converts the specified value to an encoded, serializable string for URI key. Non-null value to convert. value converted to a serializable string for URI key. If the string starts with a '$', prepends another '$' to escape it. The string value. The string value with a leading '$' escaped, if one was present. Component for serializing entity key values for building identities, edit links, etc. Singleton instance of the default serializer. Singleton instance of the segment-based serializer. Creates a new key serializer. The url convention to use. A new key serializer. Appends the key expression for an entity to the given The type used to represent properties. The builder to append onto. The key properties. The callback to get each property's name. The callback to get each property's value. Gets the value of the key property and serializes it to a string. The type used to represent properties. The callback to get the value for a property. The key property. The literal formatter to use. The serialized key property value. Appends the key using the parentheses-based syntax (e.g. Customers(1)) onto the given . The builder to append onto. The type used to represent properties. The key properties. The callback to get each property's name. The callback to get each property's value. Default implementation of the key serializer which uses parentheses (e.g. Customers(1)). Creates a new instance of . Appends the key expression for an entity to the given The builder to append onto. The type used to represent properties. The key properties. The callback to get each property's name. The callback to get each property's value. Implementation of the key serializer which uses segments (e.g. Customers/1). Creates a new instance of . Appends the key expression for an entity to the given The builder to append onto. The type used to represent properties. The key properties. The callback to get each property's name. The callback to get each property's value. Appends the key for the current resource using segment-based syntax (e.g. Customers/1) onto the given . The builder to append onto. The type used to represent properties. The key properties. The callback to get each property's value. Component for representing the url convention in use by the server, client, or codegen. The namespace of the term to use when building value annotations for indicating the conventions used. The name of the term to use when building value annotations for indicating the conventions used. The string value for indicating that the key-as-segment convention is being used in annotations and headers. The name of the request header for indicating what conventions are being used. Whether to generate entity keys as '/'-delimited segments instead of using parenthesis. Prevents a default instance of the class from being created. Whether keys should be generated as segments. Helper for creating an instance with explicit value. Should only be called from unit tests. Whether keys should be generated as segments. A new UrlConvention instance with the given value. Gets the url convention for the given entity container based on its vocabulary annotations. The model the entity container belongs to. The container to get the url convention for. The url convention of the container. Gets the url convention for the given user setting and type context. true if keys should go in seperate segments in auto-generated URIs, false if they should go in parentheses. A null value means the user hasn't specified a preference and we should look for an annotation in the entity container, if available. The type context for the entry or feed being written. The convention to use when generating URLs. Determines whether or not the annotation indicates the 'KeyAsSegment' url-convention. The annotation to check. True if the annotation indicates the 'KeyAsSegment' url convention; false otherwise. Determines whether or not the value is 'KeyAsSegment'. The value to check. True if the value is 'KeyAsSegment'.; false otherwise. Determines whether or not the term is the url-convention term. The term to check. True if the term is the url-convention term.; false otherwise. Whether to generate entity keys as '/'-delimited segments instead of using parenthesis. Class that knows how to bind binary operators. Method to use for binding the parent node, if needed. Constructs a BinaryOperatorBinder with the given method to be used binding the parent token if needed. Method to use for binding the parent token, if needed. Binds a binary operator token. The binary operator token to bind. The bound binary operator token. Promote the left and right operand types the operator kind the left operand the right operand Retrieve SingleValueNode bound with given query token. the query token kind the query token the corresponding SingleValueNode Encapsulates the state of metadata binding. TODO finish moving fields from MetadataBinder here and see if anything can be removed. The configuration used for binding. The dictionary used to store mappings between Any visitor and corresponding segment paths If there is a $filter or $orderby, then this member holds the reference to the parameter node for the implicit parameter ($it) for all expressions. Collection of query option tokens associated with the currect query being processed. If a given query option is bound it should be removed from this collection. Constructs a with the given . The configuration used for binding. The model used for binding. The configuration used for binding. If there is a $filter or $orderby, then this member holds the reference to the parameter node for the implicit parameter ($it) for all expressions. The dictionary used to store mappings between Any visitor and corresponding segment paths Collection of query option tokens associated with the currect query being processed. If a given query option is bound it should be removed from this collection. Internal class for storing all the configuration information about the URI parser. Allows us to flow these values around without passing an actual parser. Model to use for metadata binding. Absolute URI of the service root. The conventions to use when parsing URLs. Initializes a new instance of . Model to use for metadata binding. Absolute URI of the service root. Throws if input model is null. Throws if the input serviceRoot is not an AbsoluteUri The settings for this instance of . Refer to the documentation for the individual properties of for more information. Gets the model for this ODataUriParser Gets the absolute URI of the service root. Gets or Sets the to use while parsing, specifically whether to recognize keys as segments or not. Throws if the input value is null. Gets or Sets a callback that returns a BatchReferenceSegment (to be used for $0 in batch) Gets or sets a callback that returns the raw string value for an aliased function parameter. Class that knows how to bind CastTokens. Method to use for binding the parent node, if needed. Constructs a DottedIdentifierBinder with the given method to be used binding the parent token if needed. Method to use for binding the parent token, if needed. Binds a DottedIdentifierToken and it's parent node (if needed). Token to bind to metadata. State of the Binding. A bound node representing the cast. Use this class to perform late-bound operations on data service entity sets. This class was copied from the product. MethodInfo for object DataServiceProviderMethods.GetValue(this object value, string propertyName). MethodInfo for IEnumerable<T> DataServiceProviderMethods.GetSequenceValue(this object value, string propertyName). MethodInfo for Convert. MethodInfo for TypeIs. Method info for string comparison Method info for Bool comparison Method info for Bool? comparison Method info for Guid comparison Method info for Guid? comparison Method info for byte array comparison. Method info for byte array comparison. Gets a named value from the specified object. Object to get value from. describing the property whose value needs to be fetched. The requested value. Gets a named value from the specified object as a sequence. Object to get value from. describing the property whose value needs to be fetched. expected result type The requested value as a sequence; null if not found. Performs an type cast on the specified value. Value. Type reference to check for. Casted value. Performs an type check on the specified value. Value. Type reference type to check for. True if value is-a type; false otherwise. Compares 2 strings by ordinal, used to obtain MethodInfo for comparison operator expression parameter Left Parameter Right Parameter 0 for equality, -1 for left less than right, 1 for left greater than right Do not change the name of this function because LINQ to SQL is sensitive about the method name, so is EF probably. Compares 2 booleans with true greater than false, used to obtain MethodInfo for comparison operator expression parameter Left Parameter Right Parameter 0 for equality, -1 for left less than right, 1 for left greater than right Do not change the name of this function because LINQ to SQL is sensitive about the method name, so is EF probably. Compares 2 nullable booleans with true greater than false, used to obtain MethodInfo for comparison operator expression parameter Left Parameter Right Parameter 0 for equality, -1 for left less than right, 1 for left greater than right Do not change the name of this function because LINQ to SQL is sensitive about the method name, so is EF probably. Compares 2 guids by byte order, used to obtain MethodInfo for comparison operator expression parameter Left Parameter Right Parameter 0 for equality, -1 for left less than right, 1 for left greater than right Do not change the name of this function because LINQ to SQL is sensitive about the method name, so is EF probably. Compares 2 nullable guids by byte order, used to obtain MethodInfo for comparison operator expression parameter Left Parameter Right Parameter 0 for equality, -1 for left less than right, 1 for left greater than right Do not change the name of this function because LINQ to SQL is sensitive about the method name, so is EF probably. Compares two byte arrays for equality. First byte array. Second byte array. true if the arrays are equal; false otherwise. Compares two byte arrays for equality. First byte array. Second byte array. true if the arrays are not equal; false otherwise. Helper class for throwing exceptions during URI parsing. Creates a new "Resource Not Found" exception. segment identifier information for which resource was not found. A new exception to indicate the requested resource cannot be found. Creates a new "Resource Not Found" exception. Plain text error message for this exception. A new exception to indicate the requested resource cannot be found. Creates a new exception to indicate a syntax error. A new exception to indicate a syntax error. Creates a new exception to indicate BadRequest error. Plain text error message for this exception. A new exception to indicate a bad request error. Checks the specific value for syntax validity. Whether syntax is valid. This helper method is used to keep syntax check code more terse. Checks the specifid value for syntax validity. Whether syntax is valid. segment indentifier for which the resource was null. This helper method is used to keep syntax check code more terse. A component for walking an expand tree and determining if the depth or number of items exceed user-specified limits. The maximum depth of any expand tree being validated. The maximum number of expand items allowed in any expand tree being validated, including leaf and non-leaf nodes. The current count when validating a particular tree. Initializes a new instance of . The maximum depth of an expand tree. The maximum number of expanded items allowed in a tree. Validates the given tree against the user-specified limits. The expand tree to validate. Recursively ensures that the maximum count/depth are not exceeded by walking the tree. The expand tree to walk and validate. The current depth of the tree walk. Component for parsing function parameters in both $filter/$orderby expressions and in paths. Tries to parse a collection of function parameters. Allows path and filter to share the core algorithm while representing parameters differently. The lexer to read from. The parameters if they were successfully split. Whether the parameters could be split. Tries to parse a collection of function parameters for filter/orderby. The syntactically split parameters to parse. The configuration for the URI Parser. The function import for the function whose parameters are being parsed. The parameters if they were successfully parsed. Whether the parameters could be parsed. Tries to parse a collection of function parameters for path. The function name to use in error messages. The contents of the parentheses portion of the current path segment. The parameters if they were successfully split. Whether the parameters could be split. Tries to parse a collection of function parameters for path. The split parameters from the syntactic parsing step. The configuration for the URI Parser. The function import for the function whose parameters are being parsed. The parameters if they were successfully parsed. Whether the parameters could be parsed. Tries to parse a collection of function parameters. Allows path and filter to share the core algorithm while representing parameters differently. The lexer to read from. The token kind that marks the end of the parameters. The parameters if they were successfully split. Whether the parameters could be split. Tries to parse a collection of function parameters. Allows path and filter to share the core algorithm while representing parameters differently. The type representing a parameter. The syntactically split parameters to parse. The configuration for the URI Parser. The function import for the function whose parameters are being parsed. The callback to use for individual parameter parsing. The parameters if they were successfully parsed. Whether the parameters could be parsed. Tries to create a parameter using any representation based on the provided delegate for creating it from a converted value. The current expression parameterToken from the lexer. The parameter value if one was successfully created. Whether the parameter could be created from the parameterToken. Tries to create a parameter using any representation based on the provided delegate for creating it from a converted value. The type used to represent a parameter. The token from the syntactic parsing step. The configuration for the URI Parser. The type that the parameter is expected to resolve to. Callback to create the final parameter from the parsed value. The parameter if one was successfully created. Whether the parameter could be created from the parameterToken. A token to represent a raw function parameter value that has not yet been parsed further. Base class for all lexical tokens of OData query. Base class for all annotatable types in OData library. The map of annotationsAsArray keyed by type. Collection of custom instance annotations. Gets or sets the annotation by type. The annotation of type T or null if not present. The type of the annotation. Sets an annotation of type T. The annotation to set. The type of the annotation. Verifies that can be added as an annotation of this. Annotation instance. Get the annotation of type . If the annotation is not found, create a new instance of the annotation and call SetAnnotation on it then return the newly created instance. The type of the annotation. The annotation of type . Gets the custom instance annotations. The custom instance annotations. Sets the custom instance annotations. The new value to set. Check whether a given (non-null) instance is of the specified type (no sub-type). The (non-null) instance to test. The type to check for. True if the types match; otherwise false. Replace an existing annotation of type T or add a new one if no annotation of type T exists. The type of the annotation. The annotation to set. Remove the annotation of type T from the set of annotations (if such an annotation exists). We only allow a single occurence of an annotation of type T. The type of the annotation to remove. Empty list of arguments. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The kind of the query token. Creates a RawFunctionParameterValue the raw text of this parameter value. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Gets the raw text of the value. Gets the kind of this token A token to represent a parameter alias in a function call. Creates a FunctionParameterAliasToken the alias being used for the parameter. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Gets the alias. Gets the kind of this token A token to represent a parameter to a function call. get an empty list of parameters The name of the parameter The value of this parameter Creates a FunctionParameterToken the name of this parameter the syntactically parsed value Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Gets the name of this parameter Gets the syntactically parsed value of this token. Gets the kind of this token Node representing a semantically parsed parameter to a function. Base class for all semantic metadata bound nodes. Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Gets the kind of this node. Gets the kind of this node. The name of this parameter The semantically parsed value of this parameter Creates a NamedFunctionParameterNode to represent a semantically parsed parameter to a function. the name of this function the already semantically parsed value of this parameter. Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null Gets the name of this parameter Gets the semantically parsed value of this parameter. Gets the kind of this node Gets the kind of this node. Settings used by . Default recursive call limit for Filter Default recursive call limit for OrderBy Default tree depth for Select and Expand Default limit for the path parser. the recursive depth of the Syntactic tree for a filter clause the maximum depth of the syntactic tree for an orderby clause the maximum number of segments in a path the maximum depth of the Syntactic or Semantic tree for a Select or Expand clause Flag that indiactes whether or not inlined query options like $filter within $expand clauses as supported. Whether use the behavior that the WCF DS Server had before integration. The maximum depth of the tree that results from parsing $expand. The maximum number of instances that can appear in the tree that results from parsing $expand. Initializes a new instance of with default values. Specifies whether the WCF data services server behavior is enabled. Gets or sets the maximum depth of the tree that results from parsing $expand. This will be validated after parsing completes, and so should not be used to prevent the instantiation of large trees. Further, redundant expansions will be pruned before validation and will not count towards the maximum. Gets or sets the maximum number of instances that can appear in the tree that results from parsing $expand. This will be validated after parsing completes, and so should not be used to prevent the instantiation of large trees. Further, redundant expansions will be pruned before validation and will not count towards the maximum. Gets or Sets the maximum recursive depth for a select and expand clause, which limits the maximum depth of the tree that can be parsed by the syntactic parser. This guarantees a set level of performance. The number here doesn't necessarily correspond exactly with the actual maximum recursive depth of the syntactic tree, i.e a limit of 20 doesn't necessarily mean that a tree will have depth exactly 20, it may have depth 10 (but never over 20). Think of it more as an upper bound. Throws if the input value is negative. Gets or Sets a flag that indicates Whether use the behavior that the WCF DS Server had before integration. Gets or sets a flag that indiactes whether or not inlined query options like $filter within $expand clauses as supported. Gets or Sets the limit on the maximum depth of the filter tree that can be parsed by the syntactic parser. This guarantees a set level of performance. The number here doesn't necessarily correspond exactly with the actual maximum recursive depth of the syntactic tree, i.e a limit of 20 doesn't necessarily mean that a tree will have depth exactly 20, it may have depth 10 (but never over 20). Think of it more as an upper bound. Throws if the input value is negative. Gets or sets the maximum recursive depth for an orderby clause, which limits the maximum depth of the tree that can be parsed by the syntactic parser. This guarantees a set level of performance. The number here doesn't necessarily correspond exactly with the actual maximum recursive depth of the syntactic tree, i.e a limit of 20 doesn't necessarily mean that a tree will have depth exactly 20, it may have depth 10 (but never over 20). Think of it more as an upper bound. Throws if the input value is negative. Gets or Sets the limit on the maximum number of segments that can be parsed by the syntactic parser. This guarantees a set level of performance. Unlike Filter, OrderBy, and SelectExpand, this Limit is more concrete, and will limit the segments to exactly the number that is specified... i.e. a limit of 20 will throw if and only if there are more than 20 segments in the path. Throws if the input value is negative. Bind an entire Uri to Metadata. The current state of the binding algorithm. pointer to the metadata bind method. Create a new ODataUriSemanticBinder to bind an entire uri to Metadata. the current state of the binding algorithm pointer to the metadata bind method. Binds a . The query descriptor token to bind. The bound query descriptor. Bind an inline count option The inline count option to bind. the top level path an InlineCountKind representing this inline count option Bind a select and expand option. A syntax tree containing the select and expand options to bind the top level path The configuration to use for binding. a select expand clause bound to metadata Bind a top option a syntax tree containing the top option to bind the range variable that iterates over the top level collection the top level path a nullable long representing this top option Bind a skip option a syntax tree containing the skip option the range variable that iterates over the top level collection the top level path. a nullable long representing this skip option Bind an orderby option a syntac tree containing the orderby option the range variable that iterates over the top level collection the top level path an OrderByClause representing this orderby option Bind a filter option a syntactic tree containing the filter option the range variable that iterates over the top level collection. A filter clause representing this filter option Helper class to help bind function overloads. This is shared between path and filter/orderby function resolution. Given a list of possible functions and a list of parameter names, choose a single function that exactly matches the parameter names. If more than one function matches, throw. Binding parameters will be ignored in this method. Only non-binding parameters are matched. The list of function imports to search. The list of non-binding parameter names to match. Name of the function. Only used for error strings. A single function import that matches the parameter names exactly. Try to resolve a function from the given inputs. The identifier of the function that we're trying to find the names of the parameters to search for. the type of the previous segment the model to use to look up the function import The single matching function found. True if a function was matched, false otherwise. Will throw if the model has illegal function imports. Add semantic meaning to a Select or Expand token. Add semantic meaning to a Select or Expand Token the top level entity type. the top level entity set the syntactically parsed expand token the syntactically parsed select token The configuration to use for parsing. A select expand clause bound to metadata. Node to represent a function call that returns a Collection Base class for all semantic metadata bound nodes which represent a composable collection of values. The resouce type of a single item from the collection represented by this node. The type of the collection represented by this node. Gets the kind of this node. the name of this function the list of function imports the list of parameters provided to this function the individual item type returned by this function the collection type returned by this function The semantically bound parent of this function. Creates a CollectionFunctionCallNode to represent a function call that returns a collection The name of this function. the list of function imports that this node should represent. the list of already bound parameters to this function the type of the collection returned by this function. The parent of this CollectionFunctionCallNode. Throws if the provided name is null. Throws if the provided collection type reference is null. Throws if the element type of the provided collection type reference is not a primitive or complex type. Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null. Gets the name of this function. Gets the list of function imports represeted by this node Gets the list of parameters to this function Gets the individual item type returned by this function The type of the collection represented by this node. Gets the semantically bound parent node of this CollectionFunctionCallNode. Gets the kind of this node. Translator that determines the entity set of a segment. Translator interface for walking the Syntactic Tree. Generic type produced by the translator. Translate a TypeSegment the segment to Translate Defined by the implementer Translate a NavigationPropertySegment the segment to Translate Defined by the implementer. Translate an EntitySetSegment the segment to Translate Defined by the implementer. Translate a KeySegment the segment to Translate Defined by the implementer. Translate a PropertySegment the segment to Translate Defined by the implementer. Translate a OperationSegment the segment to Translate Defined by the implementer. Translate an OpenPropertySegment the segment to Translate Defined by the implementer. Translate a CountSegment the segment to Translate Defined by the implementer. Visit a NavigationPropertyLinkSegment the segment to Translate Defined by the implementer. Translate a ValueSegment the segment to Translate Defined by the implementer. Translate a BatchSegment the segment to Translate Defined by the implementer. Translate a BatchReferenceSegment the segment to Translate Defined by the implementer. Translate a MetadataSegment the segment to Translate Defined by the implementer. Determine the EntitySet of a NavigationPropertyLinkSegment The NavigationPropertyLinkSegment to look in. The IEdmEntitySet of this NavigationPropertyLinkSegment Throws if the input segment is null. Determine the EntitySet of a TypeSegment The TypeSegment to look in. The IEdmEntitySet of this TypeSegment Throws if the input segment is null. Determine the EntitySet of a NavigationPropertySegment The NavigationPropertySegment to look in. The IEdmEntitySet of this NavigationPropertySegment Throws if the input segment is null. Determine the EntitySet of an EntitySetSegment The EntitySetSegment to look in. The IEdmEntitySet of this EntitySetSegment Throws if the input segment is null. Determine the EntitySet of a KeySegment The KeySegment to look in. The IEdmEntitySet of this KeySegment Throws if the input segment is null. Determine the EntitySet of a PropertySegment The PropertySegment to look in. null, since a property doesn't necessarily have an entity set Throws if the input segment is null. Determine the EntitySet of an OperationSegment The OperationSegment to look in. The IEdmEntitySet of this OperationSegment Throws if the input segment is null. Determine the EntitySet of a CountSegment The CountSegment to look in. null, since $count doesn't have an entitySet Throws if the input segment is null. Determine the EntitySet of a OpenPropertySegment The OpenPropertySegment to look in. null, since an OpenProperty doesn't have an entity set Throws if the input segment is null. Determine the EntitySet of a ValueSegment The ValueSegment to look in. null, since $value doesn't have an entity set Throws if the input segment is null. Determine the EntitySet of a BatchSegment The BatchSegment to look in. null, since $batch doesn't have an entity set Throws if the input segment is null. Determine the EntitySet of a BatchReferenceSegment The BatchReferenceSegment to look in. The IEdmEntitySet of this BatchReferenceSegment Throws if the input segment is null. Determine the EntitySet of a MetadataSegment The MetadataSegment to look in. null, since $batch doesn't have an entity set Throws if the input segment is null. Build a semantic tree for Expand based on an Expand syntactic tree. The configuration used for binding. The entity set at the current level expand. The entity type at the current level expand. Constructs a new ExpandBinder. The configuration used for binding. The entity type of the top level expand item. The entity set of the top level expand item. Visit an ExpandToken the token to visit a SelectExpand clause based on this ExpandToken Generate a SubExpand based on the current nav property and the curren token the current navigation property the current token a new SelectExpand clause bound to the current token and nav prop Decorate an expand tree using a select token. the already built sub expand the current navigation property the select token to use A new SelectExpand clause decorated with the select token. Build a expand clause for a nested expand. A new SelectExpandClause. Generate an expand item based on an ExpandTermToken the expandTerm token to visit the expand item for this expand term token. Build a new MetadataBinder to use for expand options. The entity set being expanded. A new MetadataBinder ready to bind a Filter or Orderby clause. The model used for binding. The top level entity type. The top level entity set for this level. The settings to use when binding. The configuration used for binding. Build an ExpandBinder based on global settings Build an ExpandBinder based on global settings The entity type of the top level expand item. The entity set of the top level expand item. The configuration to use for binding. An ExpandBinder strategy based on the global settings ExpandOption variant of an ExpandBinder, where the default selection item for a given level is based on the select at that level instead of the top level select clause. If nothing is selected for a given expand in the ExpandOption syntax, then we by default select all from that item, instead of selecting nothing (and therefore pruning the expand off of the tree). Build the ExpandOption variant of an ExpandBinder The configuration used for binding. The entity type of the top level expand item. The entity set of the top level expand item. Generate a SubExpand based on the current nav property and the curren token the current navigation property the current token a new SelectExpand clause bound to the current token and nav prop Decorate an expand tree using a select token. the already built sub expand the current navigation property the select token to use A new SelectExpand clause decorated with the select token. Object that knows how to parse a single term within a select expression. That is, a path to a property, a wildcard, operation name, etc. Object that knows how to parse a single term within a select expression. That is, a path to a property, a wildcard, operation name, etc. Interface for the SelectExpandTermParsing strategy Parses a full $select expression. The lexical token representing the select. Parses a full $expand expression. The lexical token representing the select. Parses a single term in a comma seperated list of things to select. is this an inner or outer select term A token representing thing to select. Parses a single term in a comma seperated list of things to expand. is this an inner or outer term. A token representing thing to expand. Lexer used to parse an expression. are we parsing select. the maximum allowable recursive depth. The current recursion depth. Create a SelectExpandTermParser the clause to parse the maximum recursive depth Parses a full $select expression. The lexical token representing the select. Parses a full $expand expression. The lexical token representing the select. Parses a single term in a comma seperated list of things to select. is this an inner or outer select term A token representing thing to select. Parses a single term in a comma seperated list of things to expand. is this an inner or outer term. A token representing thing to expand. Build the list of expand options Depends on whether options are allowed or not. is this an inner expand term the current level token, as a PathToken An expand term token based on the path token. determine whether we're at the end of a select or expand term flag to indicate whether this is an outer or inner select. true if we are not at the end of a select term. Parses a select or expand term into a query token parsed query token Uses the ExpressionLexer to visit the next ExpressionToken, and delegates parsing of segments, type segments, identifiers, and the star token to other methods. Previously parsed QueryToken, or null if this is the first token. A parsed QueryToken representing the next part of the expression. Parses a segment; a expression that is followed by a slash. The parent of the segment node. The lexical token representing the segment. Marks the fact that a recursive method was entered, and checks that the depth is allowed. Marks the fact that a recursive method is leaving. The maximum recursive depth. Build the ExpandOption strategy. the clause to parse max recursive depth Build the list of expand options Depends on whether options are allowed or not. is this an inner expand term the current level token, as a PathToken An expand term token based on the path token, and all available expand options. determine whether we're at the end of a select or expand term flag to indicate whether this is an outer or inner select. true if we are not at the end of a select term. Read a query option from the lexer. the query option as a string. Translator from the old expand syntax tree to the new Expand Option syntax tree Normalize an expand syntax tree into the new ExpandOption syntax. the tree to normalize a new tree, in the new ExpandOption syntax Invert the all of the paths in an expandToken, such that they are now in the same order as they are present in the base url the tree to invert paths on a new tree with all of its paths inverted Collapse all redundant terms in an expand tree the tree to collapse A new tree with all redundant terms collapsed. Expand all the PathTokens in a particular term into their own separate terms. the term to expand a new ExpandTermToken with each PathToken at its own level. add a new expandTermToken into an exisiting token, adding any additional levels and trees along the way. the exisiting (already expanded) token the new (already expanded) token the combined token, or, if the two are mutually exclusive, the same tokens Combine the child nodes of twoExpandTermTokens into one list of tokens the existing token to to the new token containing terms to add a combined list of the all child nodes of the two tokens. Add child options to a new dictionary the token with child nodes to add to the dictionary dictionary to add child nodes to Adds the expand token to the dictionary or combines it with an existing or combines it with another existing token with an equivalent path. The combined terms dictionary. The expanded term to add or combine. A set of extensions to for parsing literals. Returns whether the is a primitive literal type: Binary, Boolean, DateTime, Decimal, Double, Guid, In64, Integer, Null, Single, or String. Internal for test use only InternalKind of token. Whether the is a literal type. Reads the next token, checks that it is a literal token type, converts to to a Common Language Runtime value as appropriate, and returns the value. The expression lexer. The value represented by the next token. Parses null literals. The expression lexer. The literal token produced by building the given literal. Parses typed literals. The expression lexer. Expected type to be parsed. The literal token produced by building the given literal. Parses a literal. Precondition: lexer is at a literal token type: Boolean, DateTime, Decimal, Null, String, Int64, Integer, Double, Single, Guid, Binary. The expression lexer. The literal query token or null if something else was found. Utilities needed by which are relatively simple and standalone. Suffix for single literals. Suffix for single literals. Whether the specified token identifier is a numeric literal. Token to check. true if it's a numeric literal; false otherwise. Checks if the is INF or NaN. Internal for testing only. Input token. true if match found, false otherwise. Checks whether equals to 'INF' Internal for testing only Text to look in. true if the substring is equal using an ordinal comparison; false otherwise. Checks if the is INFf/INFF or NaNf/NaNF. Internal for testing only. Input token. true if match found, false otherwise. Checks whether EQUALS to 'INFf' or 'INFF'. Internal for testing only. Text to look in. true if the substring is equal using an ordinal comparison; false otherwise. Class responsible for binding a syntactic filter expression into a bound tree of semantic nodes. Method to use to visit the token tree and bind the tokens recursively. State to use for binding. Creates a FilterBinder. Method to use to visit the token tree and bind the tokens recursively. State to use for binding. Binds the given filter token. The filter token to bind. A FilterNode with the given path linked to it (if provided). Class that knows how to bind function call tokens. Method to use for binding the parent node, if needed. The names of functions that we don't bind to BuiltInFunctions Constructs a FunctionCallBinder with the given method to be used binding the parent token if needed. Method to use for binding the parent token, if needed. Promotes types of arguments to match signature if possible. The signature to match the types to. The types to promote. Checks that all arguments are SingleValueNodes The name of the function the arguments are from. The arguments to validate. Returns the types of the arguments provided. Finds the signature that best matches the arguments The name of the function The types of the arguments The signatures to match against Returns the matching signature or throws Finds all signatures for the given function name. The function to get the signatures for. The signatures which match the supplied function name. Binds the token to a SingleValueFunctionCallNode Token to bind The current state of the binding algorithm The resulting SingleValueFunctionCallNode Try to bind an end path token as a function call. Used for bound functions without parameters that parse as end path tokens syntactically the end path token to bind the parent node to this end path token. the current state of the binding algorithm a single value function call node representing the function call, if it exists true if we found a function for this token, false otherwise. Try to bind an inner path token as a function call. Used for bound functions without parameters that parse as inner path tokens syntactically the end path token to bind the parent node to this end path token. the current state of the binding algorithm a single value function call node representing the function call, if it exists true if we found a function for this token, false otherwise. Try to bind a as a function call. Used for container qualified functions without parameters. the dotted identifier token to bind the semantically bound parent node for this dotted identifier the current stat of the binding algorithm a single value function call node representing the function call, if we found one. true if we found a function for this token, false otherwise. Bind this function call token as a built in function the function call token to bidn the current state of the binding algorithm list of semantically bound arguments A function call node bound to this function. Try to bind an identifier to a FunctionCallNode the identifier to bind the semantically bound list of arguments. a semantically bound parent node. the current state of the binding algorithm a single value function call node representing this funciton call, if we found one. true if we found a function for this token. Determines whether this is a function that we don't bind to a BuiltInFunction name of the function true if this is a function that we don't bind Build a SingleValueFunctionCallNode for a function that isn't bound to a BuiltInFunction original query token for this function list of already bound query nodes for this function The current state of the binding algorithm. A single value function call node bound to this function. Validate the args list (adding the implicit range variable if necessary), and determine the correct return type for a cast function current binding state, used to get the implicit range variable if necessary list of arguments, could be changed the return type from this cast function Validate the arguments (adding the implicit range variable if necessary), and determine the correct return type for an IsOf function the current state of the binding algorithm, used to get the implicit range variable if necessary current list of args, can be changed the correct return type for this function. Validate the arguments to either isof or cast the current state of the binding algorithm flag to indicate which function we're validating the list of arguments, which could be changed the return type of the function. Try to get an IEdmTypeReference for a given type as a string, returns null if none exists the model for validation the type name to find an IEdmTypeReference for this type string. Implementation of IFunctionCallParser that allows functions calls and parses arguments with a provided method. TODO This inmplementaiton is incomplete. Interface for a class that can parse an identifier as a function and return a representitive QueryToken. Parses an identifier that represents a function. the syntactically bound parent of this identifier. QueryToken representing this function. Reference to the lexer. Reference to the lexer. Method used to parse arguments. Create a new FunctionCallParser. Lexer positioned at a function identifier. Method to use for parsing individual arguments in the function. Parses an identifier that represents a function. Token for the parent of the function being parsed. QueryToken representing this function. Parses argument lists. The lexical tokens representing the arguments. Parses comma-separated arguments. Arguments can either be of the form a=1,b=2,c=3 or 1,2,3. They cannot be mixed between those two styles. The lexical tokens representing the arguments. Read the list of arguments as a set of positional values A list of FunctionParameterTokens representing each argument Try to read the list of arguments as a set of named values the parsed list of arguments true if the arguments were successfully read. Reference to the lexer. Class that knows how to parse an identifier using an ExpressionLexer that is appropriately positioned. Reference to the lexer. parameters from the expression parser Object to handle the parsing of things that look like function calls. Parse an Identifier into the right QueryToken parameters passed in to the UriQueryExpressionParser Object to use to handle parsing function calls. Parses identifiers. the syntactically bound parent of this identifier. The lexical token representing the expression. Parses member access. Instance being accessed. The lexical token representing the expression. Parses * (all member) access at the beginning of a select expression. Instance being accessed. The lexical token representing the expression. Creates an exception for a parse error. Message text. A new Exception. Visitor interface for walking the Path Tree. Return type for the visitor methods on this visitor. Visit an SystemToken The SystemToken to visit A user defined class Visit an NonSystemToken The NonSystemToken to visit A user defined class Visitor interface for walking the Path Tree. Visit an SystemToken The SystemToken to visit Visit an NonSystemToken The NonSystemToken to visit Visitor interface for walking the Syntactic Tree. Return type for the visitor methods on this visitor. Visit an AllToken The All token to visit An AllNode bound to this token Visits an AnyToken The Any token to visit An AnyNode that's bound to this token Visits a BinaryOperatorToken The Binary operator token to visit. A BinaryOperatorNode thats bound to this token Visits a DottedIdentifierToken The DottedIdentifierToken to visit Either a SingleEntityCastNode, or EntityCollectionCastNode bound to this DottedIdentifierToken Visits an ExpandToken The ExpandToken to visit A QueryNode bound to this ExpandToken Visits an ExpandTermToken The ExpandTermToken to visit A QueryNode bound to this ExpandTermToken Visits a FunctionCallToken The FunctionCallToken to visit A SingleValueFunctionCallNode bound to this FunctionCallToken Visits a LambdaToken The LambdaToken to visit A LambdaNode bound to this LambdaToken Visits a LiteralToken LiteralToken to visit A ConstantNode bound to this LiteralToken Visits a InnerPathToken The InnerPathToken to bind A SingleValueNode or SingleEntityNode bound to this InnerPathToken Visits an OrderByToken The OrderByToken to bind An OrderByClause bound to this OrderByToken Visits a EndPathToken The EndPathToken to bind A PropertyAccessNode bound to this EndPathToken Visits a CustomQueryOptionToken The CustomQueryOptionToken to bind A CustomQueryOptionNode bound to this CustomQueryOptionToken Visits a RangeVariableToken The RangeVariableToken to bind An Entity or NonEntity RangeVariableReferenceNode bound to this RangeVariableToken Visits a SelectToken The SelectToken to bind A QueryNode bound to this SelectToken Visits a StarToken The StarToken to bind A QueryNode bound to this StarToken Visits a UnaryOperatorToken The UnaryOperatorToken to bind A UnaryOperatorNode bound to this UnaryOperatorToken Visits a FunctionParameterToken The FunctionParameterTokenb to bind A FunctionParametertoken bound to this UnaryOperatorToken Class that knows how to bind key values. Method to bind the value of a key. TODO Make it of return type SingleValueQueryNode. Constructs a KeyBinder object using the given function to bind key values. Method to call to bind a value in a key. Binds key values to a key lookup on a collection. Already bound collection node. The named value tokens to bind. The bound key lookup. Binds a key property value. The named value to bind. The type of a single item in a collection to apply the key value to. The bound key property value node. Provides a class used to represent a key for a resource. Internally, every key instance has a collection of values. These values can be named or positional, depending on how they were specified if parsed from a URI. Empty key singleton. Named values. Positional values. Whether or not the key was formatted as a segment. Initializes a new empty instance. Initializes a new instance. Named values. Positional values for this instance. Whether or not the key was formatted as a segment. One of namedValues or positionalValues should be non-null, but not both. Attempts to parse key values from the specified text. Text to parse (not null). After invocation, the parsed key instance. true if the key instance was parsed; false if there was a syntactic error. The returned instance contains only string values. To get typed values, a call to TryConvertValues is necessary. Creates a key instance from the given raw segment text with a single positional value. The segment text. A key instance with the given segment text as its only value. Attempts to parse nullable values (only positional values, no name-value pairs) from the specified text. Text to parse (not null). After invocation, the parsed key instance. true if the given values were parsed; false if there was a syntactic error. The returned instance contains only string values. To get typed values, a call to TryConvertValues is necessary. Tries to convert values to the keys of the specified type. The key properties to use for the conversion. The converted key-value pairs. true if all values were converted; false otherwise. Try to convert a value into an EDM primitive type the type to convert to the value to convert The converted value, if conversion succeeded. true if the conversion was successful. Attempts to parse key values from the specified text. Text to parse (not null). Set to true if the parser should accept named values so syntax like Name='value'. If this is false, the parsing will fail on such constructs. Set to true if the parser should accept null values. If set to false, the parser will fail on null values. After invocation, the parsed key instance. true if the key instance was parsed; false if there was a syntactic error. The returned instance contains only string values. To get typed values, a call to TryConvertValues is necessary. Creates a new instance if the specified value is null. Type of variable. Current value. Whether the values have a name. Checks whether this key has any values. Returns a dictionary of named values when they AreValuesNamed is true. Returns a list of values when they AreValuesNamed is false. Number of values in the key. Class that knows how to bind a LambdaToken. Method used to bind a parent token. Constructs a LambdaBinder. Method used to bind a parent token. Binds a LambdaToken to metadata. Token to bind. Object to hold the state of binding. A metadata bound any or all node. Bind the parent of the LambdaToken the parent token the bound parent node Bind the expression of the LambdaToken the expression token the bound expression node Class that knows how to bind literal values. Binds a literal value to a ConstantNode Literal token to bind. Bound query node. Use this class to parse literals from keys, etags, skiptokens, and filter/orderby expression constants. Default singleton instance of the literal parser. Singleton instance of the literal parser for when keys-as-segments is turned on, which does not wrap the formatted strings in any quotes or type-markers. Mapping between primitive CLR types and lightweight parser classes for that type. Gets the literal parser for keys, based on whether the keys are formatted as segments. Whether or not the keys is formatted as a segment. The literal parser to use. Converts a string to a primitive value. Type to convert string to. String text to convert. After invocation, converted value. true if the value was converted; false otherwise. Gets the literal parser to use for ETags. Default literal parser which has type-markers and single-quotes. Also supports arbitrary literals being re-encoded in binary form. Converts a string to a primitive value. Type to convert string to. String text to convert. After invocation, converted value. true if the value was converted; false otherwise. Tries to parse the literal by first removing required formatting for the expected type, then converting the resulting string. String text to convert. Type to convert string to. After invocation, converted value. true if the value was converted; false otherwise. Simplified literal parser for keys-as-segments which does not expect type-markers, single-quotes, etc. Does not support re-encoding literals as binary. Converts a string to a primitive value. Type to convert string to. String text to convert. After invocation, converted value. true if the value was converted; false otherwise. If the string starts with '$', removes it. Also asserts that the 2nd character is also '$', as otherwise the string would be treated as a system segment. The text. The string value with a leading '$' removed, if the string started with one. Helper class for parsing a specific type of primitive literal. XML whitespace characters to trim around literals. The expected prefix for the literal. Null indicates no prefix is expected. The expected suffix for the literal. Null indicates that no suffix is expected. Whether or not the suffix is required. The expected type for this parser. Initializes a new instance of the class. The expected type for this parser. The expected suffix for the literal. Null indicates that no suffix is expected. Whether or not the suffix is required. Initializes a new instance of the class. The expected type for this parser. The expected prefix for the literal. Initializes a new instance of the class. The expected type for this parser. Tries to convert the given text into this parser's expected type. Conversion only, formatting should already have been removed. The text to convert. The target value. Whether or not conversion was successful. Tries to remove formatting specific to this parser's expected type. The text to remove formatting from. Whether or not the expected formatting was found and succesfully removed. Determines whether the values for the specified types should be quoted in URI keys. Type to check. true if values of require quotes; false otherwise. Check and strip the input for literal The suffix value The string to check A string that has been striped of the suffix Primitive parser which uses a delegate for conversion. The expected CLR type when parsing. The delegate to use for conversion. Initializes a new instance of the class. The delegate to use for conversion. The expected suffix for the literal. Null indicates that no suffix is expected. Whether or not the suffix is required. Prevents a default instance of the class from being created. The delegate to use for conversion. Prevents a default instance of the class from being created. The delegate to use for conversion. The expected prefix for the literal. Creates a primitive parser which wraps the given delegate and does not expect any extra markup in serialized literal. The delegate to use for conversion. A new primitive parser. Creates a primitive parser which wraps the given delegate and expects serialized literals to start with one of the given prefixes. The delegate to use for conversion. The expected prefix for the literal. A new primitive parser. Creates a primitive parser which wraps the given delegate and expects serialized literals to end with the given suffix. The delegate to use for conversion. The expected suffix for the literal. Null indicates that no suffix is expected. A new primitive parser. Creates a primitive parser which wraps the given delegate and expects serialized literals to end with the given suffix. The delegate to use for conversion. The expected suffix for the literal. Null indicates that no suffix is expected. Whether or not the suffix is required. A new primitive parser. Tries to convert the given text into this parser's expected type. Conversion only, formatting should already have been removed. The text to convert. The target value. Whether or not conversion was successful. Parser specific to the Edm.Decimal type. Initializes a new instance of the class. Special helper to convert a string to a decimal that will allow more than what XmlConvert.ToDecimal supports by default. The text to convert. The converted decimal value. Parser specific to the Edm.Binary type. Initializes a new instance of the class. Tries to convert the given text into this parser's expected type. Conversion only, formatting should already have been removed. The text to convert. The target value. Whether or not conversion was successful. Tries to remove formatting specific to this parser's expected type. The text to remove formatting from. Whether or not the expected formatting was found and succesfully removed. Returns the 4 bits that correspond to the specified character. Character in the 0-F range to be converted. The 4 bits that correspond to the specified character. Thrown when 'c' is not in the '0'-'9','a'-'f' range. Parser specific to the Edm.String type. Initializes a new instance of the class. Tries to convert the given text into this parser's expected type. Conversion only, formatting should already have been removed. The text to convert. The target value. Whether or not conversion was successful. Tries to remove formatting specific to this parser's expected type. The text to remove formatting from. Whether or not the expected formatting was found and succesfully removed. Helper methods for metadata binding. If the source node is not of the specified type, then we check if type promotion is possible and inject a convert node. If the source node is the same type as the target type (or if the target type is null), we just return the source node as is. The source node to apply the convertion to. The target primitive type. May be null - this method will do nothing in that case. The converted query node, or the original source node unchanged. Retrieves type associated to a segment. The node to retrive the type from. The type of the node, or item type for collections. Retrieves the type reference associated to a segment. The node to retrive the type reference from. The Type reference of the node (item type reference for collections). Class to provide methods that wrap EdmLib calls that are normally not allows in ODataLib, but are OK in the Uri Parser. These are OK to suppress because the Uri Parser does not need to go through the behavior knob that the ODL reader/writer does. This should only be used by the Uri Parser. Wraps a call to IEdmModel.FindType. The model to search. The qualified name of the type to find within the model. The requested type, or null if no such type exists. Wraps call to FindTypeFromModel for a Collection type. the model to search the name to find within the model a type reference to the collection type, or null if no such type exists. Wraps a call to IEdmFunctionImport.ReturnType. The function import containing the return type. Gets the return type of this function. Wraps a call to IEdmEntitySet.ElementType. The EntitySet to containing the element type. The entity type contained in this entity set. Wraps a call to IEdmFunctionParameter.Type. The IEdmFunctionParameter containing the typ[e. The type of this function parameter. Check whether the parent and child are properly related types the parent type the child type Throws if the two types are not related. Follow an ODataPath from an Expand to get the Final Nav Prop the path to follow the navigation property at the end of that path. Throws if the last segment in the path is not a nav prop. Follow an ODataPath from to get the most derived type the path to follow the starting type before beginning to walk the path. the most derived type in the path. Is this token a container the containerIdentifier of the container to find which model to search the container we found, if we found one true if we find a container, false otherwise Returns true if this type is an EntityCollection The type to check true if the type is an entity collection Checks whether all function imports have the same return type the list to check true if the list of function imports all have the same return type Is this a valid binding type. i.e. is this an entity, entity colleciton, or complex type. the binding type true if this binding type is valid NonOption variant of an ExpandBinder, where the default selection at each level is based on the top level select clause. If that top level select is not populated, then we select all from this level, instead of selecting nothing. Build the NonOption variant of an ExpandBinder The configuration used for binding. The entity type of the top level expand item. The entity set of the top level expand item. Generate a SubExpand based on the current nav property and the curren token the current navigation property the current token a new SelectExpand clause bound to the current token and nav prop Decorate an expand tree using a select token. the already built sub expand the current navigation property the select token to use A new SelectExpand clause decorated with the select token. Object that knows how to parse a single term within a select expression. That is, apath to a property, a wildcard, operation name, etc. Build the NonOption strategy. the clause to parse max recursive depth Build the list of expand options Depends on whether options are allowed or not. is this an inner expand term the current level token, as a PathToken An expand term token based on the path token. determine whether we're at the end of a select or expand term flag to indicate whether this is an outer or inner select. true if we are not at the end of a select term. Class responsible for binding a InnerPathToken into: 1. SingleNavigationNode 2. CollectionNavigationNode 3. SinglePropertyAccessNode (complex) 4. CollectionPropertyAccessNode (primitive | complex) 5. KeyLookupNode 6. SingleValueFunctionCallNode 7. SingleEntityFunctionCallNode TODO The binder does support key lookup on collection navigation properties, however at this time the synctactic parser does not set things up correctly to allow end-to-end scenarios to work. Bind method to use for binding a parent node, if needed. Constructs a InnerPathTokenBinder. Bind method to use for binding a parent node, if needed. Ensures that the parent node is of entity type, throwing if it is not. Parent node to a navigation property. The given parent node as a SingleEntityNode. Given a property name, if the associated type reference is strucutred, then this returns the property of the structured type. Otherwise, it returns null. The parent type to be used to find binding options. The string designated the property name to be bound. The property associated with string and parent type. Builds an appropriate navigation query node (collection or single) for the given property and parent node. Navigation property. Parent Node. Named values (key values) that were included in the node we are binding, if any. State of binding. Object to perform binding on any key values that are present. A new CollectionNavigationNode or SingleNavigationNode to capture the navigation propety access. Binds a . This includes more than just navigations - it includes complex property access and primitive collections. The segment token to bind. The state of binding. The bound node. Determines the parent node. If the token has a parent, that token is bound. If not, then we use the implicit parameter from the BindingState as the parent node. Token to determine the parent node for. Current state of binding. A SingleValueQueryNode that is the parent node of the . Factory class to build IParameterQueryNodes. Creates a for an implicit parameter ($it) from an . that the range variable is iterating over. A new . Creates a ParameterQueryNode for an implicit parameter ($it). Element type the parameter represents. Entity Set. May be null and must be null for non entities. A new IParameterNode. Creates a RangeVariableReferenceNode for a given range variable Name of the rangeVariable. A new SingleValueNode (either an Entity or NonEntity RangeVariableReferenceNode. Creates a ParameterQueryNode for an explicit parameter. Name of the parameter. CollectionNode that the parameter is iterating over. A new RangeVariable. Creates an AnyNode or an AllNode from the given State of binding. Parent node to the lambda. Bound Lambda expression. The new range variable being added by this lambda node. Token kind. A new LambdaNode bound to metadata. Handler interface for walking the path semantic tree. Handle a TypeSegment the segment to Handle Handle a NavigationPropertySegment the segment to Handle Handle an EntitySetSegment the segment to Handle Handle a KeySegment the segment to Handle Handle a PropertySegment the segment to Handle Handle an OperationSegment the segment to Handle Handle an OpenPropertySegment the segment to Handle Handle a CountSegment the segment to Handle Handle a LinksSegment the segment to Handle Handle a ValueSegment the segment to Handle Handle a BatchSegment the segment to Handle Handle a BatchReferenceSegment the segment to Handle Handle a MetadataSegment the segment to Handle Node to represent a function call that returns a collection of entities. Base class for all semantically bound nodes which represent a composable collection of values. Get the resouce type of a single entity from the collection represented by this node. Get the EntitySet that contains this collection. the name of this function. list of function imports that this node represents. list of parameters provided to this function the type a single entity returned by this function the type of the collection returned by this function the set containing the entities returned by this function. The semantically bound parent of this EntityCollectionFunctionCallNode. Creates an EntityCollecitonFunctionCallNode to represent a function call that returns a collection of entities. The name of this function. the list of function imports that this node represents. the list of parameters to this function the type the entity collection returned by this function. The element type must be an entity type. the set containing entities returned by this function the semantically bound parent of this EntityCollectionFunctionCallNode. Throws if the provided name is null. Throws if the provided collection type reference is null. Throws if the element type of the provided collection type reference is not an entity type. Throws if the input function imports is null Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null. Gets the name of this function Gets the list of function imports that this node represents. Gets the list of parameters provided to this function. Gets the individual item type returned by this function. The type of the collection represented by this node. Gets the individual entity type returned by this function. Gets the entity set contaiing the entities returned by this function. Gets the semantically bound parent of this function. Gets the kind of this node. Segment translator to determine whether a given is a collection. Translate a NavigationPropertySegment the segment to Translate UserDefinedValue Throws if the input segment is null. Translate an EntitySetSegment the segment to Translate UserDefinedValue Throws if the input segment is null. Translate a KeySegment the segment to Translate UserDefinedValue Throws if the input segment is null. Translate a PropertySegment the segment to Translate UserDefinedValue Throws if the input segment is null. Translate an OpenPropertySegment the segment to Translate UserDefinedValue Throws if the input segment is null. Translate a CountSegment the segment to Translate UserDefinedValue Throws if the input segment is null. Translate a NavigationPropertyLinkSegment the segment to Translate UserDefinedValue Throws if the input segment is null. Translate a BatchSegment the segment to Translate UserDefinedValue Throws if the input segment is null. Translate a BatchReferenceSegment the segment to Translate UserDefinedValue Throws if the input segment is null. Translate a ValueSegment the segment to Translate UserDefinedValue Throws if the input segment is null. Translate a MetadataSegment the segment to Translate UserDefinedValue Throws if the input segment is null. A segment representing $links or $ref The semantic representation of a segment in a path. Returns the identifier for this segment i.e. string part without the keys. Indicates whether this segment targets a single result or not. The entity set targetted by this segment. Can be null. The type targetted by this segment. Can be null. The kind of resource targeted by this segment. Creates a new Segment and copies values from another Segment. Segment to copy values from. Creates a new Segment. Translate a using an implemntation of. Type that the translator will return after visiting this token. An implementation of the translator interface. An object whose type is determined by the type parameter of the translator. Handle a using an implementation of a . An implementation of the handler interface. Check if this segment is equal to another segment. the other segment to check true if the segments are equal. Copies over all the values of the internal-only properties from one segment to another. Ther segment to copy from. Gets the of this . This property can be null. Not all segments have a Type, such as a . Returns the identifier for this segment i.e. string part without the keys. Whether the segment targets a single result or not. The entity set targetted by this segment. Can be null. The type targetted by this segment. Can be null. The kind of resource targeted by this segment. The navigation property this link or ref acts on. Build a segment to represnt $links or $ref on a Nav prop The navigaiton property this link or ref acts on The set of entities linked to by this . This can be null. Throws if the input navigationProperty is null. Translate a Type that the translator will return after visiting this token. An implementation of the translator interface. An object whose type is determined by the type parameter of the translator. Throws if the input translator is null. Translate a to walk a tree of s. An implementation of the translator interface. Throws if the input handler is null. Check if this segment is equal to another. The other segment to check. True if the other segment is equal. Throws if the input other is null. Gets the navigation property this link or ref acts on. Gets the set of entities linked to by this . Gets the of this . A specific type of which can only contain instances of or . A representation of the path portion of an OData URI which is made up of s. The segments that make up this path. Creates a new instance of containing the given segments. The segments that make up the path. Throws if input segments is null. Creates a new instance of containing the given segments. The segments that make up the path. Throws if input segments is null. Get the segments enumerator The segments enumerator get the segments enumerator The segments enumerator. Walk this path using a translator the return type of the translator a user defined translation path an enumerable containing user defined objects for each segment Walk this path using a handler the handler that will be applied to each segment Checks if this path is equal to another path. The other path to compare it to True if the two paths are equal Throws if the input other is null. Add a segment to this path. the segment to add Throws if the input newSegment is null. Gets the first segment in the path. Returns null if the path is empty. Get the last segment in the path. Returns null if the path is empty. Get the number of segments in this path. Create an ODataPath object to represent a path semantically The list of segments in the path. Throws if this list of segments doesn't match the requirements for a $expand Create an ODataPath object based on a single segment A list of segments in the path. Throws if this list of segments doesn't match the requirements for a $expand Gets the navigation property for this expand path. the navigation property for this expand path. Ensure that this expand path contains only valid segment types. Throws if this list of segments doesn't match the requirements for a $expand Extension methods for . These method provide convenince functions. TODO: Implement this class and it's visitors. These are stubs. The values that these methods compute are not cached. Computes the of the resource identified by this . Path to compute the type for. The of the resource, or null if the path does not identify a resource with a type. Computes the of the resource identified by this . Path to compute the set for. The of the resource, or null if the path does not identify a resource that is part of a set. Computes whether or not the resource identified by this is a collection. Path to perform the computation on. True if the resource if a feed or collection of primitive or complex types. False otherwise. Translates from an IPathSegment into an ODataPath Binds a collection of to metadata, creating a semantic ODataPath object. Collection of path segments. The configuration to use when binding the path. A semantic object to describe the path. Main Public API to parse an ODataURI. The parser's configuration. Build an ODataUriParser Model to use for metadata binding. Absolute URI of the service root. Throws if input model is null. Throws if the input serviceRoot is not an AbsoluteUri Parses a clause on the given , binding the text into semantic nodes using the provided . String representation of the filter expression. Model to use for metadata binding. Type that the filter clause refers to. A representing the metadata bound filter expression. Parses a clause on the given , binding the text into semantic nodes using the provided . String representation of the filter expression. Model to use for metadata binding. Type that the filter clause refers to. EntitySet that the elements beign filtered are from. A representing the metadata bound filter expression. Parses a clause on the given , binding the text into semantic nodes using the provided . String representation of the orderby expression. Model to use for metadata binding. Type that the orderby clause refers to. A representing the metadata bound orderby expression. Parses a clause on the given , binding the text into semantic nodes using the provided . String representation of the orderby expression. Model to use for metadata binding. Type that the orderby clause refers to. EntitySet that the elements beign filtered are from. A representing the metadata bound orderby expression. Parse a filter clause from an instantiated class. the filter clause to parse Type that the select and expand clauses are projecting. EntitySet that the elements being filtered are from. A FilterClause representing the metadata bound filter expression. Parse an orderby clause from an instance of this class the orderby clause to parse Type that the select and expand clauses are projecting. EntitySet that the elements being filtered are from. An OrderByClause representing the metadata bound orderby expression. Parses a into a semantic object. This is designed to parse the Path of a URL. If it is used to parse paths that are contained within other places, such as $filter expressions, then it may not enforce correct rules. The absolute URI which holds the path to parse. An representing the metadata-bound path expression. Throws if the serviceRoot member is null, or if the input path is not an absolute uri. ParseSelectAndExpand from an instantiated class the select to parse the expand to parse Type that the select and expand clauses are projecting. EntitySet that the elements being filtered are from. This can be null, if so that null will propagate through the resulting SelectExpandClause. A SelectExpandClause with the semantic representation of select and expand terms Parse a full Uri into its contingent parts with semantic meaning attached to each part. See . The full uri to parse. An representing the full uri. Parses an inline count option The inline count string from the query An InlineCountKind representing that inline count option. Parses the full Uri. The full uri to parse An ODataUri representing the full uri Parses a clause on the given , binding the text into semantic nodes using the provided. String representation of the filter expression. Type that the filter clause refers to. EntitySet that the elements beign filtered are from. A representing the metadata bound filter expression. Parses a clause on the given , binding the text into semantic nodes using the provided model. String representation of the orderby expression. Type that the orderby clause refers to. EntitySet that the elements beign filtered are from. A representing the metadata bound orderby expression. Parses the and clauses on the given , binding the text into a metadata-bound list of properties to be selected using the provided model. String representation of the select expression from the URI. String representation of the expand expression from the URI. Type that the select and expand clauses are projecting. EntitySet that the elements being filtered are from. A representing the metadata bound orderby expression. Parses an inline count option The inline count string from the query An InlineCountKind representing that inline count option. Throws if the input inlineCount is not a valid $inlinecount value. The settings for this instance of . Refer to the documentation for the individual properties of for more information. Gets the model for this ODataUriParser Gets the absolute URI of the service root. Gets or Sets the to use while parsing, specifically whether to recognize keys as segments or not. Throws if the input value is null. Gets or Sets a callback that returns a BatchReferenceSegment (to be used for $0 in batch) Gets or sets a callback that returns the raw string value for an aliased function parameter. The exception that is thrown when path parsing detects an unrecognized or unresolvable token in a path (which servers should treat as a 404). Exception type representing exceptions in the OData library. Creates a new instance of the class with default values. The Message property is initialized to a system-supplied message that describes the error. This message takes into account the current system culture. Creates a new instance of the class with an error message. The plain text error message for this exception. Creates a new instance of the class with an error message and an inner exception. The plain text error message for this exception. The inner exception that is the cause of this exception to be thrown. Initializes a new instance of the ODataUnrecognizedPathException class. The Message property is initialized to a system-supplied message that describes the error. This message takes into account the current system culture. Initializes a new instance of the ODataUnrecognizedPathException class. Plain text error message for this exception. Initializes a new instance of the DataServiceException class. Plain text error message for this exception. Exception that caused this exception to be thrown. Component for controlling what convention are used for generating URLs. Singleton instance of the default conventions. Singleton instance of the key-as-segment conventions. The url convention to use. Prevents a default instance of the class from being created. The url convention to use. An instance of which uses default URL conventions. Specifically, this instance will produce keys that use parentheses like "Customers('ALFKI')". An instance of which uses key-as-segment URL conventions. Specifically, this instance will produce keys that use segments like "Customers/ALFKI". Gets the internal representation of the user-specified convention. Class to handle the binding of orderby tokens. Method to use to visit the token tree and bind the tokens recursively. Creates an OrderByBinder Method to use to visit the token tree and bind the tokens recursively. Processes the order-by tokens of a entityCollection (if any). State to use for binding. The order-by tokens to bind. An OrderByClause representing the orderby statements expressed in the tokens. Processes the specified order-by token. State to use for binding. The next OrderBy node, or null if there is no orderby after this. The order-by token to bind. Returns the combined entityCollection including the ordering. Set of helpers and extensions to make it easier to convert the semantic path parser to using and the related classes. Returns whether the given type is a structural type that is open. The type to check. Whether the type is both structural and open. Returns whether or not the type is an entity or entity collection type. The type to check. Whether or not the type is an entity or entity collection type. Returns whether or not the type is an entity or entity collection type. The type to check. The entity type. If the given type was a collection, this will be the element type. Whether or not the type is an entity or entity collection type. Gets the target entity set for the given function import. The function import. The source entity set. The model. The target entity set of the function import or null if it could not be determined. Throws an exception if the given type is an open complex type. The type to check. Reverse a Path Visitor interface for walking the Syntactic Tree. Generic type produced by the visitor. Visit an SystemToken The System token to visit A user defined class Visit an NonSystemToken The System token to visit A user defined class any children of the root, will always be null on first call Build a PathReverser at the top level (with no child token) Build a PathReverser based on a child token. the new child of this token Reverse a NonSystemToken the non system token to reverse the reversed NonSystemToken Reverse a SystemToken the SystemToken to reverse the reversed SystemToken Build the next level PathReverser the next level token the next levels child token the path token from the next level. Equality comparer for . Determines whether the two paths are equivalent. The first path to compare. The second path to compare. Whether the two paths are equivalent. Returns a hash code for the given path. The path to hash. A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. Converts the token to a string that is sufficiently unique to be hashed or compared. The path token to convert to a string. A string representing the path. Visitor interface for walking the Syntactic Tree. Visit an SystemToken The System token to visit Visit an NonSystemToken The System token to visit Class that knows how to bind ParameterQueryTokens. Binds a parameter token. The parameter token to bind. The state of metadata binding. The bound query node. Class that knows how to bind an end path token, which could be several things. Method to bind the value of a key. TODO Make it of return type SingleValueQueryNode. The function call binder to use to bind this end path to a function if necessary. Constructs a EndPathBinder object using the given function to bind parent token. Method to bind the EndPathToken's parent, if there is one. This method generates a for properties of open type EndPathToken to bind into an open property node. Parent node of this open property Will return a when open types are supported Generates a bound query node representing an given an already semantically bound parent node. The semantically bound source node of this end path token The that will be bound to this node. Must not be primitive collection QueryNode bound to this property. Constructs parent node from binding state Current binding state The parent node. Binds a an end path token into a PropertyAccessToken, OpenPropertyToken, or FunctionCallToken. The property access token to bind. State of the binding algorithm. A Query node representing this endpath token, bound to metadata. Determines the parent node. If the token has a parent, that token is bound. If not, then we use the implicit parameter from the BindingState as the parent node. Token to determine the parent node for. Current state of binding. A SingleValueQueryNode that is the parent node of the . Provides values to describe the kind of thing targetted by a client request. Nothing specific is being requested. A top-level directory of service capabilities. Entity Resource is requested - it can be a collection or a single value. A single complex value is requested (eg: an Address). A single value is requested (eg: a Picture property). A single value is requested (eg: the raw stream of a Picture). System metadata. A data-service-defined operation that doesn't return anything. The request is a batch request. An open property is requested. An open property value is requested. A stream property value is requested. A single collection of primitive or complex values is requested. Semantic parser for the path of the request URI. regex pattern to match a contentID The queue of segments remaining to be parsed. Should be populated and cleared out on each pass through the main path parsing loop. The collection of segments that have been parsed so far. The parser's current configuration. Indicates that the next segment encountered must refer to something in 'metadata-space' and cannot be a key expression. Initializes a new instance of . The parser's current configuration. Extracts the segment identifier and, if there are parenthesis in the segment, the expression in the parenthesis. Will throw if identifier is not found or if the parenthesis expression is malformed. Internal only so it can be called from tests. Should not be used outside . The segment text. The identifier that was found. The query portion that was found. Will be null after the call if no query portion was present. Creates an array for the given . Segments to process. Segment information describing the given . Tries to find a single matching function import for the given identifier, parametes, and binding type. The identifier from the URI. The parenthesis expression contianing parameters, if any. The current binding type or null if there isn't one. The configuration of the parser. The parsed parameters from the parenthesis expression. The single matching function import if one could be determined. Whether or not a matching function import could be found. Determines a matching target kind from the specified type. ResourceType of element to get kind for. An appropriate for the specified . Checks for single result, otherwise throws. indicates whether the current result is single result or not. current segment identifier. Tries to get the next segment's text to parse. The segment text to parse. Whether there was a next segment. Tries to get the next segment's text to parse. Should not be called except by the other overload which does not have the extra parameter. Whether the previous segment was an escape marker. The segment text to parse. Whether there was a next segment. Tries to handle the given text as a key if the URL conventions support it and it was not preceeded by an escape segment. The text which might be a key. Whether or not the text was handled as a key. Throws if the given segment must be a leaf, as a later segment is being created. The previous segment which may need to be a leaf. Try to handle the segment as $count. The segment text to handle. Whether the segment was $count. Tries to handle the segment as $links. If it is $links, then the rest of the path will be parsed/validated in this call. The text of the segment. Whether the text was $links. Tries to bind a key from the parenthetical section of a segment. The section of the segment inside parentheses, or null if there was none. Try to handle the segment as $value. The segment text. Whether the segment was $value. Creates a new segment for an open property. previous segment info. name of the segment. whether this segment has a query portion or not. Creates a named stream segment previous segment info. stream property to create the segment for. Creates the first for a request. The text of the segment. Tries to parse the segment as a service operation The identifier for the segment. The query portion Whether or not the identifier referred to a service operation. Tries to parse a segment as a function or action. The previous segment before the operation to be invoked. The name of the segment The query portion Whether or not the identifier referred to an action. Creates the next segment. The text for the next segment. Tries to bind the identifier as a property. The identifier to bind. The property, if one was found. Whether a property matching the identifier was found. Tries to create a type name segment if the given identifier refers to a known type. previous segment info. The current raw segment identifier being interpreted. Parenthesis expression of this segment. Whether or not a type segment was created for the identifier. Creates a property segment previous segment info. property to create the segment for. query portion for this segment, if specified. Component for handling key expressions in URIs. Tries to create a key segment for the given filter if it is non empty. Segment on which to compose. Parenthesis expression of segment. The key segment that was created if the key was non-empty. Whether the key was non-empty. Tries to handle the current segment as a key property value. The segment text. The previous segment. The current url convention for the server. The key segment that was created if the segment could be interpreted as a key. Whether or not the segment was interpreted as a key. Determines whether the segment text is a system-reserved identifier like $'count'. The segment text. true if the segment text is a system-reserved identifier like $'count'; otherwise, false. Parses the key properties based on the segment's target type, then creates a new segment for the key. The segment to apply the key to. The key to apply. The newly created key segment. Builds segments from tokens within $select. Build a segment from a token. the token to bind The model. the entity type of the current scope based on type segments. The segment created from the token. Build a wildcard selection item the token to bind to a wildcard the model to search for this wildcard the new wildcard selection item, if we found one true if we successfully bound to a wildcard, false otherwise Tries to bind a given token as an Operation. Token to bind. The model. the current entity type to use as the binding type when looking for operations. Bound segment if the token was bound to an operation successfully, or null. True if the token was bound successfully, or false otherwise. Tries to bind a given token as an a declared structural or navigation property. Token to bind. the entity type to search for this property Bound segment if the token was bound to a declared property successfully, or null. True if the token was bound successfully, or false otherwise. Build an ISelectExpandTermParser based on settings. Build a new ISelectExpandTermParser, either with expand options or without, based on the global settings. the select or expand text to parse pointer to the top level object A new ISelectExpandTermParser Build a new ISelectExpandTermParser with default settings the clause to parse A NonOptionSelectExpandTermParser Polish a combined select expand tree. Prune off any unneccessary expands the clause to prune a pruned tree. Visit a Select property and use it to decorate a SelectExpand Tree The model used for binding. the maximum recursive depth. The expand tree to decorate. The entity type for this level of the select Build a property visitor to visit the select tree and decorate a SelectExpandClause The model used for binding. The entity type that the $select is being applied to. the maximum recursive depth. The already built expand clause to decorate Visit a System Token the system token to visit Visit a NonSystemToken the non sytem token to visit process a nonsystemtoken as a path, following any type segments if necessary the token to process The expand tree that we're decorating Translate a select tree into the right format to be used with an expand tree. Normalize a SelectToken into something that can be used to trim an expand tree. The select token to normalize Normalized SelectToken Class that represents a selection of all properties and functions on an entity. Class that specifies what properties and functions have been specified to be selected for a given entity at the current level of the expand tree. Singleton instance of . Creates the singleton instance of this class. A segment representing an alias to another url in a batch. The of the resource that this placeholder represents. The entity set from the alias. The contentId that this alias referrs to. Build a BatchReferenceSegment The contentId of this segment is referring to The of the resource that this placeholder represents. The resulting entity set Throws if the input edmType of contentID is null. Throws if the contentID is not in the right format. Translate this into something else. Type that the translator will return after translating this segment. An implementation of the translator interface. An object whose type is determined by the type parameter of the translator. Throws if the input translator is null. Handle a using an implementation of the interface. An implementation of the Handler interface. Throws if the input Handler is null. Check if this segment is equal to another segment. the other segment to check. true if the other segment is equal. Gets the of the resource that this placeholder represents. Gets the resulting entity set for this batch reference segment. Gets the contentId this alias is referrring to A segment representing $batch Gets the singleton instance of the batch segment. Build a segment to represent $batch. Translate a into something else using an implementation of . Type that the translator will return after translating this segment. An implementation of the translator interface. An object whose type is determined by the type parameter of the translator. Throws if the input translator is null. Handle a using an implementation of . An implementation of the Handler interface. Throws if the input handler is null. Check if this segment is equal to another segment. The other segment to check. True if the other segment is equivalent to this one. Throws if the input other is null Gets the of this , which is always null. Class to represent the selection of all the actions and functions in a specified container. An item that has been selected by the query at the current level of the tree. The whose actions and functions should be selected. Creates an instance of this class with the specified . The whose actions and functions should be selected. Throws if the input container is null. Gets the whose actions and functions should be selected. A segment representing $count in a path Return the singleton instance of Count Build a segment representing $count Translate a using an instance of . Type that the translator will return after visiting this token. An implementation of the translator interface. An object whose type is determined by the type parameter of the translator. Throws if the input translator is null. Handle a using an instance of . An implementation of the handler interface. Throws if the input handler is null. Check if this segment is equal to another segment. the other segment to check. true if the other segment is equal. throws if the input other is null. Gets the of this , which is always Edm.Int32. Class that knows how to resolve an IEdmExpression to find its associated EntitySet. This functionality is needed to determine what a EntitySets a FunctionImport applies to. Resolves an IEdmExpression to an IEdmEntitySet. Expression to resolve. The resolved EntitySet. A segment representing an EntitySet in a path. The entity set represented by this segment. Type of the entities in the set represented by this segment. Build a segment representing an entity set The entity set represented by this segment. Throws if the input entitySet is null. Translate an into another type using an instance of . Type that the translator will return after visiting this token. An implementation of the translator interface. An object whose type is determined by the type parameter of the translator. Throws if the input translator is null. Handle an using the an instance of the . An implementation of the handler interface. Throws if the input handler is null. Check if this segment is equal to another segment. the other segment to check. true if the other segment is equal. Throws if the input other is null. Gets the entity set represented by this segment. Gets the of this . This will always be an for the that this set contains. This represents one level of expansion for a particular expansion tree. The Path for this expand level. This path includes zero or more type segments followed by exactly one Navigation Property. The entity set for this expansion level. The filter expand option for this expandItem. Can be null if not specified(and will always be null in NonOptionMode). The orderby expand option for this expand item. Can be null if not specified(and will always be null in NonOptionMode). the top expand option for this expand item. Can be null if not specified(and will always be null in NonOptionMode). The skip option for this expand item. Can be null if not specified(and will always be null in NonOptionMode). The inlinecount option for this expand item. Can be null if not specified(and will always be null in NonOptionMode). The select that applies to this level, and any sub expand levels below this one. Create an Expand item using a nav prop, its entity set and a SelectExpandClause the path to the navigation property for this expand item, including any type segments the entity set for this ExpandItem This level select and any sub expands for this expand item. Throws if input pathToNavigationProperty is null. Create an expand item, using a navigationProperty, its entity set, and any expand options. the path to the navigation property for this expand item, including any type segments the entity set for this expand level. A filter clause for this expand (can be null) An Orderby clause for this expand (can be null) A top clause for this expand (can be null) A skip clause for this expand (can be null) An Inlinecount clause for this expand (can be null) This level select and any sub expands for this expand item. Throws if input pathToNavigationProperty is null. Gets the Path for this expand level. This path includes zero or more type segments followed by exactly one Navigation Property. Gets the EntitySet for this level. The select and expand clause for this expanded navigation. The filter clause for this expand item Gets the orderby clause for this expand item. Can be null if not specified(and will always be null in NonOptionMode). Gets the top clause for this expand item. Can be null if not specified(and will always be null in NonOptionMode). Gets the skip clause for this expand item. Can be null if not specified(and will always be null in NonOptionMode). Gets the inlinecount clause for this expand item. Can be null if not specified(and will always be null in NonOptionMode). A list of all expanded items at the next level down. The list of all expanded items at the next level down. Constructor The list of all expanded items at the next level down. The list of all expanded items at the next level down. A segment representing a key lookup in a path. The set of key property names and the values to be used in searching for the given item. The type of the item this key returns. The entity set that this key is used to search. Construct a Segment that represents a key lookup. The set of key property names and the values to be used in searching for the given item. The type of the item this key returns. The entity set that this key is used to search. Throws if the input entity set is not related to the input type. Translate a using an instance of . Type that the translator will return after visiting this token. An implementation of the translator interface. An object whose type is determined by the type parameter of the translator. Throws if the input translator is null. Handle a using an instance of . An implementation of the handler interface. Throws if the input handler is null. Check if this segment is equal to another segment. the other segment to check. true if the other segment is equal. Throws if the input other is null. Gets the set of key property names and the values to be used in searching for the given item. Gets the type of the item this key returns Gets the entity set that this key is used to search. A segment representing $metadata in a path. Gets the singleton instance of MetadataSegment Build a segment to represent $metadata Translate a . Type that the translator will return after visiting this token. An implementation of the translator interface. An object whose type is determined by the type parameter of the translator. Throws if the input translator is null. Translate a . An implementation of the translator interface. Throws if the input handler is null. Check if this segment is equal to another. the other segment to check. true if the other segment is equal. Throws if the input other is null. Gets the of this , which is always null. Class that represents a selecting none of the properties or functions at this level, but there are still relevant expansions in this subtree. Get the singleton instance of . Creates the singleton instance of this class. A segment representing a navigation property The navigation property this segment represents. Build a segment representing a navigation property. The navigation property this segment represents. The set of the entities targetted by this navigation property. This can be null. Throws if the input navigationProperty is null. Translate a . Type that the translator will return after visiting this token. An implementation of the translator interface. An object whose type is determined by the type parameter of the translator. Throws if the input translator is null. Translate a to walk a tree of s. An implementation of the translator interface. Throws if the input handler is null. Checks if this segment is equal to another segment. the other segment to check. true if the other segment is equal. Throws if the input other is null. Gets the navigation property represented by this NavigationPropertySegment. Gets the set of the entities targetted by this Navigation Property. This can be null. Gets the of this . A specific type of which can only contain instances of , , , , or . Create an ODataSelectPath The list of segments that makes up this path. Throws if the list of segments doesn't match the requirements for a path in $select Create an ODataPath object based on a single segment The list of segments that makes up this path. Throws if the list of segments doesn't match the requirements for a path in $select Ensure that the segments given to us are valid select segments. Throws if the list of segments doesn't match the requirements for a path in $select A segment representing and open property The name of this open property. Build a segment to represent an open property. The name of this open property Translate a . Type that the translator will return after visiting this token. An implementation of the translator interface. An object whose type is determined by the type parameter of the translator. Throws if the input translator is null. Handle a . An implementation of the handler interface. Throws if the input handler is null. Check if this segment is equal to another segment. the other segment to check. true if the other segment is equal. Throws if the input other is null. Gets the name of this open property. Gets the of this , which is always null. The type of open properties is unknown at this time. Represents a named parameter value for invoking an operation in an OData path. Initializes a new instance of . The name of the parameter. Cannot be null or empty. The value of the parameter. The name of the parameter. The parameter value. Class to represent the selection of a specific path. The selected path. Constructs a to indicate that a specific path is selected. The selected path. Throws if the input selectedPath is null. Gets the selected path. Class that represents a partial subset of items on a given type that have been selected at this level of the select expand tree. The subset of items that has been selected at this level. Creates a with the specified set of . The list of items on the that has been selected. The subset of items that has been selected at this level. A segment representing a structural property The structural property referred to by this segment Build a segment based on a structural property The structural property that this segment represents. Throws if the input property is null. Translate a using an instance of />. Type that the translator will return after visiting this token. An implementation of the translator interface. An object whose type is determined by the type parameter of the translator. Throws if the input translator is null. Handle a using an instance of . An implementation of the handler interface. Throws if the input handler is null. Check if this segment is equal to another segment. the other segment to check. true if the other segment is equal. Throws if the input other is null. Gets the structural property that this segment represents. Gets the of this . Class representing the combined semantic meaning of any select or expand clauses in the uri. Mapping that contains the set of navigation properties for the associated entity that should be expanded, and respective details about the expansions. Internal flag indicating that this clause was built using the legacy Selection and Expansion classes. In this case, we must call ComputeFinalSelectedItems() before handing out the object publically. The object that describes what properties and functions should be selected from the associated at this level. The selected properties and operations. This list includes expanded navigations properties, which may have additional nested selections and expansions. Gets a flag indicating that everything at this level has been selected. If true, then all structural properties, bound actions and functions, and all navigations in the SelectedItems list have been selected. Constructs a from the given parameters. The selected properties and operations. This list should include any expanded navigation properties. Flag indicating if all items have been selected at this level. Constructs a from the given parameters. The object that describes what properties and functions should be selected from the associated . Mapping that contains the set of navigation properties for the associated entity that should be expanded, and respective details about the expansions. Add a selection item to the current selection. the new selection item to add Switch to an AllSelection at this level and recursively at all levels below this one. This is non-reversable because once everything is selected, selecting a specific property or other item is redundant. Initializes the selection for this clause as ExpansionsOnly if it is not already partial. Computes the list of SelectItems that will be publically availible to consumers. Gets the selected properties and operations. This list includes expanded navigations properties, which may have additional nested selections and expansions. Gets a flag indicating that everything at this level has been selected. If true, then all structural properties, bound actions and functions, and all navigations in the SelectedItems list have been selected. Gets the object that describes what properties and functions should be selected from the associated . TODO Note that this is a legacy internal concept. At the last minute we changed the public API but chose not to change how the implementation work to manage risk. We should clean this up and remove this property. Mapping that contains the set of navigation properties for the associated entity that should be expanded, and respective details about the expansions. TODO Note that this is a legacy internal concept. At the last minute we changed the public API but chose not to change how the implementation work to manage risk. We should clean this up and remove this property. Node representing a type segment that casts an entity collection node. The entity collection node that we're casting. The target type that we're casting our entity collection node to. the type of the collection returned by this function The EntitySet that our collection comes from. Create a CollectionCastNode with the given source node and the given target type. Parent that is being cast. Type to cast to. Throws if the input source or entityType are null. Accept a that walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null. Gets the entity collection node that we're casting. Gets the type that we're casting all items in this collection to. The type of the collection represented by this node. Gets the entity type that we're casting all items in this collection to. Gets the EntitySet that our collection comes from. Gets the kind of this node. Query node representing a collection navigation property. The navigation property of the single entity this node represents. The resouce type of a single entity item from the collection represented by this node. The type of the collection represented by this node. The parent node. The EntitySet from which the collection of entities comes from. Creates a CollectionNavigationNode. The navigation property that defines the collection node. The parent of this collection navigation node. The collection node. Throws if the input source or navigation property is null. Throws if the input navigation doesn't target a collection. Creates a CollectionNavigationNode. The navigation property that defines the collection node. The source entity set. The collection node. Throws if the input navigation property is null. Throws if the input navigation doesn't target a collection. Creates a CollectionNavigationNode. The navigation property that defines the collection node. The collection node. Throws if the input navigation property is null. Throws if the input navigation doesn't target a collection. Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null. Gets the parent node of this Collection Navigation Node. Gets the target multiplicity. Gets the Navigation Property that defines this collection Node. The navigation property that defines this collection node. Gets a reference to the resource type a single entity in the collection. The type of the collection represented by this node. Gets the resouce type of a single entity from the collection. Gets the entity set containing this collection. Gets the kind of this node. The result of parsing a $filter query option. The filter expression - this should evaluate to a single boolean value. The parameter for the expression which represents a single value from the collection. Creates a . The filter expression - this should evaluate to a single boolean value. Cannot be null. The parameter for the expression which represents a single value from the collection. Cannot be null. Throws if the input expression or rangeVariable is null. Gets the filter expression - this should evaluate to a single boolean value. Gets the parameter for the expression which represents a single value from the collection. Gets the type of item returned by this clause. Represents the result of parsing the $orderby query option. The order-by expression. The direction to order. The rangeVariable for the expression which represents a single value from the collection we iterate over. The next orderby to perform after performing this orderby, can be null in the case of only a single orderby expression. Creates an . The next orderby to perform after performing this orderby, can be null in the case of only a single orderby expression. The order-by expression. Cannot be null. The direction to order. The rangeVariable for the expression which represents a single value from the collection we iterate over. Throws if the input expression or rangeVariable is null. Gets the next orderby to perform after performing this orderby, can be null in the case of only a single orderby expression. Gets the order-by expression. Gets the direction to order. Gets the rangeVariable for the expression which represents a single value from the collection we iterate over. Gets the type of a single item from the collection returned after ordering. A RangeVariable inside an any or all expression that doesn't refer to an entity set A RangeVariable, which represents an iterator variable either over a collection, either of entities or not. Exists outside of the main SemanticAST, but hooked in via a RangeVariableReferenceNode (either Non-Entity or Entity). Gets the name of the associated rangeVariable. Gets the type of entity referenced by this rangeVariable Gets the kind of this rangeVariable. The name of the associated any/all parameter (null if none) The Entity collection that this rangeVariable node iterates over The Entity set of the collection this node iterates over. The entity type of each item in the collection that this range variable iterates over. Creates a . The name of the associated any/all parameter (null if none) The entity type of each item in the collection that this range variable iterates over. The Entity collection that this rangeVariable node iterates over Throws if the input name or entityType is null. Creates a . The name of the associated any/all parameter (null if none) The entity type of each item in the collection that this range variable iterates over. The Entity set of the collection this node iterates over. Throws if the input name or entityType is null. Gets the name of the associated any/all parameter (null if none) Gets the Entity collection that this rangeVariable node iterates over Gets the Entity set of the collection this node iterates over. Gets the entity type of each item in the collection that this range variable iterates over. Gets the entity type of each item in the collection that this range variable iterates over. Gets the kind of this node. Node to represent a range variable in an Any or All clause that referrs to an entity. Base class for all semantic metadata bound nodes which represent a single composable entity value. Base class for all semantic metadata bound nodes which represent a single composable value. Gets the type of the single value this node represents. Gets the kind of this node. Gets the EntitySet containing this single entity. Gets the type of this single entity. The name of the associated range variable (null if none) The entity type of the associated range variable. The range variable that the node represents. The entity set containing the collection that this range variable iterates over. Creates an . The name of the associated range variable (null if none) The actual range variable on the bind stack that this refers to Throws if the input name or rangeVariable is null. Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null. Gets the name of the associated rangevariable (null if none) Gets the entity type of the associated range variable. Gets the entity type of the associated range variable. Gets a reference to the range variable that this node represents. Gets the entity set containing the collection that this range variable iterates over. Gets the kind of this node. A rangeVariable from an Any or All that doesn't refer to an entity set The name of the associated rangeVariable The collection that this rangeVariable node iterates over, can be null in the case of single value nodes. The type of the value the range variable represents Creates a . The name of the associated range variable. The type of the value the range variable represents. The collection that this rangeVariable node iterates over, can be null in the case of single value nodes. Throws if the input name is null. Throws if the input type reference is an entity type. Gets the name of the associated rangevariable. Gets the type of the value the range variable represents. Gets the collection that this rangeVariable node iterates over, can be null in the case of single value nodes. Gets the kind of this range variable. A node that represents a rangeVariable that iterates over a non entity collection. The name of the associated rangeVariable The type item referred to by this rangeVariable. Reference to a rangeVariable on the binding stack. Creates a . The name of the associated rangeVariable Reference to a rangeVariable on the binding stack. Throws if input name or rangeVariable is null. Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null. Gets the name of the associated rangeVariable. Gets the type item referred to by this rangeVariable. Gets the reference to a rangeVariable on the binding stack. Gets the kind of this node. Enumeration of the different kinds of RangeVariables. A range variable that referrs to entity types. A range variable that referrs to non-entity types. A segment representing a call to an action, function, or service operation. Sentinel type marking that we could not determine the return type for this segment. The list of possible FunctionImport overloads for this segment. the list of parameters to this operation. The containing the entities that this function returns. This will be null if entities are not returned by this operation, or if there is any ambiguity. The type of item returned by the operation(s), if known. Build a segment representing a call to an operation - action, function, or service operation. A single function import that this segment will represent. The containing the entities that this function returns. Throws if the input operation is null. Build a segment representing a call to an operation - action, function, or service operation. The list of possible FunctionImport overloads for this segment. The containing the entities that this function returns. Throws if the input operations is null. Creates a segment representing a call to an operation - action, function or service operation. The list of possible FunctionImport overloads for this segment. The list of parameters supplied to this segment. The containing the entities that this function returns. Creates a segment representing a call to an operation - action, function or service operation. Translate a . Type that the translator will return after visiting this token. An implementation of the translator interface. An object whose type is determined by the type parameter of the translator. Throws if the input translator is null. Handle a . An implementation of the handle interface. Throws if the input handler is null. Check if this segment is equal to another segment. the other segment to check. true if the other segment is equal. Throws if the input other is null. Ensures that the entity set and computed return type make sense. Throws if the return type computed from the function call is null, or if the return type is not in the same hierarchy as the entity set provided. Gets the list of possible FunctionImport overloads for this segment. Gets the list of parameters for this segment. Gets the of this . This value will be null for void service operations. If there are multiple candidate operations with varying return types, then this property will throw. Throws if the type is unknown. Gets the containing the entities that this function returns. This will be null if entities are not returned by this operation, or if there is any ambiguity. Node representing a function call which returns a single entity. the name of this function the list of funcitonImports represented by this node. List of arguments provided to the function. The return type of this function. The EntitySet containing the single entity that this function returns. The semantically bound parent of this function. Create a SingleEntityFunctionCallNode The name of the function to call List of arguments provided to the function. Can be null. The return type of this function. The EntitySet containing the single entity that this function returns. Throws if the input name, returnedEntityTypeReference, or entitySet is null. Create a SingleEntityFunctionCallNode The name of the function to call the list of function imports this node represents. List of arguments provided to the function. Can be null. The return type of this function. The EntitySet containing the single entity that this function returns. The semantically bound parent of this function. Throws if the input name, returnedEntityTypeReference, or entitySet is null. Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null. Gets the name of the function to call Gets the list of function imports that this node represents Gets the list of arguments provided to the function. Gets the return type of this function. Gets the EntitySet containing the single entity that this function returns. Gets the return type of this function. Gets the semantically bound parent of this function. Gets the kind of this node. Node representing an access to a collection property value. The value containing the property. The EDM property which is to be accessed. Only non-entity, collection properties are supported by this node. The resouce type of a single item from the collection represented by this node. The type of the collection represented by this node. Constructs a new . The value containing the property. The EDM property which is to be accessed. Throws if the input source or property is null. Throws if the input property is not a collection of structural properties Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null. Gets the value containing the property. Gets the EDM property which is to be accessed. Only non-entity, collection properties are supported by this node. Gets the resouce type of a single item from the collection represented by this node. The type of the collection represented by this node. Gets the kind of this node. Implementation of IEnumerable which is based on another IEnumerable but only exposes readonly access to that collection. This class doesn't implement any other public interfaces or public API unlike most other IEnumerable implementations which also implement other public interfaces. The type of the items in the read-only enumerable. The IEnumerable to wrap. Constructor. The enumerable to wrap. Returns the enumerator to iterate through the items. The enumerator object to use. Returns the (non-generic) enumerator to iterate through the items. The enumerator object to use. A segment representing a cast on the previous segment to another type. The target type of this type segment. The set containing the entities that we are casting. Build a type segment using the given . The target type of this segment, which may be collection type. The set containing the entities that we are casting. This can be null. Throws if the input edmType is null. Throws if the input edmType is not relaed to the type of elements in the input entitySet. Translate a into another type using an instance of . Type that the translator will return after visiting this token. An implementation of the translator interface. An object whose type is determined by the type parameter of the translator. Throws if the input translator is null. Handle a using an instance of . An implementation of the handler interface. Throws if the input handler is null. Check if this segment is equal to another segment. the other segment to check. true if the other segment is equal. Throws if the input other is null. Gets the of this . Gets the set containing the entities that we are casting. Singleton sentinal instance of that indicates that $select has not been processed yet. Should never be exposed to the user. Singleton instance of . Creates the singleton instance of this class. Represents an aliased parameter in a function call that has not yet been resolved to a specific value. Represents the value of a property. Indicates whether the given value is a null value. true if the value is an ODataNullValue, false otherwise. Initializes a new instance of . The alias provided as the parameter value. The EDM type of the parameter represented by this alias. The EDM type of the parameter represented by this alias. The alias provided as the parameter value. Helper methods for the URI Parser. Throws if the type is not related to the type of the given set. Type to check. Second type, which should be related to the first type. The segment that is checking this. A segment representing $value The of this . Build a segment to represnt $value. The type of the segment before $value. This may be null, for cases such as open properties. Throws if the input previousType is a colleciton type. Translate a into another object using an instance of . Type that the translator will return after visiting this token. An implementation of the translator interface. An object whose type is determined by the type parameter of the translator. Throws if the input translator is null. Handle a using an instance of . An implementation of the translator interface. Throws if the input handler is null. Check if this segment is equal to another segment. the other segment to check. true if the other segment is equal. Gets the of this . Class to represent a '*' selection item, indicating that all structural properties should be selected. Use a Select syntactic tree to populate the correct values for Selection in an already parsed Expand Semantic Tree. Visitor object to walk the select tree Constructs a new SelectBinder. The model used for binding. The entity type that the $select is being applied to. the maximum recursive depth. The already built expand clause to decorate Visits the top level select token the select token to visit A new SelectExpandClause decorated with the information from the selectToken Visitor interface for walking the Semantic Tree. Generic type produced by the visitor. Visit an AllNode the node to visit Defined by the implementer Visit an AnyNode the node to visit Defined by the implementer Visit a BinaryOperatorNode the node to visit Defined by the implementer Visit a CollectionNavigationNode the node to visit Defined by the implementer Visit a CollectionPropertyAccessNode the node to visit Defined by the implementer Visit a ConstantNode the node to visit Defined by the implementer Visit a ConvertNode the node to visit Defined by the implementer Visit an EntityCollectionCastNode the node to visit Defined by the implementer Visit an EntityRangeVariableReferenceNode the node to visit Defined by the implementer Visit a NonEntityRangeVariableNode the node to visit Defined by the implementer Visit a SingleEntityCastNode the node to visit Defined by the implementer Visit a SingleNavigationNode the node to visit Defined by the implementer Visit a SingleEntityFunctionCallNode the node to visit Defined by the implementer Visit a SingleValueFunctionCallNode the node to visit Defined by the implementer Visit a EntityCollectionFunctionCallNode the node to visit Defined by the implementer Visit a CollectionFunctionCallNode the node to visit Defined by the implementer Visit a SingleValueOpenPropertyAccessNode the node to visit Defined by the implementer Visit a SingleValuePropertyAccessNode the node to visit Defined by the implementer Visit a UnaryOperatorNode the node to visit Defined by the implementer Visit a NamedFunctionParameterNode. The node to visit. Defined by the implementer Lexical token representing an expand operation. The nav prop path for this ExpandTerm the filter option for this expand term the order by option for this expand term the top option for this expand term the skip option for this expand term. the inlineCount option for this expand term. the select option for this expand term. the expand option for this expand term. Create an expand term token using only a property the path to the navigation property Create an expand term using only the property and its subexpand/select the path to the navigation property for this expand term the sub select for this token the sub expand for this token Create an expand term token the nav prop for this expand term the filter option for this expand term the orderby option for this expand term the top option for this expand term the skip option for this expand term the inlineCountOption for this expand term the select option for this expand term the expand option for this expand term Implement the visitor for this Token The type to return A tree visitor that will visit this node. Determined by the return type of the visitor. the nav property for this expand term The filter option for this expand term. the orderby option for this expand term. the top option for this expand term. the skip option for this expand term. the inline count option for this expand term. the select option for this expand term. the expand option for this expand term. the kind of this expand term. Lexical token representing an expand operation. The properties according to which to expand in the results. Create a ExpandToken given the property-accesses of the expand query. The properties according to which to expand the results. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The kind of the query token. The properties according to which to expand in the results. Lexical token representing a segment in a path. Lexical token representing a segment in a path. the next token in the path build this segment token using the next token the next token in the path Is this token namespace or container qualified. true if this token is namespace or container qualified. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Accept a to walk a tree of s. An implementation of the visitor interface. internal setter for the next token. the next token to set. Get the NextToken in the path The name of the property to access. Any named values for this NonSystemToken The identifier for this token. Build a NonSystemToken the identifier of this token a list of named values for this token the next token in the path Is this token namespace or container qualified. true if this token is namespace or container qualified. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Accept a to walk a tree of s. An implementation of the visitor interface. Get the list of named values for this token. Get the identifier for this token. Lexical token representing a segment in a path. The NextToken in the path(can either be the parent or the child depending on whether the tree has been normalized for expand or not. TODO: need to revisit this and the rest of the syntactic parser to make it ready for public consumption. The name of the property to access. Lexical token representing a System token such as $count The identifier for this SystemToken Build a new System Token the identifier for this token. the next token in the path Is this token namespace or container qualified. always false, since this is a system token. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Accept a to walk a tree of s. An implementation of the visitor interface. Get the identifier for this token Visitor interface for walking the Syntactic Tree. Generic type produced by the visitor. Visit an AllToken The All token to visit An AllNode bound to this token Visits an AnyToken The Any token to visit An AnyNode that's bound to this token Visits a BinaryOperatorToken The Binary operator token to visit. A BinaryOperatorNode thats bound to this token Visits a DottedIdentifierToken The DottedIdentifierToken to visit Either a SingleEntityCastNode, or EntityCollectionCastNode bound to this DottedIdentifierToken Visits an ExpandToken The ExpandToken to visit A QueryNode bound to this ExpandToken Visits an ExpandTermToken The ExpandTermToken to visit A QueryNode bound to this ExpandTermToken Visits a FunctionCallToken The FunctionCallToken to visit A SingleValueFunctionCallNode bound to this FunctionCallToken Visits a LiteralToken The LiteralToken to visit A ConstantNode bound to this LambdaToken Visits a LambdaToken The LambdaToken to visit A LambdaNode bound to this LambdaToken Visits a InnerPathToken The InnerPathToken to bind A SingleValueNode or SingleEntityNode bound to this InnerPathToken Visits an OrderByToken The OrderByToken to bind An OrderByClause bound to this OrderByToken Visits an EndPathToken The EndPathToken to bind A PropertyAccessClause bound to this EndPathToken Visits a CustomQueryOptionToken The CustomQueryOptionToken to bind A CustomQueryOptionNode bound to this CustomQueryOptionToken Visits a RangeVariableToken The RangeVariableToken to bind An Entity or NonEntity RangeVariableReferenceNode bound to this RangeVariableToken Visits a SelectToken The SelectToken to bind A QueryNode bound to this SelectToken Visits a StarToken The StarToken to bind A QueryNode bound to this StarToken Visits a UnaryOperatorToken The UnaryOperatorToken to bind A UnaryOperatorNode bound to this UnaryOperatorToken Visits a FuntionParameterToken The FunctionParameterToken to bind A user defined value Walk down a chain of type segments, checking that we find the correct type at each level. Follow any type segments on the path, stopping at the first segment that isn't a type token. the first type segment the model these types are contained in. the maximum recursive depth the top level entity type, will be overwritten with the last entity type in the chain the first non type token in the path A path with type segments added to it. An enumeration that lists the internal errors. Unreachable codepath in TypePromotionUtils.GetFunctionSignatures(BinaryOperatorKind), unrecognized kind of binary operator. Unreachable codepath in TypePromotionUtils.GetFunctionSignatures(UnaryOperatorKind), unrecognized kind of unary operator. Unreachable codepath in MetadataBinder.BindServiceOperation, unrecognized kind of service opertion. Unreachable codepath in QueryExpressionTranslator.TranslateBinaryOperator, unrecognized kind of binary operator. Unreachable codepath in UriPrimitiveTypeParser.HexCharToNibble Unreachable codepath in UriQueryExpressionParser.ParseComparison Was a new binary operator keyword without adding it to the switch in the ParseComparison? Unreachable codepath in UriPrimitiveTypeParser.TryUriStringToPrimitive Unsupported type was asked to be parsed. Unreachable codepath in QueryNodeUtils.BinaryOperatorResultType, unrecognized kind of binary operator. Unreachable codepath in QueryExpressionTranslator.TranslateUnaryOperator, unrecognized kind of unary operator. Unreachable codepath in BinaryOperator.GetOperator, unrecognized kind of binary operator. Unreachable codepath in ODataUriBuilder.WriteUnary, unrecognized kind of unary operator. Unreachable codepath in ODataUriBuilderUtils.ToText(InlineCountKind), unrecognized kind of inline count. Query node representing an All query. Node representing an Any/All query. The collection of rangeVariables in scope for this Any or All. The newest range variable added for by this Any or All. Create a LambdaNode The collection of rangeVariables in scope for this Any or All. Create a LambdaNode The collection of rangeVariables in scope for this Any or All. The newest range variable added for by this Any or All. Gets the collection of rangeVariables in scope for this Any or All. Gets the newest range variable added for by this Any or All. Gets or Sets the associated boolean expression Gets or Sets the parent entity set or navigation property Create an AllNode The name of the rangeVariables list. Create an AllNode The name of the rangeVariables list. The new range variable being added by this all node Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null The resource type of the single value this node represents. Gets the kind of this node. Lexical token representing the All Query Lexical token representing the Any/All Query The parent token. The parameter which denotes source type. The expression component of Any. Create a AnyAllQueryToken given the expression, parameter, and parent The associated expression. The parameter denoting source type. The parent token. Pass null if this property has no parent. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The parent token. The expression. The parameter. Create a AllToken given the expression, parameter, and parent The associated expression. The parameter denoting source type. The parent token. Pass null if this property has no parent. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The kind of the query token. Query node representing an Any query. Create a AnyNode The name of the parameter list. Create a AnyNode The name of the parameter list. The name of the new range variable being added by this AnyNode Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null. The resource type of the single value this node represents. Gets the kind of this node. Lexical token representing the Any Query Create a AnyToken given the expression, parameter, and parent The associated expression. The parameter denoting source type. The parent token. Pass null if this property has no parent. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The kind of the query token. In-memory annotation class to associate CLR instance types with (non-primitive) EDM types. true if reflection over the instance type is supported; otherwise false. The instance type represented by this annotation. In-memory annotation class to associate a result kind with a service operation. The result kind of the service operation. Annotation to hold information for a particular property. true if reflection over the property is allowed; otherwise false. Use this type to describe the kind of results returned by a service operation. A single direct value which cannot be further composed. An enumeration of values which cannot be further composed. A queryable object which returns multiple elements. A queryable object which returns a single element. No result return. Lexical token representing a single nonroot segment in the query path. The Identifier of the segment. The named values in the key lookup for this segment. If the segment has no key lookup, then this property is null. If the segment has empty key lookup (), then this property is an empty collection. The NextToken segment. Create a new StartPathToken given the Identifier and NextToken and namedValues if any The Identifier of the segment, the identifier. The NextToken segment, or null if this is the root segment. The named values in the key lookup for this segment. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The kind of the query token. The Identifier of the segment, the identifier. The NextToken segment, or null if this is the root segment. The named values in the key lookup for this segment. If the segment has no key lookup, then this property is null. If the segment has empty key lookup (), then this property is an empty collection. Utility methods used with the OData Query library. Checks whether reflection over the property is allowed or not. The property to check. The model containing annotations. true if reflection over the property is allowed; otherwise false. Sets whether reflection over the property is allowed or not. The property to check. The model containing annotations. true if reflection over the property is allowed; otherwise false. Gets the result kind of the . The to check. The containing the annotation. The result kind of the or null if no result kind annotation exists. Sets the result kind of the . The to check. The containing the annotation. The result kind to set. Resolves a name to an instance. The model to resolve the name against. The name of the service operation to look up. An instance with the specified ; if no such service operation exists the method throws. Resolves a name to an instance. The model to resolve the name against. The name of the service operation to look up. An instance with the specified or null if no such service operation exists. Returns the instance type for the specified or null if none exists. The type reference to get the instance type for. The model containing annotations. The instance type for the or null if no instance type exists. All primitive type references are guaranteed to have an instance type. Returns the instance type for the specified or null if none exists. The type to get the instance type for. The model containing annotations. The instance type for the or null if no instance type exists. Sets the instance type for the specified ; if null is specified an existing instance type will be removed. The type to get the instance type for. Model containing annotations. The instance type for the or null to remove an existing instance type. Checks whether reflection over the instance type is allowed or not. The type reference to check. Model containing annotations. true if reflection over the instance type is allowed; otherwise false. Sets whether reflection over the instance type is allowed or not. The type reference to check. The model containing annotations. true if reflection over the instance type is allowed; otherwise false. Sets whether reflection over the instance type is allowed or not. The type to check. Model containing annotations. true if reflection over the instance type is allowed; otherwise false. Resolves a name to an instance. The model to resolve the name against. The name of the entity set to look up. An instance with the specified ; if no such entity set exists the method throws. Resolves a name to an instance. The model to resolve the name against. The name of the entity set to look up. An instance with the specified or null if no such entity set exists. Method that checks whether a function import is a service operation. The containing annotations. The to check. true if the represents a service operation; otherwise false. A is considered a service operation if it is annotated with an m:HttpMethod attribute. Method that checks whether a function import is an action. The containing annotations. The to check. true if the represents an action; otherwise false. A is considered an action if it is side-effecting but not annotated with an m:HttpMethod attribute. Class to wrap around BinaryOperatorKind that gives precedent meaning to it. Wrapper for Add operator kind. Wrapper for And operator kind. Wrapper for Divide operator kind. Wrapper for Equal operator kind. Wrapper for GreaterThanOrEqual operator kind. Wrapper for GreaterThan operator kind. Wrapper for LessThanOrEqual operator kind. Wrapper for LessThan operator kind. Wrapper for Modulo operator kind. Wrapper for Multiply operator kind. Wrapper for NotEqual operator kind. Wrapper for Or operator kind. Wrapper for Subtract operator kind. The text for this operator. The precedence for this operator. Whether it needs parentheses against other same operator. Create a new BinaryOperator given its text, precedence, and whether it needs parentheses against other same operator. The text for this operator. The precedence for this operator in relative to other operators. Whether it needs parentheses when nesting with other operators of same precedence. Get the BinaryOperator wrapper for the given operatorKind. The kind to get wrapper for. The binary operator for the specified . Whether it needs parentheses against other same operator. The precedence for this operator. The text for this operator. Lexical token representing a binary operator. The operator represented by this node. The left operand. The right operand. Create a new BinaryOperatorToken given the operator, left and right query. The operator represented by this node. The left operand. The right operand. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The kind of the query token. The operator represented by this node. The left operand. The right operand. Enumeration of binary operators. The logical or operator. The logical and operator. The eq operator. The ne operator. The gt operator. The ge operator. The lt operator. The le operator. The add operator. The sub operator. The mul operator. The div operator. The mod operator. Class to handle writing an BinaryOperatorToken. This class optimizes on reducing parentheses as base on operator precedence. The parent ODataUriBuilder that invokes this binary operator builder. Create a new BinaryOperatorToken for the given Uri builder to write BinaryOperatorToken. The parent builder of this builder. Write the given binary token as Uri part. To write as Uri part. Determine whether parentheses are needed around the left subtree base on the current operator. The current binary node's operator. The left binary subtree. True if need parenthese, false if not. Determine whether parentheses are needed around the right subtree base on the current operator. The current binary node's operator. The right binary subtree. True if need parentheses, false if not. Write the given binary token as Uri part. Whether parentheses are needed around the written expression. To write as Uri part. Class containing definitions of all the built-in functions. Dictionary of the name of the built-in function and all the signatures. Returns a list of signatures for a function name. The name of the function to look for. The list of signatures available for the function name. true if the function was found, or false otherwise. Builds a description of a list of function signatures. Function name. Function signatures. A string with ';'-separated list of function signatures. Creates all of the spatial functions Dictionary of functions to add to. Builds the list of all built-in functions. Returns a dictionary of built in functions. Creates all string functions. Dictionary of functions to add to. Creates all date and time functions. Dictionary of functions to add to. Builds an array of signatures for date time functions. The array of signatures for a date time functions. Builds the set of signatures for timespan functions. The set of signatures for timespan functions. Creates all math functions. Dictionary of functions to add to. Builds an array of signatures for math functions. The array of signatures for math functions. Node representing a primitive constant value. The primitive constant value. Cache for the TypeReference after it has been calculated for the current state of the node. Create a ConstantNode This node's primitive value. The literal text for this node's value, formatted according to the OData URI literal formatting rules. Throws if the input literalText is null. Create a ConstantNode This node's primitive value. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null. Gets the primitive constant value. Get or Set the literal text for this node's value, formatted according to the OData URI literal formatting rules. May be null if the text was not provided at construction time. Gets the resouce type of the single value this node represents. Gets the kind of the query node. Node representing a conversion of primitive type to another type. The source value to convert. The target type that the source will be converted to. Constructs a ConvertNode. The node to convert. The type to convert the node to Throws if the input source or typeReference is null. Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null. Get the source value to convert. Get the type we're converting to. Get the kind of this node. Query node representing a binary operator. The operator represented by this node. The left operand. The right operand. Cache for the TypeReference after it has been calculated for the current state of the node. This can be an expensive calculation so we want to avoid doing it repeatedly. Create a BinaryOperatorNode The binary operator type. The left operand. The right operand. Throws if the left or right inputs are null. Throws if the two operands don't have the same type. Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. throws if the input visitor is null. Gets the operator represented by this node. Gets the left operand. Gets the right operand. Gets the resource type of the single value this node represents. Gets the kind of this node. Possible values of $inlinecount. Do not include count in response. Include the count of all entries in response. Keyword enum values related to the URI query syntax such as $metadata, $count, $value, etc. A segment name in a URI that indicates metadata is being requested. A segment name in a URI that indicates a plain primitive value is being requested. A segment name in a URI that indicates batch is being requested. A segment name in a URI that indicates that this is an entity reference link operation. A segment name in a URI that indicates that this is a count operation. Helper methods for with literals. Parse the given text as a Geography literal. The text to parse. The Geography object if succeeded, else a ParseErrorException is thrown. Parse the given text as a Geometry literal. The text to parse. The Geometry object if succeeded, else a ParseErrorException is thrown. Convert to string the given Geography instance. Instance to convert. Well-known text representation. Convert to string the given Geometry instance. Instance to convert. Well-known text representation. The formatter to create/format text to and from spatial. URI builder that constructes a from the parsed query tokens. The query token to write to Uri. The string builder to write the query token to. Create a new Uri builder for the given token. The token to write out as Uri. Create a URI for the given queryDescriptor given the base service URI. The base service URI. The query descriptor to create the result URI from. An absolute URI that base on the baseUri and represent the queryDescriptor. Get the Uri string representation of the given CLR object literal. The object to return as literal. Uri string represent if is a CLR literal. Throw exception if not. Write the descriptor token as URI part to this builder. To write as URI part. Append the given text to this builder. The text to append. Write the query token as URI part to this builder. To write as URI part. Write the Uri string representation of the given CLR object literal to the given builder. The to write the to. The object to write as literal. Build the queryToken as Uri string part. The Uri part representing the queryToken. Write the binary token as URI part to this builder. To write as URI part. Write the function call token as URI part to this builder. To write as URI part. Writes a path to this builder. Array of segments. Write the literal token as URI part to this builder. To write as URI part. Write the orderby tokens as URI part to this builder. To write as URI part. Write the orderby token as URI part to this builder. To write as URI part. Write out a PathSegmentToken the pathSegmentToken to write. Write the property access token as URI part to this builder. To write as URI part. Write the navigation property token as URI part to this builder. To write as URI part. Write the given queryOption as Uri part. To write as URI part. Write ? or & depending on whether it is the start of the whole query or query part. True if start of whole query, false if not. This is set to false after this method is called. Write the select token as URI part to this builder. To write as URI part. Write the expand token as URI part to this builder. To write as URI part. Write the star token as URI part to this builder. To write as URI part. Write the unary token as URI part to this builder. To write as URI part. Constants and utility methods for the OData URI builder. The format for integer ToString output. The format for float ToString output. The format for byte ToString output. The format for double ToString output. The format for DateTime ToString output. The format for DateTimeOffset ToString output. The format for Decimal ToString output. The format for Double ToString output. Escape a string literal by replacing single ' with ''. Text to escape. A string where all ' is replaced by ''. Returns the string representation of the inline count kind. The inline count kind to convert to string. The string representation of the . Throw ODataException on the given QueryTokenKind as not supported for writing to Uri. QueryTokenKind that is not supported. Throw ODataException on the given CLR type as not supported for writing to Uri. CLR type that is not supported. Use this class to perform late-bound operations on open properties. This class was copied from the product. MethodInfo for Add. MethodInfo for AndAlso. MethodInfo for Convert. MethodInfo for Divide. MethodInfo for Equal. MethodInfo for GreaterThan. MethodInfo for GreaterThanOrEqual. MethodInfo for LessThan. MethodInfo for LessThanOrEqual. MethodInfo for Modulo. MethodInfo for Multiply. MethodInfo for Negate. MethodInfo for Not. MethodInfo for NotEqual. MethodInfo for OrElse. MethodInfo for Subtract. MethodInfo for TypeIs. MethodInfo for object OpenTypeMethods.GetValue(this object value, string propertyName). Gets a named value from the specified object. Object to get value from. Name of property to get. The requested value; null if not found. Adds two values with no overflow checking. Left value.Right value. The added value. Performs logical and of two expressions. Left value.Right value. The result of logical and. Divides two values. Left value.Right value. The divided value. Checks whether two values are equal. Left value.Right value. true if left equals right; false otherwise. Checks whether the left value is greater than the right value. Left value.Right value. true if left is greater than right; false otherwise. Checks whether the left value is greater than or equal to the right value. Left value.Right value. true if left is greater than or equal to right; false otherwise. Checks whether the left value is less than the right value. Left value.Right value. true if left is less than right; false otherwise. Checks whether the left value is less than or equal to the right value. Left value.Right value. true if left is less than or equal to right; false otherwise. Calculates the remainder of dividing the left value by the right value. Left value.Right value. The remainder value. Multiplies two values with no overflow checking. Left value.Right value. The multiplication value. Checks whether two values are not equal. Left value.Right value. true if left is does not equal right; false otherwise. Performs logical or of two expressions. Left value.Right value. The result of logical or. Subtracts the right value from the left value. Left value.Right value. The subtraction value. Negates (arithmetically) the specified value. Value. The negated value. Negates (logically) the specified value. Value. The negated value. Performs an type cast on the specified value. Value. Type reference to check for. Casted value. Performs an type check on the specified value. Value. Type reference to check for. True if value is-a type; false otherwise. Concats the given 2 string. first string. second string. returns a new instance of the concatenated string. Checks with the parameters are of string type, if no, then they throw. Otherwise returns true if the target string ends with the given sub string target string sub string Returns true if the target string ends with the given sub string, otherwise return false. Returns the index of the given substring in the target string. target string sub string to match returns the index of the given substring in the target string if present, otherwise returns null. Returns the length of the given string value. If the value is not of string type, then it throws. value whose length needs to be calculated. length of the string value. Replaces the given substring with the new string in the target string. target string substring to be replaced. new string that replaces the sub string. returns a new string with the substring replaced with new string. Checks whether the target string starts with the substring. target string. substring returns true if the target string starts with the given sub string, otherwise returns false. Returns the substring given the starting index target string starting index for the substring. the substring given the starting index. Returns the substring from the target string. target string. starting index for the substring. length of the substring. Returns the substring given the starting index and length. Checks whether the given string is a substring of the target string. substring to check for. target string. returns true if the target string contains the substring, otherwise returns false. Returns a copy of the target string converted to lowercase. target string a new string instance with everything in lowercase. Returns a copy of the target string converted to uppercase. target string a new string instance with everything in uppercase. Removes all leading and trailing white-space characters from the target string. target string. returns the trimed string. Returns the year value of the given datetime. datetime object. returns the year value of the given datetime. Returns the month value of the given datetime. datetime object. returns the month value of the given datetime. Returns the day value of the given datetime. datetime object. returns the day value of the given datetime. Returns the hour value of the given datetime. datetime object. returns the hour value of the given datetime. Returns the minute value of the given datetime. datetime object. returns the minute value of the given datetime. Returns the second value of the given datetime. datetime object. returns the second value of the given datetime. Returns the ceiling of the given value decimal or double object. returns the ceiling value for the given double or decimal value. returns the floor of the given value. decimal or double object. returns the floor value for the given double or decimal value. Rounds the given value. decimal or double object. returns the round value for the given double or decimal value. Creates an expression that adds two values with no overflow checking. Left value.Right value. The added value. Creates a call expression that represents a conditional AND operation that evaluates the second operand only if it has to. Left value.Right value. The conditional expression; null if the expressions aren't of the right type. Creates an expression that divides two values. Left value.Right value. The divided value. Creates an expression that checks whether two values are equal. Left value.Right value. true if left equals right; false otherwise. Creates an expression that checks whether the left value is greater than the right value. Left value.Right value. true if left is greater than right; false otherwise. Creates an expression that checks whether the left value is greater than or equal to the right value. Left value.Right value. true if left is greater than or equal to right; false otherwise. Creates an expression that checks whether the left value is less than the right value. Left value.Right value. true if left is less than right; false otherwise. Creates an expression that checks whether the left value is less than or equal to the right value. Left value.Right value. true if left is less than or equal to right; false otherwise. Creates an expression that calculates the remainder of dividing the left value by the right value. Left value.Right value. The remainder value. Creates an expression that multiplies two values with no overflow checking. Left value.Right value. The multiplication value. Creates a call expression that represents a conditional OR operation that evaluates the second operand only if it has to. Left value.Right value. The conditional expression; null if the expressions aren't of the right type. Creates an expression that checks whether two values are not equal. Left value.Right value. true if left is does not equal right; false otherwise. Creates an expression that subtracts the right value from the left value. Left value.Right value. The subtraction value. Creates an expression that negates (arithmetically) the specified value. Value expression. The negated value. Creates an expression that negates (logically) the specified value. Value expression. The negated value. Returns the specified with a type assignable to System.Object. Expression to convert. The specified with a type assignable to System.Object. Lexical token representing the parameter for an Any/All query. The name of the Any/All parameter. Create a new RangeVariableToken The name of the visitor for the Any/All query. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The kind of the query token. The name of the parameter. Lexical token representing a query option. The name of the query option. The value of the query option. Create a new CustomQueryOptionToken given name and value. The name of the query option. The value of the query option. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The kind of the query token. The name of the query option. The value of the query option. Helper methods for working with query tokens. Try to parse the given string as a InlineCountKind. The string to be parsed. A InlineCountKind value if successful. Null if not. Try to parse the given segment name as a KeywordKind. The segment name. A KeywordKind value if successful. Null if not. Get the Uri name equivalent of the given KeywordKind. The KeywordKind to get name for. A $ keyword that represent the given keyword. Lexical token representing a select operation. The properties according to which to select the results. Create a SelectToken given the property-accesses of the select query. The properties according to which to select the results. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The kind of the query token. The properties according to which to select the results. Node representing a function call which returns a single value. the name of this function. The list of function imports List of arguments to this function call. The type of value returned by this function. The semantically bound parent of this function Create a SingleValueFunctionCallNode The name of the function to call List of arguments to this function call. The type of value returned by this function. Throws if the input name is null. Create a SingleValueFunctionCallNode The name of the function to call the list of functions to call the list of arguments to this function the type of the value returned by this function. The semantically bound parent of this function. Throws if the input functionImports is null. Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null. Gets the name of the function to call. Gets the list of function imports. Gets the list of arguments to this function call. Gets The type of value returned by this function. Gets the semantically bound parent of this function. Gets the kind of this node. Class representing a function signature using EDM types. The argument types for this function signature. Constructor taking all the argument types. The argument types for this function signature. The argument types for this function signature. Class representing a function signature using EDM types. The return type of this function signature. Constructor taking all the argument types. The return type of this function signature. The argument types for this function signature. The return type of this function signature. Lexical token representing an all-properties access. The NextToken token to access the property on. If this is null, then the property access has no NextToken. That usually means to access the property on the implicit parameter for the expression, the result on which the expression is being applied. Create a new StarToken given the NextToken (if any). The NextToken token to access the property on. Pass no if this property has no NextToken. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The kind of the query token. The NextToken token to access the property on. If this is null, then the property access has no NextToken. That usually means to access the property on the implicit parameter for the expression, the result on which the expression is being applied. the name of this token(inherited from PathToken), which in this case is always "*" Helper methods for promoting argument types of operators and function calls. Note that the lists of signatures are for matching primitive types to functions. Equality (eq and ne) operators are a bit special since they are also defined for entity and complex types. Function signatures for logical operators (and, or). Function signatures for the 'not' operator. Function signatures for arithmetic operators (add, sub, mul, div, mod). Function signatures for relational operators (eq, ne, lt, le, gt, ge). Function signatures for the 'negate' operator. Checks that the operands (possibly promoted) are valid for the specified operation. The operator kind to promote the operand types for. Type reference of left operand. Type reference of right operand. True if a valid function signature was found that matches the given types after any necessary promotions are made. False if there is no binary operators Checks that the operands (possibly promoted) are valid for the specified operation. The operator kind to promote the operand types for. Type of the operand. True if the type could be promoted; otherwise false. Finds the best fitting function for the specified arguments. Functions to consider. Types of the arguments for the function. The best fitting function; null if none found or ambiguous. Finds the exact fitting function for the specified arguments. Functions to consider. Types of the arguments for the function. The exact fitting function; null if no exact match was found. Checks whether the source type is compatible with the target type. Source type. Target type. true if source can be used in place of target; false otherwise. Gets the correct set of function signatures for type promotion for a given binary operator. The operator kind to get the signatures for. The set of signatures for the specified . Gets the correct set of function signatures for type promotion for a given binary operator. The operator kind to get the signatures for. The set of signatures for the specified . Finds the best methods for the specified arguments given a candidate method enumeration. The candidate function signatures. The argument type references to match. The number of "best match" methods. Checks whether the specified method is applicable given the argument expressions. The candidate function signature to check. The argument types to match. An applicable function signature if all argument types can be promoted; 'null' otherwise. Promotes the specified expression to the given type if necessary. The actual argument type. The required type to promote to. True if the could be promoted; otherwise false. Finds the best applicable methods from the specified array that match the arguments. The candidate function signatures. The argument types to match. Best applicable methods. Checks whether the type list has better argument matching against the than the type list. Actual arguments types. First type list to check. Second type list to check. True if has better parameter matching than ; otherwise false. Checks which conversion is better. Source type. First candidate type to convert to. Second candidate type to convert to. Return 1 if s -> t1 is a better conversion than s -> t2 Return -1 if s -> t2 is a better conversion than s -> t1 Return 0 if neither conversion is better Tries to handle the special eq and ne operators, which have a broader definition than the other binary operators. We try a few special cases and return true if we used one of them. Otherwise we return false, and allow the regular function matching code to handle the primitive cases. Left type. Right type. True if this function was able to handle the promotion of these types, false otherwise. Checks whether the specified type is a signed integral type. Type reference to check. true if is a signed integral type; false otherwise. Checks whether the specified type is an unsigned integral type. Type to check. true if is an unsigned integral type; false otherwise. Checks if the specified type is a decimal or nullable decimal type. Type to check. true if is either decimal or nullable decimal type; false otherwise. Checks if the specified type is either double or single or the nullable variants. Type to check. true if is double, single or nullable double or single; false otherwise. Gets a flag for the numeric kind of type. Type to get numeric kind for. The of the argument. Numeric type kinds. A type that is not numeric. A type that is a char, single, double or decimal. A type that is a signed integral. A type that is an unsigned integral. Extension methods to make it easier to work with PropertyInfo objects on a type. Gets the property info for the EDM property on the specified type. The type to get the property on. Property instance to get the property info for. Model containing annotations. Returns the PropertyInfo object for the specified property. The method searches this type as well as all its base types for the property. Annotation stored on a type to hold PropertyInfo objects for its properties. Cache of property info objects already created for properties on the type the annotation is on. Gets the property info annotation for the specified type or creates a new one if it doesn't exist. The type to get the annotation for. The model containing annotations. The property info annotation. Gets the property info for the EDM property declared on this type. The structured type to get the property on. Property instance to get the property info for. The model containing annotations. Returns the PropertyInfo object for the specified EDM property. Node representing an access to a property value. The value containing this property. The EDM property which is to be accessed. Only non-entity, non-collection properties are supported by this node. Constructs a . The value containing this property. The EDM property which is to be accessed. Throws if input source or property is null. Throws if input property is not structural, or is a collection. Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null. Gets the value containing this property. Gets the EDM property which is to be accessed. Only non-entity, non-collection properties are supported by this node. Gets the type of the single value this node represents. Gets the kind of this node. Node representing a type segment that casts a single entity parent node. The entity that we're casting to a different type. The target type that the source is cast to. The EntitySet containing the source entity. Created a SingleEntityCastNode with the given source node and the given type to cast to. Source that is being cast. Type to cast to. Throws if the input entityType is null. Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Gets the entity that we're casting to a different type. Gets the target type that the source is cast to. Gets the target type that the source is cast to. Gets the EntitySet containing the source entity.. Gets the kind of this query node. Lexical token representing a type segment. The Identifier of the type segment. The parent segment. Create a TypeSegmentQueryToken given the Identifier and the parent (if any) The Identifier of the type segment, including the namespace. The parent segment. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The kind of the query token. The full name of the type. The parent. Node representing a unary operator. The operand of the unary operator. The operator represented by this node. Cache for the TypeReference after it has been calculated for the current state of the node. This can be an expensive calculation so we want to avoid doing it repeatedly. Creates a UnaryOperatorNode the kind of operator this node represents the operand that this operator modifies Throws if the input operand is null. Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null. Gets the operator represented by this node. Gets the operand of the unary operator. Gets the type of the single value this node represents. Gets the kind of this query node. Helper methods for working with query nodes. Checks whether a query node is a collection query node representing a collection of entities. The to check. The converted or null if is not an entity collection node. Checks whether a query node is a collection query node representing a collection. The to check. The converted or null if is not a collection node. Compute the result type of a binary operator based on the type of its operands and the operator kind. The type reference of the operators. The kind of operator. The result type reference of the binary operator. Use this class to parse an expression in the OData URI format. Literals (non-normative "handy" reference - see spec for correct expression): Null null Boolean true | false Int32 (digit+) Int64 (digit+)(L|l) Decimal (digit+ ['.' digit+])(M|m) Float (digit+ ['.' digit+][e|E [+|-] digit+)(f|F) Double (digit+ ['.' digit+][e|E [+|-] digit+) String "'" .* "'" DateTime datetime"'"dddd-dd-dd[T|' ']dd:mm[ss[.fffffff]]"'" DateTimeOffset datetimeoffset"'"dddd-dd-dd[T|' ']dd:mm[ss[.fffffff]]-dd:mm"'" Time time"'"dd:mm[ss[.fffffff]]"'" Binary (binary|X)'digit*' GUID guid'digit*' For an identifier, EMD supports chars that match the regex [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Lm}\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\p{Cf}] IsLetterOrDigit covers Ll, Lu, Lt, Lo, Lm, Nd, this set covers the rest Text being parsed. Length of text being parsed. flag to indicate whether to delimit on a semicolon. Whether the lexer is being used to parse function parameters. If true, will allow/recognize parameter aliases and typed nulls. Position on text being parsed. Character being processed. Token being processed. Lexer ignores whitespace Initializes a new . Expression to parse. If true, this constructor will call NextToken() to move to the first token. If true, the lexer will tokenize based on semicolons as well. Initializes a new . Expression to parse. If true, this constructor will call NextToken() to move to the first token. If true, the lexer will tokenize based on semicolons as well. Whether the lexer is being used to parse function parameters. If true, will allow/recognize parameter aliases and typed nulls. Determines if the next token can be processed without error without advancing the token. The next ExpressionToken. This value is undefined if error is defined. Exception generated from trying to process the next token. True if the next token can be processed, false otherwise. Reads the next token, skipping whitespace as necessary, advancing the Lexer. The next token. Throws on error. Starting from an identifier, reads a sequence of dots and identifiers, and returns the text for it, with whitespace stripped. do we allow a star in this identifier The dotted identifier starting at the current identifier. Returns the next token without advancing the lexer. The next token. Check whether the current identifier is a function. If so, expand the token text to the function signature True if the current identifier is a function call Validates the current token is of the specified kind. Expected token kind. Creates an exception for a parse error. Message text. A new Exception. Reads the next token, skipping whitespace as necessary. Error that occurred while trying to process the next token. The next token, which may be 'bad' if an error occurs. Expand the token selection if the next token matches the input token the list of token id to match true if matched Handles lexemes that are formed by an identifier followed by a quoted string. This method modified the token field as necessary. Advanced to the next character. Parses a token that starts with a digit. The kind of token recognized. Parses white spaces Parses a complex value the starting delimiter the ending delimiter. Advance the pointer to the next occurance of the given value, swallowing all characters in between. the ending delimiter. Parses an identifier by advancing the current character. Sets the text position. New text position. Validates the current character is a digit. Token being processed. Text being parsed. Position on text being parsed. Is the current char a valid starting char for an identifier. Valid starting chars for identifier include all that are supported by EDM ([\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Lm}\p{Nl}]) and '_'. Is the current char a valid non-starting char for an identifier. Valid non-starting chars for identifier include all that are supported by EDM [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Lm}\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\p{Cf}]. This list includes '_', which is ConnectorPunctuation (Pc) This class implements IEqualityComparer for UnicodeCategory Using this class rather than EqualityComparer<T>.Default saves from JIT'ing it in each AppDomain. Checks whether two unicode categories are equal first unicode category second unicode category true if they are equal, false otherwise Gets a hash code for the specified unicode category the input value The hash code for the given input unicode category, the underlying int Use this class to represent a lexical expression token. Token representing gt keyword Token representing eq keyword Token representing lt keyword InternalKind of token. Token text. Position of token. Provides a string representation of this token. String representation of this token. Gets the current identifier text. The current identifier text. Checks that this token has the specified identifier. Identifier to check. true if this is an identifier with the specified text. Checks whether this token is a comparison operator. Checks whether this token is an equality operator. Checks whether this token is a valid token for a key value. Checks whether this token is a valid token for a function parameter. Enumeration values for token kinds. Unknown. End of text. '=' - equality character. Identifier. NullLiteral. BooleanLiteral. StringLiteral. IntegerLiteral. Int64 literal. Single literal. DateTime literal. DateTimeOffset literal. Time literal. Decimal literal. Double literal. GUID literal. Binary literal. Geography literal. Geometry literal. Exclamation. OpenParen. CloseParen. Comma. Colon. Minus. Slash. Question. Dot. Star. SemiColon ParameterAlias A Brace BracketedExpression is an expression within brackets or braces. It contains a JSON object or array. Lexical token representing a function call. The name of the function to call. The arguments for the function. the source token for this function call Create a new FunctionCallToken using the given function name and argument values. The name of the function to call. The argument values for the function. Create a new FunctionCallToken using the given function name and parameter tokens. The name of the function to call. The arguments for the function. The syntactically bound parent of this function Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The kind of the query token. The name of the function to call. The arguments for the function. The syntactically bound parent of this function. Node representing a key lookup on a collection. The collection that this key is referring to. The EntitySet containing the collection this key referrs to. The resouce type of the single value the key referrs to. List of the properties and their values that we use to look up our return value. Constructs a KeyLookupNode. The collection that this key is referring to. List of the properties and their values that we use to look up our return value. Throws if the input source is null. Gets the collection that this key is referring to. Gets the list of the properties and their values that we use to look up our return value. Gets the resouce type of the single value that the key referrs to. Gets the resouce type of the single value that the key referrs to. Gets the EntitySet that contains the collection this key referrs to. Gets the kind for this node. Class representing a single key property value in a key lookup. Gets or sets the key property. Gets or sets the value of the key property. Class representing a single named value (name and value pair). The name of the value. Or null if the name was not used for this value. The value - a literal. Create a new NamedValue lookup given name and value. The name of the value. Or null if the name was not used for this value. The value - a literal. The name of the value. Or null if the name was not used for this value. The value - a literal. Lexical token representing a literal value. The original text value of the literal. This is used only internally to simulate correct compat behavior with WCF DS. We should only use this during type promotion when applying metadata. The value of the literal. This is a parsed primitive value. Create a new LiteralToken given value and originalText The value of the literal. This is a parsed primitive value. Create a new LiteralToken given value and originalText The value of the literal. This is a parsed primitive value. The original text value of the literal. This is used only internally to simulate correct compat behavior with WCF DS. We should only use this during type promotion when applying metadata. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The kind of the query token. The value of the literal. This is a parsed primitive value. The original text value of the literal. This is used only internally to simulate correct compat behavior with WCF DS. We should only use this during type promotion when applying metadata. Binder which applies metadata to a lexical QueryToken tree and produces a bound semantic QueryNode tree. Encapsulates the state of the metadate binding. Constructs a MetadataBinder with the given . This constructor gets used if you are not calling the top level entry point ParseQuery. This is an at-your-own-risk constructor, since you must provide valid initial state. The initialState to use for binding. Processes the skip operator (if any) and returns the combined query. The skip amount or null if none was specified. the skip clause Processes the top operator (if any) and returns the combined query. The top amount or null if none was specified. the top clause Process the remaining query options (represent the set of custom query options after service operation parameters and system query options have been removed). the current state of the binding algorithm. pointer to a binder method. The list of instances after binding. Visits a in the lexical tree and binds it to metadata producing a semantic . The query token on the input. The bound query node output. Bind a function parameter token The token to bind. A semantically bound FunctionCallNode Binds a InnerPathToken. Token to bind. Either a SingleNavigationNode, CollectionNavigationNode, SinglePropertyAccessNode (complex), or CollectionPropertyAccessNode (primitive or complex) that is the metadata-bound version of the given token. Binds a parameter token. The parameter token to bind. The bound query node. Binds a literal token. The literal token to bind. The bound literal token. Binds a binary operator token. The binary operator token to bind. The bound binary operator token. Binds a unary operator token. The unary operator token to bind. The bound unary operator token. Binds a type startPath token. The type startPath token to bind. The bound type startPath token. Binds a LambdaToken. The LambdaToken to bind. A bound Any or All node. Binds a property access token. The property access token to bind. The bound property access token. Binds a function call token. The function call token to bind. The bound function call token. Encapsulates the state of the metadate binding. Delegate for a function that visits a QueryToken and translates it into a bound QueryNode. TODO Eventually replace this with a real interface for a visitor. QueryToken to visit. Metadata bound QueryNode. Enumeration of order by directions. Ascending order. Descending order. Lexical token representing an order by operation. The direction of the ordering. The expression according to which to order the results. Create a new OrderByToken given the expression and direction The expression according to which to order the results. The direction of the ordering. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The kind of the query token. The direction of the ordering. The expression according to which to order the results. Lexical token representing the last segment in a path. The Identifier of the property to access. The NextToken token to access the property on. If this is null, then the property access has no NextToken. That usually means to access the property on the implicit parameter for the expression, the result on which the expression is being applied. Create a EndPathToken given the Identifier and the NextToken (if any) The Identifier of the property to access. The NextToken token to access the property on. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The kind of the query token. The NextToken token to access the property on. If this is null, then the property access has no NextToken. That usually means to access the property on the implicit parameter for the expression, the result on which the expression is being applied. The Identifier of the property to access. The root node of a query. Holds the query itself plus additional metadata about the query. The top level path for this Uri. Any custom query options for this Uri. Any select or expand options in this uri. Can be null. Any filter option in this uri. Can be null. Any order by option in this uri. Can be null. Any skip option in this uri. Can be null. Any top option in this uri. Can be null. Any inline count option in this uri. Can be null. Create a new ODataUri. This contains the semantic meaning of the entire uri. The top level path for this uri. Any custom query options for this uri. Can be null. Any $select or $expand option for this uri. Can be null. Any $filter option for this uri. Can be null. Any $orderby option for this uri. Can be null Any $skip option for this uri. Can be null. Any $top option for this uri. Can be null. Any $inlinecount option for this uri. Can be null. Gets the top level path for this uri. Gets any custom query options for this uri. Gets any $select or $expand option for this uri. Gets any $filter option for this uri. Gets any $orderby option for this uri. Gets any $skip option for this uri. Gets any $top option for this uri. Get any $inlinecount option for this uri. Lexical token representing the entire query. The default setting for the max depth. The path for the query. The filter for the query. If the property is null, there's no filter for this query. Enumeration of order by tokens. The order by operations must be applied in the order in which they are listed in this enumeration. The select for the query. If the property is null, there's no select for this query. The expand for the query. If the property is null, there's no expand for this query. The number of entities to skip in the result. The (maximum) number of entities to include in the result. The format for the query. Type of inlinecount in the response of the query. The query options for the query; these include non-system query options starting with '$', service operation arguments and custom query options. Create a new SyntacticTree given its parts as arguments. The path for the query. Must not be null. The filter for the query. If the property is null, there's no filter for this query. Enumeration of order by tokens. The select for the query. If the property is null, there's no select for this query. The expansions for the query. If the property is null, there are no expandsion for this query. The number of entities to skip in the result. The (maximum) number of entities to include in the result. Type of inlinecount in the response of the query. The format for the query. The query options for the query. Parses the and returns a new instance of describing the query specified by the uri. The absolute URI which holds the query to parse. This must be a path relative to the . The base URI of the service. A new instance of which represents the query specified in the . Parses the and returns a new instance of describing the query specified by the uri. The absolute URI which holds the query to parse. This must be a path relative to the . The base URI of the service. The maximum depth of any single query part. Security setting to guard against DoS attacks causing stack overflows and such. A new instance of which represents the query specified in the . The path for the query. The filter for the query. If the property is null, there's no filter for this query. Enumeration of order by tokens. The order by operations must be applied in the order in which they are listed in this enumeration. The select for the query. If the property is null, there's no select for this query. The expand for the query. If the property is null, there's no expand for this query. The number of entities to skip in the result. The (maximum) number of entities to include in the result. The format for the query. Type of inlinecount in the response of the query. The query options for the query; these include non-system query options starting with '$', service operation arguments and custom query options. Public enumeration of kinds of query nodes. A subset of InternalQueryNodeKind No query node kind... the default value. A constant value. A node that represents conversion from one type to another. Non-entity node referencing a range variable. Node used to represent a binary operator. Node used to represent a unary operator. Node describing access to a property which is a single (non-collection) non-entity value. Node describing access to a property which is a non-entity collection value. Function call returning a single value. Any query. Node for a navigation property with target multiplicity Many. Node for a navigation property with target multiplicity ZeroOrOne or One. Single-value property access that refers to an open property. Cast on a single thing. All query. Cast on a collection of entities. Placeholder node referencing a rangeVariable on the binding stack that references an entity. Node the represents a function call that returns a single entity. Node that represents a function call that returns a collection. Node that represents a funciton call that returns a collection of entities. Node that represents a named function parameter. Internal enumeration of kinds of query nodes. A superset of QueryNodeKind none... default value. The constant value. A node that signifies the promotion of a primitive type. Non-entity node referencing a range variable. Parameter node used to represent a binary operator. Parameter node used to represent a unary operator. Node describing access to a property which is a single (non-collection) non-entity value. Node describing access to a property which is a non-entity collection value. Function call returning a single value. Any query. Node for a navigation property with target multiplicity Many. Node for a navigation property with target multiplicity ZeroOrOne or One. Single-value property access that refers to an open property. Cast on a single thing. All query. Cast on a collection. Entity node referencing a range variable. SingleEntityFunctionCall node. Node that represents a function call that returns a collection. Node that represents a funciton call that returns a collection of entities. Node that represents a named function parameter. The entity set node. The key lookup on a collection. Helper methods for working with query options. Returns a query option value by its name and removes the query option from the collection. The collection of query options. The name of the query option to get. The value of the query option or null if no such query option exists. Node representing an entity set. TODO This should be deleted but it is used in many, many tests. The entity set this node represents. The resouce type of a single entity in the entity set. the type of the collection returned by this function Creates an The entity set this node represents Throws if the input entitySet is null. Gets the resouce type of a single entity in the entity set. The type of the collection represented by this node. Gets the resouce type of a single entity in the entity set. Gets the entity set this node represents. Gets the kind for this node. Parser which consumes the URI format of primitive types and converts it to primitive types. Whitespace characters to trim around literals. Determines whether the specified character is a valid hexadecimal digit. Character to check. true if is a valid hex digit; false otherwise. Converts a string to a primitive value. String text to convert. Type to convert string to. After invocation, converted value. true if the value was converted; false otherwise. Copy of the WebConvert.TryKeyStringToPrimitive Try to parse a string value into a non-negative integer. The string value to parse. The non-negative integer value parsed from the . True if could successfully be parsed into a non-negative integer; otherwise returns false. Check and strip the input for literal The suffix value The string to check A string that has been striped of the suffix Copy of WebConvert.TryRemoveLiteralSuffix. Tries to remove a literal from the specified . Prefix to remove; one-letter prefixes are case-sensitive, others insensitive. Text to attempt to remove prefix from. true if the prefix was found and removed; false otherwise. Copy of WebConvert.TryRemoveLiteralPrefix. Removes quotes from the single-quotes text. Text to remove quotes from. Whether quotes were successfully removed. Copy of WebConvert.TryRemoveQuotes. Converts a string to a byte[] value. String text to convert. After invocation, converted value. true if the value was converted; false otherwise. Copy of WebConvert.TryKeyStringToByteArray. Converts a string to a GUID value. String text to convert. After invocation, converted value. true if the value was converted; false otherwise. Copy of WebConvert.TryKeyStringToGuid. Converts a string to a DateTime value. String text to convert. After invocation, converted value. true if the value was converted; false otherwise. Copy of WebConvert.TryKeyStringToDateTime. Converts a string to a DateTimeOffset value. String text to convert. After invocation, converted value. true if the value was converted; false otherwise. Copy of WebConvert.TryKeyStringToDateTimeOffset. Converts a string to a Time value. String text to convert. After invocation, converted value. true if the value was converted; false otherwise. Copy of WebConvert.TryKeyStringToTime. Try to parse the given text to a Geography object. Text to parse. Geography to return. True if succeeds, false if not. Try to parse the given text to a Geometry object. Text to parse. Geometry to return. True if succeeds, false if not. Check and strip the input for literal The suffix value The string to check A string that has been striped of the suffix Copy of WebConvert.TryRemoveLiteralSuffix. Tries to remove a literal from the specified . Prefix to remove; one-letter prefixes are case-sensitive, others insensitive. Text to attempt to remove prefix from. true if the prefix was found and removed; false otherwise. Copy of WebConvert.TryRemoveLiteralPrefix. Checks whether the specified text is a correctly formatted quoted value. Text to check. true if the text is correctly formatted, false otherwise. Copy of WebConvert.IsKeyValueQuoted. Removes quotes from the single-quotes text. Text to remove quotes from. The specified with single quotes removed. Copy of WebConvert.RemoveQuotes. Returns the 4 bits that correspond to the specified character. Character in the 0-F range to be converted. The 4 bits that correspond to the specified character. Thrown when 'c' is not in the '0'-'9','a'-'f' range. This is a copy of WebConvert.HexCharToNibble. Enumeration of kinds of query tokens. The binary operator. The unary operator. The literal value. The function call. The property access. The order by operation. A query option. The Select query. The *. The Expand query. Type segment. Any query. Non root segment. type segment. Parameter token. All query. ExpandTerm Token FunctionParameterToken FunctionParameterAlias RawFunctionParameterValue Lexical token representing a unary operator. The operator represented by this node. The operand. Create a new UnaryOperatorToken given the operator and operand The operator represented by this node. The operand. Accept a to walk a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. The kind of the query token. The operator represented by this node. The operand. Enumeration of binary operators. The unary - operator. The not operator. Constant values related to the URI query syntax. A segment name in a URI that indicates metadata is being requested. A segment name in a URI that indicates a plain primitive value is being requested. A segment name in a URI that indicates batch is being requested. A segment name in a URI that indicates that this is an entity reference link operation. A segment name in a URI that indicates that this is a count operation. A filter query option name. An order by query option name. A select query option name. An expand query option name. A skip query option name. A valid value to denote all-properties access. A top query option name. A inline-count query option name. A format query option name. Parser which consumes the query expression ($filter, $orderby) and produces the lexical object model. The maximum number of recursion nesting allowed. Set of parsed parameters The current recursion depth. The lexer being used for the parsing. Constructor. The maximum depth of each part of the query - a recursion limit. Parses a literal. The lexer to use. The literal query token or null if something else was found. Parses the $filter expression. The $filter expression string to parse. The lexical token representing the filter. Parses the $orderby expression. The $orderby expression string to parse. The enumeraion of lexical tokens representing order by tokens. Creates a new for the given filter or orderby expression. The expression. The lexer for the expression, which will have already moved to the first token. Creates an exception for a parse error. Message text. A new Exception. Parses typed literals. The lexer to use. Expected type to be parsed. The EDM type name of the expected type to be parsed. The literal token produced by building the given literal. Parses null literals. The lexer to use. The literal token produced by building the given literal. Parses the expression. The lexical token representing the expression. Parses the or operator. The lexical token representing the expression. Parses the and operator. The lexical token representing the expression. Parses the eq, ne, lt, gt, le, ge operators. The lexical token representing the expression. Parses the add, sub operators. The lexical token representing the expression. Parses the mul, div, mod operators. The lexical token representing the expression. Parses the -, not unary operators. The lexical token representing the expression. Parses the primary expressions. The lexical token representing the expression. Handles the start of primary expressions. The lexical token representing the expression. Parses parenthesized expressions. The lexical token representing the expression. Parses the Any portion of the query The parent of the Any node. The lexical token representing the Any query. Parses the All portion of the query The parent of the All node. The lexical token representing the All query. Parses the Any/All portion of the query The parent of the Any/All node. Denotes whether an Any or All is to be parsed. The lexical token representing the Any/All query. Parses a segment. The parent of the segment node. The lexical token representing the segment. Checks that the current token has the specified identifier. Identifier to check. true if the current token is an identifier with the specified text. Marks the fact that a recursive method was entered, and checks that the depth is allowed. Marks the fact that a recursive method is leaving. Delegate for a function that parses an expression and translates it into a QueryToken. A QueryToken Parser which consumes the URI path and produces the lexical object model. The maximum number of segments allowed. Constructor. The maximum number of segments for each part of the query. Parses the and returns a list of strings for each segment. The relative URI which holds the query to parse. a list of strings for each segment in the uri. Returns list of segments in the specified path (eg: /abc/pqr -> abc, pqr). The absolute URI of the request. The service base URI for the request. List of unescaped segments. Class that knows how to bind unary operators. Method to use for binding the parent node, if needed. Constructs a UnaryOperatorBinder with the given method to be used binding the parent token if needed. Method to use for binding the parent token, if needed. Binds a unary operator token. The unary operator token to bind. The bound unary operator token. Get the promoted type reference of the operand the operand the operator kind the type reference of the operand Retrieve SingleValueNode operand from given token. The token the SingleValueNode operand Node representing a single navigation property. The entity set that this NavigationProperty targets. The previous node in the path. The navigation property this node represents. The type of entity that this NavigationProperty targets. Constructs a SingleNavigationNode. The navigation property this node represents. The previous node in the path. Throws if the input navigationProperty or source is null. Throws if the input navigationProperty targets more than one entity. Constructs a SingleNavigationNode. The navigation property this node represents. The entity set that this of the previous segment. Throws if the input navigationProperty or source is null. Throws if the input navigationProperty targets more than one entity. Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null. Gets the previous node in the path. Gets the navigation property this node represents. Gets the target multiplicity. Gets the type of entity that this NavigationProperty targets. Gets the type of entity that this NavigationProperty targets. Gets the entity set that this NavigationProperty targets. Gets the kind of this query node. Uri utility methods. Determines whether the Uri instance is a base of the specified Uri instance. The check is host agnostic. For example, "http://host1.com/Service.svc" is a valid base Uri of "https://host2.org/Service.svc/Bla" but is not a valid base for "http://host1.com/OtherService.svc/Bla". The candidate base URI. The specified Uri instance to test. true if the baseUri Uri instance is a base of uri; otherwise false. Parses query options from a specified URI into a dictionary. The uri to get the query options from. The parsed query options. This method returns with all the query options. Note that it is valid to include multiple query options with the same name. is this selection item a structural or navigation property selection item. the selection item to check true if this selection item is a structural property selection item. Creates a URI suitable for host-agnostic comparison purposes. URI to compare. URI suitable for comparison. Check whether the Uri is the base of the Uri. The candidate base Uri. The Uri to check. True if the is the base of the Uri. Class responsible for determining the type name that should be written on the wire for entries and values in the ATOM and Verbose JSON formats. Class to validate and resolve the type name to be serialized. Validates a type name to ensure that it's not an empty string and resolves it against the provided . The model to use. The type name to validate. The expected type kind for the given type name. The type with the given name and kind if a user model was available, otherwise null. Resolves and validates the Edm type for the given . The model to use. The type inferred from the model or null if the model is not a user model. The value in question to resolve the type for. true if the type name belongs to an open property, false otherwise. A type for the or null if no metadata is available. Gets the type name from the given . The value to get the type name from. This can be an ODataPrimitiveValue, an ODataComplexValue, an ODataCollectionValue or a Clr primitive object. The type name for the given . Resolve a type name against the provided . If not payload type name is specified, derive the type from the model type (if available). The model to use. The type inferred from the model or null if the model is not a user model. The type name to be resolved. The expected type kind of the resolved type. True if the type name belongs to an open property. A type for the or null if no type name is specified and no metadata is available. Validates that the (optional) is the same as the (optional) . The (optional) type from the metadata definition (the expected type). The (optional) type from the value (the actual type). The type as derived from the and/or . Determines the type name for the given entry to write to the payload. The ODataEntry whose type name is to be written Type name to write to the payload, or null if no type name should be written. Determines the type name for the given value to write to the payload. The value whose type name is to be written. This can be an ODataPrimitiveValue, an ODataComplexValue, an ODataCollectionValue or a Clr primitive object. The type resolved from the value. The serialization type name annotation. true if the type name belongs to an open property, false otherwise. Returns the item type name of the collection type if is a collection value and its type name can be determined. Type name to write to the payload, or null if no type should be written. Atom metadata description for a categories element (app:categories). Gets or sets a value that indicates whether the list of categories is fixed or an open set. true if the list of categories is fixed; false if the list of categories is an open set. Gets or sets the URI indicating the scheme of the categories without a scheme. The URI indicating the scheme of the categories without a scheme. Gets or sets the URI of the category document. The URI of the category document. If this property is not null, the properties and must be both null and the must be either null or empty collection. Gets or sets the atom category elements inside this categories element. The atom category elements inside this categories element. Class responsible for storing and manipulating instance annotation data in ATOM payloads. Backing field of the Target property. Backing field of the Term property. Backing field of the Value property. Constructor. The target of the annotation. The term whose value is being expressed through this annotation. The annotation's value. Creates a new instance of this class by consuming xml from the given reader. Creates an Atom-specific instance annotation from the format-independent representation of an annotation. The format-independent represetnation of an instance annotation. The value of the target attribute on the m:annotation element, or null if the attribute should be omitted. The created AtomInstanceAnnotation. Creates a new instance of this class by consuming xml from the given input context. The input context to use to create the annotation. The property and value deserializer to use when reading values in the annotation element content. The populated with the information from the 'm:annotation' XML element, as long as the value is a string. Returns null otherwise. Pre-Condition: XmlNodeType.Element - The annotation element to read. Post-Condition: XmlNodeType.Any - The node after the end of the annotation element, or the same element as in the pre-condition if the annotation was skipped. Retrieves the name of the attribute used in attribute value notation to indicate the given primitive type kind. The primitive type kind to look up. The name of the corresponding attribute. Retrieves the Edm type represented by the given attribute name when using attribute value notation. The name of the attribute (must be one of "string", "int", "bool", "decimal", "float") A nullable reference to the type represented by the attribute name, or null if the given name is not a valid attribute value notation name. Reads the current element's content as an ODataValue. The property and value deserializer to use to read values in ATOM. The expected type of the annotation, may be null if the term is not defined in the model. The deserialized value. Pre-Condition: XmlNodeType.Element - The XML element containing the value to read (also the attributes will be read from it) Post-Condition: XmlNodeType.EndElement - The end tag of the element. XmlNodeType.Element - The empty element node. Reads an annotation's value from the annotation value notation specified on the current element. The expected type reference of the vocabulary term from the metadata. The type reference indicated by the name of the attribute used in attribute value notation. For example, if the attribute was called "string", this will be a reference to the string type. The name of the attribute used by attribute avalue notation. The value of the attribute used by attribute value notation. The value of the "m:type" attribute on the annotation element. true if the annotation element is empty, false otherwise. The edm model instance. The message reader settings instance. The payload version to read. The primitive value represented on this element via attribute value notation. The target of this annotation, as specified in the m:annotation/@target attribute. The term of this annotation's value, as specified in the m:annotation/@term attribute. The value of this annotation. True if the annotation is targeting the xml element in which the annotation was found; false if the annotation is targeting a different element. Xml writer which wraps another writer and fixes prefixes so that the root element is not prefix-qualified (same for everything else with the same prefix). The wrapped writer. The root prefix, once the first element of the document has been written. Initializes a new instance of . The writer to wrap. When overridden in a derived class, copies everything from the reader to the writer and moves the reader to the start of the next sibling. The to read from. true to copy the default attributes from the XmlReader; otherwise, false. is null. contains invalid characters. When overridden in a derived class, writes out all the attributes found at the current position in the . The XmlReader from which to copy the attributes. true to copy the default attributes from the XmlReader; otherwise, false. is null. The reader is not positioned on an element, attribute or XmlDeclaration node. When overridden in a derived class, returns the closest prefix defined in the current namespace scope for the namespace URI. The matching prefix or null if no matching namespace URI is found in the current scope. The namespace URI whose prefix you want to find. is either null or String.Empty. When overridden in a derived class, flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. When overridden in a derived class, writes out the specified name, ensuring it is a valid NmToken according to the W3C XML 1.0 recommendation (http://www.w3.org/TR/1998/REC-xml-19980210#NT-Name). The name to write. is not a valid NmToken; or is either null or String.Empty. When overridden in a derived class, closes this stream and the underlying stream. A call is made to write more output after Close has been called or the result of this call is an invalid XML document. When overridden in a derived class, encodes the specified binary bytes as BinHex and writes out the resulting text. Byte array to encode. The position in the buffer indicating the start of the bytes to write. The number of bytes to write. is null. The writer is closed or in error state. or is less than zero. -or-The buffer length minus is less than . When overridden in a derived class, writes raw markup manually from a string. String containing the text to write. is either null or String.Empty. When overridden in a derived class, encodes the specified binary bytes as Base64 and writes out the resulting text. Byte array to encode. The position in the buffer indicating the start of the bytes to write. The number of bytes to write. is null. or is less than zero. -or-The buffer length minus is less than . When overridden in a derived class, writes raw markup manually from a character buffer. Character array containing the text to write. The position within the buffer indicating the start of the text to write. The number of characters to write. is null. or is less than zero. -or-The buffer length minus is less than . When overridden in a derived class, writes text one buffer at a time. Character array containing the text to write. The position in the buffer indicating the start of the text to write. The number of characters to write. is null. or is less than zero. -or-The buffer length minus is less than ; the call results in surrogate pair characters being split or an invalid surrogate pair being written. The parameter value is not valid. When overridden in a derived class, generates and writes the surrogate character entity for the surrogate character pair. The low surrogate. This must be a value between 0xDC00 and 0xDFFF. The high surrogate. This must be a value between 0xD800 and 0xDBFF. An invalid surrogate character pair was passed. When overridden in a derived class, writes the given text content. The text to write. The text string contains an invalid surrogate pair. When overridden in a derived class, writes the start of an attribute with the specified prefix, local name, and namespace URI. The namespace prefix of the attribute. The local name of the attribute. The namespace URI for the attribute. There is a character in the buffer that is a valid XML character but is not valid for the output encoding. For example, if the output encoding is ASCII, you should only use characters from the range of 0 to 127 for element and attribute names. The invalid character might be in the argument of this method or in an argument of previous methods that were writing to the buffer. Such characters are escaped by character entity references when possible (for example, in text nodes or attribute values). However, the character entity reference is not allowed in element and attribute names, comments, processing instructions, or CDATA sections. When overridden in a derived class, closes the previous call. When overridden in a derived class, writes out a <![CDATA[...]]> block containing the specified text. The text to place inside the CDATA block. The text would result in a non-well formed XML document. When overridden in a derived class, writes out a comment <!--...--> containing the specified text. Text to place inside the comment. The text would result in a non-well formed XML document. When overridden in a derived class, writes out a processing instruction with a space between the name and text as follows: <?name text?>. The name of the processing instruction. The text to include in the processing instruction. The text would result in a non-well formed XML document. is either null or String.Empty.This method is being used to create an XML declaration after has already been called. When overridden in a derived class, writes out an entity reference as &name;. The name of the entity reference. is either null or String.Empty. When overridden in a derived class, forces the generation of a character entity for the specified Unicode character value. The Unicode character for which to generate a character entity. The character is in the surrogate pair character range, 0xd800 - 0xdfff. When overridden in a derived class, writes out the given white space. The string of white space characters. The string contains non-white space characters. When overridden in a derived class, writes the XML declaration with the version "1.0". This is not the first write method called after the constructor. When overridden in a derived class, writes the XML declaration with the version "1.0" and the standalone attribute. If true, it writes "standalone=yes"; if false, it writes "standalone=no". This is not the first write method called after the constructor. When overridden in a derived class, closes any open elements or attributes and puts the writer back in the Start state. The XML document is invalid. When overridden in a derived class, writes the DOCTYPE declaration with the specified name and optional attributes. The name of the DOCTYPE. This must be non-empty. If non-null it also writes public override "pubid" "sysid" where and are replaced with the value of the given arguments. If is null and is non-null it writes SYSTEM "sysid" where is replaced with the value of this argument. If non-null it writes [subset] where subset is replaced with the value of this argument. This method was called outside the prolog (after the root element). The value for would result in invalid XML. When overridden in a derived class, writes the specified start tag and associates it with the given namespace and prefix. The namespace prefix of the element. The local name of the element. The namespace URI to associate with the element. The writer is closed. There is a character in the buffer that is a valid XML character but is not valid for the output encoding. For example, if the output encoding is ASCII, you should only use characters from the range of 0 to 127 for element and attribute names. The invalid character might be in the argument of this method or in an argument of previous methods that were writing to the buffer. Such characters are escaped by character entity references when possible (for example, in text nodes or attribute values). However, the character entity reference is not allowed in element and attribute names, comments, processing instructions, or CDATA sections. When overridden in a derived class, closes one element and pops the corresponding namespace scope. This results in an invalid XML document. When overridden in a derived class, closes one element and pops the corresponding namespace scope. When overridden in a derived class, gets the current xml:lang scope. The current xml:lang scope. When overridden in a derived class, gets the state of the writer. One of the values. When overridden in a derived class, gets an representing the current xml:space scope. An XmlSpace representing the current xml:space scope. Gets the object used to create this instance. The object used to create this writer instance. Responsible for reading the annotation element in ATOM. The input context to use when parsing the annotation element. Atomized string representation of the URI used for the OData metadata namespace. Atomized name of the decimal attribute of an annotation element. The property and value deserializer used to read values in ATOM. Creates a new ATOM annotation parser. The input context this annotation reader should use to read annotation elements. The property and value deserializer to use to read the value of an annotation element. Attempts to read the current element as an annotation element. If this method returned true, this is the instance annotation information from the parsed element. true if the element was an annotation element, false if it wasn't. Pre-Condition: XmlNodeType.Element - The element to read. Post-Condition: XmlNodeType.EndElement - The end tag of the element (if the element was a non-empty annotation element). XmlNodeType.Element - The same element as the pre-condition if this method returned false, or an empty annotation element. OData ATOM deserializer for detecting the payload kind of an ATOM payload. OData ATOM deserializer for properties and value types. Base class for all OData ATOM deserializers. Base class for all OData deserializers. The input context to use for reading. Constructor. The input context to read from. Creates a new instance of a duplicate property names checker. The newly created instance of duplicate property names checker. true if the WCF DS client compatibility format behavior should be used; otherwise false. true if the WCF DS server compatibility format behavior should be used; otherwise false. true if the default format behavior should be used; otherwise false. The message reader settings. The OData version of the input. true if the input is a response payload; false if it's a request payload. The model to use. The ATOM input context to use for reading. Constructor. The ATOM input context to read from. Reads the start of the payload. Wraps the call to XmlReaderExtensions.ReadPayloadStart(). Reads till the end of the payload. Wraps the call to XmlReaderExtensions.ReadPayloadEnd(). Given a URI from the payload, this method will try to make it absolute, or fail otherwise. The URI string from the payload to process. The (optional) Xml base URI as specified in the payload. An absolute URI to report. Given a string representation of a URI from the payload, this method will return an absolute or relative URI. The URI string from the payload to process. The (optional) Xml base URI as specified in the payload. If true, then this method will try to make the URI absolute, or fail otherwise. An absolute or relative URI to report based on the value of the parameter. Asserts that the XML reader is positioned on one of the specified node types. The node types which should appear at this point. Asserts that the XML reader is positioned on one of the specified node types. True if an empty element node should be added to the list. The node types which should appear at this point. The XML reader to read the input from. The ATOM input context to use for reading. The empty namespace used for attributes in no namespace. OData attribute which indicates the null value for the element. Element name for the items in a Collection. XML element name to mark type attribute in Atom. The Edm.String type from the core model. The current recursion depth of values read by this deserializer, measured by the number of complex and collection values read so far. Constructor. The ATOM input context to read from. This method creates and reads the property from the input and returns an representing the read property. The producing the property to be read. The expected type of the property to read. An representing the read property. Reads the primitive, complex or collection value. The expected type reference of the value. The duplicate property names checker to use (cached), or null if new one should be created. The collection validator instance if no expected item type has been specified; otherwise null. true to validate a null value (i.e., throw if a null value is being written for a non-nullable property); otherwise false. Whether any EPM mappings exist. The value read (null, primitive CLR value, ODataComplexValue or ODataCollectionValue). Pre-Condition: XmlNodeType.Element - The XML element containing the value to read (also the attributes will be read from it) Post-Condition: XmlNodeType.EndElement - The end tag of the element. XmlNodeType.Element - The empty element node. Determines the kind of value to read based on the payload shape. The kind of type of the value to read. Pre-Condition: XmlNodeType.Element - The XML element containing the value to get the kind for. Post-Condition: XmlNodeType.Element - The XML element containing the value to get the kind for. Reads the 'type' and 'isNull' attributes of a value. The value of the 'type' attribute or null if no 'type' attribute exists. The value of the 'isNull' attribute or null if no 'isNull' attribute exists. Pre-Condition: XmlNodeType.Element - The element to read attributes from. Post-Condition: XmlNodeType.Element - The element to read attributes from. Reads the content of a properties in an element (complex value, m:properties, ...) The type which should declare the properties to be read. Optional. The list of properties to add properties to. The duplicate property names checker to use. Whether any EPM mappings exist. Pre-Condition: XmlNodeType.Element - The element to read properties from. Post-Condition: XmlNodeType.Element - The element to read properties from if it is an empty element. XmlNodeType.EndElement - The end element of the element to read properties from. Reads the primitive, complex or collection value. The expected type reference of the value. The duplicate property names checker to use (cached), or null if new one should be created. The collection validator instance if no expected item type has been specified; otherwise null. true to validate a null value (i.e., throw if a null value is being written for a non-nullable property); otherwise false. Whether any EPM mappings exist. The name of the property whose value is being read, if applicable (used for error reporting). The value read (null, primitive CLR value, ODataComplexValue or ODataCollectionValue). Pre-Condition: XmlNodeType.Element - The XML element containing the value to read (also the attributes will be read from it) Post-Condition: XmlNodeType.EndElement - The end tag of the element. XmlNodeType.Element - The empty element node. Read a null value from the payload. The expected type reference (for validation purposes). true to validate the value against the . The name of the property whose value is being read, if applicable (used for error reporting). The null value. Reads the content of a properties in an element (complex value, m:properties, ...) The type which should declare the properties to be read. Optional. The list of properties to add properties to. The duplicate property names checker to use. Whether any EPM mappings exist. Pre-Condition: XmlNodeType.Element - The element to read properties from. Post-Condition: XmlNodeType.Element - The element to read properties from if it is an empty element. XmlNodeType.EndElement - The end element of the element to read properties from. Reads a property. The expected property name to be read from the payload (or null if no expected property name was specified). The expected type reference of the property value. Behavior to use when reading null value for the property. Whether any EPM mappings exist. The ODataProperty representing the property in question; if null is returned from this method it means that the property is to be ignored. Pre-Condition: XmlNodeType.Element - The XML element representing the property to read. Note that the method does NOT check for the property name neither it resolves the property against metadata. Post-Condition: Any - The node after the property. Read a primitive value from the reader. The type of the value to read. The value read from the payload and converted as appropriate to the target type. Pre-Condition: XmlNodeType.Element - the element to read the value for. XmlNodeType.Attribute - an attribute on the element to read the value for. Post-Condition: XmlNodeType.Element - the element was empty. XmlNodeType.EndElement - the element had some value. Note that this method will not read null values, those should be handled by the caller already. Read a complex value from the reader. The type reference of the value to read (or null if no type is available). The name of the type specified in the payload. The serialization type name for the complex value (possibly null). The duplicate property names checker to use (cached), or null if new one should be created. Whether any EPM mappings exist. The value read from the payload. Pre-Condition: XmlNodeType.Element - the element to read the value for. XmlNodeType.Attribute - an attribute on the element to read the value for. Post-Condition: XmlNodeType.EndElement - the element has been read. Note that this method will not read null values, those should be handled by the caller already. Read a collection from the reader. The type of the collection to read (or null if no type is available). The name of the collection type specified in the payload. The serialization type name for the collection value (possibly null). The value read from the payload. Pre-Condition: XmlNodeType.Element - the element to read the value for. XmlNodeType.Attribute - an attribute on the element to read the value for. Post-Condition: XmlNodeType.Element - the element was empty. XmlNodeType.EndElement - the element had some value. Note that this method will not read null values, those should be handled by the caller already. Increases the recursion depth of values by 1. This will throw if the recursion depth exceeds the current limit. Decreases the recursion depth of values by 1. Asserts that the current recursion depth of values is zero. This should be true on all calls into this class from outside of this class. Constructor. The ATOM input context to read from. Detects the payload kind(s) of the payload. Additional information available for the payload kind detection. An enumerable of zero or more payload kinds depending on what payload kinds were detected. This method decides the payload kind based on the fully-qualified element name of the top-level Xml element in the payload for entry, feed, entity reference link, error and service document payload kinds. It performs more checks for properties and collection payloads as follows: * If an m:type attribute is found => property * If an m:null attribute is found => property Otherwise the shape of the payload decides: * If we only find d:element child nodes => collection or property * If we find no child nodes => primitive property * If we find anything else => complex property Detects whether the current element represents a property payload, a collection payload or neither. An enumerable of zero, one or two payload kinds depending on whether a property, collection, both or neither were detected. OData ATOM serializer for collections. OData ATOM serializer for properties and values. Base class for all OData ATOM serializers. Base class for all OData serializers. The output context to write to. Constructor. The output context to write to. Creates a new instance of a duplicate property names checker. The newly created instance of duplicate property names checker. Validates association link before writing. The association link to validate. The entity type of the entry the association link belongs to. true if the WCF DS client compatibility format behavior should be used; otherwise false. true if the WCF DS server compatibility format behavior should be used; otherwise false. true if the default format behavior should be used; otherwise false. The message writer settings. The URL resolver. The OData version of the output. true if the output is a response payload; false if it's a request payload. The model to use. The ATOM output context to write to. Constructor. The output context to write to. Converts the given Uri to a string. If the provided baseUri is not null and is a base Uri of the Uri the method returns the string form of the relative Uri. The Uri to convert. The string form of the Uri. If the Uri is absolute it returns the string form of the . If the Uri is not absolute it returns the original string of the Uri. Converts the given Uri to a string. If the provided baseUri is not null and is a base Uri of the Uri the method returns the string form of the relative Uri. The Uri to convert. If set to true then this method will fail if the uri specified by is relative and no base uri is specified. The string form of the Uri. If the Uri is absolute it returns the string form of the . If the Uri is not absolute it returns the original string of the Uri. Start writing an ATOM payload. Finish writing an ATOM payload. This method MUST NOT be called after writing an in-stream error as it would fail on unclosed elements (or try to close them). Writes a top-level error payload. The error instance to write. A flag indicating whether error details should be written (in debug mode only) or not. Write the namespaces for OData (prefix 'd') and OData metadata (prefix 'm') An enumeration value to indicate what default namespace attributes to write. Writes the count. Count value. True if the namespace declaration for the metadata namespace should be included; otherwise false. Write the base Uri of the document (if specified) and the namespaces for OData (prefix 'd') and OData metadata (prefix 'm') Writes an Xml element with the specified primitive value as content. The prefix for the element's namespace. The local name of the element. The namespace of the element. The value to be used as element content. Writes an Xml element with empty content. The prefix for the element's namespace. The local name of the element. The namespace of the element. Returns the which is to be used to write the content of the message. The ODataAtomOutputContext used by the serializer. Flags to describe a set of default namespaces. No namespaces. OData namespace. OData metadata namespace. ATOM namespace GeoRss namespace. GML namespace. All default namespaces. The current recursion depth of values written by this serializer. Constructor. The output context to write to. Writes a single property in ATOM format. The property to write out. Writes a collection of instance annotations in ATOM format. Instance annotation collection to write. The tracker to track which instance annotations have been written. Writes a single instance annotation in ATOM format. The instance annotation to write. Write the given collection of properties. The of the entry (or null if not metadata is available). Collection of cached properties for the entry. true if we are writing a top level collection instead of an entry. Action which is called before the properties are written, if there are any property. Action which is called after the properties are written, if there are any property. The checker instance for duplicate property names. Cache of values used in EPM so that we avoid multiple enumerations of properties/items. (can be null) The EPM source path segment which points to the property which sub-properites we're writing. (can be null) Set of projected properties, or null if all properties should be written. true if anything was written, false otherwise. Writes a primitive value. The value to write. The collection validator instance. The expected type of the primitive value. The optional type name annotation provided by the user on the OM for this primitive value. The annotation value will override whatever type name is being written. Writes out the value of a complex property. The complex value to write. The metadata type for the complex value. true if the type name belongs to an open property. true if we are writing a collection instead of an entry. Action called before the complex value is written, if it's actually written. Action called after the copmlex value is written, if it's actually written. The checker instance for duplicate property names. The collection validator instance to validate the type names and type kinds of collection items; null if no validation is needed. Cache of values used in EPM so that we avoid multiple enumerations of properties/items. (can be null) The EPM source path segment which points to the property we're writing. (can be null) Set of projected properties, or null if all properties should be written. true if anything was written, false otherwise. Asserts that the current recursion depth of values is zero. This should be true on all calls into this class from outside of this class. Write the items of a collection in ATOM format. The collection value to write. The type reference of the collection value (or null if not metadata is available). true if the type name belongs to an open property. true if we are writing a top-level collection instead of an entry. Writes the value of a primitive instance annotation. The primitive value to write. The expected type of the annotation from the metadata. Writes a single property in ATOM format. The property to write out. The owning type for the or null if no metadata is available. true if writing a top-level property payload; otherwise false. true if we are writing a top-level collection instead of an entry. Action which is called before the property is written, if it's going to be written. Cache of values used in EPM so that we avoid multiple enumerations of properties/items. (can be null) The EPM source path segment which points to the property which sub-property we're writing. (can be null) The checker instance for duplicate property names. Set of projected properties, or null if all properties should be written. true if the property was actually written, false otherwise. Writes a property with a complex value in ATOM format. The complex value to write. The name of the property being written. true if writing a top-level property payload; otherwise false. true if we are writing a top-level collection instead of an entry. Action called before the complex value is written, if it's actually written. Cache of values used in EPM so that we avoid multiple enumerations of properties/items. (can be null) The type information for the property being written. true if the type name belongs to an open property. The EPM source path segment which points to the property we're writing. (can be null) Set of projected properties, or null if all properties should be written. true if anything was written, false otherwise. Writes a property with a collection value in ATOM format. The collection value to write. The name of the property being written. true if writing a top-level property payload; otherwise false. true if writing a top-level collection payload instead of an entry. Action which is called before the property is written, if it's going to be written. The type reference of the collection value (or null if no metadata is available). true if this property is undeclared and the owning type is open. Determines if the property with the specified value should be written into content or not. The owning type of the property to be checked. The set of projected properties for the The name of the property to be checked. The property value to write. The EPM source path segment for the property being written. true if the property should be written into content, or false otherwise Writes a null property value in Atom format. The property type or null if we don't have any. The name of the property to write out. true if writing a top-level property payload; otherwise false. true if we are writing a collection instead of an entry. Action which is called before the property is written, if it's going to be written. Writes the property start element. Action called before anything else is written (if it's not null). The name of the property to write. true if we are writing a collection instead of an entry. true if writing a top-level property payload; otherwise false. Writes the property end element. Writes the instance annotation start element. The the instance annotation to write. Writes the instance annotation end element. Writes the m:type attribute for a property given the name of the type. The type name to write. Write the m:null attribute with a value of 'true' Increases the recursion depth of values by 1. This will throw if the recursion depth exceeds the current limit. Decreases the recursion depth of values by 1. Constructor. The output context to write to. OData ATOM serializer for entity reference links. Constructor. The output context to write to. Writes a single Uri in response to a $links query. The entity reference link to write out. Writes a set of links (Uris) in response to a $links query; includes optional count and next-page-link information. The entity reference links to write. Writes a single Uri in response to a $links query. The entity reference link to write out. A flag indicating whether the link is written as top-level element or not; this controls whether to include namespace declarations etc. OData ATOM serializer for entries and feeds. The serializer for writing ATOM metadata for entries. The serializer for writing ATOM metadata for feeds. Constructor. The output context to write to. Writes the start element for the m:properties element on the entry. Writes the end element for the m:properties element on the entry. Writes the type name category element for the entry. The type name to write. The entry metadata if available. Write the ATOM metadata for an entry The entry metadata to write. The ATOM metadata for the entry which came from EPM. Value for the atom:updated element. Writes the entry atom:id element. The value of the ODataEntry.Id property to write. Writes the read link element for an entry. The read link URL. The ATOM entry metatadata for the current entry. Writes the edit link element for an entry. The edit link URL. The ATOM entry metatadata for the current entry. Writes the edit-media link for an entry. The media resource representing the MR of the entry to write. Write the metadata for an OData association link; makes sure any duplicate of the link's values duplicated in metadata are equal. The association link for which to write the metadata. The instance the association link is defined on. The checker instance for duplicate property names. Set of projected properties, or null if all properties should be written. Writes the navigation link's start element and atom metadata. The navigation link to write. Url to use for the navigation link. If this is specified the Url property on the will be ignored. If this parameter is null, the Url from the navigation link is used. Write the given feed metadata in atom format The feed for which to write the meadata or null if it is the metadata of an atom:source element. Value for the atom:updated element. Set to true if the author element was written, false otherwise. Writes the default empty author for a feed. Writes the next page link for a feed. The feed to write the next page link for. Writes the delta link for a feed. The feed to write the delta link for. Writes a feed link. The feed that contains the link. Relation attribute of the link. href attribute of the link. Function to get the AtomLinkMetadata for the feed link. Writes a stream property to the ATOM payload The stream property to create the payload for. The instance for which the stream property defined on. The checker instance for duplicate property names. Set of projected properties, or null if all properties should be written. Writes an operation (an action or a function). The association link to write. Writes the self or edit link. Uri object for the link. The atom link metadata for the link to specify title, type, hreflang and length of the link. Relationship value. Either "edit" or "self". OData ATOM serializer for ATOM metadata in an entry Base class for all OData ATOM Metadata serializers. Constructor. The output context to write to. Writes an Xml element with the specified primitive value as content. The prefix for the element's namespace. The local name of the element. The namespace of the element. The value to be used as element content. Writes the 'atom:category' element given category metadata. The category information to write. Writes the 'atom:category' element with the specified attributes. The prefix to use for the 'category' element. The value for the 'term' attribute (required). The value for the 'scheme' attribute (optional). The value for the 'label' attribute (optional). Write an empty author element that has the required name element Writes the specified start/end tags and the specified person metadata as content The person metadata to write. Write the metadata of a link in ATOM format The link metadata to write. The (optional) ETag for a link. Write the metadata of a link in ATOM format The link metadata to write. The (optional) ETag for a link. Write the metadata attributes of a link in ATOM format The value for the 'rel' attribute. The value for the 'href' attribute. The value for the 'hreflang' attribute. The value for the 'title' attribute. The value for the 'type' attribute. The value for the 'length' attribute. Feed ATOM metadata serializer for serializing the atom:source element in an entry. This is created on-demand only when needed, but then it's cached. Constructor. The output context to write to. Write the ATOM metadata for an entry The entry metadata to write. The ATOM metadata for the entry which came from EPM. Value for the atom:updated element. Feed ATOM metadata serializer for serializing the atom:source element in an entry. This is created on-demand only when needed, but then it's cached. OData ATOM serializer for ATOM metadata in a feed Constructor. The output context to write to. Write the given feed metadata in atom format The metadata to write. The feed for which to write the meadata or null if it is the metadata of an atom:source element. Value for the atom:updated element. Set to true if the author element was written, false otherwise. The ATOM OData format. Representation of an OData format. The ATOM format instance. The verbose JSON format instance. The JSON Light format instance. The RAW format instance. The batch format instance. The metadata format instance. Detects the payload kinds supported by this format for the specified message payload. The response message with the payload stream. Additional information available for the payload kind detection. The set of s that are supported with the specified payload. Detects the payload kinds supported by this format for the specified message payload. The request message with the payload stream. Additional information available for the payload kind detection. The set of s that are supported with the specified payload. Creates an instance of the input context for this format. The to read. The message to use. The content type of the message to read. The encoding to use. Configuration settings of the OData reader. The OData protocol version to be used for reading the payload. true if reading a response message; otherwise false. The model to use. The optional URL resolver to perform custom URL resolution for URLs read from the payload. Format specific state stored during payload kind detection using the . The newly created input context. Creates an instance of the output context for this format. The message to use. The specific media type being written. The encoding to use. Configuration settings of the OData writer. true if writing a response message; otherwise false. The model to use. The optional URL resolver to perform custom URL resolution for URLs written to the payload. The newly created output context. Specifies the ATOM format; we also use this for all Xml based formats (if ATOM can't be used). The ATOM format. Gets the verbose JSON format. The verbose JSON format. Specifies the JSON format. The JSON format. Specifies the RAW format; used for raw values. The RAW format. Gets the batch format instance. The batch format instance. Gets the metadata format instance. The metadata format instance. The text representation - the name of the format. The name of the format. Detects the payload kinds supported by this format for the specified message payload. The response message with the payload stream. Additional information available for the payload kind detection. The set of s that are supported with the specified payload. Detects the payload kinds supported by this format for the specified message payload. The request message with the payload stream. Additional information available for the payload kind detection. The set of s that are supported with the specified payload. Creates an instance of the input context for this format. The to read. The message to use. The content type of the message to read. The encoding to use. Configuration settings of the OData reader. The OData protocol version to be used for reading the payload. true if reading a response message; otherwise false. The model to use. The optional URL resolver to perform custom URL resolution for URLs read from the payload. Format specific state stored during payload kind detection using the . The newly created input context. Creates an instance of the output context for this format. The message to use. The specific media type being written. The encoding to use. Configuration settings of the OData writer. true if writing a response message; otherwise false. The model to use. The optional URL resolver to perform custom URL resolution for URLs written to the payload. The newly created output context. Detects the payload kind(s) from the message stream. The message stream to read from for payload kind detection. true if reading a response message; otherwise false. true if the input should be read synchronously; false if it should be read asynchronously. Additional information available for the payload kind detection. An enumerable of zero or more payload kinds depending on what payload kinds were detected. ATOM format output context. Base class for all output contexts, defines the interface to be implemented by the specific formats. The format for this output context. The message writer settings to be used for writing. Set to true if this context is writing a response payload. true if the input should be written synchronously; false if it should be written asynchronously. The model to use. The optional URL resolver to perform custom URL resolution for URLs written to the payload. The type resolver to use. Constructor. The format for this output context. Configuration settings of the OData writer. true if writing a response message; otherwise false. true if the output should be written synchronously; false if it should be written asynchronously. The model to use. The optional URL resolver to perform custom URL resolution for URLs written to the payload. IDisposable.Dispose() implementation to cleanup unmanaged resources of the context. Writes an into the message payload. The error to write. A flag indicating whether debug information (e.g., the inner error from the ) should be included in the payload. This should only be used in debug scenarios. This method is called if the ODataMessageWriter.WriteError is called once some other write operation has already started. The method should write the in-stream error representation for the specific format into the current payload. Before the method is called no flush is performed on the output context or any active writer. It is the responsibility of this method to flush the output before the method returns. Creates an to write a feed. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). The created writer. The write must flush the output when it's finished (inside the last Write call). Creates an to write an entry. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). The created writer. The write must flush the output when it's finished (inside the last Write call). Creates an to write a collection of primitive or complex values (as result of a service operation invocation). The item type of the collection being written or null if no metadata is available. The created collection writer. The write must flush the output when it's finished (inside the last Write call). Creates an to write a batch of requests or responses. The boundary string for the batch structure itself. The created batch writer. We don't plan to make this public! The write must flush the output when it's finished (inside the last Write call). Since we don't want to support batch format extensibility (at least not yet) this method should remain internal. Creates an to write a parameter payload. The function import whose parameters will be written. The created parameter writer. The write must flush the output when it's finished (inside the last Write call). Writes a service document with the specified as message payload. The default workspace to write in the service document. It is the responsibility of this method to flush the output before the method returns. Writes an as message payload. The property to write. It is the responsibility of this method to flush the output before the method returns. Writes an as the message payload. The error to write. A flag indicating whether debug information (e.g., the inner error from the ) should be included in the payload. This should only be used in debug scenarios. It is the responsibility of this method to flush the output before the method returns. Writes the result of a $links query as the message payload. The entity reference links to write as message payload. The entity set of the navigation property. The navigation property for which the entity reference links are being written, or null if none is available. It is the responsibility of this method to flush the output before the method returns. Writes a singleton result of a $links query as the message payload. The entity reference link to write as message payload. The entity set of the navigation property. The navigation property for which the entity reference link is being written, or null if none is available. It is the responsibility of this method to flush the output before the method returns. Writes a single value as the message body. The value to write. It is the responsibility of this method to flush the output before the method returns. Writes the metadata document as the message body. It is the responsibility of this method to flush the output before the method returns. Asserts that the input context was created for synchronous operation. Asserts that the input context was created for asynchronous operation. Perform the actual cleanup work. If 'true' this method is called from user code; if 'false' it is called by the runtime. Creates an exception which reports that the specified payload kind if not support by this format. The payload kind which is not supported. An exception to throw. The message writer settings to be used for writing. The version of the OData protocol to use. Set to true if a response is being written. true if the output should be written synchronously; false if it should be written asynchronously. The model to use or null if no metadata is available. The optional URL resolver to perform custom URL resolution for URLs written to the payload. The type resolver to use. true if the WCF DS client compatibility format behavior should be used; otherwise false. true if the WCF DS server compatibility format behavior should be used; otherwise false. true if the default format behavior should be used; otherwise false. true if the WCF DS server compatibility API behavior should be used; otherwise false. The oracle to use to determine the type name to write for entries and values. The message output stream. The asynchronous output stream if we're writing asynchronously. The XML writer created for the root of the payload. This field is also used to determine if the output context has been disposed already. In case of customized writers are used, this is always the root writer, never changed. The XML writer to write to. In case of customized writers are used, this is the current writer to write to. A stack used to track XML customization writers. At the beginning the root writer is pushed to the stack. Each non-null entry has an item on this stack. If the XML customization was used for a given entry the writer returned by the customization will be pushed to the stack for it. This is only used from ODataAtomWriter, other writers don't use this. An in-stream error listener to notify when in-stream error is to be written. Or null if we don't need to notify anybody. Constructor. The format for this output context. The message stream to write the payload to. The encoding to use for the payload. Configuration settings of the OData writer. true if writing a response message; otherwise false. true if the output should be written synchronously; false if it should be written asynchronously. The model to use. The optional URL resolver to perform custom URL resolution for URLs written to the payload. Check if the object has been disposed; called from all public API methods. Throws an ObjectDisposedException if the object has already been disposed. Synchronously flush the writer. Writes an into the message payload. The error to write. A flag indicating whether debug information (e.g., the inner error from the ) should be included in the payload. This should only be used in debug scenarios. This method is called if the ODataMessageWriter.WriteError is called once some other write operation has already started. The method should write the in-stream error representation for the specific format into the current payload. Before the method is called no flush is performed on the output context or any active writer. It is the responsibility of this method to flush the output before the method returns. Creates an to write a feed. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). The created writer. The write must flush the output when it's finished (inside the last Write call). Creates an to write an entry. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). The created writer. The write must flush the output when it's finished (inside the last Write call). Creates an to write a collection of primitive or complex values (as result of a service operation invocation). The item type of the collection being written or null if no metadata is available. The created collection writer. The write must flush the output when it's finished (inside the last Write call). Writes a service document with the specified as message payload. The default workspace to write in the service document. It is the responsibility of this method to flush the output before the method returns. Writes an as message payload. The property to write. It is the responsibility of this method to flush the output before the method returns. Writes an as the message payload. The error to write. A flag indicating whether debug information (e.g., the inner error from the ) should be included in the payload. This should only be used in debug scenarios. It is the responsibility of this method to flush the output before the method returns. Writes the result of a $links query as the message payload. The entity reference links to write as message payload. The entity set of the navigation property The navigation property for which the entity reference links are being written, or null if none is available. It is the responsibility of this method to flush the output before the method returns. Writes a singleton result of a $links query as the message payload. The entity reference link to write as message payload. The entity set of the navigation property The navigation property for which the entity reference link is being written, or null if none is available. It is the responsibility of this method to flush the output before the method returns. Initializes the ability to use customization writers. This needs to be called before any of the writer customization functionality is used. Pushes a writer on the top of the customization stack. The writer to push. Pops a writer from the top of the customization stack. The popped writer, the one which was on the top of the stack before the operation. Perform the actual cleanup work. If 'true' this method is called from user code; if 'false' it is called by the runtime. Writes an in-stream error. The error to write. A flag indicating whether debug information (e.g., the inner error from the ) should be included in the payload. This should only be used in debug scenarios. Creates an to write a feed. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). The created writer. Creates an to write an entry. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). The created writer. Creates an to write a collection of primitive or complex values (as result of a service operation invocation). The item type of the collection being written or null if no metadata is available. The created collection writer. Writes an as message payload. The property to write. Writes a service document with the specified as message payload. The default workspace to write in the service document. Writes an as the message payload. The error to write. A flag indicating whether debug information (e.g., the inner error from the ) should be included in the payload. This should only be used in debug scenarios. Writes the result of a $links query as the message payload. The entity reference links to write as message payload. Writes a singleton result of a $links query as the message payload. The entity reference link to write as message payload. Returns the which is to be used to write the content of the message. Returns the oracle to use when determining the type name to write for entries and values. Instance of this class describes a navigation link when it's found in the payload. The navigation link. The navigation property for the link, is it's available. Constructor. The navigation link. The navigation property for the link, if it's available. The navigation link. The navigation property for the link, if it's available. Helper class to verify that all items of a collection are of the same kind and type. This class is only used if no expected item type is specified for the collection; otherwise all items are already validated against the expected item type. true if the item type was derived from the collection value; otherwise false. The item type name extracted from the first non-null item. The primitive type denoted by the item type name or null if the type name is not a valid primitive type name. The item type kind from the first non-null item. Constructor. The item type name extracted from the collection type name. Validates a collection item that was read to make sure it is valid (i.e., has the correct type name and type kind) with respect to the other items in the collection. The type name of the item from the payload. The type kind of the item from the payload. Computes the expected type kind of an item from the type name read from the payload. The type name to compute the type kind from. The primitive type for the specified type name or null if the type name is not a valid primitve type. The of the type with the specified . Validate that the expected and actual type names and type kinds are compatible. The actual type name. The actual type kind. If specified on a collection, returns the item type name that all items are expected to be compatible with; otherwise null. If specified on a collection, returns the item type kind that all items are expected to be compatible with; otherwise EdmTypeKind.None. Read-only stream which initially buffers all read data in order to replay it later. Once no more buffered data exists it reads from the underlying stream directly. The list of buffered chunks of bytes as requested by callers. The stream being wrapped. The read position in the current buffer. true if the reader is not in buffering mode; otherwise false. The current node in the buffer list to read from. Constructor The underlying stream to wrap. Note that only read operations will be invoked on this stream. Not supported since the stream only allows reading. Reads data from the buffer or the underlying stream. The buffer to read the data to. The offset in the buffer to write to. The number of bytes to read. The number of bytes actually read. Seeks the stream. This operation is not supported by this stream. The offset to seek to. The origin of the seek operation. The new position in the stream. Sets the length of the stream. This operation is not supported by this stream. The length in bytes to set. Writes to the stream. This operation is not supported by this stream. The buffer to get data from. The offset in the buffer to start from. The number of bytes to write. Stops the buffering mode and turns the reader into normal read mode where first the buffered data is re-read before the reads are performed on the underlying stream. Stop buffering. Disposes the object. True if called from Dispose; false if called from the finalizer. Moves the reader to the next buffer and drops already consumed data if not in buffering mode. Determines if the stream can read - this one can. Determines if the stream can seek - this one cannot Determines if the stream can write - this one cannot Returns the length of the stream, which this implementation doesn't support. Gets or sets the position in the stream, this stream doesn't support seeking, so position is also unsupported. true if the stream is in buffering mode; otherwise false. Interface used for substitutability of the metadata-centric responsibilities of an entry. Metadata may come from a user-provided model or from the SetSerializationInfo() method on a feed or entry. The latter is considered the "no-model" case since only strings are provided, and there is no interconnectedness. The goal of this interface is to provide a way to query the metadata information available on an entry without needing to know where the metadata originated from. The entry instance. The context object to answer basic questions regarding the type of the entry. The actual entity type of the entry, i.e. ODataEntry.TypeName. The key property name and value pairs of the entry. The ETag property name and value pairs of the entry. The selected navigation properties. The selected stream properties. The selected always bindable operations. Implementation of the metadata builder which only returns values which were explicitly set (never computing or modifying them). Extensibility point for customizing how OData entity metadata (edit-links, IDs, ETags, etc) is built. Gets the edit link of the entity. The absolute URI of the edit link for the entity. Or null if it is not possible to determine the edit link. Gets the read link of the entity. The absolute URI of the read link for the entity. Or null if it is not possible to determine the read link. Gets the ID of the entity. The ID for the entity. Or null if it is not possible to determine the ID. Gets the ETag of the entity. The ETag for the entity. Or null if it is not possible to determine the ETag. Gets the default media resource of the entity. The the default media resource of the entity. Or null if the entity is not an MLE. Gets the entity properties. Non-computed properties from the entity. The the computed and non-computed entity properties. Gets the list of computed and non-computed actions for the entity. The list of computed and non-computed actions for the entity. Gets the list of computed and non-computed functions for the entity. The list of computed and non-computed functions for the entity. Marks the given navigation link as processed. The navigation link we've already processed. Returns the next unprocessed navigation link or null if there's no more navigation links to process. Returns the next unprocessed navigation link or null if there's no more navigation links to process. Gets the edit link of a stream value. The name of the stream property the edit link is computed for; or null for the default media resource. The absolute URI of the edit link for the specified stream property or the default media resource. Or null if it is not possible to determine the stream edit link. Gets the read link of a stream value. The name of the stream property the read link is computed for; or null for the default media resource. The absolute URI of the read link for the specified stream property or the default media resource. Or null if it is not possible to determine the stream read link. Gets the navigation link URI for the specified navigation property. The name of the navigation property to get the navigation link URI for. The value of the link URI as seen on the wire or provided explicitly by the user or previously returned by the metadata builder, which may be null. true if the value of the was seen on the wire or provided explicitly by the user or previously returned by the metadata builder, false otherwise. This flag allows the metadata builder to determine whether a null navigation link url is an uninitialized value or a value that was set explicitly. The navigation link URI for the navigation property. null if its not possible to determine the navigation link for the specified navigation property. Gets the association link URI for the specified navigation property. The name of the navigation property to get the association link URI for. The value of the link URI as seen on the wire or provided explicitly by the user or previously returned by the metadata builder, which may be null. true if the value of the was seen on the wire or provided explicitly by the user or previously returned by the metadata builder, false otherwise. This flag allows the metadata builder to determine whether a null association link url is an uninitialized value or a value that was set explicitly. The association link URI for the navigation property. null if its not possible to determine the association link for the specified navigation property. Get the operation target URI for the specified . The fully qualified name of the operation for which to get the target URI. The binding parameter type name to include in the target, or null/empty if there is none. The target URI for the operation. null if it is not possible to determine the target URI for the specified operation. Get the operation title for the specified . The fully qualified name of the operation for which to get the target URI. The title for the operation. null if it is not possible to determine the title for the specified operation. Gets an instance of the metadata builder which never returns anything other than nulls. Implementation of the metadata builder which only returns nulls. Singleton instance of the null metadata builder. Prevents a default instance of the class from being created. Gets the edit link of the entity. The absolute URI of the edit link for the entity. Or null if it is not possible to determine the edit link. Gets the read link of the entity. The absolute URI of the read link for the entity. Or null if it is not possible to determine the read link. Gets the ID of the entity. The ID for the entity. Or null if it is not possible to determine the ID. Gets the ETag of the entity. The ETag for the entity. Or null if it is not possible to determine the ETag. The entry whose payload metadata is being queried. Creates a new no-op metadata builder. The entry whose payload metadata is being queried. Gets the edit link of the entity. The absolute URI of the edit link for the entity. Gets the read link of the entity. The absolute URI of the read link for the entity. Gets the ID of the entity. The ID for the entity. Gets the ETag of the entity. The ETag for the entity. Gets the default media resource of the entity. The the default media resource of the entity. Or null if the entity is not an MLE. Gets the entity properties. Non-computed properties from the entity. The the computed and non-computed entity properties. Gets the list of computed and non-computed actions for the entity. The list of computed and non-computed actions for the entity. Gets the list of computed and non-computed functions for the entity. The list of computed and non-computed functions for the entity. Gets the navigation link URI for the specified navigation property. The name of the navigation property to get the navigation link URI for. The value of the link URI as seen on the wire or provided explicitly by the user or previously returned by the metadata builder, which may be null. true if the value of the was seen on the wire or provided explicitly by the user or previously returned by the metadata builder, false otherwise. This flag allows the metadata builder to determine whether a null navigation link url is an uninitialized value or a value that was set explicitly. The navigation link URI for the navigation property. null if its not possible to determine the navigation link for the specified navigation property. Gets the association link URI for the specified navigation property. The name of the navigation property to get the association link URI for. The value of the link URI as seen on the wire or provided explicitly by the user or previously returned by the metadata builder, which may be null. true if the value of the was seen on the wire or provided explicitly by the user or previously returned by the metadata builder, false otherwise. This flag allows the metadata builder to determine whether a null association link url is an uninitialized value or a value that was set explicitly. The association link URI for the navigation property. null if its not possible to determine the association link for the specified navigation property. Default implementation of Empty array of properties. The entry instance. The context object to answer basic questions regarding the type of the entry. The key property name and value pairs of the entry. The ETag property name and value pairs of the entry. The selected navigation properties. The selected stream properties. The selected always bindable operations. Constructs an instance of . The entry instance. The context object to answer basic questions regarding the type of the entry. Creates an instance of . The entry instance. The context object to answer basic questions regarding the type of the entry. The serialization info of the entry for writing without model. The entity type of the entry. The metadata context to use. The selected properties. A new instance of . Gets the the CLR value for a primitive property. The entry to get the property value. Name of the property. The name of the entity type to get the property value. true if the property is a key property, false otherwise. The clr value of the property. Gets the CLR value for a primitive property. The name of the entity type to get the property value. The ODataProperty to get the value from. true if the property is a key property, false otherwise. The clr value of the property. Validates that the entry has key properties. Key properties of the entry. The entity type name of the entry. The entry instance. The context object to answer basic questions regarding the type of the entry. The actual entity type of the entry, i.e. ODataEntry.TypeName. The key property name and value pairs of the entry. The ETag property name and value pairs of the entry. The selected navigation properties. The selected stream properties. The selected always bindable operations. Implementation of based on serialization info. Empty array of navigation properties. Empty dictionary of stream properties. Empty array of operations. The serialization info of the entry for writing without model. Constructs an instance of . The entry instance. The context object to answer basic questions regarding the type of the entry. The serialization info of the entry for writing without model. Gets the property name value pairs filtered by serialization property kind. The entry to get the properties from. The serialization info property kind. The entity type name of the entry. The property name value pairs filtered by serialization property kind. The key property name and value pairs of the entry. The ETag property name and value pairs of the entry. The actual entity type of the entry, i.e. ODataEntry.TypeName. The selected navigation properties. The selected stream properties. The selected always bindable operations. Implementation of based on the given model. The entity type of the entry. The metadata context to use. The selected properties. Constructs an instance of . The entry instance. The context object to answer basic questions regarding the type of the entry. The entity type of the entry. The metadata context to use. The selected properties. The key property name and value pairs of the entry. The ETag property name and value pairs of the entry. The actual entity type name of the entry. The selected navigation properties. The selected stream properties. The selected always bindable operations. Interface used for substitutability of the metadata-centric responsibilities of . Gets an entity metadata builder for the given entry. Entry state to use as reference for information needed by the builder. An entity metadata builder. Gets the list of operations that are always bindable to a type. The binding type in question. The list of operations that are always bindable to a type. Determines whether operations bound to this type must be qualified with the operation they belong to when appearing in a $select clause. The entity type the operations are bound to. True if the operations must be container qualified, otherwise false. Gets the Edm Model. Gets the service base Uri. Gets the metadata document uri. Default implementation of . The Edm Model. EdmTypeResolver instance to resolve entity set base type. Cache of operations that are always bindable to entity types. true if we are reading or writing a response payload, false otherwise. Callback to determine whether operations bound to this type must be qualified with the operation they belong to when appearing in a $select clause. The metadata document Uri. The service base Uri. Constructs an ODataMetadataContext. true if we are writing a response payload, false otherwise. The Edm model. The metadata document uri. This overload should only be used by the writer. Constructs an ODataMetadataContext. true if we are reading a response payload, false otherwise. Callback to determine whether operations bound to this type must be qualified with the operation they belong to when appearing in a $select clause. EdmTypeResolver instance to resolve entity set base type. The Edm model. The metadata document Uri. This overload should only be used by the reader. Gets an entity metadata builder for the given entry. Entry state to use as reference for information needed by the builder. An entity metadata builder. Gets the list of operations that are always bindable to a type. The binding type in question. The list of operations that are always bindable to a type. Determines whether operations bound to this type must be qualified with the operation they belong to when appearing in a $select clause. The entity type the operations are bound to. True if the operations must be container qualified, otherwise false. Gets the Edm Model. Gets the service base Uri. Gets the metadata document uri. Generates operations which were omitted by the service because they fully match conventions/templates and are always available. The current entry metadata context. The metadata context of the entry to generate the missing operations for. The list of computed actions. The list of computed functions. Initializes a new instance of the class. The metadata context of the entry to generate the missing operations for. The current entry metadata context. Gets the computed missing Actions from the generator. The computed missing Actions. Gets the computed missing Functions from the generator. The computed missing Functions. Returns a hash set of function imports (actions and functions) in the given entry. The entry in question. The edm model to resolve function imports. The metadata document uri. The hash set of function imports (actions and functions) in the given entry. Computes the operations that are missing from the payload but should be added by conventions onto the entry. Interface used for substitutability, to answer basic questions regarding the type of the entry or feed. Metadata may come from a user-provided model or from the SetSerializationInfo() method on a feed or entry. The latter is considered the "no-model" case since only strings are provided, and there is no interconnectedness. The goal of this interface is to provide a way to query the metadata information available on an entry or feed without needing to know where the metadata originated from. The entity set name of the feed or entry. The element type name of the entity set of the feed or entry. The expected entity type name of the entry. For example, in the request URI 'http://example.com/Service.svc/People/Namespace.VIP_Person', the expected entity type is Namespace.VIP_Person. (The entity set element type name in this example may be Person, and the actual entity type of a particular entity might be a type more derived than VIP_Person) true if the entry is an MLE, false otherwise. The Url convention to use for the entity set. Class responsible for logic specific to the JSON Light full metadata level (indicated by "odata=fullmetadata" in the media type). The general rule-of-thumb for full-metadata payloads is that they include all "odata.*" annotations that would be included in minimal metadata mode, plus any "odata.*" annotations that could be computed client-side if we the client had a model. Class responsible for logic that varies based on the JSON Light metadata level. Creates the appropriate metadata level based on the media type being written. The full media type being written. This media type must have a type/subtype of "application/json" and should not imply verbose json (by including "odata=verbose" as a parameter). The metadata document uri from the writer settings. The edm model. true if we are writing a response, false otherwise. The JSON Light metadata level being written. Returns the oracle to use when determing the type name to write for entries and values. If true, the type name to write will vary based on the metadata level. If false, the type name writing rules will always match minimal metadata, regardless of the actual metadata level being written. This is for backwards compatibility. An oracle that can be queried to determine the type name to write. Indicates whether the "odata.metadata" URI should be written based on the current metadata level. true if the metadata URI should be written, false otherwise. Creates the metadata builder for the given entry. If such a builder is set, asking for payload metadata properties (like EditLink) of the entry may return a value computed by convention, depending on the metadata level and whether the user manually set an edit link or not. The entry to create the metadata builder for. The context object to answer basic questions regarding the type of the entry or feed. The serialization info for the entry. The entity type of the entry. The selected properties of this scope. true if the entity metadata builder to create should be for a response payload; false for a request. true if keys should go in seperate segments in auto-generated URIs, false if they should go in parentheses. A null value means the user hasn't specified a preference and we should look for an annotation in the entity container, if available. The created metadata builder. Injects the appropriate metadata builder based on the metadata level. The entry to inject the builder. The metadata builder to inject. The Edm model. The metadata document uri from the writer settings. Constructs a new . The metadata document uri from the writer settings. The Edm model. Returns the oracle to use when determing the type name to write for entries and values. If true, the type name to write according to full metadata rules. If false, the type name writing according to minimal metadata rules. This is for backwards compatibility. An oracle that can be queried to determine the type name to write. Indicates whether the "odata.metadata" URI should be written based on the current metadata level. true if the metadata URI should be written, false otherwise. Creates the metadata builder for the given entry. If such a builder is set, asking for payload metadata properties (like EditLink) of the entry may return a value computed by convention, depending on the metadata level and whether the user manually set an edit link or not. The entry to create the metadata builder for. The context object to answer basic questions regarding the type of the entry or feed. The serialization info for the entry. The entity type of the entry. The selected properties of this scope. true if the entity metadata builder to create should be for a response payload; false for a request. true if keys should go in seperate segments in auto-generated URIs, false if they should go in parentheses. A null value means the user hasn't specified a preference and we should look for an annotation in the entity container, if available. The created metadata builder. Injects the appropriate metadata builder based on the metadata level. The entry to inject the builder. The metadata builder to inject. Returns the metadata document URI which has been validated to be non-null. Class responsible for determining the type name that should be written on the wire for entries and values in JSON full metadata mode. Class responsible for determining the type name that should be written on the wire for entries and values in JSON Light. Determines the entity type name to write to the payload. The expected type name, e.g. the base type of the set or the nav prop. The ODataEntry whose type is to be written. Type name to write to the payload, or null if no type name should be written. Determines the type name to write to the payload. Json Light type names are only written into the payload for open properties or if the payload type name is more derived than the model type name. The ODataValue whose type name is to be written. The type as expected by the model. The type resolved from the value. true if the type name belongs to an open property, false otherwise. Type name to write to the payload, or null if no type should be written. Determines the entity type name to write to the payload. The expected type name, e.g. the base type of the set or the nav prop. The ODataEntry whose type is to be written. Type name to write to the payload, or null if no type name should be written. Determines the type name to write to the payload. Json Light type names are only written into the payload for open properties or if the payload type name is more derived than the model type name. The ODataValue whose type name is to be written. The type as expected by the model. The type resolved from the value. true if the type name belongs to an open property, false otherwise. Type name to write to the payload, or null if no type should be written. Class responsible for logic specific to the JSON Light minimal metadata level (indicated by "odata=minimalmetadata" in the media type, or lack of an "odata" parameter in a v3 and above request). The general rule-of-thumb for minimal-metadata payloads is that they include all "odata.*" annotations that can't be computed client-side, assuming the client has the server model available as well as the ability to compute missing payload metadata based on the standard conventions. Returns the oracle to use when determing the type name to write for entries and values. Not used in this implementation of the abstract method. An oracle that can be queried to determine the type name to write. Indicates whether the "odata.metadata" URI should be written based on the current metadata level. true if the metadata URI should be written, false otherwise. Creates the metadata builder for the given entry. If such a builder is set, asking for payload metadata properties (like EditLink) of the entry may return a value computed by convention, depending on the metadata level and whether the user manually set an edit link or not. The entry to create the metadata builder for. The context object to answer basic questions regarding the type of the entry or feed. The serialization info for the entry. The entity type of the entry. The selected properties of this scope. true if the entity metadata builder to create should be for a response payload; false for a request. true if keys should go in seperate segments in auto-generated URIs, false if they should go in parentheses. A null value means the user hasn't specified a preference and we should look for an annotation in the entity container, if available. The created metadata builder. Injects the appropriate metadata builder based on the metadata level. The entry to inject the builder. The metadata builder to inject. Class responsible for determining the type name that should be written on the wire for entries and values in JSON minimal metadata mode, or the other metadata modes of JSON light when is false. Determines the entity type name to write to the payload. The expected type name, e.g. the base type of the set or the nav prop. The ODataEntry whose type is to be written. Type name to write to the payload, or null if no type name should be written. Determines the type name to write to the payload. Json Light type names are only written into the payload for open properties or if the payload type name is more derived than the model type name. The ODataValue whose type name is to be written. The type as expected by the model. The type resolved from the value. true if the type name belongs to an open property, false otherwise. Type name to write to the payload, or null if no type should be written. Class responsible for logic specific to the JSON Light no metadata level (indicated by "odata=nometadata" in the media type). The general rule-of-thumb for no-metadata payloads is that they omit any "odata.*" annotations, except for odata.nextlink and odata.count, since the client would get a inaccurate representation of the data available if they were left out. Returns the oracle to use when determing the type name to write for entries and values. If true, the type name to write according to full metadata rules. If false, the type name writing according to minimal metadata rules. This is for backwards compatibility. An oracle that can be queried to determine the type name to write. Indicates whether the "odata.metadata" URI should be written based on the current metadata level. true if the metadata URI should be written, false otherwise. Creates the metadata builder for the given entry. If such a builder is set, asking for payload metadata properties (like EditLink) of the entry may return a value computed by convention, depending on the metadata level and whether the user manually set an edit link or not. The entry to create the metadata builder for. The context object to answer basic questions regarding the type of the entry or feed. The serialization info for the entry. The entity type of the entry. The selected properties of this scope. true if the entity metadata builder to create should be for a response payload; false for a request. true if keys should go in seperate segments in auto-generated URIs, false if they should go in parentheses. A null value means the user hasn't specified a preference and we should look for an annotation in the entity container, if available. The created metadata builder. Injects the appropriate metadata builder based on the metadata level. The entry to inject the builder. The metadata builder to inject. Class responsible for determining the type name that should be written on the wire for entries and values in JSON no metadata mode. Determines the entity type name to write to the payload. The expected type name, e.g. the base type of the set or the nav prop. The ODataEntry whose type is to be written. Type name to write to the payload, or null if no type name should be written. Determines the type name to write to the payload. Json Light type names are only written into the payload for open properties or if the payload type name is more derived than the model type name. The ODataValue whose type name is to be written. The type as expected by the model. The type resolved from the value. true if the type name belongs to an open property, false otherwise. Type name to write to the payload, or null if no type should be written. The context object to answer basic questions regarding the type of the entry or feed. Default Url convention. If true, throw if any of the set or type name cannot be determined; if false, return null when any of the set or type name cannot determined. Constructs an instance of . If true, throw if any of the set or type name cannot be determined; if false, return null when any of the set or type name cannot determined. Creates an instance of . The serialization info from the feed or entry instance. The entity set of the feed or entry. The element type of the entity set. The expected entity type of the feed or entry. The Edm model instance to use. If true, throw if any of the set or type name cannot be determined; if false, return null when any of the set or type name cannot determined. A new instance of . Validate and return the given value. The type of the value to validate. The value to validate. The return value. The entity set name of the feed or entry. The element type name of the entity set of the feed or entry. The expected entity type name of the entry. For example, in the request URI 'http://example.com/Service.svc/People/Namespace.VIP_Person', the expected entity type is Namespace.VIP_Person. (The entity set element type name in this example may be Person, and the actual entity type of a particular entity might be a type more derived than VIP_Person) true if the entry is an MLE, false otherwise. The Url convention to use for the entity set. The context object to answer basic questions regarding the type of the entry or feed based on the serialization info. The serialization info of the entry for writing without model. Constructs an instance of . The serialization info from the feed or entry instance. The entity set name of the feed or entry. The element type name of the entity set of the feed or entry. The expected entity type name of the entry. For example, in the request URI 'http://example.com/Service.svc/People/Namespace.VIP_Person', the expected entity type is Namespace.VIP_Person. (The entity set element type name in this example may be Person, and the actual entity type of a particular entity might be a type more derived than VIP_Person) true if the entry is an MLE, false otherwise. The Url convention to use for the entity set. The context object to answer basic questions regarding the type of the entry or feed based on the metadata. The Edm model instance to use. The entity set of the feed or entry. The element type of the entity set of the feed or entry. The expected entity type of the feed or entry. For example, in the request URI 'http://example.com/Service.svc/People/Namespace.VIP_Person', the expected entity type is Namespace.VIP_Person. (The entity set element type name in this example may be Person, and the actual entity type of a particular entity might be a type more derived than VIP_Person) The entity set name of the feed or entry. true if the entry is an media link entry or if the feed contains media link entries, false otherwise. The url convention to use for the entity set. Constructs an instance of . The entity set of the feed or entry. The element type of the entity set. The expected entity type of the feed or entry. The Edm model instance to use. The entity set name of the feed or entry. The element type name of the entity set of the feed or entry. The expected entity type name of the entry. For example, in the request URI 'http://example.com/Service.svc/People/Namespace.VIP_Person', the expected entity type is Namespace.VIP_Person. (The entity set element type name in this example may be Person, and the actual entity type of a particular entity might be a type more derived than VIP_Person) true if the entry is an MLE, false otherwise. The Url convention to use for the entity set. Extension methods on the OData object model. Provide additional serialization information to the for . The instance to set the serialization info. The serialization info to set. Provide additional serialization information to the for . The instance to set the serialization info. The serialization info to set. Provide additional serialization information to the for . The instance to set the serialization info. The serialization info to set. Provide additional serialization information to the for . The instance to set the serialization info. The serialization info to set. Provide additional serialization information to the for . The instance to set the serialization info. The serialization info to set. Provide additional serialization information to the for . The instance to set the serialization info. The serialization info to set. Class to provide additional serialization information to the for an . The fully qualified type name of the collection to be written. Validates the instance. The serialization info instance to validate. The instance. The fully qualified type name of the collection to be written. Class to provide additional serialization information to the for an . The source entity set name of the navigation property. Should be fully qualified if the entity set is not in the default container. The fully qualified type name of the declaring entity type of the navigation property if the declaring entity type is not the base type of the source entity set. Should be null if the declaring entity type is the base type of the source entity set. The name of the navigation property to write the entity reference links for. Validates the instance. The serialization info instance to validate. The instance. The source entity set name of the navigation property. Should be fully qualified if the entity set is not in the default container. The fully qualified type name of the declaring entity type of the navigation property if the declaring entity type is not the base type of the source entity set. Should be null if the declaring entity type is the base type of the source entity set. The name of the navigation property to write the entity reference links for. Class to provide additional serialization information to the for an . The source entity set name of the navigation property. Should be fully qualified if the entity set is not in the default container. The fully qualified type name of the declaring entity type of the navigation property if the declaring entity type is not the base type of the source entity set. Should be null if the declaring entity type is the base type of the source entity set. The name of the navigation property to write the entity reference link for. Validates the instance. The serialization info instance to validate. The instance. The source entity set name of the navigation property. Should be fully qualified if the entity set is not in the default container. The fully qualified type name of the declaring entity type of the navigation property if the declaring entity type is not the base type of the source entity set. Should be null if the declaring entity type is the base type of the source entity set. The name of the navigation property to write the entity reference link for. true if the navigation property navigates to a collection of entities; false otherwise. The enum of property kinds. Unspecified property kind or if the property is not a key property, an etag property or an open property. The property is a key property. The property is an etag property The property is an open property Class to provide additional serialization information to the for an . The kind of the property Class to provide additional serialization information to the for an . The entity set name of the entry to be written. Should be fully qualified if the entity set is not in the default container. The namespace qualified element type name of the entity set. The namespace qualified type name of the expected entity type. Validates the instance. The serialization info instance to validate. The instance. The entity set name of the entry to be written. Should be fully qualified if the entity set is not in the default container. The namespace qualified element type name of the entity set. The namespace qualified type name of the expected entity type. Class to represent a HTTP header value element. Internal constructor to create a new instance of . The name of the preference. The value of the preference. The enumeration of preference parameter key value pairs. Converts the current to string. The string for . Appends the and to as name=value. The string builder to append to. The name to append. The value to append. The name of the preference. The value of the preference. The enumeration of preference parameter key value pairs. Extension methods for http header values. Constructs a new instance of . Returns the HTTP header value string which can be used to set the header on the requst and response messages. Returns the HTTP header value string which can be used to set the header on the requst and response messages. Lexer to parse HTTP header values. The ',' separator. The ';' separator. The '=' separator. The name of the HTTP header being parsed. The value of the HTTP header being parsed. The starting index to the next item to be parsed. The value of the current parsed item. If the item type is quoted-string, this returns the unescaped and unquoted string value. For other item types, the value is the same as the original text from the header. The original text of the current parsed item. If the item type is quoted-string, this returns the escaped and quoted string value straight from the header. For other item types, the original text is the same as the item value. Constructs a new instance of . The name of the HTTP header being parsed. The value of the HTTP header being parsed. The value of the current parsed item. If the item type is quoted-string, this returns the unescaped and unquoted string value. For other item types, the value is the same as the original text from the header. The original text of the current parsed item. If the item type is quoted-string, this returns the escaped and quoted string value straight from the header. For other item types, the original text is the same as the item value. The start index of the next item to be parsed. Constructs a new instance of the HTTP header value item. The name of the HTTP header being parsed. The value of the HTTP header being parsed. The newly created instance of . Reads the content of a HTTP header from this instance to a new instance. A new instance populated with the content from this instance. Returns an instance of to parse the rest of the items on the header value. Parsing is based on this grammar: header = "header-name" ":" 1#element element = token [ BWS "=" BWS (token | quoted-string) ] *( OWS ";" [ OWS parameter ] ) parameter = token [ BWS "=" BWS (token | quoted-string) ] Returns an instance of to parse the rest of the items on the header value. Reads a from and advances the forward. The lexer to read from. The that was read. Reads a token or token=(token|quoted-string) from the , convert it to a key value pair and advances the . The lexer to read from. The converted key value pair. Returns true if we've parsed to the end of the header value, false otherwise. Returns true if we've parsed to the end of the header value, false otherwise. Reads a token or quoted-string value from the header. The token or quoted-string value that was read from the header. Reads a token from the header. The token item that was read from the header. Reads a separator from the header. The separator item that was read from the header. The value of the current parsed item. If the item type is quoted-string, this returns the unescaped and unquoted string value. For other item types, the value is the same as the original text from the header. The original text of the current parsed item. If the item type is quoted-string, this returns the escaped and quoted string value straight from the header. For other item types, the original text is the same as the item value. The type of the current parsed item. The item type enum. Currently at the start of the header value. The current item is a token. The current item is a quoted-string. The current item is the header element separator ','. The current item is the parameter separator ';'. The current item is the value separator '='. At the end of the header value. Represents the start of the http header value. Constructs a new instance of . The name of the HTTP header being parsed. The value of the HTTP header being parsed. Returns an instance of to parse the rest of the items on the header value. Parsing is based on this grammar: header = "header-name" ":" 1#element element = token [ BWS "=" BWS (token | quoted-string) ] *( OWS ";" [ OWS parameter ] ) parameter = token [ BWS "=" BWS (token | quoted-string) ] Returns an instance of to parse the rest of the items on the header value. The type of the current item. Represents a token in the HTTP header value. Constructs a new instance of . The name of the HTTP header being parsed. The value of the HTTP header being parsed. The value of the token. The start index of the next item. Returns an instance of to parse the rest of the items on the header value. Parsing is based on this grammar: header = "header-name" ":" 1#element element = token [ BWS "=" BWS (token | quoted-string) ] *( OWS ";" [ OWS parameter ] ) parameter = token [ BWS "=" BWS (token | quoted-string) ] Returns an instance of to parse the rest of the items on the header value. The type of the current item. Represents a quoted-string in the HTTP header value. Constructs a new instance of . The name of the HTTP header being parsed. The value of the HTTP header being parsed. The value of the quoted string, unescaped and without quotes. The original text of the quoted string, escaped and with quotes. The start index of the next item. Returns an instance of to parse the rest of the items on the header value. Parsing is based on this grammar: header = "header-name" ":" 1#element element = token [ BWS "=" BWS (token | quoted-string) ] *( OWS ";" [ OWS parameter ] ) parameter = token [ BWS "=" BWS (token | quoted-string) ] Returns an instance of to parse the rest of the items on the header value. The type of the current item. Represents a separator in the HTTP header value. Constructs a new instance of . The name of the HTTP header being parsed. The value of the HTTP header being parsed. The value of the separator. The start index of the next item. Returns an instance of to parse the rest of the items on the header value. Parsing is based on this grammar: header = "header-name" ":" 1#element element = token [ BWS "=" BWS (token | quoted-string) ] *( OWS ";" [ OWS parameter ] ) parameter = token [ BWS "=" BWS (token | quoted-string) ] Returns an instance of to parse the rest of the items on the header value. The type of the current item. Represents the end of the http header value. Static instance of the end item. Constructs a new instance of . Returns an instance of to parse the rest of the items on the header value. Parsing is based on this grammar: header = "header-name" ":" 1#element element = token [ BWS "=" BWS (token | quoted-string) ] *( OWS ";" [ OWS parameter ] ) parameter = token [ BWS "=" BWS (token | quoted-string) ] Returns an instance of to parse the rest of the items on the header value. The type of the current item. Filter class to determine whether or not to read an annotation. Filter that maches all annotation names. Filter than maches no annotation names. Separator for annotation filter patterns. Patterns to match, sorted in the order of higher to lower priorities to match. Private constructor to create a filter from comma delimited patterns to match to include or exclude annotations. Patters to match to include or exclude annotations. Create a filter from comma delimited patterns to match to include or exclude annotations. Comma delimited patterns to match to include or exclude annotations. The newly created filter. Returns true to indicate that the annotation with the name should be read, false otherwise. The name of the annotation in question. Returns true to indicate that the annotation with the name should be read, false otherwise. Filter to read all annotations. Private default constructor. Returns true to indicate that the annotation with the name should be read, false otherwise. The name of the annotation in question. Returns true to indicate that the annotation with the name should be read, false otherwise. Filter to read no annotation. Private default constructor. Returns true to indicate that the annotation with the name should be read, false otherwise. The name of the annotation in question. Returns true to indicate that the annotation with the name should be read, false otherwise. Filter pattern class to determine whether an annotation name matches the pattern. The '.' namespace separator. The '-' operator to indicate that the annotation should be excluded from read when it matches the pattern. The wild card constant. String constant for .* The "*" pattern that includes all annotations. The "-*" pattern that excludes all annotations. The pattern to match. true if the annotation should be excluded from reading when its name matches this pattern; false otherwise. Constructs a pattern instance to determine whether an annotation name matches the pattern. The pattern to match. true if the annotation should be excluded from reading when its name matches this pattern; false otherwise. Compares the priority of current pattern with the priority of . A 32-bit signed integer that indicates the relative priority of the patterns being compared. The return value has the following meanings: -1 means this pattern has higher priority than . 0 means this pattern has the same priority as . 1 means this pattern has lower priority than . A pattern to compare with this pattern. Creates a pattern instance to determine whether an annotation name matches the pattern. The pattern for this instance. The newly created instance. Sorts the patterns in the array from highest to lowest priorities. The source array to sort. When the method returns the items in this array instance will be rearragned. Match the given annotation name against the pattern. Annotation name in question. Returns true if the given annotation name matches the pattern, false otherwise. Compares the priority of with . The left hand side pattern to compare. The right hand side pattern to compare. A 32-bit signed integer that indicates the relative priority of the patterns being compared. The return value has the following meanings: -1 means has higher priority than . 0 means has same priority as . 1 means has lower priority than . Removes the exclude operator from the given pattern string. The input pattern to the method and will return the pattern without the exclude operator if it's found. Returns true if the exclude operator is found and removed from the input pattern; false otherwise. Validates the pattern. The pattern to validate. true if the annotation should be excluded from reading when its name matches this pattern; false otherwise. The wild card pattern that matches everything. Constructs the wild card pattern. true if the annotation should be excluded from reading when its name matches this pattern; false otherwise. Match the given annotation name against the pattern. Annotation name in question. Returns true if the given annotation name matches the pattern, false otherwise. Pattern class to match any annotation name that starts with this pattern. Constructs the starts with pattern. The pattern to start with. true if the annotation should be excluded from reading when its name matches this pattern; false otherwise. Match the given annotation name against the pattern. Annotation name in question. Returns true if the given annotation name matches the pattern, false otherwise. Pattern class to match a annotation name that is exactly the same as this pattern. Constructs the exact match pattern. The exact pattern to match true if the annotation should be excluded from reading when its name matches this pattern; false otherwise. Match the given annotation name against the pattern. Annotation name in question. Returns true if the given annotation name matches the pattern, false otherwise. Contract for providing implementations of more specific lookups needed for parsing OData URIs that are not efficiently answered by existing APIs in and its related interfaces. Finds all function imports with the given name which are bindable to an instance of the giving binding type or a more derived type. The binding entity type. The name of the function imports to find. May be qualified with an entity container name. The function imports that match the search criteria. Finds an entity set given a name that may be container qualified. If no container name is provided, the default container should be used. The name which might be container qualified. If no container name is provided, the default container should be used. The entity set if one was found or null. Finds a service operation for the given name. The name of the service operation to find. May be qualified with an entity container name. The function import representing a service operation or null if one could not be found with the given name. Finds a function or action bound to the specific type with the given name. The binding type. The name of the function imports to find. May be qualified with an entity container name. The parameter names of the non-binding parameters, if provided in the request URI. The function import that matches the search criteria or null if there was no match. Represents an instance annotation. Constructs a new instance. The name of the instance annotation. The value of the instance annotation. Validates that the given is a valid instance annotation name. Name to validate. Validates the given is a valid instance annotation value. Value to validate. Instance annotation name. Instance annotation value. Extension methods to IODataRequestMessage and IODataResponseMessage. Reads the DataServiceVersion header from the and parses it. If no DataServiceVersion header is found it sets the default version to be used for reading. The message to get the data service version header from. The default version to use if the header was not specified. The retrieved from the DataServiceVersion header of the message. The default version if none is specified in the header. Reads the DataServiceVersion header from the and parses it. If no DataServiceVersion header is found it sets the default version to be used for reading. The message to get the data service version header from. The default version to use if the header was not specified. The retrieved from the DataServiceVersion header of the message. The default version if none is specified in the header. Gets the instance to get or set preferences on the "Prefer" header of the . The request message to get or set the "Prefer" header. Returns the instance to get or set preferences on the "Prefer" header of the . Gets the instance to get or set preferences on the "Preference-Applied" header of the . The response message to get or set the "Preference-Applied" header. Returns the instance to get or set preferences on the "Preference-Applied" header of the . Base Configuration settings for OData message readers. Quotas to use for limiting resource consumption when reading an OData message. The check characters. The enable atom metadata reading. The annotation filter. Initializes a new instance of the class. Copy constructor. The instance to copy. Flag to control whether the reader should check for valid Xml characters or not. Flag to control whether ATOM metadata is read in ATOM payloads. Quotas to use for limiting resource consumption when reading an OData message. Func to evaluate whether an annotation should be read or skipped by the reader. The func should return true if the annotation should be read and false if the annotation should be skipped. A null value indicates that all annotations should be skipped. Base Configuration settings for OData message writers. Quotas to use for limiting resource consumption when writing an OData message. The check characters. The indent. Constructor to create default settings for OData writers. Copy constructor to create a copy of the settings for OData writers. Settings to create a copy from. Flag to control whether the writer should use indentation or not. Flag to control whether the writer should check for valid Xml characters or not. Quotas to use for limiting resource consumption when writing an OData message. Class to set the "Prefer" header on an or the "Preference-Applied" header on an . The return-no-content preference token. The return-content preference token. The odata-annotations preference-extensions token. The Prefer header name. The Preference-Applied header name. Empty header parameters The return-no-content preference. The return-content preference. The message to set the preference header to and to get the preference header from. "Prefer" if message is an IODataRequestMessage; "Preference-Applied" if message is an IODataResponseMessage. Dictionary of preferences in the header Internal constructor to instantiate an from an . The request message to get and set the "Prefer" header. Internal constructor to instantiate an from an . The response message to get and set the "Preference-Applied" header. Adds quotes around the given text value. text to quote. Returns the quoted text. Returns true if the given preference exists in the header, false otherwise. Preference in question. Returns true if the given preference exists in the header, false otherwise. Clears the from the "Prefer" header on the underlying IODataRequestMessage or the "Preference-Applied" header on the underlying IODataResponseMessage. The preference to clear. Sets the to the "Prefer" header on the underlying IODataRequestMessage or the "Preference-Applied" header on the underlying IODataResponseMessage. The preference to set. If is already on the header, this method does a replace rather than adding another instance of the same preference. Gets the from the "Prefer" header from the underlying or the "Preference-Applied" header from the underlying . The preference to get. Returns a key value pair of the and its value. The Value property of the key value pair may be null since not all preferences have value. If the is missing from the header, null is returned. Parses the current preference values to a dictionary of preference and value pairs. Returns a dictionary of preference and value pairs; null if the preference header has not been set. Sets the "Prefer" or the "Preference-Applied" header to the underlying message. Property to get and set the "return-content" and "return-no-content" preferences to the "Prefer" header on the underlying IODataRequestMessage or the "Preference-Applied" header on the underlying IODataResponseMessage. Setting true sets the "return-content" preference and clears the "return-no-content" preference. Setting false sets the "return-no-content" preference and clears the "return-content" preference. Setting null clears the "return-content" and "return-no-content" preferences. Returns true if the "return-content" preference is on the header. Otherwise returns false if the "return-no-content" is on the header. Returning null indicates that "return-content" and "return-no-content" are not on the header. Property to get and set the "odata.include-annotations" preference with the given filter to the "Prefer" header on the underlying IODataRequestMessage or the "Preference-Applied" header on the underlying IODataResponseMessage. If the "odata-annotations" preference is already on the header, set replaces the existing instance. Returning null indicates that the "odata.include-annotations" preference is not on the header. The filter string may be a comma delimited list of any of the following supported patterns: "*" -- Matches all annotation names. "ns.*" -- Matches all annotation names under the namespace "ns". "ns.name" -- Matches only the annotation name "ns.name". "-" -- The exclude operator may be used with any of the supported pattern, for example: "-ns.*" -- Excludes all annotation names under the namespace "ns". "-ns.name" -- Excludes only the annotation name "ns.name". Null or empty filter is equivalent to "-*". The relative priority of the pattern is base on the relative specificity of the patterns being compared. If pattern1 is under the namespace pattern2, pattern1 is more specific than pattern2 because pattern1 matches a subset of what pattern2 matches. We give higher priority to the pattern that is more specific. For example: "ns.*" has higher priority than "*" "ns.name" has higher priority than "ns.*" "ns1.name" has same priority as "ns2.*" Patterns with the exclude operator takes higher precedence than the same pattern without. For example: "-ns.name" has higher priority than "ns.name". Examples: "ns1.*,ns.name" -- Matches any annotation name under the "ns1" namespace and the "ns.name" annotation. "*,-ns.*,ns.name" -- Matches any annotation name outside of the "ns" namespace and only "ns.name" under the "ns" namespace. Dictionary of preferences in the header. Extension methods for ReadOnlyEnumerable and ReadOnlyEnumerableOfT true if is the same instance as ReadOnlyEnumerableOfT.Empty(). false otherwise. The element type of the enumerable. The enumerable in question. Returns true if is the empty ReadOnlyEnumerableOfT. false otherwise. Casts an IEnumerableOfT to ReadOnlyEnumerableOfT. The element type of the enumerable. The source enumerable. The name of the collection to report in case there's an error. The casted ReadOnlyEnumerableOfT. Returns the as ReadOnlyEnumerableOfT or a new instance of ReadOnlyEnumerableOfT if is the same instance as ReadOnlyEnumerableOfT.Empty(). The element type of the enumerable. The source enumerable in question. The name of the collection to report in case there's an error. Returns the as ReadOnlyEnumerableOfT or a new instance of ReadOnlyEnumerableOfT if is the same instance as ReadOnlyEnumerableOfT.Empty(). Returns a ReadOnlyEnumerableOfT that is the result of plus . The element type of the enumerable. The source enumerable to concat. The name of the collection to report in case there's an error. Item to concat to the source enumerable. Returns a ReadOnlyEnumerableOfT that is the result of plus . Adds an ODataAction to an entry. The entry to add the action. The action to add. Adds an ODataFunction to an entry. The entry to add the function. The function to add. Adds an association link to an entry. The entry to add the association link to. The association link to add. Implementation of OData entity metadata builder based on OData protocol conventions. The URI builder to use. The context to answer basic metadata questions about the entry. The metadata context. The list of navigation links that have been processed. The edit link. This is lazily evaluated. It may be retrieved from the entry or computed. The read link. This is lazily evaluated. It may be retrieved from the entry or computed. The computed ETag. true if the etag value has been computed, false otherwise. The computed ID of this entity instance. This is always built from the key properties, and never comes from the entry. A computed uri that is equivalent to the ID or the edit-link without a type segment. The computed MediaResource for MLEs. The list of computed stream properties. The enumerator for unprocessed navigation links. The missing operation generator for the current entry. Constructor The context to answer basic metadata questions about the entry. The metadata context. The uri builder to use. Gets the edit link of the entity. The absolute URI of the edit link for the entity. Or null if it is not possible to determine the edit link. Gets the read link of the entity. The absolute URI of the read link for the entity. Or null if it is not possible to determine the read link. Gets the ID of the entity. The ID for the entity. Or null if it is not possible to determine the ID. Gets the ETag of the entity. The ETag for the entity. Or null if it is not possible to determine the ETag. Gets the default media resource of the entity. The the default media resource of the entity. Or null if the entity is not an MLE. Gets the entity properties. Non-computed properties from the entity. The the computed and non-computed entity properties. Gets the list of computed and non-computed actions for the entity. The list of computed and non-computed actions for the entity. Gets the list of computed and non-computed functions for the entity. The list of computed and non-computed functions for the entity. Marks the given navigation link as processed. The navigation link we've already processed. Returns the next unprocessed navigation link or null if there's no more navigation links to process. Returns the next unprocessed navigation link or null if there's no more navigation links to process. Gets the edit link of a stream value. The name of the stream property the edit link is computed for; or null for the default media resource. The absolute URI of the edit link for the specified stream property or the default media resource. Or null if it is not possible to determine the stream edit link. Gets the read link of a stream value. The name of the stream property the read link is computed for; or null for the default media resource. The absolute URI of the read link for the specified stream property or the default media resource. Or null if it is not possible to determine the stream read link. Gets the navigation link URI for the specified navigation property. The name of the navigation property to get the navigation link URI for. The value of the link URI as seen on the wire or provided explicitly by the user or previously returned by the metadata builder, which may be null. true if the value of the was seen on the wire or provided explicitly by the user or previously returned by the metadata builder, false otherwise. This flag allows the metadata builder to determine whether a null navigation link url is an uninitialized value or a value that was set explicitly. The navigation link URI for the navigation property. null if its not possible to determine the navigation link for the specified navigation property. Gets the association link URI for the specified navigation property. The name of the navigation property to get the association link URI for. The value of the link URI as seen on the wire or provided explicitly by the user or previously returned by the metadata builder, which may be null. true if the value of the was seen on the wire or provided explicitly by the user or previously returned by the metadata builder, false otherwise. This flag allows the metadata builder to determine whether a null association link url is an uninitialized value or a value that was set explicitly. The association link URI for the navigation property. null if its not possible to determine the association link for the specified navigation property. Get the operation target URI for the specified . The fully qualified name of the operation for which to get the target URI. The binding parameter type name to include in the target, or null/empty if there is none. The target URI for the operation. null if it is not possible to determine the target URI for the specified operation. Get the operation title for the specified . The fully qualified name of the operation for which to get the target URI. The title for the operation. null if it is not possible to determine the title for the specified operation. Computes the edit link. Uri that was computed based on the computed Id and possible type segment. Computes and sets the field for the computed Id. Computes all projected or missing stream properties. Non-computed properties from the entity. The the computed stream properties for the entry. Lazy evaluated computed entity Id. This is always a computed value and never comes from the entry. Lazy evaluated computed entity instance uri. This is always a computed value and never comes from the entry. The missig operation generator for the current entry. Implementation of OData URI builder based on OData protocol conventions. Extensibility point for customizing how OData uri's are built. Builds the base URI for the entity container. The base URI for the entity container. This can be either an absolute URI, or relative URI which will be combined with the URI of the metadata document for the service. null if the model doesn't have the service base URI annotation. Builds the URI for an entity set. The URI to append to. The entity set name. The entity set URI. Builds the entity instance URI with the given key property values. The URI to append to. The list of name value pair for key properties. The full name of the entity type we are building the key expression for. The entity instance URI. Builds the edit link for a stream property. The URI to append to. The name of the stream property the link is computed for; or null for the default media resource. The edit link for the stream. Builds the read link for a stream property. The URI to append to. The name of the stream property the link is computed for; or null for the default media resource. The read link for the stream. Builds the navigation link for the navigation property. The URI to append to. The name of the navigation property to get the navigation link URI for. The navigation link URI for the navigation property. Builds the association link for the navigation property. The URI to append to. The name of the navigation property to get the association link URI for. The association link URI for the navigation property. Builds the operation target URI for the specified . The URI to append to. The fully qualified name of the operation for which to get the target URI. The binding parameter type name to include in the target, or null/empty if there is none. The target URI for the operation. Builds a URI with the given type name appended as a new segment on the base URI. The URI to append to. The fully qualified type name to append. The URI with the type segment appended. The base URI of the service. This will be used as the base URI for all entity containers. The specific url-convention to use. The specific key-serializer to use based on the convention. Constructor. The base URI of the service. This will be used as the base URI for all entity containers. The specific url convention to use. Builds the base URI for the entity container. The base URI for the entity container. This can be either an absolute URI, or relative URI which will be combined with the URI of the metadata document for the service. null if the model doesn't have the service base URI annotation. Builds the URI for an entity set. The URI to append to. The entity set name. The entity set URI. Builds the entity instance URI with the given key property values. The URI to append to. The list of name value pair for key properties. The full name of the entity type we are building the key expression for. The entity instance URI. Builds the edit link for a stream property. The URI to append to. The name of the stream property the link is computed for; or null for the default media resource. The edit link for the stream. Builds the read link for a stream property. The URI to append to. The name of the stream property the link is computed for; or null for the default media resource. The read link for the stream. Builds the navigation link for the navigation property. The URI to append to. The name of the navigation property to get the navigation link URI for. The navigation link URI for the navigation property. Builds the association link for the navigation property. The URI to append to. The name of the navigation property to get the association link URI for. The association link URI for the navigation property. Builds the operation target URI for the specified . The URI to append to. The fully qualified name of the operation for which to get the target URI. The binding parameter type name to include in the target, or null/empty if there is none. The target URI for the operation. Builds a URI with the given type name appended as a new segment on the base URI. The URI to append to. The fully qualified type name to append. The URI with the type segment appended. Validates the base URI parameter to be a non-null absolute URI. The base URI parameter to validate. Appends a segment to the specified base URI. The base Uri to append the segment to. The segment to append. True if the new segment should be escaped, otherwise False. New URI with the appended segment and no trailing slash added. Gets the CLR value of a primitive key property. The key property name. The key property value. The entity type name we are validating the key value for. The primitive value of the key property. Appends the key expression for the given entity to the given The builder to append onto. The list of name value pair for key properties. The full name of the entity type we are building the key expression for. Annotation to capture all of the custom instance annotations on an ODataAnnotatable. Currently only , , and supports instance annotations. Additionally, instance annotations will only be serialized in Json. Backing dictionary of instance annotation term name/object pairs. Creates a new to hold instance annotations for an . Determines whether the contains an element with the specified key. true if the ICollection> contains an element with the key; otherwise, false. The key to locate in the . is null. Returns an enumerator that iterates through the collection. A that can be used to iterate through the collection. 1 Removes all items from the . The is read-only. Adds an element with the provided key and value to the . The object to use as the key of the element to add.The object to use as the value of the element to add. is null. An element with the same key already exists in the .The is read-only. Removes the element with the specified key from the . true if the element is successfully removed; otherwise, false. This method also returns false if was not found in the original . The key of the element to remove. is null.The is read-only. Gets the value associated with the specified key. true if the object that implements contains an element with the specified key; otherwise, false. The key whose value to get.When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the parameter. This parameter is passed uninitialized. is null. Gets an enumerator for this object. An enumerator for this object. Gets the number of elements contained in the . The number of elements contained in the . Gets or sets the element with the specified key. The element with the specified key. The key of the element to get or set. is null. The property is retrieved and is not found. The property is set and the is read-only. Helper class to track if an annotation has been written. Maintains the write status for each annotation using its key. If a key exists in the list then it is considered written. Creates a new to hold write status for instance annotations contained in . Check if an annotation is already written. true if the annotation is written; otherwise false. The key of the element to check if its written. Mark an annotation as written. true if the annotation was unmarked before; otherwise false. The key of the element to mark as written. Well known OData annotation names reserved for OData Lib. The OData Metadata annotation name. The OData 'null' annotation name. The OData Type annotation name. The OData ID annotation name. The OData etag annotation name. The OData edit link annotation name. The OData read link annotation name. The OData media edit link annotation name. The OData media read link annotation name. The OData media content type annotation name. The OData media etag annotation name. The 'odata.count' annotation name. The 'odata.nextLink' annotation name. The 'odata.navigationLinkUrl' annotation name. The 'odata.bind' annotation name. The 'odata.associationLinkUrl' annotation name. The 'odata.annotationGroup' annotation name. The 'odata.annotationGroupReference' annotation name. The 'odata.error' annotation name. The 'odata.deltaLink' annotation name. Hash set of known odata annotation names that have special meanings to OData Lib. Returns true if the starts with "odata.", false otherwise. The name of the annotation in question. Returns true if the starts with "odata.", false otherwise. Returns true if the starts with "odata." and is not one of the reserved odata annotation names; returns false otherwise. The annotation name in question. Returns true if the starts with "odata." and is not one of the reserved odata annotation names; returns false otherwise. Validates that the is not a reserved OData instance annotation. The instance annotation name to check. Defines an interface for a class that can write OData values in Json Light. This is used internally for mocking. Writes a null value. Writes out the value of a complex property. The complex value to write. The metadata type for the complex value. true when writing a top-level property; false for nested properties. true if the type name belongs to an open property. The checker instance for duplicate property names. Writes out the value of a collection property. The collection value to write. The metadata type reference for the collection. Whether or not a top-level property is being written. Whether or not the value is being written for a URI. true if the type name belongs to an open property. Writes a primitive value. The value to write. The expected type reference of the primitive value. Creates a for checking duplication properties inside complex values. A new instance. JsonWriter this value serializer will use. Version of OData being written. Model to use for type resolution and verification when writing. The message writer settings to use when writing the message payload. Helper methods used by the OData reader for the JsonLight format. The character array used for splitting apart the operation parameter type names in a metadata link. Contains ','. The set of characters to trim from the parameters of an operation. Contains '(' and ')'. Determines if the specified property name is a name of a metadata reference property. The name of the property. true if is a name of a metadata reference property, false otherwise. Gets the fully qualified function import name from the metadata reference property name. The metadata document Uri. The metadata reference property name. The first parameter name, if any are present in the given string. The fully qualified function import name. Gets the Uri fragment from the metadata reference property name. The metadata document Uri. The metadata reference property name. The Uri fragment which corresponds to action/function names, etc. Converts the metadata reference property name to an absolute Uri. The metadata document uri. The metadata reference property name. The absolute Uri for the metadata reference property name. Calculates the metadata reference name for the given function import. When there is no overload to the function, this method will return the container qualified function import name. When there is overload to the function this method will return FQFN([comma separated parameter type names]) to disambiguate between different overloads. The function import in question. The metadata reference name for the given function import. Creates an ODataAction or ODataFunction from a function import. The metadata document uri. The metadata reference property name. The function import to create the ODataOperation for. true if the created ODataOperation is an ODataAction, false otherwise. The created ODataAction or ODataFunction. Responsible for reading annotation groups (both declarations and references) in JSON Light. Base class for all OData JsonLight deserializers. The JsonLight input context to use for reading. Context for entry etadata centric responsibilities. Result of parsing the metadata URI for the payload (or null if none are available). This field is only available after the ReadPayloadStart was called. Constructor. The JsonLight input context to read from. Parses the name of a property and returns the property name and annotation name if the property is a property annotation. The property name to parse. The name of the annotated property, or null if the property is not a property annotation. The annotation name, or null if the property is not a property annotation. true if the is a property annotation, false otherwise. Read the start of the top-level data wrapper in JSON responses. The kind of payload we are reading; this guides the parsing of the metadata URI. The duplicate property names checker. true if we are deserializing a nested payload, e.g. an entry, a feed or a collection within a parameters payload. true if we allow a comletely empty payload; otherwise false. Pre-Condition: JsonNodeType.None: assumes that the JSON reader has not been used yet when not reading a nested payload. Post-Condition: The reader is positioned on the first property of the payload after having read (or skipped) the metadata URI property. Or the reader is positioned on an end-object node if there are no properties (other than the metadata URI which is required in responses and optional in requests). Reads the end of the top-level data wrapper in JSON responses. true if we are deserializing a nested payload, e.g. an entry, a feed or a collection within a parameters payload. Pre-Condition: any node: when reading response or a nested payload, will fail if find anything else then EndObject. JsonNodeType.EndOfInput: otherwise Post-Condition: JsonNodeType.EndOfInput Reads and validates a string value from the json reader. The name of the annotation being read (used for error reporting). The string that was read. Reads and validates a string value from the json reader and processes it as a Uri. The name of the annotation being read (used for error reporting). The Uri that was read. Reads and validates a string value from the json reader and processes it as a long. The name of the annotation being read (used for error reporting). The long that was read. Given a URI from the payload, this method will try to make it absolute, or fail otherwise. The URI string from the payload to process. An absolute URI to report. Parses JSON object property starting with the current position of the JSON reader. The duplicate property names checker to use, it will also store the property annotations found. Function called to read property annotation value. Function callback to handle to resule of parse property. Asserts that the JSON reader is positioned on one of the specified node types. The node types which should appear at this point. Returns true if should be skipped by the reader; false otherwise. The custom instance annotation name in question. Returns true if should be skipped by the reader; false otherwise. If is under the odata namespace but is not known to ODataLib, move the JSON reader forward to skip the annotation name and value then return true; return false otherwise. The unknown odata annotation is skipped so that when this version of the reader reads a feed produced by a future version of ODataLib that contains an odata annotation that is not recognized on this version, we would simply ignore the annotation rather than failing. Note that when we add new odata annotations that cannot be skipped, we would bump the protocol version. The annotation name in question. Returns true if the annotation name and value is skipped; returns false otherwise. Parses JSON object property starting with the current position of the JSON reader. The duplicate property names checker to use, it will also store the property annotations found. Function called to read property annotation value. The name of the property or instance annotation found. PropertyWithValue - a property with value was found. The contains the name of the property. The reader is positioned on the property value. PropertyWithoutValue - a property without a value was found. The contains the name of the property. The reader is positioned on the node after property annotations (so either a property or end of object). ODataInstanceAnnotation - an odata instance annotation was found. The contains the name of the annotation. The reader is positioned on the value of the annotation. CustomInstanceAnnotation - a custom instance annotation was found. The contains the name of the annotation. The reader is positioned on the value of the annotation. MetadataReferenceProperty - a property which is a reference into the metadata was found. The reader is positioned on the value of the property. EndOfObject - end of the object scope was reached and no properties are to be reported. The is null. This can only happen if there's a property annotation which is ignored (for example custom one) at the end of the object. Process the current property annotation. The name being annotated. Can be a property or an instance annotation. The annotation targeting the . The duplicate property names checker. Callback to read the property annotation value. Read the start of the top-level data wrapper in JSON responses. The kind of payload we are reading; this guides the parsing of the metadata URI. The duplicate property names checker. true if we are deserializing a nested payload, e.g. an entry, a feed or a collection within a parameters payload. true if we allow a comletely empty payload; otherwise false. The value of the metadata URI annotation (or null if it was not found). Pre-Condition: JsonNodeType.None: assumes that the JSON reader has not been used yet when not reading a nested payload. Post-Condition: The reader is positioned on the first property of the payload after having read (or skipped) the metadata URI property. Or the reader is positioned on an end-object node if there are no properties (other than the metadata URI which is required in responses and optional in requests). Reads the odata.metadata annotation. The payload kind for which to read the metadata URI. The duplicate property names checker. true if the method should fail if the metadata URI annotation is missing, false if that can be ignored. The value of the metadata URI annotation. Context for entry metadata centric responsibilities. Returns the which is to be used to read the content of the message. Result of parsing the metadata URI for the payload (or null if none are available). This property is only available after the ReadPayloadStart was called. The Json lite input context to use for reading. Gets the metadata document Uri from the MetadataUriParseResult. Possible results of parsing JSON object property. An end of object was reached without any property to be reported. A property with value was found. A property without value was found. A 'odata' instance annotation was found. A custom instance annotation was found. A metadata reference property was found. Mapping of all the annotation groups encountered so far, keyed by name. Initializes a new . The JSON light input context. Reads the current property node as an annotaion group, if the property name matches. Otherwise, it does not move the reader. Fired whenever an OData property annotation is seen. Takes the name of the property annotation and should read and return the annotation's value. Fired whenever an OData instance annotation is seen. Takes the name of the instance annotation and should read and return the annotation's value. The annotation group which was read, or null if we did not encounter an annotation group. Pre-Condition: JsonNodeType.Property: The property to consider as an annotion group. Post-Condition: JsonNodeType.Property: If the property is not an annotation group, the reader will not move. Any: The node after the annotation group property, if one was read. Adds the given annotation group to the set of groups which can be retrieved by annotation group references. The annotation group to add. Checks to see that the name of the given annotation group has not yet been set. Throws otherwise. The annotation group to check. Returns whether the given property name indicates this property contains the name of the annotation group. The property name to check. true if the property name is annotation group name property, false otherwise. Verifies that the name of the given annotation group was set, and throws otherwise. The annnotation group to check. Verifies that the given property name is a valid annotation name, and throws if not. The property name to check. The annotation group which this property would be added to. Creates an ODataException to throw when a non-annotation property is found inside an annotation group. The name of the property found inside an annotation group. The annotation group it was found in. An ODataException with an appropriate message, including the annotation group name if one is available. Reads an annotation group reference and returns the existing annotation group instance with that name. The annotation group which was referenced. This method will throw if no matching annotation group is found. Reads an annotation group declaration and returns a newly created annotation group instance. Function which takes the name of an OData property annotation and reads and returns the value of the annotation. Function which takes the name of an OData instance annotation and reads and returns the value of the annotation. The annotation group which was read. Pre-Condition: JsonNodeType.StartObject: The property to consider as an annotion group declaration or reference. Any: Any other node type will throw an exception. Post-Condition: Any: The node after the annotation group property value. Helper methods used by the OData reader for the JsonLight format. Validates that a string is either a valid absolute URI, or (if it begins with '#') it is a valid URI fragment. The metadata document uri. The property name to validate. Validates an operation is valid. The metadata document uri. The operation to validate. Determines if the specified property name is a name of an open metadata reference property. The metadata document uri. The property name in question. true if the specified property name is a name of an open metadata reference property; false otherwise. Validates that the property in an operation (an action or a function) is valid. The value of the property. The name of the property (used for error reporting). The metadata value for the operation (used for error reporting). JSON Ligth specific state which is created during payload kind detection and reused during standard reading if available. The parsed metadata URI. Constructor. The parsed metadata URI. The parsed metadata URI. Interface for a class that can write arbitrary JSON. Internally we want the interface for mocks. Start the padding function scope. End the padding function scope. Start the object scope. End the current object scope. Start the array scope. End the current array scope. Write the "d" wrapper text. Write the "results" header for the data array. Write the name for the object property. Name of the object property. Writes a function name for JSON padding. Name of the padding function to write. Write a boolean value. Boolean value to be written. Write an integer value. Integer value to be written. Write a float value. Float value to be written. Write a short value. Short value to be written. Write a long value. Long value to be written. Write a double value. Double value to be written. Write a Guid value. Guid value to be written. Write a decimal value Decimal value to be written. Write a DateTime value DateTime value to be written. The OData protocol version to be used for writing payloads. Writes a DateTimeOffset value DateTimeOffset value to be written. The OData protocol version to be used for writing payloads. Writes a TimeSpan value TimeSpan value to be written. Write a byte value. Byte value to be written. Write an sbyte value. SByte value to be written. Write a string value. String value to be written. Clears all buffers for the current writer. Writes a separator of a value if it's needed for the next value to be written. Start the scope given the scope type. The scope type to start. Class responsible for writing a collection of . Value serializer, responsible for serializing the annotation values. The oracle to use to determine the type name to write for entries and values. Constructs a that can write a collection of . The to use for writing values of instance annotations. The that is also used internally will be acquired from the this instance. The oracle to use to determine the type name to write for entries and values. Writes all the instance annotations specified in . Collection of instance annotations to write. The tracker to track if instance annotations are written. Writes all the instance annotations specified in . Collection of instance annotations to write. Writes an instance annotation. The instance annotation to write. JsonWriter instance to use for writing term names. OData JsonLight serializer for value types. Base class for all OData JsonLight serializers. The JsonLight output context to write to. Instance annotation writer. Set to true when odata.metadata is writen; set to false otherwise. When value is false, all URIs writen to the payload must be absolute. Constructor. The output context to write to. Writes the start of the entire JSON payload. Writes the end of the entire JSON payload. Writes the metadata URI property and the specified value into the payload. The metadata URI to write. Helper method to write the data wrapper around a JSON payload. The action that writes the actual JSON payload that is being wrapped. Write a top-level error message. The error instance to write. A flag indicating whether error details should be written (in debug mode only) or not. Returns the string representation of the URI The uri to process. Returns the string representation of the URI. Returns the which is to be used to write the content of the message. Returns the which is to be used to write the content of the message. Instance annotation writer. The current recursion depth of values written by this serializer. Property serializer. Initializes a new instance of the class. The property serializer to use when writing complex values. Initializes a new instance of the class. The output context to use. Writes a null value to the wire. Writes out the value of a complex property. The complex value to write. The metadata type for the complex value. true when writing a top-level property; false for nested properties. true if the type name belongs to an open property. The checker instance for duplicate property names. The current recursion depth should be a value, measured by the number of complex and collection values between this complex value and the top-level payload, not including this one. Writes out the value of a collection property. The collection value to write. The metadata type reference for the collection. Whether or not a top-level property is being written. Whether or not the value is being written for a URI. true if the type name belongs to an open property. The current recursion depth is measured by the number of complex and collection values between this one and the top-level payload, not including this one. Writes a primitive value. Uses a registered primitive type converter to write the value if one is registered for the type, otherwise directly writes the value. The value to write. The expected type reference of the primitive value. Creates a new instance of a duplicate property names checker. Both ODataJsonLightSerializer and IODataJsonLightValueSerializer define this, so we pass through to our base class. The newly created instance of duplicate property names checker. Asserts that the current recursion depth of values is zero. This should be true on all calls into this class from outside of this class. Increases the recursion depth of values by 1. This will throw if the recursion depth exceeds the current limit. Decreases the recursion depth of values by 1. Returns the which is to be used to write the content of the message. Both ODataJsonLightSerializer and IODataJsonLightValueSerializer define this, so we pass through to our base class. The OData version of the output. Both ODataJsonLightSerializer and IODataJsonLightValueSerializer define this, so we pass through to our base class. The model to use. The message writer settings to use when writing the message payload. Gets the property serializer. Shared JSON util code for ODataLib and Server. Determines if the given double is serialized as a string in JSON. The value to check. true if the value should be written as a string, false if should be written as a JSON number. Determines if the given primitive value is of a basic type where we can rely on just the JSON representation to convey type information. If so, we don't have to write the type name. The primitive value in question. The type of the primitive value. true if the given primitive value is of a basic JSON type, false otherwise. Responsible for resolving the element type of an entity set with reader (i.e., looser) semantics. Class responsible for determining the entity type of an entity set. Returns the element type of the given entity set. The entity set to get the element type of. The representing the element type of the . Returns the return type of the given function import. The function import to get the return type from. The representing the return type fo the . Returns the return type of the given function import group. The function import group to get the return type from. The representing the return type fo the . Gets the function parameter type. The function parameter to get the type for. The representing the type on the function parameter; or null if no such type could be found. The model to use or null if no model is available. Reader behavior if the caller is a reader, null if no reader behavior is available. The version of the payload being read. Creates a new entity set element type resolver with all the information needed when resolving for reading scenarios. The model to use or null if no model is available. Reader behavior if the caller is a reader, null if no reader behavior is available. The version of the payload being read. Returns the element type of the given entity set. The entity set to get the element type of. The representing the element type of the . Returns the return type of the given function import. The function import to get the return type from. The representing the return type fo the . Returns the return type of the given function import group. The function import group to get the return type from. The representing the return type fo the . Gets the function parameter type for read and calls the client type resolver to resolve type when it is specified. The function parameter to resolve the type for. The representing the type on the function parameter; or null if no such type could be found. Resolves the given type reference if a client type resolver is available. Type reference to resolve. The resolved type reference. Resolves the given type if a client type resolver is available. Type to resolve. The resolved type. Responsible for resolving the element type of an entity set with writer semantics. Singleton instance of the resolver. Private constructor to ensure all access goes through the singleton Instance. Returns the element type of the given entity set. The entity set to get the element type of. The representing the element type of the . Returns the return type of the given function import. The function import to get the return type from. The representing the return type fo the . Returns the return type of the given function import group. The function import group to get the return type from. The representing the return type fo the . Gets the function parameter type for write. The function parameter to resolve the type for. The representing the type on the function parameter; or null if no such type could be found. Base class for OData collection readers that verifies a proper sequence of read calls on the reader and which support true async operations. Base class for OData collection readers that verifies a proper sequence of read calls on the reader. Base class for OData collection readers. Reads the next item from the message payload. True if more items were read; otherwise false. Gets the current state of the reader. The current state of the reader. Gets the most recent item that has been read. The most recent item that has been read. This property returns an when in state ODataCollectionReaderState.CollectionStart or ODataCollectionReaderState.CollectionEnd. It returns either a primitive value, an or 'null' when in state ODataCollectionReaderState.Value and 'null' in all other states. The input context to read from. Stack of reader scopes to keep track of the current context of the reader. If not null, the reader will notify the implementer of the interface of relevant state changes in the reader. The collection validator instance if no expected item type has been specified; otherwise null. The expected item type reference for the items in the collection. If an expected type is specified the collection has to be homogeneous. Constructor. The input to read from. The expected type reference for the items in the collection. If not null, the reader will notify the implementer of the interface of relevant state changes in the reader. Reads the next item from the message payload. true if more items were read; otherwise false. Reads the next from the message payload. true if more items were read; otherwise false. Implementation of the collection reader logic when in state 'Start'. true if more items can be read from the reader; otherwise false. Implementation of the reader logic when in state 'CollectionStart'. true if more nodes can be read from the reader; otherwise false. Implementation of the reader logic when in state 'Value'. true if more nodes can be read from the reader; otherwise false. Implementation of the reader logic when in state 'CollectionEnd'. Should be false since no more nodes can be read from the reader after the collection ends. Reads the next from the message payload. true if more items were read; otherwise false. Creates a new for the specified and with the provided and pushes it on the stack of scopes. The to use for the new scope. The item to attach with the state in the new scope. Creates a new for the specified and with the provided and pushes it on the stack of scopes. The to use for the new scope. The item to attach with the state in the new scope. The state of the collection element - empty or not-empty. Replaces the current scope with a new with the specified and the item of the current scope. The to use for the new scope. The item associated with the replacement state. Removes the current scope from the stack of all scopes. The expected state of the current scope (to be popped). Catch any exception thrown by the action passed in; in the exception case move the reader into state ExceptionThrown and then rethrow the exception. The type returned from the to execute. The action to execute. The result of executing the . Verifies that calling Read is valid. true if the call is to be synchronous; false otherwise. Verifies that a call is allowed to the reader. true if the call is to be synchronous; false otherwise. Verifies that a synchronous operation is allowed on this reader. The current state of the reader. The most recent item that has been read. The state of the collection element - empty or non-empty. Only used by ATOM. The expected item type for the items in the collection. The collection validator instance if no expected item type has been specified; otherwise null. Returns true if we are reading a nested payload, e.g. an entry, a feed or a collection within a parameters payload. A collection reader scope; keeping track of the current reader state and an item associated with this state. The reader state of this scope. The item attached to this scope. True, if the collection element attached to this scope is empty. False otherwise. Constructor creating a new reader scope. The reader state of this scope. The item attached to this scope. Constructor creating a new reader scope. The reader state of this scope. The item attached to this scope. The state of the collection element - empty or not-empty The reader state of this scope. The item attached to this scope. The state of the Collection Element - empty or non-empty. Constructor. The input to read from. The expected type reference for the items in the collection. If not null, the reader will notify the implementer of the interface of relevant state changes in the reader. A simple implementation of LazyOfT since the framework version is not available in all platforms we compile this code in... Type to lazy create. For thread safty in creating the value. The factory method to create the lazy instance. Holds the lazy instance to create. true if the factory method has been called, false otherwise. Creates an instance of ODataLazyOfT. The factory method to create the lazy instance. Creates an instance of ODataLazyOfT. The factory method to create the lazy instance. true if the value will be created in a thread safety, false assume single thread access to Value. Creates the value. Creates the value if it hasn't already been created and returns the created value. Simple structure for storing both a base URI and the select clause for generating metadata links in JSON-Light payloads. The base uri to the metadata document. The select clause to include when generating metadata links. Initializes a new instance of . The base uri to the metadata document. Gets the base uri to the metadata document. Gets the select clause to include when generating metadata links. Represents a null property value. Indicates whether the given value is a null value. true, since this object always represents a null value. Base class for OData parameter readers that verifies a proper sequence of read calls on the reader with truly async operations. Base class for OData parameter readers that verifies a proper sequence of read calls on the reader. Base class for OData parameter readers. Creates an to read the collection value when the state is ODataParameterReaderState.Collection. An to read the collection value when the state is ODataParameterReaderState.Collection. When the state is ODataParameterReaderState.Collection, the Name property of the returns the name of the parameter and the Value property of the returns null. Calling this method in any other state will cause an ODataException to be thrown. Reads the next parameter from the message payload. true if more items were read; otherwise false. Gets the current state of the reader. The current state of the reader. Gets the name of the current parameter that is being read. The name of the current parameter that is being read. Gets the value of the current parameter that is being read. The value of the current parameter that is being read. This property returns a primitive value, an ODataComplexValue or null when State is ODataParameterReaderState.Value. This property returns null when State is ODataParameterReaderState.Entry, ODataParameterReaderState.Feed or ODataParameterReaderState.Collection. An interface that allows the creator of a reader/writer to listen for status changes of the created reader/writer. This method notifies the implementer of this interface that the created reader is in Exception state. This method notifies the implementer of this interface that the created reader is in Completed state. The input context to read from. The function import whose parameters are being read. Stack of reader scopes to keep track of the current context of the reader. Hash set to keep track of all the parameters read from the payload. Tracks the state of the sub-reader. Constructor. The input to read from. The function import whose parameters are being read. This method creates an to read the collection value when the state is ODataParameterReaderState.Collection. When the state is ODataParameterReaderState.Collection, the Name property of the returns the name of the parameter and the Value property of the returns null. Calling this method in any other state will cause an ODataException to be thrown. Returns an to read the collection value when the state is ODataParameterReaderState.Collection. Reads the next item from the message payload. true if more items were read; otherwise false. This method notifies the implementer of this interface that the created reader is in Exception state. This method notifies the implementer of this interface that the created reader is in Completed state. Returns the type reference of the parameter in question. Name of the parameter in question. Returns the type reference of the parameter in question. Creates a new for the specified with the provided and and pushes it on the stack of scopes. The to use for the new scope. The paramter name to attach with the state in the new scope. The paramter value to attach with the state in the new scope. Removes the current scope from the stack of all scopes. The expected state of the current scope (to be popped). Called when the a parameter was completed. Reads the next from the message payload. true if more items were read; otherwise false. Implementation of the parameter reader logic when in state 'Start'. true if more items can be read from the reader; otherwise false. Implementation of the reader logic when in state Value, Entry, Feed or Collection state. true if more items can be read from the reader; otherwise false. Creates an to read the collection with type . Expected item type reference of the collection to read. An to read the collection with type . Reads the next from the message payload. true if more items were read; otherwise false. Gets the corresponding create reader method name for the given state. State in question. Returns the name of the method to create the correct reader for the given state. Verifies that one of CreateEntryReader(), CreateFeedReader() or CreateCollectionReader() can be called. The expected state of the reader. Catch any exception thrown by the action passed in; in the exception case move the reader into state ExceptionThrown and then rethrow the exception. The type returned from the to execute. The action to execute. The result of executing the . Verifies that calling Read is valid. true if the call is to be synchronous; false otherwise. Verifies that a call is allowed to the reader. true if the call is to be synchronous; false otherwise. Verifies that a synchronous operation is allowed on this reader. The current state of the reader. The name of the current parameter that is being read. The value of the current parameter that is being read. This property returns a primitive value, an ODataComplexValue or null when State is ODataParameterReaderState.Value. This property returns null when State is ODataParameterReaderState.Entry, ODataParameterReaderState.Feed or ODataParameterReaderState.Collection. The function import whose parameters are being read. Enum to track the state of the sub-reader. No sub-reader has been created for the current parameter. CreateEntryReader(), CreateFeedReader() or CreateCollectionReader() has been called for the current parameter and the newly created reader is not in Completed state. If the sub-reader is in Error state, the ODataParameterReader will enter ODataParameterReaderState.Error. The created sub-reader is in Completed state. A parameter reader scope; keeping track of the current reader state and an item associated with this state. The reader state of this scope. The parameter name attached to this scope. The parameter value attached to this scope. Constructor creating a new reader scope. The reader state of this scope. The parameter name attached to this scope. The parameter value attached to this scope. The reader state of this scope. The parameter name attached to this scope. The parameter value attached to this scope. Constructor. The input to read from. The function import whose parameters are being read. Represents a primitive property value. Creates a new primitive value from the given CLR value. The primitive to wrap. The primitive value should not be an instance of ODataValue. Gets the underlying CLR object wrapped by this . The underlying primitive CLR value. Base class for OData readers that verifies a proper sequence of read calls on the reader with true async operations. Base class for OData readers that verifies a proper sequence of read calls on the reader. Base class for OData readers. Reads the next from the message payload. true if more items were read; otherwise false. Gets the current state of the reader. The current state of the reader. Gets the most recent that has been read. The most recent that has been read. The input to read the payload from. true if the reader was created for reading a feed; false when it was created for reading an entry. Stack of reader scopes to keep track of the current context of the reader. If not null, the reader will notify the implementer of the interface of relevant state changes in the reader. The to use for entries in this feed. Only applies when reading a top-level feed; otherwise null. The number of entries which have been started but not yet ended. Constructor. The input to read the payload from. true if the reader is created for reading a feed; false when it is created for reading an entry. If not null, the reader will notify the implementer of the interface of relevant state changes in the reader. Reads the next from the message payload. true if more items were read; otherwise false. Implementation of the reader logic when in state 'Start'. true if more items can be read from the reader; otherwise false. Implementation of the reader logic when in state 'FeedStart'. true if more items can be read from the reader; otherwise false. Implementation of the reader logic when in state 'FeedEnd'. true if more items can be read from the reader; otherwise false. Implementation of the reader logic when in state 'EntryStart'. true if more items can be read from the reader; otherwise false. Implementation of the reader logic when in state 'EntryEnd'. true if more items can be read from the reader; otherwise false. Implementation of the reader logic when in state 'NavigationLinkStart'. true if more items can be read from the reader; otherwise false. Implementation of the reader logic when in state 'NavigationLinkEnd'. true if more items can be read from the reader; otherwise false. Implementation of the reader logic when in state 'EntityReferenceLink'. true if more items can be read from the reader; otherwise false. Pushes the on the stack of scopes. The scope to enter. Replaces the current scope with the specified . The scope to replace the current scope with. Removes the current scope from the stack of all scopes. The expected state of the current scope (to be popped). Called to transition into the EntryEnd state. The scope for the EntryEnd state. If an entity type name is found in the payload this method is called to apply it to the current scope. This method should be called even if the type name was not found in which case a null should be passed in. The method validates that some type will be available as the current entity type after it returns (if we are parsing using metadata). The entity type name found in the payload or null if no type was specified in the payload. Reads the next from the message payload. true if more items were read; otherwise false. Increments the nested entry count by one and fails if the new value exceeds the maxiumum nested entry depth limit. Decrements the nested entry count by one. Reads the next from the message payload. true if more items were read; otherwise false. Catch any exception thrown by the action passed in; in the exception case move the reader into state ExceptionThrown and then rethrow the exception. The type returned from the to execute. The action to execute. The result of executing the . Verifies that calling Read is valid. true if the call is to be synchronous; false otherwise. Verifies that a call is allowed to the reader. true if the call is to be synchronous; false otherwise. The current state of the reader. The most recent that has been read. Returns the current item as . Must only be called if the item actually is an entry. Returns the current item as . Must only be called if the item actually is a feed. Returns the current item as . Must only be called if the item actually is a navigation link. Returns the current item as . Must only be called if the item actually is an entity reference link. Returns the expected entity type for the current scope. Returns the entity set for the current scope. Returns the current scope. Returns the scope of the entity owning the current link. A flag indicating whether the reader is at the top level. If the current scope is a content of an expanded link, this returns the parent navigation link scope, otherwise null. True if we are reading an entry or feed that is the direct content of an expanded link. Otherwise false. Set to true if a feed is being read. Returns true if we are reading a nested payload, e.g. an entry or a feed within a parameters payload. Validator to validate consistency of entries in top-level feeds. We only use this for top-level feeds since we support collection validation for feeds only when metadata is available and in these cases we already validate the types of the entries in nested feeds. A reader scope; keeping track of the current reader state and an item associated with this state. The reader state of this scope. The item attached to this scope. Constructor creating a new reader scope. The reader state of this scope. The item attached to this scope. The entity set we are going to read entities for. The expected entity type for the scope. The has the following meanings for given state: Start - it's the expected base type of the top-level entry or entries in the top-level feed. FeedStart - it's the expected base type of the entries in the feed. note that it might be a more derived type than the base type of the entity set for the feed. EntryStart - it's the expected base type of the entry. If the entry has no type name specified this type will be assumed. Otherwise the specified type name must be the expected type or a more derived type. NavigationLinkStart - it's the expected base type the entries in the expanded link (either the single entry or entries in the expanded feed). EntityReferenceLink - it's null, no need for types on entity reference links. In all cases the specified type must be an entity type. The reader state of this scope. The item attached to this scope. The entity set we are reading entries from (possibly null). The entity type for this scope. Can be either the expected one if the real one was not found yet, or the one specified in the payload itself (the real one). Constructor. The input to read the payload from. true if the reader is created for reading a feed; false when it is created for reading an entry. If not null, the reader will notify the implementer of the interface of relevant state changes in the reader. Simple ODataVersion specific cache. The type of the item being cached. Lazy constructing T for ODataVersion.V1. Lazy constructing T for ODataVersion.V2. Lazy constructing T for ODataVersion.V3. Constructs an instance of the ODataVersionCache. The method to call to create a new instance of for a given ODataVersion. Indexer to get the cached item when given the ODataVersion. The ODataVersion to look up. The cached item. Class that hanldes writing top level raw values to a stream. Writer settings. Underlying stream. Encoding that the TextWriter should use. TextWriter instance for writing values. Initializes a new instance of the class. Initializes the TextWriter. The writer settings. The stream. It should be the same underlying stream the TextWriter uses. The encoding to use in the text writer. Disposes the RawValueWriter. It flushes itself and then disposes its inner TextWriter. Start writing a raw output. This should only be called once. End the writing of a raw output. This should be the last thing called. Converts the specified into its raw format and writes it to the output. The value has to be of primitive type. Only one WriteRawValue call should be made before this object gets disposed. The (non-binary) value to write. We do not accept binary values here; WriteBinaryValue should be used for binary data. Flushes the RawValueWriter. The call gets pushed to the TextWriter (if there is one). In production code, this is StreamWriter.Flush, which turns into Stream.Flush. In the synchronous case the underlying stream is the message stream itself, which will then Flush as well. In the async case the underlying stream is the async buffered stream, which ignores Flush call. Initialized a new text writer over the message payload stream. This can only be called if the text writer was not yet initialized or it has been closed. It can be called several times with CloseWriter calls in between though. Gets the text writer. Class with utility methods to deal with values in ODataLib. Converts an object to an ODataValue. If the given object is already an ODataValue (such as an ODataCompleValue, ODataCollectionValue, etc.), the original object will be returned. The object to convert to an ODataValue The given object as an ODataValue. Converts an ODataValue to the old style of representing values, where null values are null and primitive values are just the direct primitive (no longer wrapped by ODataPrimitiveValue). All other value types, such as ODataComplexValue and ODataCollectionValue are returned unchanged. The value to convert. The value behind the given ODataValue. Represents a tree of selected properties based on the $select query option. When reading, it controls the template expansion in JSON Light. The separator character used to separate property names in a path. The separator character used to separate paths from each other. Singleton which indicates that the nothing is selected. Singleton which indicates that the entire subtree is selected. An empty set of stream properties to return when nothing is selected. An empty set of navigation properties to return when nothing is selected. The type of the current node. The list of selected properties at the current level. A dictionary of property name to child nodes. Indicates that this node had a wildcard selection and all properties at this level should be reported. Constructor. The string representation of the selected property hierarchy using the same format as in the $select query option. Prevents a default instance of the class from being created. Type of the selection. Creates a node from the given raw $select query option value. The value of the $select query option. A tree representation of the selected properties specified in the query option. Recursively combines the left and right nodes. Used when there are type segments present in the select paths which causes there to be multiple children for the same property/navigation. The left node. The right node. The combined node. Gets the selected properties node for the specified navigation property. The current entity type. The name of the navigation property. The selected properties node for the property with name . Gets the selected navigation properties for the current node. The current entity type. The set of selected navigation properties. Gets the selected stream properties for the current node. The current entity type. The selected stream properties. Determines whether or not the given operation is selected and takes type-segments into account. The current entity type. The operation. Whether or not the operation name must be container qualified in the $select string. true if the operation is selected; otherwise, false. Gets an enumerable containing the given type and all of its base/ancestor types. The starting entity type. Will be included in the returned enumeration. An enumerable containing the given type and all of its base/ancestor types. Creates a new hash set for storing the names of selected properties. The initial set of selected properties to store in the hash set. The hash set. Creates a new hash set for storing the names of selected properties. The hash set. Gets the possible identifiers that could cause the given operation to be selected. The operation. Whether the operations must be container qualified. The identifiers to look for in the $select string when determining if this action is selected. Gets the matching type segments for the given type based on this node's children. The entity type to match. All child nodes which start with a type segment in the given types hierarchy. Parses the segments of a path in the select clause. The segments of the select path. The index of the segment to parse. Ensures that a child annotation for the specified segment name already exists; if not creates one. The segment name to get the child annotation for. The existing or newly created child annotation for the . Determines whether or not the given operation is selected without taking type segments into account. The operation. Whether the operations must be container qualified. true if the operation is selected; otherwise, false. Enum representing the different special cases of selection. Represents the case where no properties are selected. Represents the case where an entire subtree is selected. The normal case where a partial subtree has been selected. Class representing an annotation group in the JSON Light format. The name of the annotation group. The (instance and property) annotations included in this annotation group. The name of the annotation group. The name has to be unique across the whole JSON Light payload. The (instance and property) annotations included in this annotation group. The keys in the dictionary are the names of the annotations, the values are their values. Class with utility methods to deal with EDM values Converts a primitive OData value to the corresponding . The primitive OData value to convert. The for the primitive value (if available). An for the . Gets the clr value of the edm value based on its type. The edm value. The clr value Tries to get a stream property of the specified name. The instance of the entity to get the stream property for. The stream property name to find. The stream property found. true if the stream property was found or if the stream property name was null (default stream). false if the stream property doesn't exist. Gets the the CLR value for a primitive property. The structured value. Name of the property. The clr value of the property. Converts a floating-point edm value to a clr value The edm floating-point value. Kind of the primitive. The converted value Converts an integer edm value to a clr value. The integer value. Kind of the primitive. The converted value Convert a primitive value which didn't match any of the known values of the enumeration. The value to convert. The expected primitive type or null. The converted value. Ensures a primitive type reference for a given primitive type kind. The possibly null type reference. The primitive type kind to ensure. An instance created for the if is null; if is not null, validates it and then returns it. Class which holds information about navigation link to be reported by the reader. The navigation link to report. The navigation property for which the link will be reported. true if the navigation link has a value (is expanded). The expanded feed for expanded navigation link to be reported. List of entity reference links to be reported to the navigation link. If the navigation link is a singleton this will hold up to 1 item. If the navigation link is a collection this will hold any number of items. When the entity reference link is reported it is removed from this list. Constructor. The navigation link to report. The navigation property for which the link will be reported. true if the navigation link is expanded. Creates a navigation link info for a deferred link. The navigation link to report. The navigation property for which the link will be reported. The navigation link info created. Creates a navigation link info for an expanded entry link. The navigation link to report. The navigation property for which the link will be reported. The navigation link info created. Creates a navigation link info for an expanded feed link. The navigation link to report. The navigation property for which the link will be reported. The expanded feed for the navigation link to report. The navigation link info created. Creates a navigation link info for a singleton entity reference link. The navigation link to report. The navigation property for which the link will be reported. The entity reference link for the navigation link to report. true if the navigation link is expanded. The navigation link info created. Creates a navigation link info for a collection of entity reference links. The navigation link to report. The navigation property for which the link will be reported. The entity reference links for the navigation link to report. true if the navigation link is expanded. The navigation link info created. Creates a navigation link info for a projected navigation link that is missing from the payload. The navigation property for which the link will be reported. The navigation link info created. Gets the next entity reference link to report and removes it from the internal storage. The entity reference link to report or null. The navigation link to report. The navigation property for which the link will be reported. true if the navigation link is expanded (has a value). The expanded feed for expanded navigation link to be reported. true if the link info has entity reference link which was not yet reported, false otherwise. OData JsonLight deserializer for parameter payloads. OData JsonLight deserializer for properties and value types. A sentinel value indicating a missing property value. The current recursion depth of values read by this deserializer, measured by the number of complex, collection, JSON object and JSON array values read so far. Constructor. The JsonLight input context to read from. This method creates an reads the property from the input and returns an representing the read property. The expected type reference of the property to read. An representing the read property. Reads a primitive value, complex value or collection. The type name read from the payload as a property annotation, or null if none is available. The expected type reference of the property value. The duplicate property names checker to use - if null the method should create a new one if necessary. The collection validator instance if no expected item type has been specified; otherwise null. true to validate null values; otherwise false. true if we are reading a top-level property value; otherwise false. true if we are reading a complex value and the reader is already positioned inside the complex value; otherwise false. The name of the property whose value is being read, if applicable (used for error reporting). The value of the property read. Pre-Condition: JsonNodeType.PrimitiveValue - the value of the property is a primitive value JsonNodeType.StartObject - the value of the property is an object JsonNodeType.StartArray - the value of the property is an array - method will fail in this case. Post-Condition: almost anything - the node after the property value. Returns the value of the property read, which can be one of: - null - primitive value - - Gets and validates the type name annotation for the specified property. The duplicate property names checker in use for the entry content. The name of the property to get the type name for. The type name for the property or null if no type name was found. Tries to read an annotation as OData type name annotation. The annotation name on which value the reader is positioned on. The read value of the annotation (string). true if the annotation is an OData type name annotation, false otherwise. Pre-Condition: JsonNodeType.PrimitiveValue - the value of the annotation JsonNodeType.StartObject JsonNodeType.StartArray Post-Condition: JsonNodeType.Property - the next property after the annotation JsonNodeType.EndObject - end of the parent object JsonNodeType.PrimitiveValue - the reader didn't move JsonNodeType.StartObject JsonNodeType.StartArray If the method returns true, it consumed the value of the annotation from the reader. If it returns false, it didn't move the reader. Reads the value of the odata.type annotation. The type name read from the annotation. Pre-Condition: JsonNodeType.PrimitiveValue - the value of the annotation, will fail if it's not PrimitiveValue JsonNodeType.StartObject JsonNodeType.StartArray Post-Condition: JsonNodeType.Property - the next property after the annotation JsonNodeType.EndObject - end of the parent object Reads top-level property payload property annotation value. The name of the property annotation. The value of the annotation read. Tries to read an annotation as OData type name annotation. The read value of the annotation (string). true if the annotation is an OData type name annotation, false otherwise. Pre-Condition: JsonNodeType.Property - the property that possibly is an odata.type instance annotation Post-Condition: JsonNodeType.Property - the next property after the annotation or if the reader did not move JsonNodeType.EndObject - end of the parent object If the method returns true, it consumed the value of the annotation from the reader. If it returns false, it didn't move the reader. This method creates an reads the property from the input and returns an representing the read property. The expected type reference of the property to read. The duplicate property names checker to use. An representing the read property. The method assumes that the ReadPayloadStart has already been called and it will not call ReadPayloadEnd. Updates the expected type based on the metadata URI if there is one. The expected property type reference provided by the user through public APIs, or null if one was not provided. The expected type reference updated based on the metadata uri, if there is one. Reads a collection value. The collection type reference of the value. The type name read from the payload. The serialization type name for the collection value (possibly null). The value of the collection. Pre-Condition: Fails if the current node is not a JsonNodeType.StartArray Post-Condition: almost anything - the node after the collection value (after the EndArray) Reads a primitive value. true if the reader is positioned on the first property of the value which is a JSON Object (or the second property if the first one was odata.type). The expected type reference of the value, or null if none is available. true to validate null values; otherwise false. The name of the property whose value is being read, if applicable (used for error reporting). The value of the primitive value. Pre-Condition: insideJsonObjectValue == false -> none - Fails if the current node is not a JsonNodeType.PrimitiveValue insideJsonObjectValue == true -> JsonNodeType.Property or JsonNodeType.EndObject - the first property of the value object, or the second property if first was odata.type, or the end-object. Post-Condition: almost anything - the node after the primitive value. Reads a complex value. The expected type reference of the value. The type name read from the payload. The serialization type name for the collection value (possibly null). The duplicate property names checker to use - this is always initialized as necessary, do not clear. The value of the complex value. Pre-Condition: JsonNodeType.Property - the first property of the complex value object, or the second one if the first one was odata.type. JsonNodeType.EndObject - the end object of the complex value object. Post-Condition: almost anything - the node after the complex value (after the EndObject) Reads a primitive, complex or collection value. The type name read from the payload as a property annotation, or null if none is available. The expected type reference of the property value. The duplicate property names checker to use - if null the method should create a new one if necessary. The collection validator instance if no expected item type has been specified; otherwise null. true to validate null values; otherwise false. true if we are reading a top-level property value; otherwise false. true if we are reading a complex value and the reader is already positioned inside the complex value; otherwise false. The name of the property whose value is being read, if applicable (used for error reporting). The value of the property read. Pre-Condition: JsonNodeType.PrimitiveValue - the value of the property is a primitive value JsonNodeType.StartObject - the value of the property is an object JsonNodeType.StartArray - the value of the property is an array Post-Condition: almost anything - the node after the property value. Returns the value of the property read, which can be one of: - null - primitive value - - Reads the payload type name from a JSON object (if it exists). The duplicate property names checker to track the detected 'odata.type' annotation (if any). true if we are reading a complex value and the reader is already positioned inside the complex value; otherwise false. The value of the odata.type annotation or null if no such annotation exists. true if a type name was read from the payload; otherwise false. Precondition: StartObject the start of a JSON object Postcondition: Property the first property of the object if no 'odata.type' annotation exists as first property or the first property after the 'odata.type' annotation. EndObject for an empty JSON object or an object with only the 'odata.type' annotation Detects whether we are currently reading a complex property or not. This can be determined from metadata (if we have it) or from the presence of the odata.type instance annotation in the payload. The duplicate property names checker in use for the entry content. The expected type reference of the property to read. The type name of the complex value if found in the payload; otherwise null. true if we are reading a complex property; otherwise false. This method does not move the reader. Tries to read a top-level null value from the JSON reader. true if a null value could be read from the JSON reader; otherwise false. If the method detects the odata.null annotation, it will read it; otherwise the reader does not move. Make sure that we don't find any other odata.* annotations or properties after reading a payload with the odata.null annotation or the odata.metadata annotation with value ending #Edm.Null The duplicate property names checker to use. Determines the value kind for a non-entity value (that is top-level property value, property value on a complex type, item in a collection) The type kind of the property value. Doesn't move the JSON reader. Increases the recursion depth of values by 1. This will throw if the recursion depth exceeds the current limit. Decreases the recursion depth of values by 1. Asserts that the current recursion depth of values is zero. This should be true on all calls into this class from outside of this class. OData property annotation reader for parameter payloads. OData property annotations are not supported in parameter payloads. The JSON Light parameter reader. Constructor. The JSON Light parameter reader. The JsonLight input context to read from. Reads the next parameter from the parameters payload. The duplicate property names checker used to read a parameter payload. true if a parameter was read from the payload; otherwise false. Pre-Condition: Property or EndObject the property node of the parameter to read or the end object node if there are not parameters Post-Condition: Property or EndObject the node after the property value of a primitive, complex or null collection parameter Any the start of the value representing a non-null collection parameter (the collection reader will fail if this is not a StartArray node) Parser for odata metadata URIs used in JSON Lite. The start of the select query option (including the '=' character). The model to use when resolving the target of the URI. The result of parsing the metadata URI. Initializes a new instance of the class. The model to use when resolving the target of the URI. The metadata URI read from the payload. Creates a metadata URI parser and parses the metadata URI read from the payload. The model to use when resolving the target of the URI. The string value of the odata.metadata annotation read from the payload. The payload kind we expect the metadata URI to conform to. The OData version to use for determining the set of built-in functions available. Reader behavior if the caller is a reader, null if no reader behavior is available. The result from parsing the metadata URI. Extracts the value of the $select query option from the specified fragment. The fragment to extract the $select query option from. The value of the $select query option or null if none exists. Parses a metadata URI read from the payload into its parts. Applies the model and validates the metadata URI against it. The payload kind we expect the metadata URI to conform to. Reader behavior if the caller is a reader, null if no reader behavior is available. The version of the payload being read. Parses the fragment of a metadata URI. The fragment to parse Reader behavior if the caller is a reader, null if no reader behavior is available. The OData version to use for determining the set of built-in functions available. The detected payload kind based on parsing the fragment. Returns the parse results of the metadata uri if it has a AssociationLink in the uri Edm Type Resolver to determine entityset type element. Number of split parts the metadata fragment is split into. The actual metadata fragment parts. The reader behavior. The odata version. Returns with an EntityReferenceLink or Links depending on the Uri, sets the parse results with the navigation, and set Set the EntityLinks Parse results. Navigation property to add to the results. Single element string, used to confirm if this is an error case or not. Returns ReferenceLink or Collection Link based on the navigation and at element Parses the fragment of an entity reference link metadata URI. Edm Type Resolver used to get the ElementType of the entity set. Entity Set used as a starting point to find the navigation property The name of the type declaring the navigation property. The name of the navigation property. Reader behavior if the caller is a reader, null if no reader behavior is available. The version of the payload being read. The resolved navigation property. Validate the Metadata Uri Fragment is @Element for a $links metadata uri, will throw a $links specific error Element selector. Validate the Metadata Uri Fragment is @Element for a non $links metadata uri, throws if its not correct Element selector. Resolves a navigation property name to an IEdmNavigationProperty. Entity Type to look for the navigation property on. Navigation property name to find. Returns the navigation property of throws an exception if it cannot be found. Resolves the entity set. The entity set part. The resolved entity set. Returns the OData Payload Kind Resolves an entity set with an optional type cast and updates the parse result. The entity set to resolve the type cast against. The optional type cast. Reader behavior if the caller is a reader, null if no reader behavior is available. The version of the payload being read. The type of the given entity set. The resolved entity type. Resolves a type. The type name. Reader behavior if the caller is a reader, null if no reader behavior is available. The version of the payload being read. The resolved Edm type. Interface representing a state of the JSON writer for entry. Gets or creates the type context to answer basic questions regarding the type info of the entry. The Edm model to use. True if writing a response payload, false otherwise. The type context to answer basic questions regarding the type info of the entry. The entry being written. The entity type for the entry (if available) The entity type which was derived from the model (may be either the same as entity type or its base type. The serialization info for the current entry. Flag which indicates that the odata.editLink metadata property has been written. Flag which indicates that the odata.readLink metadata property has been written. Flag which indicates that the odata.mediaEditLink metadata property has been written. Flag which indicates that the odata.mediaReadLink metadata property has been written. Flag which indicates that the odata.mediaContentType metadata property has been written. Flag which indicates that the odata.mediaETag metadata property has been written. Constants for the JSON Lite format. The prefix for OData annotation names. The separator of property annotations. The value 'true' for the OData null annotation. The 'value' property name for the Json Light value property. The name of the property returned for a singleton $links query. The name of the property returned for a URL of a workspace collection. The name of the property returned for a name of a workspace collection. The 'name' property name of an annotation group declaration. The name of the $select query option. The '=' character used to separate a query option name from its value. The '&' separator character between query options. The hash sign acting as fragment indicator in a metadata URI. The slash sign used as separator in the fragment of a metadata URI. The @Element token that indicates that the payload is a single item from a set. The '(' used to mark the start of function parameters in the fragment of a metadata URI. The ')' used to mark the end of function parameters in the fragment of a metadata URI. The "," to use as the separator for the function parameters in the fragment of a metadata URI. The token that indicates the payload is a property with null value. Builder class to construct the metadata pointers for the Json Light format for the various payload kinds. Creates a metadata uri builder after validating user input. The JSON Light metadata level being written. if set to true indicates that a response is being written. The writer settings. The Edm model instance. The metadata uri builder to use while writing. Creates a metadata uri builder for the given base metadata document uri. DEVNOTE: specifically for unit testing. The non-null, absolute metadata document URI. The Edm model instance. if set to true indicates that a response is being written. A new metadata uri builder. Creates the metadata URI for a feed based on the entity set the entries in the feed belong to. The context object to answer basic questions regarding the type of the feed. Returns the metadata URI for a feed based on the entity set the entries in the feed belong to. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for an entry based on the entity set it belongs to. The context object to answer basic questions regarding the type of the entry. Returns the metadata URI for an entry based on the entity set it belongs to. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for a property based on its value. The property to create the metadata URI for. Returns the metadata URI for a property based on its owning type. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for an entity reference link. Serialization information to generate the metadata uri. The entity set of the declaring type of the navigation property The navigation property to create the metadata URI for. Returns the metadata URI for an entity reference link or a collection of entity reference links. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for a collection of entity reference links. Serialization information to generate the metadata uri. The entity set of the declaring type of the navigation property The navigation property to create the metadata URI for. Returns the metadata URI for an entity reference link or a collection of entity reference links. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for an operation (function, action, service op) based on its function import. Serialization information to generate the metadata uri. The item type of the collection. Returns the metadata URI for an operation (function, action, service op) based on its function import. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for the service document. Returns the metadata URI for the service document. true if we have successfully built the metadata URI; false otherwise. Gets the base URI of the metadata document uri. May be null to indicate that there is no metadata document uri. Metadata uri builder which uses a user-provided uri and $select clause. The base metadata document uri and $select clause provided by the user. The Edm model instance. if set to true indicates that a response is being written. Initializes a new instance of the class. The non-null, absolute metadata document URI. The Edm model instance. if set to true indicates that a response is being written. Creates the metadata URI for a feed based on the entity set the entries in the feed belong to. The context object to answer basic questions regarding the type of the feed. Returns the metadata URI for a feed based on the entity set the entries in the feed belong to. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for an entry based on the entity set it belongs to. The context object to answer basic questions regarding the type of the entry. Returns the metadata URI for an entry based on the entity set it belongs to. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for a property based on its value. The property to create the metadata URI for. Returns the metadata URI for a property based on its owning type. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for an entity reference link. Serialization information to generate the metadata uri. The entity set of the declaring type of the navigation property The navigation property to create the metadata URI for. Returns the metadata URI for an entity reference link or a collection of entity reference links. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for a collection of entity reference links. Serialization information to generate the metadata uri. The entity set of the declaring type of the navigation property The navigation property to create the metadata URI for. Returns the metadata URI for an entity reference link or a collection of entity reference links. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for an operation (function, action, service op) based on its function import. Serialization information to generate the metadata uri. The item type of the collection. Returns the metadata URI for an operation (function, action, service op) based on its function import. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for the service document. Returns the metadata URI for the service document. true if we have successfully built the metadata URI; false otherwise. Gets the metadata URI type name based on the given property. The property. The type name for the metadata URI. Gets the entity set name for the metadata Uri. The entity set in question. The model instance. Returns the entity set name for the metadata Uri. Returns the fully qualified name of if it is a derived type of the ; returns null if is the root type of . The entity set in question. The eneity type in question. Returns the fully qualified name of if it is a derived type of the ; returns null if is the root type of . Creates the metadata URI for a type. The non-null, absolute metadata document URI. The fully qualified type name to create the metadata URI for. Returns the metadata URI for a value based on its type. Creates the metadata URI for a feed or entry. The non-null, absolute metadata document URI. The Edm model instance. The context object to answer basic questions regarding the type of the entry or feed. true if the metadata URI is built for an entry, false if the metadata URI is built for a feed. true if the metadata URI is for a response payload, false if the metadata URI is for a request payload. Returns the metadata URI for the feed or entry. Creates the metadata URI for an entity set. The non-null, absolute metadata document URI. The fully qualified entity set name for which to create the metadata URI. The fully qualified entity type name of the entries in the result. This has to be an entity type derived from the result entity set's base type or null to use its base type. Navigation Property name to create a $link metadata uri to, if not null a $link uri will be created true to append the '@Element" item selector at the end of the metadata URI; otherwise false. The metadata URI for the . Gets the base URI of the metadata document uri. May be null to indicate that there is no metadata document uri. Metadata uri builder which never actually builds anything. Used for the case where 'nometadata' is explicitly requested in the media type. Singleton instance of . Prevents a default instance of the class from being created. Creates the metadata URI for a feed based on the entity set the entries in the feed belong to. The context object to answer basic questions regarding the type of the feed. Returns the metadata URI for a feed based on the entity set the entries in the feed belong to. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for an entry based on the entity set it belongs to. The context object to answer basic questions regarding the type of the entry. Returns the metadata URI for an entry based on the entity set it belongs to. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for a property based on its value. The property to create the metadata URI for. Returns the metadata URI for a property based on its owning type. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for an entity reference link. Serialization information to generate the metadata uri. The entity set of the declaring type of the navigation property The navigation property to create the metadata URI for. Returns the metadata URI for an entity reference link or a collection of entity reference links. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for a collection of entity reference links. Serialization information to generate the metadata uri. The entity set of the declaring type of the navigation property The navigation property to create the metadata URI for. Returns the metadata URI for an entity reference link or a collection of entity reference links. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for an operation (function, action, service op) based on its function import. Serialization information to generate the metadata uri. The item type of the collection. Returns the metadata URI for an operation (function, action, service op) based on its function import. true if we have successfully built the metadata URI; false otherwise. Creates the metadata URI for the service document. Returns the metadata URI for the service document. true if we have successfully built the metadata URI; false otherwise. Gets the base URI of the metadata document uri. May be null to indicate that there is no metadata document uri. The result of parsing an OData metadata URI in JSON Lite. The metadata URI read from the payload in its unparsed form. The metadata document URI as read from the payload. The fragment portion of the metadata URI. The $select query option. The resolved entity set as specified in the metadata URI. The resolved structured type as specified in the metadata URI. The navigation property as specified in the metadata URI. The detected payload kinds from parsing the metadata URI. true if we just parsed the metadata Uri for null properties, i.e. ~/$metadata#Edm.Null; false otherwise. Initializes a new instance of the class. The metadata URI read from the payload in its unparsed form. The metadata URI read from the payload in its unparsed form. The metadata document URI as read from the payload. This is the metadata URI as read from the payload without the fragment. The fragment portion of the metadata URI. The $select query option. The resolved entity set as specified in the metadata URI. The resolved structured type as specified in the metadata URI. The navigation property as specified in the metadata URI. The detected payload kinds from parsing the metadata URI. true if we just parsed the metadata Uri for null properties, i.e. ~/$metadata#Edm.Null; false otherwise. Reader for the JSON Lite format that supports look-ahead and re-ordering of payloads. Reader for the JSON format (http://www.json.org) that supports look-ahead. Reader for the JSON format. http://www.json.org The initial size of the buffer of characters. 4K (page size) divided by the size of a single character 2 and a little less so that array structures also fit into that page. The goal is for the entire buffer to fit into one page so that we don't cause too many L1 cache misses. Maximum number of characters to move in the buffer. If the current token size is bigger than this, we will allocate a larger buffer. This threshold is copied from the XmlReader implementation. The text which every date time value starts with. The text which every date time value ends with. The text reader to read input characters from. Stack of scopes. At the begining the Root scope is pushed to the stack and stays there for the entire parsing (so that we don't have to check for empty stack and also to track the number of root-level values) Each time a new object or array is started the Object or Array scope is pushed to the stack. If a property inside an Object is found, the Property scope is pushed to the stack. The Property is popped once we find the value for the property. The Object and Array scopes are popped when their end is found. true if annotations are allowed and thus the reader has to accept more characters in property names than we do normally; otherwise false. true if the reader should recognize ASP.NET JSON DateTime and DateTimeOffset format "\/Date(...)\/". false if the reader should not recognize such strings and read them as arbitrary string. End of input from the reader was already reached. This is used to avoid calling Read on the text reader multiple times even though it already reported the end of input. Buffer of characters from the input. Number of characters available in the input buffer. This can have value of 0 to characterBuffer.Length. Index into the characterBuffer which points to the first character of the token being currently processed (while in the Read method) or of the next token to be processed (while in the caller code). This can have value from 0 to storedCharacterCount. The last reported node type. The value of the last reported node. Cached string builder to be used when constructing string values (needed to resolve escape sequences). The string builder instance is cached to avoid excessive allocation when many string values with escape sequences are found in the payload. Constructor. The text reader to read input characters from. The specific JSON-based format expected by the reader. Reads the next node from the input. true if a new node was found, or false if end of input was reached. Determines if a given character is a whitespace character. The character to test. true if the is a whitespace; false otherwise. Note that the behavior of this method is different from Char.IsWhitespace, since that method returns true for all characters defined as whitespace by the Unicode spec (which is a lot of characters), this one on the other hand recognizes just the whitespaces as defined by the JSON spec. Parses a date time primitive value. The string value to parse. The parsed date time value, or null if the string value doesn't represent a date time value. Parses a "value", that is an array, object or primitive value. The node type to report to the user. Parses a property name and the colon after it. The node type to report to the user. Parses a primitive string value. The value of the string primitive value. Assumes that the current token position points to the opening quote. Note that the string parsing can never end with EndOfInput, since we're already seen the quote. So it can either return a string succesfully or fail. Parses a primitive string value. Set to true if the first character in the string was a backslash. This is used when parsing DateTime values since they must start with an escaped slash character (\/). The value of the string primitive value. Assumes that the current token position points to the opening quote. Note that the string parsing can never end with EndOfInput, since we're already seen the quote. So it can either return a string succesfully or fail. Parses the null primitive value. Always returns null if successful. Otherwise throws. Assumes that the current token position points to the 'n' character. Parses the true or false primitive values. true of false boolean value if successful. Otherwise throws. Assumes that the current token position points to the 't' or 'f' character. Parses the number primitive values. Int32 or Double value if successful. Otherwise throws. Assumes that the current token position points to the first character of the number, so either digit, dot or dash. Parses a name token. The value of the name token. Name tokens are (for backward compat reasons) either - string value quoted with double quotes. - string value quoted with single quotes. - sequence of letters, digits, underscores and dollar signs (without quoted and in any order). Called when end of input is reached. Always returns false, used for easy readability of the callers. Creates a new scope of type and pushes the stack. The scope type to push. Pops a scope from the stack. Pops a property scope if it's present on the stack. Skips all whitespace characters in the input. true if a non-whitespace character was found in which case the tokenStartIndex is pointing at that character. false if there are no non-whitespace characters left in the input. Ensures that a specified number of characters after the token start is available in the buffer. The number of character after the token to make available. true if at least the required number of characters is available; false if end of input was reached. Consumes the characters starting at the start of the token and returns them as a string. The number of characters after the token start to consume. The string value of the consumed token. Reads more characters from the input. true if more characters are available; false if end of input was reached. This may move characters in the characterBuffer, so after this is called all indeces to the characterBuffer are invalid except for tokenStartIndex. The value of the last reported node. This is non-null only if the last node was a PrimitiveValue or Property. If the last node is a PrimitiveValue this property returns the value: - null if the null token was found. - boolean if the true or false token was found. - string if a string token was found. - DateTime if a string token formatted as DateTime was found. - Int32 if a number which fits into the Int32 was found. - Double if a number which doesn't fit into Int32 was found. If the last node is a Property this property returns a string which is the name of the property. The type of the last node read. Various scope types for Json writer. Root scope - the top-level of the JSON content. This scope is only once on the stack and that is at the bottom, always. It's used to track the fact that only one top-level value is allowed. Array scope - inside an array. This scope is pushed when [ is found and is active before the first and between the elements in the array. Between the elements it's active when the parser is in front of the comma, the parser is never after comma as then it always immediately processed the next token. Object scope - inside the object (but not in a property value). This scope is pushed when { is found and is active before the first and between the properties in the object. Between the properties it's active when the parser is in front of the comma, the parser is never after comma as then it always immediately processed the next token. Property scope - after the property name and colon and througout the value. This scope is pushed when a property name and colon is found. The scope remains on the stack while the property value is parsed, but once the property value ends, it's immediately removed so that it doesn't appear on the stack after the value (ever). Class representing scope information. The type of the scope. Constructor. The type of the scope. Get/Set the number of values found under the current scope. Gets the scope type for this scope. The (possibly empty) list of buffered nodes. This is a circular linked list where this field points to the first item of the list. A pointer into the bufferedNodes list to track the most recent position of the current buffered node. The maximumum number of recursive internalexception objects to allow when reading in-stream errors. The name of the property that denotes an in-stream error. A flag indicating whether the reader is in buffering mode or not. A flag indicating that the last node for non-buffering read was taken from the buffer; we leave the node in the buffer until the next Read call. Debug flag to ensure we do not re-enter the instance while reading ahead and trying to parse an in-stream error. true if the parser should check for in-stream errors whenever a start-object node is encountered; otherwise false. This is set to false for parsing of top-level errors where we don't want the in-stream error detection code to kick in. Constructor. The text reader to read input characters from. The name of the property that denotes an in-stream error. The maximum number of recursive internalexception objects to allow when reading in-stream errors. The specific JSON-based format expected by the reader. Reads the next node from the input. true if a new node was found, or false if end of input was reached. Puts the reader into the state where it buffers read nodes. Creates a bookmark at the current position of the reader. The bookmark object, it should be treated as a black box by the caller. Moves the reader to the bookmarked position. The bookmark object to move to. Puts the reader into the state where no buffering happen on read. Either buffered nodes are consumed or new nodes are read (and not buffered). A method to detect whether the current property value represents an in-stream error. The read from the payload. true if the current value is an in-stream error value; otherwise false. Reads the next node from the input. If we have still nodes in the buffer, takes the node from there. Otherwise reads a new node from the underlying reader and buffers it (depending on the current mode). true if a new node was found, or false if end of input was reached. If the parsingInStreamError field is false, the method will read ahead for every StartObject node read from the input to check whether the JSON object represents an in-stream error. If so, it throws an . If false, this check will not happen. This parsingInStremError field is set to true when trying to parse an in-stream error; in normal operation it is false. Called whenever we find a new object value in the payload. The base class implementation reads ahead and tries to parse it as an in-stream error payload. If it finds one it will throw it. This method is called when the reader is in the buffering mode and can read ahead (buffering) as much as it needs to once it returns the reader will be returned to the position before the method was called. The reader is always positioned on a start object when this method is called. Reads the next node from the JSON reader and if a start-object node is detected starts reading ahead and tries to parse an in-stream error. true if a new node was found, or false if end of input was reached. Try to read an error structure from the stream. Return null if no error structure can be read. An instance that was read from the reader or null if none could be read. true if an instance that was read; otherwise false. Try to read the message property value of an error value. An instance to set the read message property values on. true if the message property values could be read; otherwise false. Try to read an inner error property value. An instance that was read from the reader or null if none could be read. The number of times this method has been called recursively. true if an instance that was read; otherwise false. Reads the string value of a property. The string value read if the method returns true; otherwise null. true if a string value (or null) was read as property value of the current property; otherwise false. Skips over a JSON value (primitive, object or array) while parsing in-stream errors. Note that the SkipValue extension method can not be used in this case as this method has to access the base instance's NodeType and call ReadInternal. Pre-Condition: JsonNodeType.PrimitiveValue, JsonNodeType.StartArray or JsonNodeType.StartObject Post-Condition: JsonNodeType.PrimitiveValue, JsonNodeType.EndArray or JsonNodeType.EndObject Removes the head node from the buffer. The type of the last node read. Depending on whether buffering is on or off this will return the node type of the last buffered read or the node type of the last unbuffered read. The value of the last reported node. Depending on whether buffering is on or off this will return the node type of the last buffered read or the node type of the last unbuffered read. true if the parser should check for in-stream errors whenever a start-object node is encountered; otherwise false. This is set to false for parsing of top-level errors where we don't want the in-stream error detection code to kick in. Private class used to buffer nodes when reading in buffering mode. The type of the node read. The value of the node. Constructor. The type of the node read. The value of the node. The type of the node read. The value of the node. The previous node in the list of nodes. The next node in the list of nodes. Constructor. The text reader to read input characters from. The maximum number of recursive internalexception objects to allow when reading in-stream errors. Called whenever we find a new object value in the payload. Buffers and re-orders an object value for later consumption by the JsonLight reader. This method is called when the reader is in the buffering mode and can read ahead (buffering) as much as it needs to once it returns the reader will be returned to the position before the method was called. The reader is always positioned on a start object when this method is called. Reads a property name from the JSON reader and determines if it's a regular property, an instance annotation or a property annotation. The name of the regular property which the reader is positioned on or which a property annotation belongs to. The name of the instance or property annotation, or null if the reader is on a regular property. Reads over a value buffering it. A data structure to represent the buffered object with information about its properties, their order and annotations. The cache for properties. The key is the property or instance annotation name, the value are the buffered properties grouped by property name (incl. annotation properties). The set of data property names. Data properties are the properties that are neither an instance annotation property nor a property annotation. A list of property names with their annotation name. This is needed to properly maintain the relative order of annotation properties if no data property for the annotation property exists in the object. Constructor. Adds a new buffered property to the list of buffered properties for this object. The name of the data property (null for instance annotations). The name of the annotation (null for data properties). The buffered property to add. Reorders the buffered properties to conform to the required payload order. The required order is: odata.metadata comes first, odata.type comes next, then all odata.* property annotations and finally, we preserve the relative order of custom annotations and data properties. Sort the data properties and property annotations stored for a particular property name. The list of buffered properties to sort. The sorted enumerable of buffered properties. The sort order is for all odata.* property annotations to come before the data property but otherwise preserve the relative order of custom property annotations with regard to the position of the data property. Checks whether an annotation name is an odata.* annotation. The annotation name to check. true if the annotation name represents an odata.* annotation; otherwise false. Checks whether an annotation name is a odata.metadata annotation. The annotation name to check. true if the annotation name represents an odata.metadata annotation; otherwise false. Checks whether an annotation name is a odata.annotationGroup annotation. The annotation name to check. true if the annotation name represents an odata.annotationGroup annotation; otherwise false. Checks whether an annotation name is a odata.annotationGroupReference annotation. The annotation name to check. true if the annotation name represents an odata.annotationGroupReference annotation; otherwise false. Checks whether an annotation name is a odata.type annotation. The annotation name to check. true if the annotation name represents an odata.type annotation; otherwise false. Checks whether an annotation name is a odata.id annotation. The annotation name to check. true if the annotation name represents an odata.id annotation; otherwise false. Checks whether an annotation name is a odata.etag annotation. The annotation name to check. true if the annotation name represents an odata.etag annotation; otherwise false. Sorts the property names for an object. The sorted enumerable of property names. The sort order is to put odata.metadata first, then odata.type, odata.id, and odata.etag, followed by all other odata.* instance annotations. For the rest, we preserve the relative order of custom annotations with regard to the data property. Note that we choose the position of the first property annotation in cases where no data property for a set of property annotations exists. The node in the linked list of buffered nodes where this object starts. The current buffered property being processed. A data structure to represent a buffered property. Reorders the buffered property to be positioned after the node. The node after which to insert this buffered property. The annotation name for this buffered property (either instance annotation or property annotation). The node in the linked list of buffered nodes that represents the property name of the buffered property. The node in the linked list of buffered nodes that represents the end of the property value of the buffered property. Interface representing a context necessary for reading JSON operations values. Given a URI from the payload, this method will try to make it absolute, or fail otherwise. The URI string from the payload to process. An absolute URI to report. Adds the specified action to the current entry. The action whcih is fully populated with the data from the payload. Adds the specified function to the current entry. The function whcih is fully populated with the data from the payload. The JSON reader to read the operations value from. Base class for all JSON output contexts. An in-stream error listener to notify when in-stream error is to be written. Or null if we don't need to notify anybody. The message output stream. The asynchronous output stream if we're writing asynchronously. The text writer created for the output stream. The JSON writer to write to. This field is also used to determine if the output context has been disposed already. Constructor. The format for this output context. The text writer to write to. Configuration settings of the OData writer. The model to use. Constructor. The format for this output context. The message stream to write the payload to. The encoding to use for the payload. Configuration settings of the OData writer. true if writing a response message; otherwise false. true if the output should be written synchronously; false if it should be written asynchronously. The model to use. The optional URL resolver to perform custom URL resolution for URLs written to the payload. Check if the object has been disposed; called from all public API methods. Throws an ObjectDisposedException if the object has already been disposed. Synchronously flush the writer. Perform the actual cleanup work. If 'true' this method is called from user code; if 'false' it is called by the runtime. Returns the which is to be used to write the content of the message. Helper methods used by the OData reader for the Verbose JSON and JSON Light formats. Try and parse spatial type from the json payload. The JSON reader to read from. true if the reader is positioned on the first property of the value which is a JSON Object (or the second property if the first one was odata.type). The input context with all the settings. Expected edm property type. true to validate null values; otherwise false. The recursion depth to start with. The name of the property whose value is being read, if applicable (used for error reporting). An instance of the spatial type. Tries to read a null value from the JSON reader. The JSON reader to read from. The input context with all the settings. The expected type reference of the value. true to validate null values; otherwise false. The name of the property whose value is being read, if applicable (used for error reporting). true if a null value could be read from the JSON reader; otherwise false. If the method detects a null value it will read it (position the reader after the null value); otherwise the reader does not move. Reads the json object value from the jsonReader Json reader to read payload from the wire. true if the reader is positioned on the first property of the value which is a JSON Object (or the second property if the first one was odata.type). The input context with all the settings. The recursion depth to start with. an instance of IDictionary containing the spatial value. Read the json array from the reader. JsonReader instance. The input context with all the settings. The recursion depth to start with. a list of json objects. Reader for the JSON format that supports look-ahead and deduplicates properties. This reader will buffer the entire object record whenever it finds the start of the object record. It then goes through all its properties and removes duplicates. It then reports the object record as if there were no duplicates in it. If there was a duplicate property it will be reported at the position the first occurence of the property was found but with the value of the last occurence. This is to implement WCF DS Server compatibility behavior. Constructor. The text reader to read input characters from. The maximum number of recursive internalexception objects to allow when reading in-stream errors. Called whenever we find a new object value in the payload. Removes duplicate properties in the current object record. This method assumes that we are buffering and that the current buffered node is a StartObject. It then goes, buffers the entire object record (and all its children) and removes duplicate properties (using the WCF DS Server algorithm). It will remove duplicate properties on any objects in the subtree of the top-level object as well (behaves recursively). The method also checks for in-stream errors and throws if it finds one. Private class used to store information necessary to deduplicate properties of a single JSON object record. This class is a dictionary Key is the name of a property in the object record. Value is a list of property deduplication records in the order we find the properties in the payload. Points to the property record which is currently being constructed. Private class used to store information necessary to deduplicate a single JSON property. The node in the buffered nodes list which points to the property node which this deduplication record describes. The node in the buffered nodes list which points to the last node of the value of the property node this deduplication record describes. Constructor. The property node to create the record for. The node in the buffered nodes list which points to the property node which this deduplication record describes. The node in the buffered nodes list which points to the last node of the value of the property node this deduplication record describes. Observation: Even if the value itself is an object for which we will do the property deduplication and thus we will shuffle its nodes around, in that case the last value node will point to the end object node which will not change during the deduplication process. Annotation which stores the EDM type information of a value. This annotation will be used on ODataEntry, ODataComplexValue and ODataCollectionValue. The EDM type of the value this annotation is on. The entity set of the value this annotation is on. Only applies to entity values. Creates a new instance of the type annotation for an entity value. The entity set the entity belongs to (required). The entity type of the entity value if not the base type of the entity set (optional). Creates a new instance of the type annotation for a complex value. The type of the complex value (required). Creates a new instance of the type annotation for a collection value. The type of the collection value (required). The EDM type of the value. The entity set the value belongs to (only applies to entity values). An implementation of an OData collection value. The to convert into an . Creates a new instance of an . The to create the collection value for. Gets the values stored in this collection. Gets the kind of this value. An implementation of an OData entry or complex value. Static, un-typed instance for use in ODataLib. Creates a new Edm null value with the specified type. The type of the null value (if available). Gets the kind of this value. Class with utility methods to deal with EDM values over OData OM instances. Converts an into the corresponding . The non-null to convert. The declaring type of the property. An implementation of the value. Converts an OData value into the corresponding . The value to convert. The of the value or null if no type reference is available. An implementation of the . An implementation of an OData entry or complex value. Properties of an OData entry or complex value. The type of this structured value. Creates a new Edm structured value from an OData entry. The to create the structured value for. Creates a new Edm structured value from an OData complex value. The to create the structured value for. Finds the value corresponding to the provided property name. Property to find the value of. The found property, or null if no property was found. Gets the property values of this structured value. Gets the kind of this value. Interface representing a state of the JSON reader for entry. The entry being read. The entity type for the entry (if available) The metadata builder instance for the entry. Flag which indicates that during parsing of the entry represented by this state, any property which is not an instance annotation was found. This includes property annotations for property which is not present in the payload. This is used to detect incorrect ordering of the payload (for example odata.id must not come after the first property). If the reader finds a navigation link to report, but it must first report the parent entry it will store the navigation link info in this property. So this will only ever store the first navigation link of an entry. The duplicate property names checker for the entry represented by the current state. May be null. The selected properties that should be expanded during template evaluation. The set of names of the navigation properties we have read so far while reading the entry. true if we have started processing missing projected navigation links, false otherwise. OData JsonLight deserializer for collections. Cached duplicate property names checker to use if the items are complex values. Constructor. The JsonLight input context to read from. Reads the start of a collection; this includes collection-level properties (e.g., the 'results' property) if the version permits it. The duplicate property names checker used to keep track of the properties and annotations in the collection wrapper object. true if we are reading a nested collection inside a paramter payload; otherwise false. The expected item type reference or null if none is expected. The validated actual item type reference (if specified in the payload) or the expected item type reference. An representing the collection-level information. Currently this is only the name of the collection in ATOM. Pre-Condition: Any: the start of a nested collection value; if this is not a 'StartArray' node this method will fail. JsonNodeType.Property: the first property of the collection wrapper object after the metadata URI. JsonNodeType.EndObject: when the collection wrapper object has no properties (other than the metadata URI). Post-Condition: JsonNodeType.StartArray: the start of the array of the collection items. Reads an item in the collection. The expected type of the item to read. The collection validator instance if no expected item type has been specified; otherwise null. The value of the collection item that was read; this can be an ODataComplexValue, a primitive value or 'null'. Pre-Condition: The first node of the item in the collection NOTE: this method will throw if the node is not JsonNodeType.StartObject: for a complex item JsonNodeType.PrimitiveValue: for a primitive item Post-Condition: The reader is positioned on the first node of the next item or an EndArray node if there are no more items in the collection Reads the end of a collection; this includes collection-level instance annotations. true if we are reading a nested collection inside a paramter payload; otherwise false. Pre-Condition: EndArray node: End of the collection content array Post-Condition: EndOfInput: All of the collection payload has been consumed. OData collection reader for the JsonLight format. The input to read the payload from. The collection deserializer to use to read from the input. Constructor. The input to read the payload from. The expected type for the items in the collection. If not null, the reader will notify the implementer of the interface of relevant state changes in the reader. Implementation of the collection reader logic when in state 'Start'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.None: assumes that the JSON reader has not been used yet when not reading a nested payload. Post-Condition: The reader is positioned on the first node of the first item or the EndArray node of an empty item array Implementation of the reader logic when in state 'CollectionStart'. true if more nodes can be read from the reader; otherwise false. Pre-Condition: The first node of the first item in the collection or the EndArray node of the (empty) item array NOTE: this method will throw if the node is not JsonNodeType.EndArray: for an empty item array of the collection JsonNodeType.StartObject: for a complex value as first item JsonNodeType.PrimitiveValue: for a primitive value as first item Post-Condition: The reader is positioned on the first node of the second item or an EndArray node if there are no items in the collection Implementation of the reader logic when in state 'Value'. true if more nodes can be read from the reader; otherwise false. Pre-Condition: The first node of the next item in the collection or the EndArray node of the item array NOTE: this method will throw if the node is not JsonNodeType.EndArray: for the end of the item array of the collection JsonNodeType.StartObject: for a complex item JsonNodeType.PrimitiveValue: for a primitive item Post-Condition: The reader is positioned on the first node of the next item or an EndArray node if there are no items in the collection Implementation of the reader logic when in state 'CollectionEnd'. false since no more nodes can be read from the reader after the collection ended. Pre-Condition: JsonNodeType.EndArray the end of the item array of the collection Post-Condition: JsonNodeType.EndOfInput nothing else to read when not reading a nested payload Implementation of the collection reader logic when in state 'Start'. The duplicate property names checker for the top-level scope. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.None: assumes that the JSON reader has not been used yet when not reading a nested payload. Post-Condition: The reader is positioned on the first node of the first item or the EndArray node of an empty item array Implementation of the reader logic when in state 'CollectionStart'. true if more nodes can be read from the reader; otherwise false. Pre-Condition: The first node of the first item in the collection or the EndArray node of the (empty) item array NOTE: this method will throw if the node is not JsonNodeType.EndArray: for an empty item array of the collection JsonNodeType.StartObject: for a complex value as first item JsonNodeType.PrimitiveValue: for a primitive value as first item Post-Condition: The reader is positioned on the first node of the second item or an EndArray node if there are no items in the collection Implementation of the reader logic when in state 'Value'. true if more nodes can be read from the reader; otherwise false. Pre-Condition: The first node of the next item in the collection or the EndArray node of the item array NOTE: this method will throw if the node is not JsonNodeType.EndArray: for the end of the item array of the collection JsonNodeType.StartObject: for a complex item JsonNodeType.PrimitiveValue: for a primitive item Post-Condition: The reader is positioned on the first node of the next item or an EndArray node if there are no items in the collection Implementation of the reader logic when in state 'CollectionEnd'. false since no more nodes can be read from the reader after the collection ended. Pre-Condition: JsonNodeType.EndArray the end of the item array of the collection Post-Condition: JsonNodeType.EndOfInput nothing else to read when not reading a nested payload OData JsonLight serializer for collections. true when writing a top-level collection that requires the 'value' wrapper object; otherwise false. The metadata uri builder to use. Constructor. The output context to write to. true when writing a top-level collection that requires the 'value' wrapper object; otherwise false. Writes the start of a collection. The collection start to write. The item type of the collection or null if no metadata is available. Writes the end of a collection. ODataCollectionWriter for the JsonLight format. Base class for OData collection writers that verifies a proper sequence of write calls on the writer. Base class for OData collection writers. Start writing a collection. The representing the collection. Starts writing an entry. The collection item to write. Finishes writing a collection. Flushes the write buffer to the underlying stream. An interface that allows the implementations of the writers to get notified if an in-stream error is to be written. This method notifies the listener, that an in-stream error is to be written. This listener can choose to fail, if the currently written payload doesn't support in-stream error at this position. If the listener returns, the writer should not allow any more writing, since the in-stream error is the last thing in the payload. The output context to write to. If not null, the writer will notify the implementer of the interface of relevant state changes in the writer. Stack of writer scopes to keep track of the current context of the writer. The expected type of the items in the collection or null if no expected item type exists. Checker to detect duplicate property names on complex collection items. The collection validator instance if no expected item type has been specified; otherwise null. Constructor. The output context to write to. The item type of the collection being written or null if no metadata is available. Constructor. The output context to write to. The type reference of the expected item type or null if no expected item type exists. If not null, the writer will notify the implementer of the interface of relevant state changes in the writer. Flushes the write buffer to the underlying stream. Start writing a collection. The representing the collection. Write a collection item. The collection item to write. Finish writing a collection. This method notifies the listener, that an in-stream error is to be written. This listener can choose to fail, if the currently written payload doesn't support in-stream error at this position. If the listener returns, the writer should not allow any more writing, since the in-stream error is the last thing in the payload. Determines whether a given writer state is considered an error state. The writer state to check. True if the writer state is an error state; otherwise false. Check if the object has been disposed; called from all public API methods. Throws an ObjectDisposedException if the object has already been disposed. Flush the output. Start writing an OData payload. Finish writing an OData payload. Start writing a collection. The representing the collection. Finish writing a collection. Writes a collection item (either primitive or complex) The collection item to write. The expected type of the collection item or null if no expected item type exists. Verifies that calling WriteStart is valid. true if the call is to be synchronous; false otherwise. The representing the collection. Start writing a collection - implementation of the actual functionality. The representing the collection. Verify that calling WriteItem is valid. true if the call is to be synchronous; false otherwise. Write a collection item - implementation of the actual functionality. The collection item to write. Verifies that calling WriteEnd is valid. true if the call is to be synchronous; false otherwise. Finish writing a collection - implementation of the actual functionality. Verifies that calling Flush is valid. true if the call is to be synchronous; false otherwise. Verifies that a call is allowed to the writer. true if the call is to be synchronous; false otherwise. Checks whether we are currently writing the first top-level element; if so call StartPayload Catch any exception thrown by the action passed in; in the exception case move the writer into state ExceptionThrown and then rethrow the exception. The action to execute. Notifies the implementer of the interface of relevant state changes in the writer. The new writer state. Enter a new writer scope; verifies that the transition from the current state into new state is valid and attaches the item to the new scope. The writer state to transition into. The item to associate with the new scope. Leave the current writer scope and return to the previous scope. When reaching the top-level replace the 'Started' scope with a 'Completed' scope. Note that this method is never called once an error has been written or a fatal exception has been thrown. Replaces the current scope with a new scope; checks that the transition is valid. The new state to transition into. The item associated with the new state. Verify that the transition from the current state into new state is valid . The new writer state to transition into. The current state of the writer. Checker to detect duplicate property names on complex collection items. The collection validator instance. The item type of the collection being written or null if no metadata is available. An enumeration representing the current state of the writer. The writer is at the start; nothing has been written yet. The writer has started writing and is writing the wrapper elements for the collection items (if any). No or all items have been written. The writer is in a state where collection items can be written. The writer has completed; nothing can be written anymore. Writer has written an error; nothing can be written anymore. A writer scope; keeping track of the current writer state and an item associated with this state. The writer state of this scope. The item attached to this scope. Constructor creating a new writer scope. The writer state of this scope. The item attached to this scope. The writer state of this scope. The item attached to this scope. The output context to write to. The JsonLight collection serializer to use. Constructor for creating a collection writer to use when writing operation result payloads. The output context to write to. The item type of the collection being written or null if no metadata is available. Constructor for creating a collection writer to use when writing parameter payloads. The output context to write to. The type reference of the expected item type or null if no expected item type exists. If not null, the writer will notify the implementer of the interface of relevant state changes in the writer. Check if the object has been disposed; called from all public API methods. Throws an ObjectDisposedException if the object has already been disposed. Flush the output. Start writing an OData payload. Finish writing an OData payload. Start writing a collection. The representing the collection. Finish writing a collection. Writes a collection item (either primitive or complex) The collection item to write. The expected type of the collection item or null if no expected item type exists. OData JsonLight deserializer for entity reference links. Constructor. The JsonLight input context to read from. Read a set of top-level entity reference links. The navigation property for which to read the entity reference links. An representing the read links. Reads a top-level entity reference link - implementation of the actual functionality. The navigation property for which to read the entity reference links. An representing the read entity reference link. Read a set of top-level entity reference links. The navigation property for which to read the entity reference links. The duplicate property names checker to use for the top-level scope. An representing the read links. Reads a top-level entity reference link - implementation of the actual functionality. The navigation property for which to read the entity reference links. The duplicate property names checker to use for the top-level scope. An representing the read entity reference link. Reads the entity reference link instance annotations. The to read the annotations for. The duplicate property names checker for the entity reference links scope. true when parsing the instance annotations before the 'value' property; false when parsing the instance annotations after the 'value' property. Pre-Condition: JsonNodeType.Property The first property in the payload (or the first property after the metadata URI in responses) JsonNodeType.EndObject The end of the entity reference links object Post-Condition: JsonNodeType.EndObject When the end of the entity reference links object is reached Any The first node of the value of the 'url' property (if found) Reads the odata.nextlink value of an entity reference links nextlink annotation. The entity reference links to read the next link value for; the value of the nextlink will be assigned to this instance. Pre-Condition: JsonNodeType.PrimitiveValue The value of the instance annotation Post-Condition: JsonNodeType.EndObject The end of the entity reference links object JsonNodeType.Property The next property after the instance annotation Reads the value of an entity reference links count annotation. The entity reference links to read the count value for; the value of the count will be assigned to this instance. Pre-Condition: JsonNodeType.PrimitiveValue The value of the instance annotation Post-Condition: JsonNodeType.EndObject The end of the entity reference links object JsonNodeType.Property The next property after the instance annotation Read an entity reference link. The duplicate property names checker to check for duplicate properties and duplicate annotations; this is a separate instance per entity reference link. true if we are reading a singleton entity reference link at the top level; false if we are reading an entity reference link as part of a collection of entity reference links. An instance of which was read. Pre-Condition: StartObject when the entity reference link is part of a collection Property the first property in the entity reference link (for a top-level link) EndObject the end object node of an entity reference link (for a top-level link) Post-Condition: EndInput for a top-level object EndArray for the last link in a collection of links Any for the first node of the next link in a collection of links OData JsonLight serializer for entity reference links. The metadata uri builder to use. Constructor. The output context to write to. Writes a single top-level Uri in response to a $links query. The entity reference link to write out. The entity set of the navigation property The navigation property for which the entity reference link is being written, or null if none is available. Writes a set of links (Uris) in response to a $links query; includes optional count and next-page-link information. The set of entity reference links to write out. The entity set of the navigation property The navigation property for which the entity reference links are being written, or null if none is available. Writes a single Uri in response to a $links query. The entity reference link to write out. The entity set of the navigation property The navigation property for which the entity reference link is being written, or null if none is available. true if the entity reference link being written is at the top level of the payload. Writes a set of links (Uris) in response to a $links query; includes optional count and next-page-link information. The set of entity reference links to write out. The entity set of the navigation property The navigation property for which the entity reference links are being written, or null if none is available. Writes the next link property, which consists of the property name and value. The non-null value of the next link to write. Writes the odata.count property, which consists of the property name and value. The value of the count property to write. OData JsonLight deserializer for entries and feeds. The annotation group deserializer for reading annotation groups. Constructor. The JsonLight input context to read from. Reads the start of the JSON array for the content of the feed. Pre-Condition: JsonNodeType.StartArray: The start of the feed property array; this method will fail if the node is anything else. Post-Condition: JsonNodeType.StartObject: The first item in the feed JsonNodeType.EndArray: The end of the feed Reads the end of the array containing the feed content. Pre-Condition: JsonNodeType.EndArray Post-Condition: JsonNodeType.Property if the feed is part of an expanded navigation link and there are more properties in the object JsonNodeType.EndObject if the feed is a top-level feed or the expanded navigation link is the last property of the payload Reads the entry type name annotation (odata.type) The state of the reader for entry to read. Pre-Condition: JsonNodeType.Property The first property after the odata.metadata in the entry object. JsonNodeType.EndObject End of the entry object. Post-Condition: JsonNodeType.Property The property after the odata.type (if there was any), or the property on which the method was called. JsonNodeType.EndObject End of the entry object. This method fills the ODataEntry.TypeName property if the type name is found in the payload. Reads the content of an entry until a navigation link is detected. The state of the reader for entry to read. A reader navigation link info representing the navigation link detected while reading the entry contents; null if no navigation link was detected. Pre-Condition: JsonNodeType.Property The property to read JsonNodeType.EndObject If no (more) properties exist in the entry's content Post-Condition: JsonNodeType.EndObject If no (more) properties exist in the entry's content JsonNodeType.Property If we've read a deferred link (this is the property after the deferred link) JsonNodeType.StartObject Expanded entry JsonNodeType.StartArray Expanded feed JsonNodeType.PrimitiveValue (null) Expanded null Validates entry metadata. The entry state to use. Reads the feed instance annotations for a top-level feed. The to read the instance annotations for. The duplicate property names checker for the top-level scope. true when parsing the instance annotations before the feed property; false when parsing the instance annotations after the feed property. true if we should scan ahead for the annotations and ignore the actual data properties (used with the reordering reader); otherwise false. Reads a value of property annotation on the entry level. The name of the property annotation to read. The value of the property annotation. This method should read the property annotation value and return a representation of the value which will be later consumed by the entry reading code. Pre-Condition: JsonNodeType.PrimitiveValue The value of the property annotation property JsonNodeType.StartObject JsonNodeType.StartArray Post-Condition: JsonNodeType.EndObject The end of the entry object JsonNodeType.Property The next property after the property annotation Reads an annotation group if one exists, and updates the given entry with the annotations from the annotation group. The state for the entry which should get the annotations. Reads instance annotation in the entry object. The name of the instance annotation found. true if a non-annotation property has already been encountered. true if the 'odata.type' annotation has already been encountered, or should have been by now. The duplicate property names checker for the entry being read. The value of the annotation. Pre-Condition: JsonNodeType.PrimitiveValue The value of the instance annotation property JsonNodeType.StartObject JsonNodeType.StartArray Post-Condition: JsonNodeType.EndObject The end of the entry object JsonNodeType.Property The next property after the instance annotation Reads instance annotation in the entry object. The state of the reader for entry to read. The name of the instance annotation found. The value of the annotation. Pre-Condition: JsonNodeType.PrimitiveValue The value of the instance annotation property JsonNodeType.StartObject JsonNodeType.StartArray Post-Condition: JsonNodeType.EndObject The end of the entry object JsonNodeType.Property The next property after the instance annotation Reads the value of the instance annotation. The duplicate property names checker instance. The name of the instance annotation. Returns the value of the instance annotation. Reads the value of a feed annotation (count or next link). The name of the annotation found. The feed to read the annotation for; if non-null, the annotation value will be assigned to the feed. The duplicate property names checker instance. Pre-Condition: JsonNodeType.PrimitiveValue The value of the annotation Post-Condition: JsonNodeType.EndObject The end of the feed object JsonNodeType.Property The next annotation after the current annotation Reads entry property which doesn't have value, just annotations. The state of the reader for entry to read. The name of the property read. A reader navigation link info representing the navigation link detected while reading the entry contents; null if no navigation link was detected. Pre-Condition: JsonNodeType.EndObject The end of the entry object. JsonNodeType.Property The property after the one we're to read. Post-Condition: JsonNodeType.EndObject This method doesn't move the reader. JsonNodeType.Property Reads any next link annotation immediately after the end of a feed. The feed being read. The information about the expanded link. This must be non-null if we're reading an expanded feed, and must be null if we're reading a top-level feed. The top-level duplicate property names checker, if we're reading a top-level feed. Reads the information of a deferred link. The state of the reader for entry to read. The name of the navigation property for which to read the deferred link. The navigation property for which to read the deferred link. This can be null. Returns the navigation link info for the deferred navigation link read. This method doesn't move the reader. Reads expanded entry navigation link. The state of the reader for entry to read. The navigation property for which to read the expanded link. The navigation link info for the expanded link read. This method doesn't move the reader. Reads expanded feed navigation link. The state of the reader for entry to read. The navigation property for which to read the expanded link. The navigation link info for the expanded link read. This method doesn't move the reader. Reads entity reference link for a singleton navigation link in request. The state of the reader for entry to read. The navigation property for which to read the entity reference link. true if the navigation link is expanded. The navigation link info for the entity reference link read. This method doesn't move the reader. Reads entity reference links for a collection navigation link in request. The state of the reader for entry to read. The navigation property for which to read the entity reference links. true if the navigation link is expanded. The navigation link info for the entity reference links read. This method doesn't move the reader. Adds a new property to an entry. The entry state for the entry to add the property to. The name of the property to add. The value of the property to add. Checks if there is a next link annotation immediately after an expanded feed, and reads and stores it if there is one. We fail here if we encounter any other property annotation for the expanded navigation (since these should come before the property itself). The feed that was just read. The information for the current expanded navigation link being read. Applies the all the annotations from the given annotation group to an entry. The state for the entry which should get the annotations. The annotation group to apply. Sets specified media resource on an entry and hooks up metadata builder. The entry state to use. The media resource to set. Reads entry property (which is neither instance nor property annotation) which has a value. The state of the reader for entry to read. The name of the property read. A reader navigation link info representing the navigation link detected while reading the entry contents; null if no navigation link was detected. Pre-Condition: JsonNodeType.PrimitiveValue The value of the property JsonNodeType.StartObject JsonNodeType.StartArray Post-Condition: JsonNodeType.EndObject The end of the entry object JsonNodeType.Property The next property after the property JsonNodeType.StartObject Expanded entry JsonNodeType.StartArray Expanded feed JsonNodeType.PrimitiveValue (null) Expanded null entry Read an entry-level data property and check its version compliance. The state of the reader for entry to read. The EDM property of the property being read, or null if the property is an open property. The type name specified for the property in property annotation, or null if no such type name is available. Pre-Condition: The reader is positioned on the first node of the property value Post-Condition: JsonNodeType.Property: the next property of the entry JsonNodeType.EndObject: the end-object node of the entry Read an open property. The state of the reader for entry to read. The name of the open property to read. true if the property has a value, false if it doesn't. Pre-Condition: The reader is positioned on the first node of the property value Post-Condition: JsonNodeType.Property: the next property of the entry JsonNodeType.EndObject: the end-object node of the entry Read an undeclared property. That is a property which is not declared by the model, but the owning type is not an open type. The state of the reader for entry to read. The name of the open property to read. true if the property has a value, false if it doesn't. Pre-Condition: JsonNodeType.PrimitiveValue: propertyWithValue is true and the reader is positioned on the first node of the property value. JsonNodeType.StartObject: JsonNodeType.StartArray: JsonNodeType.Property: propertyWithValue is false and the reader is positioned on the node after the property. JsonNodeType.EndObject: Post-Condition: JsonNodeType.Property: the next property of the entry JsonNodeType.EndObject: the end-object node of the entry A navigation link info instance if the propery read is a navigation link which should be reported to the caller. Otherwise null if the property was either ignored or read and added to the list of properties on the entry. Reads a stream property value from the property annotations. The state of the reader for entry to read. The name of the stream property to read the value for. The newly created stream reference value. Reads one operation for the entry being read. The Json operation deserializer context. The state of the reader for entry to read. The name of the metadata reference property being read. true if the operation value is inside an array, i.e. multiple targets for the operation; false otherwise. Pre-Condition: JsonNodeType.StartObject: first node of the operation value. Post-Condition: JsonNodeType.Property: the property after the current operation being read when there is one target for the operation. JsonNodeType.StartObject: the first node of the next operation value when there are multiple targets for the operation. JsonNodeType.EndArray: the end-array of the operation values when there are multiple target for the operation. Sets the metadata builder for the operation. The state of the reader for entry to read. The operation to set the metadata builder on. Creates a new instance of ODataAction or ODataFunction for the . The Json operation deserializer context. The state of the reader for entry to read. The name of the metadata reference property being read. A new instance of ODataAction or ODataFunction for the . Read the metadata reference property value for the entry being read. The state of the reader for entry to read. The name of the metadata reference property being read. Pre-Condition: JsonNodeType.Property: first node of the metadata reference property's value. Currently actions and functions are the only supported metadata reference property, we will throw if this is not a start object or start array node. Post-Condition: JsonNodeType.Property: the property after the annotation value JsonNodeType.EndObject: the end-object of the entry Validates that we can read metadata reference property. Validates that the value of a JSON property can represent expanded navigation link. true if the property is entity set reference property; false for a resource reference property, null if unknown. Operations deserializer context to pass to JSON operations reader. The entry to add operations to. The deserializer to use. Constructor. The entry to add operations to. The deserializer to use. Given a URI from the payload, this method will try to make it absolute, or fail otherwise. The URI string from the payload to process. An absolute URI to report. Adds the specified action to the current entry. The action whcih is fully populated with the data from the payload. Adds the specified function to the current entry. The function whcih is fully populated with the data from the payload. The JSON reader to read the operations value from. OData JsonLight serializer for entries and feeds. OData JsonLight serializer for properties. Serializer to use to write property values. Constructor. The output context to write to. Write an to the given stream. This method creates an async buffered stream and writes the property to it. The property to write. Writes property names and value pairs. The of the entry (or null if not metadata is available). The enumeration of properties to write out. Whether the properties are being written for complex value. Also used for detecting whether stream properties are allowed as named stream properties should only be defined on ODataEntry instances The checker instance for duplicate property names. Set of projected properties, or null if all properties should be written. Test to see if is an open property or not. The property in question. The owning type of the property. The metadata of the property. true if the property is an open property; false if it is not, or if openness cannot be determined Writes a name/value pair for a property. The property to write out. The owning type for the or null if no metadata is available. true when writing a top-level property; false for nested properties. Should pass in true if we are writing a property of an ODataEntry instance, false otherwise. Named stream properties should only be defined on ODataEntry instances. The checker instance for duplicate property names. Set of projected properties, or null if all properties should be written. Writes a stream property. The name of the property to write. The stream reference value to be written Writes the type name on the wire. Name of the property. Type name of the property. true when writing a top-level property; false for nested properties. Gets the json light value writer. A map from annotation group name to annotation group for all annotation groups encountered so far in this payload. The metadata uri builder to use. Constructor. The output context to write to. Writes an annotation group declaration or annotation group reference if specified for the entry. The entry to write the annotation group declaration or reference for. Writes the metadata properties for an entry which can only occur at the start. The entry state for which to write the metadata properties. Writes the metadata properties for an entry which can occur both at the start or at the end. The entry state for which to write the metadata properties. This method will only write properties which were not written yet. Writes the metadata properties for an entry which can only occur at the end. The entry state for which to write the metadata properties. The duplicate names checker for properties of this entry. Writes the navigation link metadata. The navigation link to write the metadata for. The checker instance for duplicate property names. Writes "actions" or "functions" metadata. The operations to write. true when writing the entry's actions; false when writing the entry's functions. Tries to writes the metadata URI property for an entry into the payload if one is available. The context object to answer basic questions regarding the type of the entry. Tries to writes the metadata URI property for a feed into the payload if one is available. The context object to answer basic questions regarding the type of the feed. Writes an association link property annotation. The name of the navigation property for which to write the association link. The association link URL to write. Gets the metadata reference fragment from the operation metadata uri. i.e. if the operation metadata uri is {absolute metadata document uri}#{container-qualified-operation-name}, this method will return #{container-qualified-operation-name}. Operation in question. The metadata reference fragment from the operation metadata uri. Returns the target uri string from the given operation. Operation in question. Returns the target uri string from the given operation. Validates a group of operations with the same Metadata Uri. Operations to validate. Writes a group of operation (all actions or all functions) that have the same "metadata". Expects the actions or functions scope to already be open. A grouping of operations that are all actions or all functions and share the same "metadata". Writes an operation (an action or a function). Expects the write to already have written the "rel value" and opened an array. The operation to write. Gets the base Uri of the metadata document uri, if it has been set. OData JsonLight deserializer for errors. Constructor. The JsonLight input context to read from. Read a top-level error. An representing the read error. Pre-Condition: JsonNodeType.None - The reader must not have been used yet. Post-Condition: JsonNodeType.EndOfInput Read a top-level error. An representing the read error. Pre-Condition: JsonNodeType.Property - The first property of the top level object. JsonNodeType.EndObject - If there are no properties in the top level object. any - Will throw if anything else. Post-Condition: JsonNodeType.EndOfInput Reads all the properties in a single JSON object scope, calling for each non-annotation property encountered. An action which takes the name of the current property and processes the property value as necessary. At the start of this action, the reader is positioned at the property value node. The action should leave the reader positioned on the node after the property value. This method should only be used for scopes where we allow (and ignore) annotations in a custom namespace, i.e. scopes which directly correspond to a class in the OM. Pre-Condition: JsonNodeType.StartObject - The start of the JSON object being processed. any - Will throw if not StartObject. Post-Condition: any - The node after the EndObject node for the JSON object being processed. Reads a value of property annotation on an error payload. The name of the property annotation to read. The value of the property annotation. This method should read the property annotation value and return a representation of the value which will be later consumed by the entry reading code, or throw if ther is something unexpected. Pre-Condition: JsonNodeType.PrimitiveValue The value of the property annotation property JsonNodeType.StartObject JsonNodeType.StartArray Post-Condition: JsonNodeType.EndObject The end of the error object JsonNodeType.Property The next property after the property annotation Reads the JSON object which is the value of the "odata.error" property. The object to update with data from the payload. Pre-Condition: JsonNodeType.StartObject - The start of the "odata.error" object. any - Will throw if not StartObject. Post-Condition: any - The node after the "odata.error" object's EndNode. Reads the JSON object which is the value of the "message" property. The object to update with data from the payload. Pre-Condition: JsonNodeType.StartObject - The start of the "message" object. any - Will throw if not StartObject. Post-Condition: any - The node after the "message" object's EndNode. Reads an inner error payload. The number of times this method has been called recursively. An representing the read inner error. Pre-Condition: JsonNodeType.StartObject - The start of the "innererror" object. any - will throw if not StartObject. Post-Condition: any - The node after the "innererror" object's EndNode. Reads a property value which occurs in the "innererror" object scope. The number of parent inner errors for this inner error. The object to update with the data from this property value. The name of the property whose value is to be read. Pre-Condition: any - The value of the property being read. Post-Condition: JsonNodeType.Property - The property after the one being read. JsonNodeType.EndObject - The end of the "innererror" object. any - Anything else after the property value is an invalid payload (but won't fail in this method). Reads a property value which occurs in the "odata.error" object scope. The object to update with the data from this property value. The name of the property whose value is to be read. DuplicatePropertyNamesChecker to use for extracting property annotations targetting any custom instance annotations on the error. Pre-Condition: any - The value of the property being read. Post-Condition: JsonNodeType.Property - The property after the one being read. JsonNodeType.EndObject - The end of the "odata.error" object. any - Anything else after the property value is an invalid payload (but won't fail in this method). Reads a property value which occurs in the "message" object scope. The object to update with the data from this property value. The name of the propety whose value is to be read. Pre-Condition: any - The value of the property being read. Post-Condition: JsonNodeType.Property - The property after the one being read. JsonNodeType.EndObject - The end of the "message" object. any - Anything else after the property value is an invalid payload (but won't fail in this method). The JsonLight OData format. The text representation - the name of the format. The name of the format. Detects the payload kinds supported by this format for the specified message payload. The response message with the payload stream. Additional information available for the payload kind detection. The set of s that are supported with the specified payload. Detects the payload kinds supported by this format for the specified message payload. The request message with the payload stream. Additional information available for the payload kind detection. The set of s that are supported with the specified payload. Creates an instance of the input context for this format. The to read. The message to use. The content type of the message to read. The encoding to use. Configuration settings of the OData reader. The OData protocol version to be used for reading the payload. true if reading a response message; otherwise false. The model to use. The optional URL resolver to perform custom URL resolution for URLs read from the payload. Format specific state stored during payload kind detection using the . The newly created input context. Creates an instance of the output context for this format. The message to use. The specific media type being written. The encoding to use. Configuration settings of the OData writer. true if writing a response message; otherwise false. The model to use. The optional URL resolver to perform custom URL resolution for URLs written to the payload. The newly created output context. Detects the payload kind(s) from the message stream. The message stream to read from for payload kind detection. The message being read. true if reading a response message; otherwise false. Additional information available for the payload kind detection. An enumerable of zero, one or more payload kinds that were detected from looking at the payload in the message stream. Implementation of the OData input for JsonLight OData format. Base class for all input contexts, defines the interface to be implemented by the specific formats. The format for this input context. The message reader settings to be used for reading. The protocol version to use when reading the payload. Set to true if this context is reading a response payload. true if the input should be read synchronously; false if it should be read asynchronously. The optional URL resolver to perform custom URL resolution for URLs read from the payload. The model to use. The type resolver to use. Set to true if the input was disposed. Constructor. The format for this input context. Configuration settings of the OData reader. The OData protocol version to be used for reading the payload. true if reading a response message; otherwise false. true if the input should be read synchronously; false if it should be read asynchronously. The model to use. The optional URL resolver to perform custom URL resolution for URLs read from the payload. IDisposable.Dispose() implementation to cleanup unmanaged resources of the context. Creates an to read a feed. The entity set we are going to read entities for. The expected base entity type for the entries in the feed. The newly created . Creates an to read an entry. The entity set we are going to read entities for. The expected entity type for the entry to be read. The newly created . Create a . The expected type reference for the items in the collection. The newly created . Create a . The batch boundary to use. The newly created . Since we don't want to support batch format extensibility (at least not yet) this method should remain internal. Create a . The function import whose parameters are being read. The newly created . Read a service document. This method reads the service document from the input and returns an that represents the read service document. An representing the read service document. Read a metadata document. This method reads the metadata document from the input and returns an that represents the read metadata document. An representing the read metadata document. Read the property from the input and return an representing the read property. The producing the property to be read. The expected type reference of the property to read. An representing the read property. Read a top-level error. An representing the read error. Read a set of top-level entity reference links. The navigation property for which to read the entity reference links. An representing the read links. Read a top-level entity reference link. The navigation property for which to read the entity reference link. An representing the read entity reference link. Read a top-level value. The expected type reference for the value to be read; null if no expected type is available. An representing the read value. Check if the object has been disposed. If the object has already been disposed. Asserts that the input context was created for synchronous operation. Asserts that the input context was created for asynchronous operation. Creates a new instance of a duplicate property names checker. The newly created instance of duplicate property names checker. Method to use the custom URL resolver to resolve a base URI and a payload URI. This method returns null if not custom resolution is desired. If the method returns a non-null URL that value will be used without further validation. The (optional) base URI to use for the resolution. The URI read from the payload. A instance that reflects the custom resolution of the method arguments into a URL or null if no custom resolution is desired; in that case the default resolution is used. Disposes the input context. Perform the actual cleanup work. If 'true' this method is called from user code; if 'false' it is called by the runtime. Creates an exception which reports that the specified payload kind if not support by this format. The payload kind which is not supported. An exception to throw. The message reader settings to be used for reading. The version of the OData protocol to use. Set to true if a response is being read. true if the input should be read synchronously; false if it should be read asynchronously. The model to use or null if no metadata is available. The type resolver to use. The optional URL resolver to perform custom URL resolution for URLs read from the payload. true if the WCF DS client compatibility format behavior should be used; otherwise false. true if the WCF DS server compatibility format behavior should be used; otherwise false. true if the default format behavior should be used; otherwise false. true if the WCF DS client compatibility API behavior should be used; otherwise false. true if the WCF DS server compatibility API behavior should be used; otherwise false. true if the default API behavior should be used; otherwise false. JSON Light specific state stored during payload kind detection. The text reader created for the input stream. The ODataJsonLightInputContext instance owns the textReader instance and thus disposes it. We further set this field to null when the input is disposed and use it for checks whether the instance has already been disposed. The JSON reader to read from. Constructor. The format for this input context. The stream to read data from. The content type of the message to read. The encoding to use to read the input. Configuration settings of the OData reader. The OData protocol version to be used for reading the payload. true if reading a response message; otherwise false. true if the input should be read synchronously; false if it should be read asynchronously. The model to use. The optional URL resolver to perform custom URL resolution for URLs read from the payload. JSON Ligth specific state stored during payload kind detection (or null if no payload kind detection happened). Constructor. The format for this input context. The reader to use. The content type of the message to read. Configuration settings of the OData reader. The OData protocol version to be used for reading the payload. true if reading a response message; otherwise false. true if the input should be read synchronously; false if it should be read asynchronously. The model to use. The optional URL resolver to perform custom URL resolution for URLs read from the payload. JSON Ligth specific state stored during payload kind detection (or null if no payload kind detection happened). Creates an to read a feed. The entity set we are going to read entities for. The expected base entity type for the entries in the feed. The newly created . Creates an to read an entry. The entity set we are going to read entities for. The expected entity type for the entry to be read. The newly created . Create a . The expected type reference for the items in the collection. Newly create . Create a . The function import whose parameters are being read. The newly created . Read a service document. This method reads the service document from the input and returns an that represents the read service document. An representing the read service document. This method creates an reads the property from the input and returns an representing the read property. The producing the property to be read. The expected type reference of the property to read. An representing the read property. Read a top-level error. An representing the read error. Read a set of top-level entity reference links. The navigation property for which to read the entity reference links. An representing the read links. Reads a top-level entity reference link. The navigation property for which to read the entity reference link. An representing the read entity reference link. Detects the payload kind(s) from the message stream. Additional information available for the payload kind detection. An enumerable of zero, one or more payload kinds that were detected from looking at the payload in the message stream. Disposes the input context. Helper method to create a TextReader over the message stream. This is needed by the constructor to dispose the message stream if the creation fails since this is called from the constructor in place where exception handling is not possible. The stream to read data from. The encoding to use to read the input. The newly created text reader. Verifies that CreateParameterReader can be called. The function import whose parameters are being read. Verifies that CreateEntryReader or CreateFeedReader can be called. The entity set we are going to read entities for. The expected entity type for the entry/entries to be read. Verifies that CreateCollectionReader can be called. The expected type reference for the items in the collection. Verifies that ReadEntityReferenceLink can be called. The navigation property for which to read the entity reference link. Verifies that ReadProperty can be called. Verifies that DetectPayloadKind can be called. Verifies that a user model is available for reading. Creates an to read a feed. The entity set we are going to read entities for. The expected base entity type for the entries in the feed. The newly created . Creates an to read an entry. The entity set we are going to read entities for. The expected entity type for the entry to be read. The newly created . Create a . The expected type reference for the items in the collection. Newly create . Create a . The function import whose parameters are being read. The newly created . Returns the which is to be used to read the content of the message. JSON Light specific state stored during payload kind detection. JsonLight format output context. The json metadata level (i.e., fullmetadata, nometadata, minimalmetadata) being written. The oracle to use to determine the type name to write for entries and values. Constructor. The format for this output context. The text writer to write to. Configuration settings of the OData writer. The model to use. Constructor. The format for this output context. The message stream to write the payload to. The specific media type being written. The encoding to use for the payload. Configuration settings of the OData writer. true if writing a response message; otherwise false. true if the output should be written synchronously; false if it should be written asynchronously. The model to use. The optional URL resolver to perform custom URL resolution for URLs written to the payload. Creates a metadata uri builder for the current output context. The metadata uri builder to use when writing. Writes an into the message payload. The error to write. A flag indicating whether debug information (e.g., the inner error from the ) should be included in the payload. This should only be used in debug scenarios. This method is called if the ODataMessageWriter.WriteError is called once some other write operation has already started. The method should write the in-stream error representation for the specific format into the current payload. Before the method is called no flush is performed on the output context or any active writer. It is the responsibility of this method to flush the output before the method returns. Creates an to write a feed. The created writer. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). The write must flush the output when it's finished (inside the last Write call). Creates an to write an entry. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). The created writer. The write must flush the output when it's finished (inside the last Write call). Creates an to write a collection of primitive or complex values (as result of a service operation invocation). The item type of the collection being written or null if no metadata is available. The created collection writer. The write must flush the output when it's finished (inside the last Write call). Creates an to write a parameter payload. The function import whose parameters will be written. The created parameter writer. The write must flush the output when it's finished (inside the last Write call). Writes a service document with the specified as message payload. The default workspace to write in the service document. It is the responsibility of this method to flush the output before the method returns. Writes an as message payload. The property to write. It is the responsibility of this method to flush the output before the method returns. Writes an as the message payload. The error to write. A flag indicating whether debug information (e.g., the inner error from the ) should be included in the payload. This should only be used in debug scenarios. It is the responsibility of this method to flush the output before the method returns. Writes the result of a $links query as the message payload. The entity reference links to write as message payload. The entity set of the navigation property. The navigation property for which the entity reference links are being written, or null if none is available. It is the responsibility of this method to flush the output before the method returns. Writes a singleton result of a $links query as the message payload. The entity reference link to write as message payload. The entity set of the navigation property. The navigation property for which the entity reference link is being written, or null if none is available. It is the responsibility of this method to flush the output before the method returns. Creates an to write a feed. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). The created writer. Creates an to write an entry. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). The created writer. Creates an to write a collection of primitive or complex values (as result of a service operation invocation). The item type of the collection being written or null if no metadata is available. The created collection writer. Creates an to write a parameter payload. The function import whose parameters will be written. The created parameter writer. Writes an in-stream error. The error to write. A flag indicating whether debug information (e.g., the inner error from the ) should be included in the payload. This should only be used in debug scenarios. Writes an as message payload. The property to write. Writes a service document with the specified as message payload. The default workspace to write in the service document. Writes an as the message payload. The error to write. A flag indicating whether debug information (e.g., the inner error from the ) should be included in the payload. This should only be used in debug scenarios. Writes the result of a $links query as the message payload. The entity reference links to write as message payload. The entity set of the navigation property. The navigation property for which the entity reference links are being written, or null if none is available. Writes a singleton result of a $links query as the message payload. The entity reference link to write as message payload. The entity set of the navigation property. The navigation property for which the entity reference link is being written, or null if none is available. Returns the oracle to use when determining the type name to write for entries and values. The json metadata level (i.e., fullmetadata, nometadata, minimalmetadata) being written. OData parameter reader for the Json Light format. The input to read the payload from. The parameter deserializer to read the parameter input with. The duplicate property names checker to use for the parameter payload. Constructor. The input to read the payload from. The function import whose parameters are being read. Implementation of the reader logic when in state 'Start'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.None: assumes that the JSON reader has not been used yet. Post-Condition: When the new state is Value, the reader is positioned at the closing '}' or at the name of the next parameter. When the new state is Entry, the reader is positioned at the starting '{' of the entry payload. When the new state is Feed or Collection, the reader is positioned at the starting '[' of the feed or collection payload. Implementation of the reader logic on the subsequent reads after the first parameter is read. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.Property or JsonNodeType.EndObject: assumes the last read puts the reader at the begining of the next parameter or at the end of the payload. Post-Condition: When the new state is Value, the reader is positioned at the closing '}' or at the name of the next parameter. When the new state is Entry, the reader is positioned at the starting '{' of the entry payload. When the new state is Feed or Collection, the reader is positioned at the starting '[' of the feed or collection payload. Creates an to read the collection with type . Expected item type reference of the collection to read. An to read the collection with type . Pre-Condition: Any: the reader should be on the start array node of the collection value; if it is not we let the collection reader fail. Post-Condition: Any: the reader should be on the start array node of the collection value; if it is not we let the collection reader fail. NOTE: this method does not move the reader. Implementation of the reader logic when in state 'Start'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.None: assumes that the JSON reader has not been used yet. Post-Condition: When the new state is Value, the reader is positioned at the closing '}' or at the name of the next parameter. When the new state is Entry, the reader is positioned at the starting '{' of the entry payload. When the new state is Feed or Collection, the reader is positioned at the starting '[' of the feed or collection payload. Implementation of the reader logic on the subsequent reads after the first parameter is read. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.Property or JsonNodeType.EndObject: assumes the last read puts the reader at the begining of the next parameter or at the end of the payload. Post-Condition: When the new state is Value, the reader is positioned at the closing '}' or at the name of the next parameter. When the new state is Entry, the reader is positioned at the starting '{' of the entry payload. When the new state is Feed or Collection, the reader is positioned at the starting '[' of the feed or collection payload. Creates an to read the collection with type . Expected item type reference of the collection to read. An to read the collection with type . Pre-Condition: Any: the reader should be on the start array node of the collection value; if it is not we let the collection reader fail. Post-Condition: Any: the reader should be on the start array node of the collection value; if it is not we let the collection reader fail. NOTE: this method does not move the reader. ODataParameterWriter for the JsonLight format. Base class for OData parameter writers that verifies a proper sequence of write calls on the writer. Base class for OData collection writers. Start writing a parameter payload. Start writing a value parameter. The name of the parameter to write. The value of the parameter to write. Creates an to write the value of a collection parameter. The newly created . The name of the collection parameter to write. Finish writing a parameter payload. Flushes the write buffer to the underlying stream. The output context to write to. The function import whose parameters will be written. Stack of writer scopes to keep track of the current context of the writer. Parameter names that have already been written, used to detect duplicate writes on a parameter. Checker to detect duplicate property names on complex parameter values. Constructor. The output context to write to. The function import whose parameters will be written. Flushes the write buffer to the underlying stream. Start writing a parameter payload. Start writing a value parameter. The name of the parameter to write. The value of the parameter to write. Creates an to write the value of a collection parameter. The name of the collection parameter to write. The newly created . Finish writing a parameter payload. This method notifies the implementer of this interface that the created reader is in Exception state. This method notifies the implementer of this interface that the created reader is in Completed state. This method notifies the listener, that an in-stream error is to be written. This listener can choose to fail, if the currently written payload doesn't support in-stream error at this position. If the listener returns, the writer should not allow any more writing, since the in-stream error is the last thing in the payload. Check if the object has been disposed; called from all public API methods. Throws an ObjectDisposedException if the object has already been disposed. Flush the output. Start writing an OData payload. Writes a value parameter (either primitive or complex). The name of the parameter to write. The value of the parameter to write. The expected type reference of the parameter value. Creates a format specific to write the value of a collection parameter. The name of the collection parameter to write. The type reference of the expected item type or null if no expected item type exists. The newly created . Finish writing an OData payload. Verifies that calling WriteStart is valid. true if the call is to be synchronous; false otherwise. Start writing a parameter payload - implementation of the actual functionality. Verifies that the parameter with name can be written and returns the type reference of the parameter. true if the call is to be synchronous; false otherwise. The name of the parameter to be written. The type reference of the parameter; null if no function import was specified to the writer. Verify that calling WriteValue is valid. true if the call is to be synchronous; false otherwise. The name of the parameter to be written. The value of the parameter to write. The type reference of the parameter; null if no function import was specified to the writer. Verify that calling CreateCollectionWriter is valid. true if the call is to be synchronous; false otherwise. The name of the parameter to be written. The expected item type of the items in the collection or null if no item type is available. Gets the type reference of the parameter in question. Returns null if no function import was specified to the writer. The name of the parameter in question. The type reference of the parameter; null if no function import was specified to the writer. Write a value parameter - implementation of the actual functionality. The name of the parameter to write. The value of the parameter to write. The expected type reference of the parameter value. Creates an to write the value of a collection parameter. The name of the collection parameter to write. The type reference of the expected item type or null if no expected item type exists. The newly created . Verifies that calling WriteEnd is valid. true if the call is to be synchronous; false otherwise. If an is specified, then this method ensures that all parameters present in the function import are written to the payload. The binding parameter is optional in the payload. Hence this method will not check for missing binding parameter. Finish writing a parameter payload - implementation of the actual functionality. Verifies that the current state is not Error or Completed. Verifies that calling Flush is valid. true if the call is to be synchronous; false otherwise. Verifies that a call is allowed to the writer. true if the call is to be synchronous; false otherwise. Catch any exception thrown by the action passed in; in the exception case move the writer into state ExceptionThrown and then rethrow the exception. The action to execute. Catch any exception thrown by the function passed in; in the exception case move the writer into state ExceptionThrown and then rethrow the exception. The return type of . The function to execute. Returns the return value from executing . Enters the Error scope if we are not already in Error state. Verifies that the transition from the current state into new state is valid and enter a new writer scope. The writer state to transition into. Leave the current writer scope and return to the previous scope. When reaching the top-level replace the 'Start' scope with a 'Completed' scope. Note that this method is never called once the writer is in 'Error' state. Replaces the current scope with a new scope; checks that the transition is valid. The new state to transition into. Verify that the transition from the current state into new state is valid. The new writer state to transition into. Checker to detect duplicate property names on complex parameter values. The current state of the writer. An enumeration representing the current state of the writer. The writer is at the start; nothing has been written yet. The writer is in a state where the next parameter can be written. The writer enters this state after WriteStart() or after the previous parameter is written. One of the create writer method has been called and the created sub writer is not in Completed state. The writer has completed; nothing can be written anymore. An error had occured while writing the payload; nothing can be written anymore. The output context to write to. The JsonLight property and value serializer to use. Constructor. The output context to write to. The function import whose parameters will be written. Check if the object has been disposed; called from all public API methods. Throws an ObjectDisposedException if the object has already been disposed. Flush the output. Start writing an OData payload. Finish writing an OData payload. Writes a value parameter (either primitive or complex) The name of the parameter to write. The value of the parameter to write. The expected type reference of the parameter value. Creates a format specific to write the value of a collection parameter. The name of the collection parameter to write. The type reference of the expected item type or null if no expected item type exists. The newly created . OData JsonLight deserializer for detecting the payload kind of a JsonLight payload. Constructor. The JsonLight input context to read from. Detects the payload kind(s). Additional information available for the payload kind detection. An enumerable of zero, one or more payload kinds that were detected from looking at the payload in the message stream. Detects the payload kind(s). Additional information available for the payload kind detection. An enumerable of zero, one or more payload kinds that were detected from looking at the payload in the message stream. OData reader for the JsonLight format. The input to read the payload from. The entry and feed deserializer to read input with. The scope associated with the top level of this payload. Constructor. The input to read the payload from. The entity set we are going to read entities for. The expected entity type for the entry to be read (in case of entry reader) or entries in the feed to be read (in case of feed reader). true if the reader is created for reading a feed; false when it is created for reading an entry. If not null, the Json reader will notify the implementer of the interface of relevant state changes in the Json reader. Implementation of the reader logic when in state 'Start'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.None: assumes that the JSON reader has not been used yet when not reading a nested payload. Post-Condition: when reading a feed: the reader is positioned on the first item in the feed or the end array node of an empty feed when reading an entry: the first node of the first navigation link value, null for a null expanded link or an end object node if there are no navigation links. Implementation of the reader logic when in state 'FeedStart'. true if more items can be read from the reader; otherwise false. Pre-Condition: Any start node - The first entry in the feed JsonNodeType.EndArray - The end of the feed Post-Condition: The reader is positioned over the StartObject node of the first entry in the feed or on the node following the feed end in case of an empty feed Implementation of the reader logic when in state 'FeedEnd'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.Property if the feed has further instance or property annotations after the feed property JsonNodeType.EndObject if the feed has no further instance or property annotations after the feed property Post-Condition: JsonNodeType.EndOfInput for a top-level feed when not reading a nested payload JsonNodeType.Property more properties exist on the owning entry after the expanded link containing the feed JsonNodeType.EndObject no further properties exist on the owning entry after the expanded link containing the feed JsonNodeType.EndArray end of expanded link in request, in this case the feed doesn't actually own the array object and it won't read it. Any in case of expanded feed in request, this might be the next item in the expanded array, which is not an entry Implementation of the reader logic when in state 'EntryStart'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.StartObject Start of the expanded entry of the navigation link to read next. JsonNodeType.StartArray Start of the expanded feed of the navigation link to read next. JsonNodeType.PrimitiveValue (null) Expanded null entry of the navigation link to read next. JsonNodeType.Property The next property after a deferred link or entity reference link JsonNodeType.EndObject If no (more) properties exist in the entry's content Post-Condition: JsonNodeType.StartObject Start of the expanded entry of the navigation link to read next. JsonNodeType.StartArray Start of the expanded feed of the navigation link to read next. JsonNodeType.PrimitiveValue (null) Expanded null entry of the navigation link to read next. JsonNodeType.Property The next property after a deferred link or entity reference link JsonNodeType.EndObject If no (more) properties exist in the entry's content Implementation of the reader logic when in state 'EntryEnd'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.EndObject end of object of the entry JsonNodeType.PrimitiveValue (null) end of null expanded entry Post-Condition: The reader is positioned on the first node after the entry's end-object node Implementation of the reader logic when in state 'NavigationLinkStart'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.StartObject start of an expanded entry JsonNodeType.StartArray start of an expanded feed JsonNodeType.PrimitiveValue (null) expanded null entry JsonNodeType.Property deferred link with more properties in owning entry JsonNodeType.EndObject deferred link as last property of the owning entry Post-Condition: JsonNodeType.StartArray: start of expanded entry JsonNodeType.StartObject start of expanded feed JsonNodeType.PrimitiveValue (null) expanded null entry JsonNodeType.Property deferred link with more properties in owning entry JsonNodeType.EndObject deferred link as last property of the owning entry Implementation of the reader logic when in state 'NavigationLinkEnd'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.EndObject: navigation link is last property in owning entry JsonNodeType.Property: there are more properties after the navigation link in the owning entry Post-Condition: JsonNodeType.StartObject start of the expanded entry navigation link to read next JsonNodeType.StartArray start of the expanded feed navigation link to read next JsonNoteType.Primitive (null) expanded null entry navigation link to read next JsonNoteType.Property property after deferred link or entity reference link JsonNodeType.EndObject end of the parent entry Implementation of the reader logic when in state 'EntityReferenceLink'. true if more items can be read from the reader; otherwise false. This method doesn't move the reader Pre-Condition: JsonNodeType.EndObject: expanded link property is last property in owning entry JsonNodeType.Property: there are more properties after the expanded link property in the owning entry Any: expanded collection link - the node after the entity reference link. Post-Condition: JsonNodeType.EndObject: expanded link property is last property in owning entry JsonNodeType.Property: there are more properties after the expanded link property in the owning entry Any: expanded collection link - the node after the entity reference link. Implementation of the reader logic when in state 'Start'. The duplicate property names checker to use for the top-level scope. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.None: assumes that the JSON reader has not been used yet when not reading a nested payload. Post-Condition: when reading a feed: the reader is positioned on the first item in the feed or the end array node of an empty feed when reading an entry: the first node of the first navigation link value, null for a null expanded link or an end object node if there are no navigation links. Implementation of the reader logic when in state 'FeedStart'. true if more items can be read from the reader; otherwise false. Pre-Condition: Any start node - The first entry in the feed JsonNodeType.EndArray - The end of the feed Post-Condition: The reader is positioned over the StartObject node of the first entry in the feed or on the node following the feed end in case of an empty feed Implementation of the reader logic when in state 'FeedEnd'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.Property if the feed has further instance or property annotations after the feed property JsonNodeType.EndObject if the feed has no further instance or property annotations after the feed property Post-Condition: JsonNodeType.EndOfInput for a top-level feed when not reading a nested payload JsonNodeType.Property more properties exist on the owning entry after the expanded link containing the feed JsonNodeType.EndObject no further properties exist on the owning entry after the expanded link containing the feed JsonNodeType.EndArray end of expanded link in request, in this case the feed doesn't actually own the array object and it won't read it. Any in case of expanded feed in request, this might be the next item in the expanded array, which is not an entry Implementation of the reader logic when in state 'EntryStart'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.StartObject Start of the expanded entry of the navigation link to read next. JsonNodeType.StartArray Start of the expanded feed of the navigation link to read next. JsonNodeType.PrimitiveValue (null) Expanded null entry of the navigation link to read next. JsonNodeType.Property The next property after a deferred link or entity reference link JsonNodeType.EndObject If no (more) properties exist in the entry's content Post-Condition: JsonNodeType.StartObject Start of the expanded entry of the navigation link to read next. JsonNodeType.StartArray Start of the expanded feed of the navigation link to read next. JsonNodeType.PrimitiveValue (null) Expanded null entry of the navigation link to read next. JsonNodeType.Property The next property after a deferred link or entity reference link JsonNodeType.EndObject If no (more) properties exist in the entry's content Implementation of the reader logic when in state 'EntryEnd'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.EndObject end of object of the entry JsonNodeType.PrimitiveValue (null) end of null expanded entry Post-Condition: The reader is positioned on the first node after the entry's end-object node Implementation of the reader logic when in state 'NavigationLinkStart'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.StartObject start of an expanded entry JsonNodeType.StartArray start of an expanded feed JsonNodeType.PrimitiveValue (null) expanded null entry JsonNodeType.Property deferred link with more properties in owning entry JsonNodeType.EndObject deferred link as last property of the owning entry or reporting projected navigation links missing in the payload Post-Condition: JsonNodeType.StartArray: start of expanded entry JsonNodeType.StartObject start of expanded feed JsonNodeType.PrimitiveValue (null) expanded null entry JsonNodeType.Property deferred link with more properties in owning entry JsonNodeType.EndObject deferred link as last property of the owning entry or reporting projected navigation links missing in the payload Implementation of the reader logic when in state 'NavigationLinkEnd'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.EndObject: navigation link is last property in owning entry or reporting projected navigation links missing in the payload JsonNodeType.Property: there are more properties after the navigation link in the owning entry Post-Condition: JsonNodeType.StartObject start of the expanded entry navigation link to read next JsonNodeType.StartArray start of the expanded feed navigation link to read next JsonNoteType.Primitive (null) expanded null entry navigation link to read next JsonNoteType.Property property after deferred link or entity reference link JsonNodeType.EndObject end of the parent entry Implementation of the reader logic when in state 'EntityReferenceLink'. true if more items can be read from the reader; otherwise false. This method doesn't move the reader Pre-Condition: JsonNodeType.EndObject: expanded link property is last property in owning entry JsonNodeType.Property: there are more properties after the expanded link property in the owning entry Any: expanded collection link - the node after the entity reference link. Post-Condition: JsonNodeType.EndObject: expanded link property is last property in owning entry JsonNodeType.Property: there are more properties after the expanded link property in the owning entry Any: expanded collection link - the node after the entity reference link. Reads the start of the JSON array for the content of the feed and sets up the reader state correctly. The feed to read the contents for. The selected properties node capturing what properties should be expanded during template evaluation. Pre-Condition: The first node of the feed property value; this method will throw if the node is not JsonNodeType.StartArray Post-Condition: The reader is positioned on the first item in the feed, or on the end array of the feed. Reads the end of the current feed. Reads the start of an expanded entry (null or non-null). The navigation link that is being expanded. Pre-Condition: JsonNodeType.StartObject The start of the entry object JsonNodeType.PrimitiveValue (null) The null entry value Post-Condition: JsonNodeType.StartObject Start of expanded entry of the navigation link to read next JsonNodeType.StartArray Start of expanded feed of the navigation link to read next JsonNodeType.PrimitiveValue (null) Expanded null entry of the navigation link to read next, or the null value of the current null entry JsonNodeType.Property Property after deferred link or expanded entity reference JsonNodeType.EndObject If no (more) properties exist in the entry's content Reads the start of an entry and sets up the reader state correctly The duplicate property names checker to use for the entry; or null if a new one should be created. The selected properties node capturing what properties should be expanded during template evaluation. Pre-Condition: JsonNodeType.StartObject If the entry is in a feed - the start of the entry object JsonNodeType.Property If the entry is a top-level entry and has at least one property JsonNodeType.EndObject If the entry is a top-level entry and has no properties Post-Condition: JsonNodeType.StartObject Start of expanded entry of the navigation link to read next JsonNodeType.StartArray Start of expanded feed of the navigation link to read next JsonNodeType.PrimitiveValue (null) Expanded null entry of the navigation link to read next JsonNodeType.Property Property after deferred link or expanded entity reference JsonNodeType.EndObject If no (more) properties exist in the entry's content Verifies that the current item is an instance, sets the cardinality of the link (IsCollection property) and moves the reader into state 'NavigationLinkEnd'. A flag indicating whether the link represents a collection or not. Reads the next item in a navigation link content in a request payload. Starts the entry, initializing the scopes and such. This method starts a non-null entry only. The duplicate property names checker to use for the entry; or null if a new one should be created. The selected properties node capturing what properties should be expanded during template evaluation. Starts the navigation link. Does metadata validation of the navigation link and sets up the reader to report it. The navigation link info for the navigation link to start. Replaces the current scope with a new scope with the specified and the item of the current scope. The to use for the new scope. Called to transition into the EntryEnd state. Returns the current entry state. Returns current scope cast to JsonLightFeedScope Returns current scope cast to JsonLightNavigationLinkScope A reader top-level scope; keeping track of the current reader state and an item associated with this state. Constructor creating a new reader scope. The entity set we are going to read entities for. The expected type for the scope. The has the following meaning it's the expected base type of the top-level entry or entries in the top-level feed. In all cases the specified type must be an entity type. The duplicate property names checker for the top level scope represented by the current state. A reader entry scope; keeping track of the current reader state and an item associated with this state. The set of names of the navigation properties we have read so far while reading the entry. Constructor creating a new reader scope. The reader state of the new scope that is being created. The item attached to this scope. The entity set we are going to read entities for. The expected type for the scope. The duplicate property names checker for this entry scope. The selected properties node capturing what properties should be expanded during template evaluation. The has the following meaning it's the expected base type of the entry. If the entry has no type name specified this type will be assumed. Otherwise the specified type name must be the expected type or a more derived type. In all cases the specified type must be an entity type. The metadata builder instance for the entry. Flag which indicates that during parsing of the entry represented by this state, any property which is not an instance annotation was found. This includes property annotations for property which is not present in the payload. This is used to detect incorrect ordering of the payload (for example odata.id must not come after the first property). If the reader finds a navigation link to report, but it must first report the parent entry it will store the navigation link info in this property. So this will only ever store the first navigation link of an entry. The duplicate property names checker for the entry represented by the current state. The selected properties that should be expanded during template evaluation. The set of names of the navigation properties we have read so far while reading the entry. true if we have started processing missing projected navigation links, false otherwise. true if we have started processing missing projected navigation links, false otherwise. The entry being read. The entity type for the entry (if available). A reader feed scope; keeping track of the current reader state and an item associated with this state. Constructor creating a new reader scope. The item attached to this scope. The entity set we are going to read entities for. The expected type for the scope. The selected properties node capturing what properties should be expanded during template evaluation. The has the following meaning it's the expected base type of the entries in the feed. note that it might be a more derived type than the base type of the entity set for the feed. In all cases the specified type must be an entity type. The selected properties that should be expanded during template evaluation. A reader scope; keeping track of the current reader state and an item associated with this state. Constructor creating a new reader scope. The navigation link info attached to this scope. The entity set we are going to read entities for. The expected type for the scope. The has the following meaning it's the expected base type the entries in the expanded link (either the single entry or entries in the expanded feed). In all cases the specified type must be an entity type. The navigation link info for the navigation link to report. This is only used on a StartNavigationLink scope in responses. Helper methods used by the OData reader for the JsonLight format. Converts the given JSON value to the expected type as per OData conversion rules for JSON values. Value to the converted. Type reference to which the value needs to be converted. The message reader settings used for reading. The version of the OData protocol used for reading. true to validate null values; otherwise false. The name of the property whose value is being read, if applicable (used for error reporting). Object which is in sync with the property type (modulo the V1 exception of converting numbers to non-compatible target types). Ensure that the is not null; if so create a new instance. The type of the instance to check. The instance to check for null. Determines if the specified is an OData annotation property name. The property name to test. true if the property name is an OData annotation property name, false otherwise. Determines if the specified property name is a name of an annotation property. The name of the property. true if is a name of an annotation property, false otherwise. This method returns true both for normal annotation as well as property annotations. Validates that the annotation string value is valid. The value of the annotation. The name of the (instance or property) annotation (used for error reporting). Gets the payload type name for an OData OM instance for JsonLight. The payload item to get the type name for. The type name as read from the payload item (or constructed for primitive items). Converts the given JSON string value to the expected type as per OData conversion rules for JSON values. String value to the converted. Target type to which the string value needs to be converted. Object which is in sync with the target type. Converts the given JSON int value to the expected type as per OData conversion rules for JSON values. Int32 value to the converted. Target type to which the int value needs to be converted. Type reference to which the value needs to be converted. Object which is in sync with the property type. OData JsonLight deserializer for service documents. Constructor. The JsonLight input context to read from. Read a service document. This method reads the service document from the input and returns an that represents the read service document. An representing the read service document. Pre-Condition: JsonNodeType.None: assumes that the JSON reader has not been used yet. Post-Condition: JsonNodeType.EndOfInput Read a service document. This method reads the service document from the input and returns an that represents the read service document. The duplicate property names checker to use for the top-level scope. An representing the read service document. Pre-Condition: JsonNodeType.Property The property right after the metadata URI property. JsonNodeType.EndObject The EndObject of the service document. Post-Condition: Any The node after the EndObject of the service document. Reads a resource collection within a service document. The to use for parsing annotations within the resource collection object. A representing the read resource collection. Pre-Condition: JsonNodeType.StartObject: The beginning of the JSON object representing the resource collection. other: Will throw with an appropriate message on any other node type encountered. Post-Condition: JsonNodeType.StartObject: The beginning of the next resource collection in the array. JsonNodeType.EndArray: The end of the array. other: Any other node type occuring after the end object of the current resource collection. (Would be invalid). OData JsonLight serializer for service documents. The metadata uri builder to use. Constructor. The output context to write to. Writes a service document in JsonLight format. The default workspace to write in the service document. Implementation of the ODataWriter for the JsonLight format. Base class for OData writers that verifies a proper sequence of write calls on the writer. Base class for OData writers. Starts the writing of a feed. The feed or collection to write. Starts the writing of an entry. The entry or item to write. Starts the writing of a navigation link. The navigation link to write. Finishes the writing of a feed, an entry, or a navigation link. Writes an entity reference link, which is used to represent binding to an existing resource in a request payload. The entity reference link to write. This method can only be called for writing request messages. The entity reference link must be surrounded by a navigation link written through WriteStart/WriteEnd. The will be ignored in that case and the Uri from the will be used as the binding URL to be written. Flushes the write buffer to the underlying stream. The output context to write to. True if the writer was created for writing a feed; false when it was created for writing an entry. Stack of writer scopes to keep track of the current context of the writer. The to use for entries in this feed. Only applies when writing a top-level feed; otherwise null. The number of entries which have been started but not yet ended. Constructor. The output context to write to. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). True if the writer is created for writing a feed; false when it is created for writing an entry. Flushes the write buffer to the underlying stream. Start writing a feed. Feed/collection to write. Start writing an entry. Entry/item to write. Start writing a navigation link. Navigation link to write. Finish writing a feed/entry/navigation link. Writes an entity reference link, which is used to represent binding to an existing resource in a request payload. The entity reference link to write. This method can only be called for writing request messages. The entity reference link must be surrounded by a navigation link written through WriteStart/WriteEnd. The will be ignored in that case and the Uri from the will be used as the binding URL to be written. This method notifies the listener, that an in-stream error is to be written. This listener can choose to fail, if the currently written payload doesn't support in-stream error at this position. If the listener returns, the writer should not allow any more writing, since the in-stream error is the last thing in the payload. Determines whether a given writer state is considered an error state. The writer state to check. True if the writer state is an error state; otherwise false. Gets the projected properties annotation for the specified scope. The scope to get the projected properties annotation for. The projected properties annotation for . Check if the object has been disposed; called from all public API methods. Throws an ObjectDisposedException if the object has already been disposed. Flush the output. Start writing an OData payload. Start writing an entry. The entry to write. Finish writing an entry. The entry to write. Start writing a feed. The feed to write. Finish writing an OData payload. Finish writing a feed. The feed to write. Write a deferred (non-expanded) navigation link. The navigation link to write. Start writing a navigation link with content. The navigation link to write. Finish writing a navigation link with content. The navigation link to write. Write an entity reference link into a navigation link content. The parent navigation link which is being written around the entity reference link. The entity reference link to write. Create a new feed scope. The feed for the new scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. The newly create scope. Create a new entry scope. The entry for the new scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. The newly create scope. Gets the serialization info for the given entry. The entry to get the serialization info for. The serialization info for the given entry. Creates a new navigation link scope. The writer state for the new scope. The navigation link for the new scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. The newly created navigation link scope. Place where derived writers can perform custom steps before the entry is writen, at the begining of WriteStartEntryImplementation. Entry to write. The context object to answer basic questions regarding the type of the entry or feed. The selected properties of this scope. Validates the media resource on the entry. The entry to validate. The entity type of the entry. Gets the type of the entry and validates it against the model. The entry to get the type for. The validated entity type. Validates that the ODataFeed.DeltaLink is null for the given expanded feed. The expanded feed in question. Verifies that calling WriteStart feed is valid. true if the call is to be synchronous; false otherwise. Feed/collection to write. Start writing a feed - implementation of the actual functionality. The feed to write. Verifies that calling WriteStart entry is valid. true if the call is to be synchronous; false otherwise. Entry/item to write. Start writing an entry - implementation of the actual functionality. Entry/item to write. Verifies that calling WriteStart navigation link is valid. true if the call is to be synchronous; false otherwise. Navigation link to write. Start writing a navigation link - implementation of the actual functionality. Navigation link to write. Verify that calling WriteEnd is valid. true if the call is to be synchronous; false otherwise. Finish writing a feed/entry/navigation link. Marks the navigation currently being written as processed in the parent entity's metadata builder. This is needed so that at the end of writing the entry we can query for all the unwritten navigation properties defined on the entity type and write out their metadata in fullmetadata mode. The navigation link being written. Verifies that calling WriteEntityReferenceLink is valid. The entity reference link to write. true if the call is to be synchronous; false otherwise. Write an entity reference link. The entity reference link to write. Verifies that calling Flush is valid. true if the call is to be synchronous; false otherwise. Verifies that a call is allowed to the writer. true if the call is to be synchronous; false otherwise. Enters the 'ExceptionThrown' state and then throws an ODataException with the specified error message. The error message for the exception. The OData item to associate with the 'ExceptionThrown' state. Checks whether we are currently writing the first top-level element; if so call StartPayload Checks whether we are currently writing a navigation link and switches to NavigationLinkWithContent state if we do. What kind of payload kind is being written as the content of a navigation link. Only Feed, Entry or EntityRefernceLink are allowed. Catch any exception thrown by the action passed in; in the exception case move the writer into state ExceptionThrown and then rethrow the exception. The action to execute. Increments the nested entry count by one and fails if the new value exceeds the maxiumum nested entry depth limit. Decrements the nested entry count by one. Enter a new writer scope; verifies that the transition from the current state into new state is valid and attaches the item to the new scope. The writer state to transition into. The item to associate with the new scope. Leave the current writer scope and return to the previous scope. When reaching the top-level replace the 'Started' scope with a 'Completed' scope. Note that this method is never called once an error has been written or a fatal exception has been thrown. Promotes the current navigation link scope to a navigation link scope with content. Verify that the transition from the current state into new state is valid . The new writer state to transition into. Create a new writer scope. The writer state of the scope to create. The item attached to the scope to create. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. The current scope for the writer. The current state of the writer. true if the writer should not write any input specified and should just skip it. A flag indicating whether the writer is at the top level. Returns the immediate parent link which is being expanded, or null if no such link exists Returns the entity type of the immediate parent entry for which a navigation link is being written. Returns the entity type of the immediate parent entry for which a navigation link is being written. Returns the number of entries seen so far on the current feed scope. Can only be accessed on a feed scope. Checker to detect duplicate property names. The entity type of the current entry. Returns the parent navigation link scope of an entry in an expanded link (if it exists). The entry can either be the content of the expanded link directly or nested inside a feed. The parent navigation scope of an entry in an expanded link (if it exists). Validator to validate consistency of collection items (or null if no such validator applies to the current scope). An enumeration representing the current state of the writer. The writer is at the start; nothing has been written yet. The writer is currently writing an entry. The writer is currently writing a feed. The writer is currently writing a navigation link (possibly an expanded link but we don't know yet). This state is used when a navigation link was started but we didn't see any children for it yet. The writer is currently writing a navigation link with content. This state is used when a navigation link with either an entity reference link or expanded feed/entry was written. The writer has completed; nothing can be written anymore. The writer is in error state; nothing can be written anymore. Lightweight wrapper for the stack of scopes which exposes a few helper properties for getting parent scopes. Use a list to store the scopes instead of a true stack so that parent/grandparent lookups will be fast. Initializes a new instance of the class. Pushes the specified scope onto the stack. The scope. Pops the current scope off the stack. The popped scope. Peeks at the current scope on the top of the stack. The current scope at the top of the stack. Gets the count of items in the stack. Gets the scope below the current scope on top of the stack. Gets the scope below the parent of the current scope on top of the stack. Gets the scope below the current scope on top of the stack or null if there is only one item on the stack or the stack is empty. A writer scope; keeping track of the current writer state and an item associated with this state. The writer state of this scope. The item attached to this scope. Set to true if the content of the scope should not be written. This is used when writing navigation links which were not projected on the owning entry. The selected properties for the current scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). Constructor creating a new writer scope. The writer state of this scope. The item attached to this scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of this scope should not be written. The selected properties of this scope. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). The writer state of this scope. The item attached to this scope. The entity set we are going to write entities for. The selected properties for the current scope. Set to true if the content of this scope should not be written. A scope for an feed. The serialization info for the current feed. The number of entries in this feed seen so far. Maintains the write status for each annotation using its key. The type context to answer basic questions regarding the type info of the entry. Constructor to create a new feed scope. The feed for the new scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. Gets or creates the type context to answer basic questions regarding the type info of the entry. The Edm model to use. True if writing a response payload, false otherwise. The type context to answer basic questions regarding the type info of the entry. The number of entries in this feed seen so far. Tracks the write status of the annotations. A scope for an entry. Checker to detect duplicate property names. The serialization info for the current entry. The value from ODataEntry.TypeName. The entity type which was derived from the model (may be either the same as entity type or its base type. The type context to answer basic questions regarding the type info of the entry. Maintains the write status for each annotation using its key. Constructor to create a new entry scope. The entry for the new scope. The serialization info for the current entry. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. true if we are writing a response, false if it's a request. The instance controlling the behavior of the writer. The selected properties of this scope. Gets or creates the type context to answer basic questions regarding the type info of the entry. The Edm model to use. True if writing a response payload, false otherwise. The type context to answer basic questions regarding the type info of the entry. The entity type which was derived from the model, i.e. the expected entity type, which may be either the same as entity type or its base type. For example, if we are writing a feed of Customers and the current entry is of DerivedCustomer, this.EntityTypeFromMetadata would be Customer and this.EntityType would be DerivedCustomer. The serialization info for the current entry. Checker to detect duplicate property names. Tracks the write status of the annotations. A scope for a navigation link. Constructor to create a new navigation link scope. The writer state for the new scope. The navigation link for the new scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. Clones this navigation link scope and sets a new writer state. The to set. The cloned navigation link scope with the specified writer state. The output context to write to. The JsonLight entry and feed serializer to use. Constructor. The output context to write to. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the writer is created for writing a feed; false when it is created for writing an entry. Check if the object has been disposed; called from all public API methods. Throws an ObjectDisposedException if the object has already been disposed. Flush the output. Starts writing a payload (called exactly once before anything else) Ends writing a payload (called exactly once after everything else in case of success) Place where derived writers can perform custom steps before the entry is writen, at the begining of WriteStartEntryImplementation. Entry to write. The context object to answer basic questions regarding the type of the entry or feed. The selected properties of this scope. Validates the media resource on the entry. The entry to validate. The entity type of the entry. Start writing an entry. The entry to write. Finish writing an entry. The entry to write. Start writing a feed. The feed to write. Finish writing a feed. The feed to write. Start writing a deferred (non-expanded) navigation link. The navigation link to write. Start writing a navigation link with content. The navigation link to write. Finish writing a navigation link with content. The navigation link to write. Write an entity reference link. The parent navigation link which is being written around the entity reference link. The entity reference link to write. Create a new feed scope. The feed for the new scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. The newly create scope. Create a new entry scope. The entry for the new scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. The newly create scope. Creates a new JSON Light navigation link scope. The writer state for the new scope. The navigation link for the new scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. The newly created JSON Light navigation link scope. Writes the odata.count annotation for a feed if it has not been written yet (and the count is specified on the feed). The feed to write the count for. The name of the expanded nav property or null for a top-level feed. Writes the odata.nextLink annotation for a feed if it has not been written yet (and the next link is specified on the feed). The feed to write the next link for. The name of the expanded nav property or null for a top-level feed. Writes the odata.deltaLink annotation for a feed if it has not been written yet (and the delta link is specified on the feed). The feed to write the delta link for. Validates that the ODataFeed.InstanceAnnotations collection is empty for the given expanded feed. The expanded feed in question. Returns the current JsonLightEntryScope. Returns the current JsonLightFeedScope. A scope for a JSON lite feed. true if the odata.count was already written, false otherwise. true if the odata.nextLink was already written, false otherwise. true if the odata.deltaLink was already written, false otherwise. Constructor to create a new feed scope. The feed for the new scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. true if the odata.count annotation was already written, false otherwise. true if the odata.nextLink annotation was already written, false otherwise. true if the odata.deltaLink annotation was already written, false otherwise. A scope for an entry in JSON Light writer. Bit field of the JSON Light metadata properties written so far. Constructor to create a new entry scope. The entry for the new scope. The serialization info for the current entry. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. true if we are writing a response, false if it's a request. The instance controlling the behavior of the writer. The selected properties of this scope. Marks the as written in this entry scope. The metadta property which was written. Determines if the was already written for this entry scope. The metadata property to test for. true if the was already written for this entry scope; false otherwise. The entry being written. Flag which indicates that the odata.editLink metadata property has been written. Flag which indicates that the odata.readLink metadata property has been written. Flag which indicates that the odata.mediaEditLink metadata property has been written. Flag which indicates that the odata.mediaReadLink metadata property has been written. Flag which indicates that the odata.mediaContentType metadata property has been written. Flag which indicates that the odata.mediaETag metadata property has been written. Enumeration of JSON Light metadata property flags, used to keep track of which properties were already written. The odata.editLink property. The odata.readLink property. The odata.mediaEditLink property. The odata.mediaReadLink property. The odata.mediaContentType property. The odata.mediaETag property. A scope for a JSON Light navigation link. true if we have already written an entity reference link for this navigation link in requests; otherwise false. true if we have written at least one feed for this navigation link in requests; otherwise false. Constructor to create a new JSON Light navigation link scope. The writer state for the new scope. The navigation link for the new scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. Clones this JSON Light navigation link scope and sets a new writer state. The writer state to set. The cloned navigation link scope with the specified writer state. true if we have already written an entity reference link for this navigation link in requests; otherwise false. true if we have written at least one feed for this navigation link in requests; otherwise false. Helper methods used by the OData writer for the JsonLight format. Writes the odata.type instance annotation with the specified type name. The JSON writer to write to. The type name to write. Writes the odata.type propert annotation for the specified property with the specified type name. The JSON writer to write to. The name of the property for which to write the odata.type annotation. The type name to write. Writes the 'value' property name. The JSON writer to write to. Write a JSON property name which represents a property annotation. The JSON writer to write to. The name of the property to annotate. The name of the annotation to write. Enumeration describing the various serialization formats for dates in JSON Represents a DateTime value in the OData format of \/Date(ticksrepresentingdatetime)\/ Represents a DateTime value in the ISO 8601 format of YYYY-MM-DDThh:mm:ss.sTZD eg 1997-07-16T19:20:30.45+01:00 Class with the responsibility of resolving media types (MIME types) into formats and payload kinds. application/atom+xml media type application/xml media type text/xml media type application/json media type application/json;odata=verbose media type An array that maps stores the supported media types for all . The set of supported media types is ordered (desc) by their precedence/priority with respect to (1) format and (2) media type. As a result the default media type for a given payloadKind is the first entry in the MediaTypeWithFormat array. Cache for MediaTypeResolvers for each version. The version the media type resolver is used with. Array of supported media types and formats for each payload kind. The index into the array matches the order of the ODataPayloadKind enum. The set of payload kinds which are supported for the JSON formats. Creates a new media type resolver for writers with the mappings for the specified version. The version used to write the payload. Creates a new media type resolver for readers with the mappings for the specified version and behavior kind. The version used to read the payload. The format behavior kind used. Creates a new media type resolver for writers with the mappings for the specified version. The version used to write the payload. A new media type resolver for readers with the mappings for the specified version and behavior kind. Creates a new media type resolver for readers with the mappings for the specified version and behavior kind. The version used to read the payload. The format behavior kind used. A new media type resolver for readers with the mappings for the specified version and behavior kind. Gets the supported media types and formats for the given payload kind. The payload kind to get media types for. An array of media type / format pairs, sorted by priority. Checks for an illegal media type that cannot be caught during content negotiation/resolution since it would match an unsupported media type. The parsed media type to check. true if the media type is illegal (and we should fail); otherwise false. Clones the default media types. The cloned media type table. Inserts the specified media type before the first occurrence of . The media type list to insert into. The media type to insert. The format of the media type before which should be inserted. Configure the media type tables so that Json Light is the first JSON format in the table. This is only used in V3 and beyond. Adds the given media type/format for all the payload kinds which support JSON. The media type/format pair to add. Inserts the given media type/format for all the payload kinds which support JSON before the first media type with the given format. The media type/format pair to add. The format of the media type before which should be inserted. Additional media types per payload kind for the WCF DS client on pre-v3 payloads. Anything that normally accepts application/atom+xml should also accept application/xml, and vice versa. Accesses the default media type resolver. A helper class to associate a with a media type. The media type. The for this media type. A dictionary implementation with special key-matching semantics; it accepts case-insensitive matches but prefers a case-sensitive one (if present). As an implementation choice we did not use a second dictionary to maintain a cache of case-insensitive keys since we don't want to pay the price of an extra dictionary for cases where the looked up keys match case sensitively (as per spec, should be the default case). The backing dictionary using case-sensitive key comparison. Constructor. Adds an element with the provided key and value to the dictionary. The object to use as the key of the element to add. The object to use as the value of the element to add. Determines whether the dictionary contains an element with the specified key using case-sensitive comparison. The key to locate in the dictionary. true if the dictionary contains an element with the ; otherwise, false. This method will only try to match the key using case-sensitive comparison. Removes the entry with the specified from the headers. The key of the item to remove. true if the item with the specified was removed; otherwise false. Gets the value associated with the specified key. The key whose value to get. When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the value parameter. This parameter is passed uninitialized. true if the dictionary contains an element with the specified key; otherwise, false. Returns an enumerator that iterates through the collection. An enumerator that can be used to iterate through the collection. Returns an enumerator that iterates through the collection. An enumerator that can be used to iterate through the collection. Finds in the case sensitive dictionary ignoring the case for comparison. The key to find. The key from the case sensitive dictionary that matched the or null if no match was found. This method throws if multiple case insensitive matches for the specified exist. Gets or sets the element with the specified key. The key of the element to get or set. The element with the specified key. Factory class for the various wrapper streams around the actual message stream. Creates a non-disposing stream. The inner to wrap. A stream wrapping the that ignores calls to Dispose. Creates a stream with a given maximum size. The inner to wrap. The maximum number of bytes to be read from the . A stream wrapping the that enforces the maximum number of bytes to be read from the stream. Creates a non-disposing stream with a given maximum size. The inner to wrap. The maximum number of bytes to be read from the . A stream wrapping the that ignores calls to Dispose and enforces the maximum number of bytes to be read from the stream. Checks whether the provided stream already ignores calls to Dispose. The to check. true if the ignores calls to Dispose; otherwise false. Stream wrapper that supports counting the total number of bytes read from the stream and ensures that they don't exceed a specified maximum (used for security purposes) and ignoring calls to Dispose if the underlying stream should not be disposed. The maximum number of bytes to be read from the stream before reporting an error. true to not dispose the inner stream when Dispose is called; otherwise false. Stream that is being wrapped. The total number of bytes read from the stream so far. Constructs an instance of the byte counting stream wrapper class. Stream that is being wrapped. true if calls to Dispose should be ignored; otherwise false. The maximum number of bytes to be read from the stream before reporting an error. Flush the stream to the underlying storage. Reads data from the stream. The buffer to read the data to. The offset in the buffer to write to. The number of bytes to read. The number of bytes actually read. Begins a read operation from the stream. The buffer to read the data to. The offset in the buffer to write to. The number of bytes to read. The async callback. The async state. Async result representing the asynchornous operation. Ends a read operation from the stream. The async result representing the read operation. The number of bytes actually read. Seeks the stream. The offset to seek to. The origin of the seek operation. The new position in the stream. Sets the length of the stream. The length in bytes to set. Writes to the stream. The buffer to get data from. The offset in the buffer to start from. The number of bytes to write. Begins an asynchronous write operation to the stream. The buffer to get data from. The offset in the buffer to start from. The number of bytes to write. The async callback. The async state. Async result representing the write operation. Ends the asynchronous write operation. Async result representing the write operation. Dispose this wrapping stream and the underlying stream. If 'true' this method is called from user code; if 'false' it is called by the runtime. Increases the number of total bytes read from the stream. The number of bytes read from the stream during the last read operation. Since we don't own the underlying stream we also have to prepare for streams returning < 0 bytes read. Determines if the stream can read. Determines if the stream can seek. Determines if the stream can write. Returns the length of the stream. Gets or sets the position in the stream. true if the wrapping stream ignores calls to Dispose; otherwise false. OData Verbose JSON deserializer for detecting the payload kind of a JSON payload. OData Verbose JSON deserializer for properties and value types. Base class for all OData Verbose JSON deserializers. The JSON input context to use for reading. Constructor. The JSON input context to read from. Read the start of the top-level data wrapper in JSON responses. true if we are deserializing a nested payload, e.g. an entry, a feed or a collection within a parameters payload. Pre-Condition: JsonNodeType.None: assumes that the JSON reader has not been used yet when not reading a nested payload. Post-Condition: The reader is positioned on the first node of the payload (this can be the first node or the value of the 'd' property node) Read the start of the top-level data wrapper in JSON responses. true if we are deserializing a nested payload, e.g. an entry, a feed or a collection within a parameters payload. true if the response "d" wrapper should be in the payload, false otherwise. Pre-Condition: JsonNodeType.None: assumes that the JSON reader has not been used yet when not reading a nested payload. Post-Condition: The reader is positioned on the first node of the payload (this can be the first node or the value of the 'd' property node) Reads the end of the top-level data wrapper in JSON responses. true if we are deserializing a nested payload, e.g. an entry, a feed or a collection within a parameters payload. Pre-Condition: any node: when reading response or a nested payload, will fail if find anything else then EndObject. JsonNodeType.EndOfInput: otherwise Post-Condition: JsonNodeType.EndOfInput Reads the end of the top-level data wrapper in JSON responses. true if we are deserializing a nested payload, e.g. an entry, a feed or a collection within a parameters payload. true if the response "d" wrapper should be in the payload, false otherwise. Pre-Condition: any node: when reading response or a nested payload, will fail if find anything else then EndObject. JsonNodeType.EndOfInput: otherwise Post-Condition: JsonNodeType.EndOfInput Given a URI from the payload, this method will try to make it absolute, or fail otherwise. The URI string from the payload to process. An absolute URI to report. Given a URI from the payload, this method will try to make it absolute, or fail otherwise. The URI string from the payload to process. true if the payload URI needs to be translated into an absolute URI; otherwise false. An absolute URI to report. Asserts that the JSON reader is positioned on one of the specified node types. The node types which should appear at this point. Returns the which is to be used to read the content of the message. The Verbose Json input context to use for reading. The current recursion depth of values read by this deserializer, measured by the number of complex, collection, JSON object and JSON array values read so far. Constructor. The JSON input context to read from. This method creates an reads the property from the input and returns an representing the read property. The producing the property to be read. The expected type reference of the property to read. An representing the read property. Reads an entry, complex or collection content in buffering mode until it finds the type name in the __metadata object or hits the end of the object. If called for a primitive value, returns 'null' (since primitive types cannot have type names in JSON) The type name as read from the __metadata object; null if none was found. This method does not move the reader. Pre-Condition: JsonNodeType.PrimitiveValue A primitive value JsonNodeType.StartObject Any non-primitive value Post-Condition: JsonNodeType.PrimitiveValue A primitive value JsonNodeType.StartObject Any non-primitive value Reads a primitive value, complex value or collection. The expected type reference of the property value. The duplicate property names checker to use - if null the method should create a new one if necessary. The collection validator instance if no expected item type has been specified; otherwise null. true to validate null values; otherwise false. The name of the property whose value is being read, if applicable (used for error reporting). The value of the property read. Pre-Condition: JsonNodeType.PrimitiveValue - the value of the property is a primitive value JsonNodeType.StartObject - the value of the property is an object JsonNodeType.StartArray - the value of the property is an array - method will fail in this case. Post-Condition: almost anything - the node after the property value. Returns the value of the property read, which can be one of: - null - primitive value - - Reads the type name from the value of a __metadata property. All other properties in the __metadata property value are ignored. The type name found, or null if none was found. This method can be used in buffering and non-buffering mode. Pre-Condition: Fails if the current node is not a JsonNodeType.StartObject Post-Condition: JsonNodeType.Property - the next property after the __metadata property value. JsonNodeType.EndObject - if the __metadata property was the last property in the object. Reads a primitive value. The expected type reference of the value. true to validate null values; otherwise false. The name of the property whose value is being read, if applicable (used for error reporting). The value of the primitive value. Pre-Condition: none - Fails if the current node is not a JsonNodeType.PrimitiveValue Post-Condition: almost anything - the node after the primitive value. Made internal only for testability. Reads a collection value. The collection type reference of the value. The type name read from the payload. The serialization type name for the collection value (possibly null). The value of the collection. Pre-Condition: Fails if the current node is not a JsonNodeType.StartObject Post-Condition: almost anything - the node after the collection value (after the EndObject) Reads a complex value. The expected type reference of the value. The type name read from the payload. The serialization type name for the collection value (possibly null). The duplicate property names checker to use - if null the method should create a new one if necessary. The value of the complex value. Pre-Condition: Fails if the current node is not a JsonNodeType.StartObject or JsonNodeType.PrimitiveValue (with null value) Post-Condition: almost anything - the node after the complex value (after the EndObject) Reads a primitive, complex or collection value. The expected type reference of the property value. The duplicate property names checker to use - if null the method should create a new one if necessary. The collection validator instance if no expected item type has been specified; otherwise null. true to validate null values; otherwise false. The name of the property whose value is being read, if applicable. The value of the property read. Pre-Condition: JsonNodeType.PrimitiveValue - the value of the property is a primitive value JsonNodeType.StartObject - the value of the property is an object JsonNodeType.StartArray - the value of the property is an array - method will fail in this case. Post-Condition: almost anything - the node after the property value. Returns the value of the property read, which can be one of: - null - primitive value - - Determines the value kind for a non-entity value (that is top-level property value, property value on a complex type, item in a collection) The type kind of the property value. Doesn't move the JSON reader. Pre-Condition: JsonNodeType.PrimitiveValue JsonNodeType.StartObject Post-Condition: JsonNodeType.PrimitiveValue JsonNodeType.StartObject Determines if the top-level property payload should be read as usual, or without the property wrapper. The expected type reference for the property value to read. true if the property payload should be read without the property wrapper, false if it should be read as usual with the property wrapper. This method is to support backward compat behavior for WCF DS Server, which can read open property values without property wrapper. Increases the recursion depth of values by 1. This will throw if the recursion depth exceeds the current limit. Decreases the recursion depth of values by 1. Asserts that the current recursion depth of values is zero. This should be true on all calls into this class from outside of this class. The set of detected payload kinds. Constructor. The Verbose JSON input context to read from. Detects the payload kind(s). An enumerable of zero, one or more payload kinds that were detected from looking at the payload in the message stream. Detects whether a JSON payload where the current node is a start array node represents a feed, a set of entity reference links, a collection or a combination of them. true if the array is a top-level array; if it is a property value false. This method does not move the reader. Pre-Condition: JsonNodeType.StartArray The StartArray node of the feed or entity reference links array (if at the top-level) Post-Condition: JsonNodeType.StartArray The StartArray node of the feed or entity reference links array (if at the top-level) Read the value of the __metadata property and compute the payload kind based on the type name. This method checks whether it can determine the type kind from the type name; if we find a primitive or collection type we set the result to empty since such payloads are not supported. Otherwise we'll treat the payload as an entry since top-level complex values are not supported either. Pre-Condition: Any The first node of the __metadata property value Post-Condition: Property or EndObject This method reads the entire value of the __metadata object and positions the reader on the next property or on the EndObject node if this is the last property. Process the array value of an 'EntitySets' property to determine whether it should be treated as service document payload. This method does not move the Json reader. Pre-Condition: StartArray The start of the array value of the 'EntitySets' property Post-Condition: StartArray The start of the array value of the 'EntitySets' property Adds the set of specified payload kinds to the detected payload kinds (if the specified payload kinds are valid for the current request/response). The payload kinds to add. Removes the set of specified payload kinds from the detected payload kinds (if the specified payload kinds are valid for the current request/response). The payload kinds to remove. Adds or removes the set of specified payload kinds to/from the detected payload kinds (if the specified payload kinds are valid for the current request/response). The function that implements the 'Add' or 'Remove' action. The payload kinds to add/remove. Quotas to use for limiting resource consumption when reading or writing OData messages. The maximum number of top level query operations and changesets allowed in a single batch. The maximum number of operations allowed in a single changeset. The maximum depth of nesting allowed when reading or writing recursive payloads. The maximum number of bytes that should be read from the message. The maximum number of entity mapping attributes to be found for an entity type (on the type itself and all its base types). Initializes a new instance of the class. Initializes a new instance of the class. The instance to copy. Gets or sets the maximum number of top level query operations and changesets allowed in a single batch. The maximum number of top level query operations and changesets allowed in a single batch. Gets or sets the maximum number of operations allowed in a single changeset. The maximum number of operations allowed in a single changeset. Gets or sets the maximum depth of nesting allowed when reading or writing recursive payloads. The maximum depth of nesting allowed when reading or writing recursive payloads. Gets or sets the maximum number of bytes that should be read from the message. The maximum number of bytes that should be read from the message. Gets or sets the maximum number of entity mapping attributes to be found for an entity type (on the type itself and all its base types). The maximum number of entity mapping attributes to be found for an entity type. Represents the set of information available for payload kind detection. This class is used to represent the input to run payload kind detection using . See the documentation of that method for more information. The parsed content type as . The encoding specified in the charset parameter of contentType or the default encoding from MediaType. The being used for reading the message. The for the payload. The possible payload kinds based on content type negotiation. Format specific state created during payload kind detection for that format. This instance will be stored on the message reader and passed to the format if it will be used for actually reading the payload. Format can store information which was already extracted from the payload during payload kind detection and which it wants to avoid to recompute again during actual reading. Constructor. The parsed content type as . The encoding from the content type or the default encoding from . The being used for reading the message. The for the payload. The possible payload kinds based on content type negotiation. The encoding derived from the content type or the default encoding. The encoding derived from the content type or the default encoding. Sets a format specific state created during payload kind detection. A format specific state, the value is opaque to the message reader, it only stores the reference. The state will be stored on the message reader and passed to the format if it will be used for actually reading the payload. Format can store information which was already extracted from the payload during payload kind detection and which it wants to avoid to recompute again during actual reading. The being used for reading the message. The for the payload. The possible payload kinds based on content type negotiation. The being used for reading the message. The format specific payload kind detection state. An enumeration that lists the internal errors that are shared between the OData library and the query library. Unreachable codepath in EdmLibraryExtensions.ToTypeReference (unsupported type kind). Unreachable codepath in EdmLibraryExtensions.ToClrType (unsupported type kind). Unreachable codepath in EdmLibraryExtensions.PrimitiveTypeReference (unsupported primitive type kind). Unreachable codepath in EdmLibraryExtensions.IsAssignableFrom(IEdmPrimitiveType, IEdmPrimitiveType). Unreachable codepath in EdmLibraryExtensions.IsAssignableFrom(IEdmType, IEdmType). Unreachable codepath in EdmLibraryExtensions.BaseType. Unreachable codepath in EdmLibraryExtensions.Clone for unexpected type kind. Unreachable codepath in EdmLibraryExtensions.Clone for unexpected primitive type kind. Represents the result of running payload kind detection for a specified payload kind and format. This class is used to represent the result of running payload kind detection using . See the documentation of that method for more information. The detected payload kind. The format for the detected payload kind. Constructor. The detected payload kind. The format for the detected payload kind. Gets the detected payload kind. The detected payload kind. Gets the format for the detected payload kind. The format for the detected payload kind. Helper class to verify that all items of a collection are of the same kind and type. This class is only used if no expected item type is specified for the collection; otherwise all items are already validated against the expected item type. The base type for all entries in the feed. Constructor. Validates the type of an entry in a top-level feed. The type of the entry. OData ATOM serializer for ATOM metadata in a service document Constructor. The output context to write to. Writes the ATOM metadata for a single workspace element. The workspace element to get the metadata for and write it. Writes the ATOM metadata for a single (resource) collection element. The collection element to get the metadata for and write it. OData ATOM serializer for service documents. The serializer for service document ATOM metadata. Constructor. The output context to write to. Writes a service document in ATOM/XML format. The default workspace to write in the service document. Extension methods for the JSON writer. Writes the json object value to the . The to write to. Writes the given json object value to the underlying json writer. Called when the top-level object is started to possibly inject first property into the object. The OData protocol version to be used for writing payloads. Writes a primitive value. The to write to. The value to write. The OData protocol version to be used for writing payloads. Writes the json array value. The to write to. Writes the json array value to the underlying json writer. The OData protocol version to be used for writing payloads. Writes the json value (primitive, IDictionary or IEnumerable) to the underlying json writer. The to write to. value to write. The OData protocol version to be used for writing payloads. OData Verbose JSON serializer for collections. OData Verbose JSON serializer for properties and value types. Base class for all OData Verbose JSON serializers. The Verbose JSON output context to write to. Constructor. The output context to write to. Writes the start of the entire JSON payload. Writes the start of the entire JSON payload. When set to true the "d" response wrapper won't be written even in responses Writes the end of the enitire JSON payload. Writes the end of the enitire JSON payload. When set to true the "d" response wrapper won't be written even in responses Helper method to write the data wrapper around a JSON payload. The action that writes the actual JSON payload that is being wrapped. Helper method to write the data wrapper around a JSON payload. The action that writes the actual JSON payload that is being wrapped. When set to true the "d" response wrapper won't be written even in responses Write a top-level error message. The error instance to write. A flag indicating whether error details should be written (in debug mode only) or not. Converts the specified URI into an absolute URI. The uri to process. An absolute URI which is either the specified if it was absolute, or it's a combination of the BaseUri and the relative . The return value is the string representation of the URI. This method will fail if the specified is relative and there's no base URI available. Returns the string representation of the URI; Converts the URI into an absolute URI if the parameter is set to true. The uri to process. true, if the URI needs to be translated into an absolute URI; false otherwise. If the parameter is set to true, then a string representation of an absolute URI which is either the specified if it was absolute, or it's a combination of the BaseUri and the relative ; otherwise a string representation of the specified . This method will fail if is set to true and the specified is relative and there's no base URI available. Returns the which is to be used to write the content of the message. Returns the which is to be used to write the content of the message. The current recursion depth of values written by this serializer. Constructor. The output context to write to. Write an to the given stream. This method creates an async buffered stream and writes the property to it. The property to write. Writes property names and value pairs. The of the entry (or null if not metadata is available). The enumeration of properties to write out. Whether the properties are being written for complex value. Also used for detecting whether stream properties are allowed as named stream properties should only be defined on ODataEntry instances The checker instance for duplicate property names. Set of projected properties, or null if all properties should be written. Writes a primitive value. Uses a registered primitive type converter to write the value if one is registered for the type, otherwise directly writes the value. The value to write. The collection validator instance. The expected type reference of the primitive value. Writes out the value of a complex property. The complex value to write. The metadata type for the complex value. true if the type name belongs to an open property. The checker instance for duplicate property names. The collection validator instance to validate the type names and type kinds of collection items; null if no validation is needed. The current recursion depth should be a value, measured by the number of complex and collection values between this complex value and the top-level payload, not including this one. Writes out the value of a collection property. The collection value to write. The metadata type reference for the collection. true if the type name belongs to an open property. The current recursion depth is measured by the number of complex and collection values between this one and the top-level payload, not including this one. Writes the metadata content for a media resource or a named stream The stream reference value for which to write the metadata Writes the etag property with the given string value. The name of the ETag, e.g. media_etag or etag The value of the ETag Asserts that the current recursion depth of values is zero. This should be true on all calls into this class from outside of this class. Writes a name/value pair for a property. The property to write out. The of the entry or complex type containing the property (or null if not metadata is available). Should pass in true if we are writing a property of an ODataEntry instance, false otherwise. Named stream properties should only be defined on ODataEntry instances. The checker instance for duplicate property names. Set of projected properties, or null if all properties should be written. Writes a stream property value. The stream reference value to be written Increases the recursion depth of values by 1. This will throw if the recursion depth exceeds the current limit. Decreases the recursion depth of values by 1. Constructor. The output context to write to. Writes the start of a collection. Writes the end of a collection. OData Verbose JSON serializer for entity reference links. Constructor. The output context to write to. Writes a single top-level Uri in response to a $links query. The entity reference link to write out. Writes a set of links (Uris) in response to a $links query; includes optional count and next-page-link information. The set of entity reference links to write out. Writes a single Uri in response to a $links query. The entity reference link to write out. Writes a set of links (Uris) in response to a $links query; includes optional count and next-page-link information. The set of entity reference links to write out. true if the 'results' wrapper should be included into the payload; otherwise false. OData Verbose JSON serializer for entries and feeds. Constructor. The output context to write to. Writes the __metadata property and its content for an entry The entry for which to write the metadata. Set of projected properties, or null if all properties should be written. The entity type of the entry to write. The duplicate property names checker to use. Writes "actions" or "functions" metadata. The operations to write. The name of the property used for the operations. true when writing the entry's actions; false when writing the entry's functions. true if we're writing JSON lite, false if we're writing verbose JSON. Writes the metadata content for an association link The association link to write. The checker instance for duplicate property names. Writes a group of operation (all actions or all functions) that have the same "metadata". Expects the actions or functions scope to already be open. A grouping of operations that are all actions or all functions and share the same "metadata". Writes an operation (an action or a function). Expects the write to already have written the "rel value" and opened an array. The operation to write. Verbose JSON format output context. The oracle to use to determine the type name to write for entries and values. Constructor. The format for this output context. The text writer to write to. Configuration settings of the OData writer. The model to use. Constructor. The format for this output context. The message stream to write the payload to. The encoding to use for the payload. Configuration settings of the OData writer. true if writing a response message; otherwise false. true if the output should be written synchronously; false if it should be written asynchronously. The model to use. The optional URL resolver to perform custom URL resolution for URLs written to the payload. Writes an into the message payload. The error to write. A flag indicating whether debug information (e.g., the inner error from the ) should be included in the payload. This should only be used in debug scenarios. This method is called if the ODataMessageWriter.WriteError is called once some other write operation has already started. The method should write the in-stream error representation for the specific format into the current payload. Before the method is called no flush is performed on the output context or any active writer. It is the responsibility of this method to flush the output before the method returns. Creates an to write a feed. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). The created writer. The write must flush the output when it's finished (inside the last Write call). Creates an to write an entry. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). The created writer. The write must flush the output when it's finished (inside the last Write call). Creates an to write a collection of primitive or complex values (as result of a service operation invocation). The item type of the collection being written or null if no metadata is available. The created collection writer. The write must flush the output when it's finished (inside the last Write call). Creates an to write a parameter payload. The function import whose parameters will be written. The created parameter writer. The write must flush the output when it's finished (inside the last Write call). Writes a service document with the specified as message payload. The default workspace to write in the service document. It is the responsibility of this method to flush the output before the method returns. Writes an as message payload. The property to write. It is the responsibility of this method to flush the output before the method returns. Writes an as the message payload. The error to write. A flag indicating whether debug information (e.g., the inner error from the ) should be included in the payload. This should only be used in debug scenarios. It is the responsibility of this method to flush the output before the method returns. Writes the result of a $links query as the message payload. The entity reference links to write as message payload. The entity set of the navigation property. The navigation property for which the entity reference links are being written, or null if none is available. It is the responsibility of this method to flush the output before the method returns. Writes a singleton result of a $links query as the message payload. The entity reference link to write as message payload. The entity set of the navigation property. The navigation property for which the entity reference link is being written, or null if none is available. It is the responsibility of this method to flush the output before the method returns. Creates an to write a feed. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). The created writer. Creates an to write an entry. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). The created writer. Creates an to write a collection of primitive or complex values (as result of a service operation invocation). The item type of the collection being written or null if no metadata is available. The created collection writer. Creates an to write a parameter payload. The function import whose parameters will be written. The created parameter writer. Writes an in-stream error. The error to write. A flag indicating whether debug information (e.g., the inner error from the ) should be included in the payload. This should only be used in debug scenarios. Writes an as message payload. The property to write. Writes a service document with the specified as message payload. The default workspace to write in the service document. Writes an as the message payload. The error to write. A flag indicating whether debug information (e.g., the inner error from the ) should be included in the payload. This should only be used in debug scenarios. Writes the result of a $links query as the message payload. The entity reference links to write as message payload. Writes a singleton result of a $links query as the message payload. The entity reference link to write as message payload. Returns the oracle to use when determining the type name to write for entries and values. OData Verbose JSON serializer for service documents. Constructor. The output context to write to. Writes a service document in JSON format. The default workspace to write in the service document. Stream wrapper for the message stream to ignore the Stream.Dispose method so that readers/writers on top of it can be disposed without affecting it. Stream that is being wrapped. Constructs an instance of the stream wrapper class. Stream that is being wrapped. Flush the stream to the underlying storage. Reads data from the stream. The buffer to read the data to. The offset in the buffer to write to. The number of bytes to read. The number of bytes actually read. Begins a read operation from the stream. The buffer to read the data to. The offset in the buffer to write to. The number of bytes to read. The async callback. The async state. Async result representing the asynchornous operation. Ends a read operation from the stream. The async result representing the read operation. The number of bytes actually read. Seeks the stream. The offset to seek to. The origin of the seek operation. The new position in the stream. Sets the length of the stream. The length in bytes to set. Writes to the stream. The buffer to get data from. The offset in the buffer to start from. The number of bytes to write. Begins an asynchronous write operation to the stream. The buffer to get data from. The offset in the buffer to start from. The number of bytes to write. The async callback. The async state. Async result representing the write operation. Ends the asynchronous write operation. Async result representing the write operation. Determines if the stream can read. Determines if the stream can seek. Determines if the stream can write. Returns the length of the stream. Gets or sets the position in the stream. RAW format output context. The message output stream. The XmlWriter to write to. Constructor. The format for this output context. The message stream to write the payload to. The encoding to use for the payload. Configuration settings of the OData writer. true if writing a response message; otherwise false. true if the output should be written synchronously; false if it should be written asynchronously. The model to use. The optional URL resolver to perform custom URL resolution for URLs written to the payload. Synchronously flush the writer. Writes an into the message payload. The error to write. A flag indicating whether debug information (e.g., the inner error from the ) should be included in the payload. This should only be used in debug scenarios. This method is called if the ODataMessageWriter.WriteError is called once some other write operation has already started. The method should write the in-stream error representation for the specific format into the current payload. Before the method is called no flush is performed on the output context or any active writer. It is the responsibility of this method to flush the output before the method returns. Writes the metadata document as the message body. It is the responsibility of this method to flush the output before the method returns. Perform the actual cleanup work. If 'true' this method is called from user code; if 'false' it is called by the runtime. RAW format output context. Used by RAW values and batch. The encoding to use for the output. The message output stream. The asynchronous output stream if we're writing asynchronously. The output stream to write to (both sync and async cases). Listener to notify when writing in-stream errors. RawValueWriter used to write actual values to the stream. Constructor. The format for this output context. The message stream to write the payload to. The encoding to use for the payload. Configuration settings of the OData writer. true if writing a response message; otherwise false. true if the output should be written synchronously; false if it should be written asynchronously. The model to use. The optional URL resolver to perform custom URL resolution for URLs written to the payload. Synchronously flush the writer. Writes an into the message payload. The error to write. A flag indicating whether debug information (e.g., the inner error from the ) should be included in the payload. This should only be used in debug scenarios. This method is called if the ODataMessageWriter.WriteError is called once some other write operation has already started. The method should write the in-stream error representation for the specific format into the current payload. Before the method is called no flush is performed on the output context or any active writer. It is the responsibility of this method to flush the output before the method returns. Creates an to write a batch of requests or responses. The boundary string for the batch structure itself. The created batch writer. We don't plan to make this public! The write must flush the output when it's finished (inside the last Write call). Writes a single value as the message body. The value to write. It is the responsibility of this method to flush the output before the method returns. Initialized a new text writer over the message payload stream. This can only be called if the text writer was not yet initialized or it has been closed. It can be called several times with CloseWriter calls in between though. Closes the text writer. Verifies the output context was not yet disposed, fails otherwise. Flushes all buffered data to the underlying stream synchronously. Perform the actual cleanup work. If 'true' this method is called from user code; if 'false' it is called by the runtime. Writes a single value as the message body. The value to write. Once the method returns all the data should be written, the only other call after this will be Dispose on the output context. Creates a batch writer. The boundary string for the batch structure itself. The newly created batch writer. The output stream to write the payload to. The text writer to use to write text into the payload. InitializeRawValueWriter must be called before this is used. Also, within this class we should be using RawValueWriter for everything. Ideally we wouldn't leak the TextWriter out, but the Batch writer needs it at the moment. Represents the behavior of readers when reading property with null value. The default behavior - this means validate the null value against the declared type and then report the null value. This means to not report the value and not validate it against the model. This setting can be used to correctly work with clients that send null values for uninitialized properties in requests instead of omitting them altogether. This means to report the value, but not validate it against the model. The verbose JSON OData format. The text representation - the name of the format. The name of the format. Detects the payload kinds supported by this format for the specified message payload. The response message with the payload stream. Additional information available for the payload kind detection. The set of s that are supported with the specified payload. Detects the payload kinds supported by this format for the specified message payload. The request message with the payload stream. Additional information available for the payload kind detection. The set of s that are supported with the specified payload. Creates an instance of the input context for this format. The to read. The message to use. The content type of the message to read. The encoding to use. Configuration settings of the OData reader. The OData protocol version to be used for reading the payload. true if reading a response message; otherwise false. The model to use. The optional URL resolver to perform custom URL resolution for URLs read from the payload. Format specific state stored during payload kind detection using the . The newly created input context. Creates an instance of the output context for this format. The message to use. The specific media type being written. The encoding to use. Configuration settings of the OData writer. true if writing a response message; otherwise false. The model to use. The optional URL resolver to perform custom URL resolution for URLs written to the payload. The newly created output context. Detects the payload kind(s) from the message stream. The message stream to read from for payload kind detection. true if reading a response message; otherwise false. true if the input should be read synchronously; false if it should be read asynchronously. Additional information available for the payload kind detection. An enumerable of zero, one or more payload kinds that were detected from looking at the payload in the message stream. The $batch OData format. The text representation - the name of the format. The name of the format. Detects the payload kinds supported by this format for the specified message payload. The response message with the payload stream. Additional information available for the payload kind detection. The set of s that are supported with the specified payload. Detects the payload kinds supported by this format for the specified message payload. The request message with the payload stream. Additional information available for the payload kind detection. The set of s that are supported with the specified payload. Creates an instance of the input context for this format. The to read. The message to use. The content type of the message to read. The encoding to use. Configuration settings of the OData reader. The OData protocol version to be used for reading the payload. true if reading a response message; otherwise false. The model to use. The optional URL resolver to perform custom URL resolution for URLs read from the payload. Format specific state stored during payload kind detection using the . The newly created input context. Creates an instance of the output context for this format. The message to use. The specific media type being written. The encoding to use. Configuration settings of the OData writer. true if writing a response message; otherwise false. The model to use. The optional URL resolver to perform custom URL resolution for URLs written to the payload. The newly created output context. Detects the payload kind(s) from the message stream. The content type of the message. An enumerable of zero, one or more payload kinds that were detected from looking at the payload in the message stream. The metadata OData format. The text representation - the name of the format. The name of the format. Detects the payload kinds supported by this format for the specified message payload. The response message with the payload stream. Additional information available for the payload kind detection. The set of s that are supported with the specified payload. Detects the payload kinds supported by this format for the specified message payload. The request message with the payload stream. Additional information available for the payload kind detection. The set of s that are supported with the specified payload. Creates an instance of the input context for this format. The to read. The message to use. The content type of the message to read. The encoding to use. Configuration settings of the OData reader. The OData protocol version to be used for reading the payload. true if reading a response message; otherwise false. The model to use. The optional URL resolver to perform custom URL resolution for URLs read from the payload. Format specific state stored during payload kind detection using the . The newly created input context. Creates an instance of the output context for this format. The message to use. The specific media type being written. The encoding to use. Configuration settings of the OData writer. true if writing a response message; otherwise false. The model to use. The optional URL resolver to perform custom URL resolution for URLs written to the payload. The newly created output context. Detects the payload kind(s) from the message stream. The message stream to read from for payload kind detection. Additional information available for the payload kind detection. An enumerable of zero or one payload kinds depending on whether the metadata payload kind was detected or not. Enumerates the behavior of readers when reading undeclared property. The default behavior - the reader will fail if it finds a property which is not declared by the model and the type is not open. The reader will skip reading the property if it's not declared by the model and the current type is not open. This flag can only be used when reading responses. All information about the undeclared property is going to be ignored, so for example ATOM metadata related to that property will not be reported either. The reader will read and report link properties which are not declared by the model. This flag can only be used when reading responses. If a link property in the payload is defined in the model it will be read as usual. If it is not declared it will still be read and reported, but it won't be validated against the model. Link properties are: - Navigation links - Association links - Stream properties This type provides constants used in URI query expressions. "$it" keyword for expressions. "add" keyword for expressions. "and" keyword for expressions. "asc" keyword for expressions. "desc" keyword for expressions. "div" keyword for expressions. "mod" keyword for expressions. "mul" keyword for expressions. "not" keyword for expressions. "or" keyword for expressions. "sub" keyword for expressions. '-' constant to represent an negate unary operator. '=' constant to represent an assignment in name=value. ',' constant to represent an value list separator. '/' constant to represent the forward slash used in a query. '(' constant to represent an open parenthesis. ')' constant to represent an closed parenthesis. '?' constant to represent the start of the query part. '&' constant to represent the concatenation of query parts. '\'' constant to represent a single quote as prefix/suffix for literals. "''" constant to represent a single-quote escape character in a string literal. " " constant to represent a space character in a Uri query part. The 'allpages' value for the '$inlinecount' query option The 'none' value for the '$inlinecount' query option "eq" keyword for expressions. "false" keyword for expressions. "gt" keyword for expressions. "ge" keyword for expressions. "lt" keyword for expressions. "le" keyword for expressions. "ne" keyword for expressions. "null" keyword for expressions. "true" keyword for expressions. "cast" function "isof function Spatial length function Spatial intersects function. "INF" literal used to represent infinity. "NaN" literal used to represent not-a-number values. 'datetime' constant prefixed to datetime literals. 'datetimeoffset' constant prefixed to datetimeoffset literals. 'time' constant prefixed to time literals. 'geometry' constant prefixed to geometry literals. 'geography' constant prefixed to geography literals. 'guid' constant prefixed to guid literals. 'X': Prefix to binary type string representation. 'binary' constant prefixed to binary literals. 'L': Suffix for long (int64) type's string representation 'f': Suffix for float (single) type's string representation 'D': Suffix for double (Real) type's string representation 'M': Suffix for decimal type's string representation 'datetime' constant prefixed to datetime literals. the filter query option the orderby query option the top query option the skip query option the inlinecount query option the select query option the expand query option A stream handed to clients from ODataBatchOperationMessage.GetStream or ODataBatchOperationMessage.GetStreamAsync. This stream communicates status changes to the owning batch writer (via IODataBatchOperationListener) to properly flush buffered data and move the batch writer's state machine forward. A stream handed to clients from ODataBatchOperationMessage.GetStream or ODataBatchOperationMessage.GetStreamAsync. This stream communicates status changes to an IODataBatchOperationListener instance. Listener interface to be notified of operation changes. Constructor. Listener interface to be notified of operation changes. Seeks the stream. This operation is not supported by this stream. The offset to seek to. The origin of the seek operation. The new position in the stream. Disposes the object. True if called from Dispose; false if called form the finalizer. Validates that the stream was not already disposed. The batch stream underlying this operation stream. Constructor. The underlying stream to write the message to. Listener interface to be notified of operation changes. Sets the length of the stream. The length in bytes to set. Writes to the stream. The buffer to get data from. The offset in the buffer to start from. The number of bytes to write. Writes to the stream. The buffer to get data from. The offset in the buffer to start from. The number of bytes to write. The callback to be called when the asynchronous operation completes. A custom state object to be associated with the asynchronous operation. An for the asynchronous writing of the buffer to the stream. Finish the asynchronous write operation. The returned from BaginWrite. Reads data from the stream. This operation is not supported by this stream. The buffer to read the data to. The offset in the buffer to write to. The number of bytes to read. The number of bytes actually read. Flush the stream to the underlying batch stream. Dispose the operation stream. If 'true' this method is called from user code; if 'false' it is called by the runtime. Determines if the stream can read - this one can't Determines if the stream can seek - this one can't Determines if the stream can write - this one can Returns the length of the stream. Gets or sets the position in the stream. Setting of the position is not supported since the stream doesn't support seeking. A stream handed to clients from ODataBatchOperationMessage.GetStream or ODataBatchOperationMessage.GetStreamAsync. This stream communicates status changes to the owning batch reader (via IODataBatchOperationListener) to prevent clients to use the batch reader while a content stream is still in use. The batch stream underlying this operation stream. Constructor. The underlying stream to read from. Listener interface to be notified of operation changes. Flush the stream; not supported for a read stream. Sets the length of the stream. The length in bytes to set. Writes to the stream. The buffer to get data from. The offset in the buffer to start from. The number of bytes to write. Create a batch operation read stream over the specified batch stream with a given content length. The batch stream underlying the operation stream to create. The batch operation listener. The content length of the operation stream. A to read the content of a batch operation from. Create a batch operation read stream over the specified batch stream using the batch delimiter to detect the end of the stream. The batch stream underlying the operation stream to create. The batch operation listener. A to read the content of a batch operation from. Determines if the stream can read - this one can Determines if the stream can seek - this one can't Determines if the stream can write - this one can't Returns the length of the stream. Not supported by this stream. Gets or sets the position in the stream. Not supported by this stream. A batch operation stream with the content length specified. The length of the operation content. Constructor. The underlying batch stream to write the message to. Listener interface to be notified of operation changes. The total length of the stream. Reads data from the stream. The buffer to read the data to. The offset in the buffer to write to. The number of bytes to read. The number of bytes actually read. A batch operation read stream with no content length so we have to check for the boundary. true if the stream has been exhausted and no further reads can happen; otherwise false. Constructor. The underlying batch stream to write the message to. Listener interface to be notified of operation changes. Reads data from the stream. The buffer to read the data to. The offset in the buffer to write to. The number of bytes to read. The number of bytes actually read. Helper methods used by the ODataBatchWriter and ODataBatchReader (and related classes). Creates the URI for a batch request operation. The uri to process. The base Uri to use. An optional custom URL resolver to resolve URLs for writing them into the payload. An URI to be used in the request line of a batch request operation. It uses the first and falls back to the defaullt URI building schema if the no URL resolver is specified or the URL resolver returns null. In the default scheme, the method either returns the specified if it was absolute, or it's combination with the if it was relative. This method will fail if no custom resolution is implemented and the specified is relative and there's no base URI available. Creates a batch operation stream from the specified batch stream. The batch stream to create the operation read stream for. The headers of the current part; based on the header we create different, optimized stream implementations. The operation listener to be passed to the newly created read stream. A new instance. Creates a batch operation write stream over the specified output stream. The output stream to create the operation write stream over. The operation listener to be passed to the newly created write stream. A new instance. Grows the specified byte array by the specified amount. The byte array to grow. The number of bytes currently in the buffer. The number of bytes to be added to the array. An enumeration representing the result of a scan operation through the batch reader stream's buffer. No match with the requested boundary was found (not even a partial one). A partial match with the requested boundary was found. A complete match with the requested boundary was found. This is only returned if we could also check whether the boundary is an end boundary or not; otherwise a partial match is returned. This class represents the internal buffer of the . The size of the look-ahead buffer. Length of the longest supported line terminator character sequence; makes the code easier to read. The length of two '-' characters to make the code easier to read. The byte array storing the actual bytes of the buffer. The current position inside the buffer. This is the position of the byte that is the next to be read. The number of (not yet consumed) bytes currently in the buffer. Skip to the specified position in the buffer. Adjust the current position and the number of bytes in the buffer. The position to skip to. Refills the buffer from the specified stream. The stream to refill the buffer from. The index in the current buffer starting from which the currently buffered data should be preserved. true if the underlying stream got exhausted while refilling. This method will first shift any data that is to be preserved to the beginning of the buffer and then refill the rest of the buffer from the . Scans the current buffer for a line end. The start position of the line terminator or -1 if not found. The end position of the line terminator or -1 if not found. An enumeration value indicating whether the line termintor was found completely, partially or not at all. Scans the current buffer for the specified boundary. The boundary strings to search for; this enumerable is sorted from the inner-most boundary to the top-most boundary. The boundary strings don't include the leading line terminator or the leading dashes. Stop if no boundary (or boundary start) is found after this number of bytes. The start position of the boundary or -1 if not found. Note that the start position is the first byte of the leading line terminator. The end position of the boundary or -1 if not found. Note that the end position is the last byte of the trailing line terminator. true if the boundary is an end boundary (followed by two dashes); otherwise false. true if the detected boundary is the parent boundary; otherwise false. An enumeration value indicating whether the boundary was completely, partially or not found in the buffer. Scans the current buffer for a boundary start, which is either a line feed or two dashes (since we don't require the leading line feed). The index at which to start scanning for the boundary start. Stop if no boundary start was found after this number of non end-of-line bytes. The start position of the line end or -1 if not found. The start position of the boundary delimiter or -1 if not found. An enumeration value indicating whether the boundary start was completely, partially or not found in the buffer. Scans the current buffer for a line end. The index at which to start scanning for the line terminator. Stop if no line end (or beginning of line end) was found after this number of non end-of-line bytes. true if only whitespace data bytes are expected before the end-of-line characters; otherwise false. The start position of the line terminator or -1 if not found. The end position of the line terminator or -1 if not found. true if the end of the buffer was reached while scanning for the line end; otherwise false. An enumeration value indicating whether the line termintor was found completely, partially or not at all. This method only returns if we found the start of a line terminator at the last character in the buffer. Check whether the bytes in the buffer at the specified start index match the expected boundary string. The start of the line feed preceding the boundary (if present). The start position of the boundary delimiter. The boundary string to check for. If a match is detected, the start of the boundary delimiter, i.e., either the start of the leading line feed or of the leading dashes. If a match is detected, the position of the boundary end; otherwise -1. true if the detected boundary is an end boundary; otherwise false. An indicating whether a match, a partial match or no match was found. Try to match the specified boundary string starting at the specified position. The boundary string to search for; this does not include the leading line terminator or the leading dashes. The index at which to start matching the boundary. The number of characters to match. true if the boundary string is used in an end boundary; otherwise false. true if it was established that the buffer starting at matches the ; otherwise false. This method also returns false if the boundary string was completly matched against the buffer but it could not be determined whether it is used in an end boundary or not. Shifts all bytes in the buffer after a specified start index to the beginning of the buffer. The start index where to start shifting. The byte array that acts as the actual storage of the buffered data. The current position inside the buffer. This is the position of the byte that is the next to be read. The number of (not yet consumed) bytes currently in the buffer. Indexer into the byte buffer. The position in the buffer to get. The byte at position in the buffer. Class used by the to read the various pieces of a batch payload. This stream separates a batch payload into multiple parts by scanning ahead and matching a boundary string against the current payload. The default length for the line buffer byte array used to read lines; expecting lines to normally be less than 2000 bytes. The byte array used for reading lines from the stream. We cache the byte array on the stream instance rather than allocating a new one for each ReadLine call. The input context to read the content from. The boundary string for the batch structure itself. The buffer used by the batch reader stream to scan for boundary strings. The encoding to use to read from the batch stream. The boundary string for a changeset (or null if not in a changeset part). The encoding for a given changeset. true if the underlying stream was exhausted during a read operation; we won't try to read from the underlying stream again once it was exhausted. Constructor. The input context to read the content from. The boundary string for the batch structure itself. The encoding to use to read from the batch stream. Resets the changeset boundary at the end of the changeset. Skips all the data in the stream until a boundary is found. true if the boundary that was found is an end boundary; otherwise false. true if the detected boundary is a parent boundary (i.e., the expected boundary is missing). true if a boundary was found; otherwise false. Reads from the batch stream while ensuring that we stop reading at each boundary. The byte array to read bytes into. The offset in the buffer where to start reading bytes into. The number of bytes to read. The number of bytes actually read. Reads from the batch stream without checking for a boundary delimiter since we know the length of the stream. The byte array to read bytes into. The offset in the buffer where to start reading bytes into. The number of bytes to read. The number of bytes actually read. Reads the headers of a part. true if the start of a changeset part was detected; otherwise false. Reads the headers of a batch part or an operation. A dictionary of header names to header values; never null. Read and return the next line from the batch stream, skipping all empty lines. This method will throw if end-of-input was reached while looking for the next line. The text of the first non-empty line (not including any terminating newline characters). Parses a header line and validates that it has the correct format. The header line to validate. The name of the header. The value of the header. Reads a line (all bytes until a line feed) from the underlying stream. Returns the string that was read from the underyling stream (not including a terminating line feed), or null if the end of input was reached. Ensure that a batch encoding exists; if not, detect it from the first couple of bytes of the stream. Detect the encoding based data from the stream. The encoding discovered from the bytes in the buffer or the fallback encoding. We don't have to skip a potential preamble of the encoding since the batch reader will skip over everything (incl. the potential preamble) until it finds the first boundary. Reads and validates the headers of a batch part. true if the headers indicate a changset part; otherwise false. A dictionary of header names to header values; never null. Validates the headers that have been read for a part. The set of headers to validate. true if the headers indicate a changset part; otherwise false. The set of validated headers. An operation part is required to have content type 'application/http' and content transfer encoding 'binary'. A changeset is required to have content type 'multipart/mixed'. Note that we allow additional headers for batch parts; clients of the library can choose to be more strict. Parse the content type header value to retrieve the boundary and encoding of a changeset. The content type to parse. The boundary string for the batch structure itself. The boundary string for the current changeset (only set when reading a changeset or an operation in a changeset). When not reading a changeset (or operation in a changeset) this field is null. The current boundary string to be used for reading with delimiter. This is the changeset boundary when reading a changeset or the batch boundary otherwise. The current encoding to use when reading from the stream. This is the changeset encoding when reading a changeset or the batch encoding otherwise. Enumeration with all the states the batch reader can be in. The state the batch reader is in after having been created. The batch reader detected an operation. In this state the start boundary, the request/response line and the operation headers have already been read. The batch reader detected the start of a change set. In this state the start boundary and the change set headers have already been read. The batch reader completed reading a change set. The batch reader completed reading the batch payload. The batch reader cannot be used in this state anymore. The batch reader encountered an error reading the batch payload. The batch reader cannot be used in this state anymore. ODataParameterWriter for the Verbose JSON format. The output context to write to. The JSON property and value serializer to use. Constructor. The output context to write to. The function import whose parameters will be written. Check if the object has been disposed; called from all public API methods. Throws an ObjectDisposedException if the object has already been disposed. Flush the output. Start writing an OData payload. Finish writing an OData payload. Writes a value parameter (either primitive or complex) The name of the parameter to write. The value of the parameter to write. The expected type reference of the parameter value. Creates a format specific to write the value of a collection parameter. The name of the collection parameter to write. The type reference of the expected item type or null if no expected item type exists. The newly created . Class to represent a null value with or without type information for URI paremeters. This class is only intended for use as a sentinal for null values in URI parameters. It cannot be used elsewhere. String representation of the type of this null value. 'null' indicates that no type information was provided. Handles serialization and deserialization for types derived from Geometry. This file is currently compiled by ODataLib and Astoria server, because it contains functionality related to both serialization and deserialization, but deserialization is not yet integrated into Astoria. Once that integration happens this functionality should be fully contained within ODataLib only. Interface used for serialization and deserialization of primitive types. Create an instance of a primitive type from the value in an Xml reader. The Xml reader to use to read the value. An instance of the primitive type. Write the Atom representation of an instance of a primitive type to an XmlWriter. The instance to write. The Xml writer to use to write the instance. Write the Verbose Json representation of an instance of a primitive type to a json writer. The instance to write. Instance of JsonWriter. Type name of the instance to write. If the type name is null, the type name will not be written in the payload. The OData protocol version to be used for writing payloads. Write the Json Lite representation of an instance of a primitive type to a json writer. The instance to write. Instance of JsonWriter. The OData protocol version to be used for writing payloads. Create a Geometry instance from the value in an Xml reader. The Xml reader to use to read the value. In order to be consistent with how we are reading other types of property values elsewhere in the product, the reader is expected to be placed at the beginning of the element when entering this method. After this method call, the reader will be placed at the EndElement, such that the next Element will be read in the next Read call. The deserializer that uses this value expects the reader to be in these states when entering and leaving the method. Geometry instance that was read. Write the Atom representation of an instance of a primitive type to an XmlWriter. The instance to write. The Xml writer to use to write the instance. Write the Verbose Json representation of an instance of a primitive type to a json object. The instance to write. Instance of JsonWriter. Type name of the instance to write. If the type name is null, the type name will not be written in the payload. The OData protocol version to be used for writing payloads. Write the Json Lite representation of an instance of a primitive type to a json object. The instance to write. Instance of JsonWriter. The OData protocol version to be used for writing payloads. OData ATOM deserializer for ATOM metadata on feeds. Base class for all OData ATOM Metadata deserializers. The empty namespace used for attributes in no namespace. Schema namespace for Atom. Constructor. The ATOM input context to read from. Reads a person (author/contributor) element. The EPM target path segment for the element to read, or null if no EPM for that element is defined. The person metadata object with the read values. Pre-Condition: XmlNodeType.Element (atom:contributor/atom:author) - the atom:author/atom:contributor element to read. Post-Condition: Any - the node after the atom:author/atom:contributor element which was read. Reads the element value as DateTimeOffset value. The DateTimeOffset value of the element. Pre-Condition: XmlNodeType.Element - the element which value to read. Post-Condition: Any - the node after the element. This method is not used in WCF DS client mode. Reads the element value as of a date construct as string value. The string value of the date construct element. Pre-Condition: XmlNodeType.Element - the element which value to read. Post-Condition: Any - the node after the element. This method is only used in WCF DS client mode. Read the ATOM text construct element. The element read represented as ATOM text construct. Pre-Condition: XmlNodeType.Element - the element to read. Post-Condition: Any - the node after the element. Reads the value of the current XML element and returns it as a string. The string value read. Pre-Condition: XmlNodeType.Element - the element which value to read. Post-Condition: Any - the node after the element. Reads an "atom:title" element and returns an . An with the title information. Pre-Condition: XmlNodeType.Element - The start of the atom:title element. Post-Condition: Any - The next node after the atom:title element. Determines if we need to read a child element (either for EPM or for ATOM metadata). The parent EPM target path segment. The name of the element/segment to read. The EPM target path subsegment which describes the element, or null if there's none. true if the subelement should be read, false otherwise. Flag indicating if ATOM metadata is required to be read by the user. The empty namespace used for attributes in no namespace. Constructor. The ATOM input context to read from. Whether this deserializer is reading feed metadata for a source element (true) or a feed element (false). Reads an element in the ATOM namespace in feed or source content. The atom feed metadata object to store metadata details in. Pre-Condition: XmlNodeType.Element (atom:*) - the ATOM element to read. Post-Condition: Any - the node after the ATOM element which was read. If the the property InSourceElement is true (i.e., we're reading within source content), then the value of the atom:id element will be stored in the feed metadata as SourceId, otherwise it will be ignored. Reads the atom:link element and returns a new ATOM link metadata object. The value of the rel attribute for the link element. The value of the href attribute for the link element. An instance storing the information about this link. Pre-Condition: XmlNodeType.Element (atom:link) - the atom:link element to read. Post-Condition: Any - the node after the ATOM element which was read. Reads an atom:author element in a feed. The feed metadata to augment. Pre-Condition: XmlNodeType.Element (atom:author) - the atom:author element to read. Post-Condition: Any - the node after the atom:author element which was read. Reads an atom:category element in a feed. The feed metadata to augment. Pre-Condition: XmlNodeType.Element (atom:category) - the atom:category element to read. Post-Condition: Any - the node after the atom:category which was read. Reads an atom:contributor element in a feed. The feed metadata to augment. Pre-Condition: XmlNodeType.Element (atom:contributor) - the atom:contributor element to read. Post-Condition: Any - the node after the atom:contributor element which was read. Reads an atom:generator element in a feed. The feed metadata to augment. Pre-Condition: XmlNodeType.Element (atom:generator) - the atom:generator element to read. Post-Condition: Any - the node after the atom:generator element which was read. Reads an atom:icon element in a feed. The feed metadata to augment. Pre-Condition: XmlNodeType.Element (atom:icon) - the atom:icon element to read. Post-Condition: Any - the node after the atom:icon element which was read. Reads an atom:id element in a source element. The feed metadata to augment. Pre-Condition: XmlNodeType.Element (atom:icon) - the atom:icon element to read. Post-Condition: Any - the node after the atom:icon element which was read. Reads an atom:link element into the Links collection of feed metadata (i.e., links that are not special to the OData protocol). The feed metadata to augment. Pre-Condition: XmlNodeType.Element (atom:link) - the atom:link element to read. Post-Condition: Any - the node after the atom:link element which was read. Reads an atom:logo element in a feed. The feed metadata to augment. Pre-Condition: XmlNodeType.Element (atom:logo) - the atom:logo element to read. Post-Condition: Any - the node after the atom:logo element which was read. Reads an atom:rights element in a feed. The feed metadata to augment. Pre-Condition: XmlNodeType.Element (atom:rights) - the atom:rights element to read. Post-Condition: Any - the node after the atom:rights element which was read. Reads an atom:subtitle element in a feed. The feed metadata to augment. Pre-Condition: XmlNodeType.Element (atom:subtitle) - the atom:subtitle element to read. Post-Condition: Any - the node after the atom:subtitle element which was read. Reads an atom:title element in a feed. The feed metadata to augment. Pre-Condition: XmlNodeType.Element (atom:title) - the atom:title element to read. Post-Condition: Any - the node after the atom:title element which was read. Reads an atom:updated element in a feed. The feed metadata to augment. Pre-Condition: XmlNodeType.Element (atom:updated) - the atom:updated element to read. Post-Condition: Any - the node after the atom:updated element which was read. Reads an atom:* element whose value is a URI. The which was read. Fails with the appropriate exception message if the given value is not null. The metadata value to ensure is null. Whether this deserializer is reading feed metadata for a source element (true) or a feed element (false). OData parameter reader for the Verbose JSON format. The input to read the payload from. The property and value deserializer to read input with. Constructor. The input to read the payload from. The function import whose parameters are being read. Implementation of the reader logic when in state 'Start'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.None: assumes that the JSON reader has not been used yet. Post-Condition: When the new state is Value, the reader is positioned at the closing '}' or at the name of the next parameter. When the new state is Entry, the reader is positioned at the starting '{' of the entry payload. When the new state is Feed or Collection, the reader is positioned at the starting '[' of the feed or collection payload. Implementation of the reader logic on the subsequent reads after the first parameter is read. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.Property or JsonNodeType.EndObject: assumes the last read puts the reader at the begining of the next parameter or at the end of the payload. Post-Condition: When the new state is Value, the reader is positioned at the closing '}' or at the name of the next parameter. When the new state is Entry, the reader is positioned at the starting '{' of the entry payload. When the new state is Feed or Collection, the reader is positioned at the starting '[' of the feed or collection payload. Creates an to read the collection with type . Expected item type reference of the collection to read. An to read the collection with type . Checks to see if we are at the end of the parameters payload. Returns true if we are at the ending '}' of the parameters payload. Reads the end '}' of the parameters payload. Reads the next parameter from the parameters payload. OData ATOM deserializer for ATOM metadata in a service document Schema namespace for Atom. The name of the 'category' element in a service document. The name of the 'href' attribute in an 'app:categories' element. The name of the 'fixed' attribute in an 'app:categories' element. The name of the 'scheme' attribute in an 'app:categories' or 'atom:category' element. The name of the 'term' attribute in an 'atom:category' element. The name of the 'label' attribute in an 'atom:category' element. The empty namespace Constructor. The ATOM input context to read from. Reads an atom:title element and adds the new information to . The non-null workspace metadata object to augment. Pre-Condition: XmlNodeType.Element - The start of the atom:title element. Post-Condition: Any - The next node after the atom:title element. Reads an atom:title element and adds the new information to and (if ATOM metadata reading is on) . The collection metadata object to augment, or null if metadata reading is not on. The non-null collection info object being populated. Pre-Condition: XmlNodeType.Element - The start of the title element. Post-Condition: Any - The next node after the title element. Reads an app:categories element as well as each atom:category element contained within it, and adds the new information to . The non-null collection metadata object to augment. Pre-Condition: XmlNodeType.Element - The start of the app:categories element. Post-Condition: Any - The next node after the app:categories element. Reads an "app:accept" element and adds the new information to . The non-null collection metadata object to augment. Pre-Condition: XmlNodeType.Element - The start of the app:accept element. Post-Condition: Any - The next node after the app:accept element. Reads an "atom:category" element and returns the data as an object. An object with its properties filled in according to what was found in the XML. Pre-Condition: XmlNodeType.Element - The start of the atom:category element. Post-Condition: Any - The next node after the atom:category element. Enumeration of all possible states of an . The reader is at the start; nothing has been read yet. In this state the Name and Value properties of the returns null. The reader read a primitive or a complex parameter. In this state the Name property of the returns the name of the parameter and the Value property of the returns the value read (e.g. a primitive value, an ODataComplexValue or null). The reader is reading a collection parameter. In this state the Name property of the returns the name of the parameter and the Value property of the returns null. The CreateCollectionReader() method on the must be called to get the reader to read the collection value. The reader has thrown an exception; nothing can be read from the reader anymore. In this state the Name and Value properties of the return null. The reader has completed; nothing can be read anymore. In this state the Name and Value properties of the return null. Implementation of the batch-specific URL resolver that resolves cross-referencing URLs properly. Supports custom resolution of URLs found in the payload. This interface can be implemented on messages (see and ). When a message implementing this interface is passed to an or , the message writer/reader will use this interface for custom URL resolution. On writers this means that whenever a URI is written into the payload the resolution method on this interface is called to resolve a base URI and a payload URI to the actual URI to be written to the payload. If the method returns null from a resolution call the default resolution will be used. On readers this means that a base URI (either from the payload or the reader settings) and the URI read from the payload are passed to the method. The result is what is being reported on the OData OM instances. Again if the resolution method returns null the default resolution kicks in. Implements a custom URL resolution scheme. This method returns null if no custom resolution is desired. If the method returns a non-null URL that value will be used without further validation. An instance that reflects the custom resolution of the method arguments into a URL or null if no custom resolution is desired; in that case the default resolution is used. The (optional) base URI to use for the resolution. The URI read from the payload. The URL resolver from the batch message. A hashset with all content IDs used so far in the batch; this is used for cross-referencing URL resolution. Constructor. The URL resolver from the batch message. Method to implement a custom URL resolution scheme. This method returns null if not custom resolution is desired. If the method returns a non-null URL that value will be used without further validation. The (optional) base URI to use for the resolution. The URI read from the payload. A instance that reflects the custom resolution of the method arguments into a URL or null if no custom resolution is desired; in that case the default resolution is used. Add the content ID to the hashset of valid content IDs. The (non-null) content ID to add. Checks whether a given (non-null) content ID is already in the content ID cache. The content ID to check for. true if the content ID cache already contains a content ID with value ; otherwise false. Resets the cache of content IDs. This is called at the end of each changeset since content IDs are only unique within a changeset. The URL resolver from the batch message. Exception type representing exception when Content-Type of a message is not supported. Creates a new instance of the class. The Message property is initialized to a system-supplied message that describes the error. This message takes into account the current system culture. Creates a new instance of the class. Plain text error message for this exception. Creates a new instance of the class. Plain text error message for this exception. Exception that caused this exception to be thrown. Utility functions for writing values for use in a URL. Converts a primitive to a string for use in a Url. Value to convert. OData version to be compliant with. A string representation of to be added to a Url. Converts the given string to an ODataComplexValue or ODataCollectionValue and returns it. Tries in both JSON light and Verbose JSON. Does not handle primitive values. Value to be deserialized. ODataVersion to be compliant with. Model to use for verification. Expected type reference from deserialization. If null, verification will be skipped. An ODataComplexValue or ODataCollectionValue that results from the deserialization of . Verifies that the given is or can be coerced to , and coerces it if necessary. An EDM primitive value to verify. Model to verify against. Expected type reference. The version to use for reading. Coerced version of the . Converts a to a string for use in a Url. Instance to convert. Model to be used for validation. User model is optional. The EdmLib core model is expected as a minimum. Version to be compliant with. ODataFormat to use for the format of the literal. A string representation of to be added to a Url. Converts an to a string for use in a Url. Instance to convert. A string representation of to be added to a Url. Converts a to a string for use in a Url. Instance to convert. Model to be used for validation. User model is optional. The EdmLib core model is expected as a minimum. Version to be compliant with. Collection requires >= V3. ODataFormat to use for the format of the literal. A string representation of to be added to a Url. Write a literal value in JSON Verbose format. EDM Model to use for validation and type lookups. Settings to use when writing. TextWriter to use as the output for the value. Delegate to use to actually write the value. Write a literal value in JSON Light format. EDM Model to use for validation and type lookups. Settings to use when writing. TextWriter to use as the output for the value. Delegate to use to actually write the value. Coerces the given to the appropriate CLR type based on . Primitive value to coerce. Edm primitive type to check against. as the corresponding CLR type indicated by , or null if unable to coerce. URI Utility methods. Converts the given to a corresponding CLR type. Expects the to have already been properly unescaped from an actual Uri. Value from a Uri to be converted. Version to be compliant with. A CLR object that the represents. Converts the given to a corresponding CLR type. Expects the to have already been properly unescaped from an actual Uri. Value from a Uri to be converted. Version to be compliant with. Optional model to perform verification against. Optional IEdmTypeReference to perform verification against. Callers must provide a containing this type if it is specified. A CLR object that the represents. Converts the given object to a string for use in a Uri. Does not perform any of the escaping that provides. No type verification is used. Value to be converted. Version to be compliant with. A string representation of for use in a Url. Converts the given object to a string for use in a Uri. Does not perform any of the escaping that provides. Will perform type verification based on the given model if possible. Value to be converted. Version to be compliant with. Optional model to perform verification against. A string representation of for use in a Url. Converts the given object to a string in the specified format for use in a Uri. Does not perform any of the escaping that provides. Will perform type verification based on the given model if possible. Value to be converted. Version to be compliant with. Optional model to perform verification against. ODataFormat to use for structured values such as complex types and collections. A string representation of for use in a Url. The RAW OData format. The text representation - the name of the format. The name of the format. Detects the payload kinds supported by this format for the specified message payload. The response message with the payload stream. Additional information available for the payload kind detection. The set of s that are supported with the specified payload. Detects the payload kinds supported by this format for the specified message payload. The request message with the payload stream. Additional information available for the payload kind detection. The set of s that are supported with the specified payload. Creates an instance of the input context for this format. The to read. The message to use. The content type of the message to read. The encoding to use. Configuration settings of the OData reader. The OData protocol version to be used for reading the payload. true if reading a response message; otherwise false. The model to use. The optional URL resolver to perform custom URL resolution for URLs read from the payload. Format specific state stored during payload kind detection using the . The newly created input context. Creates an instance of the output context for this format. The message to use. The specific media type being written. The encoding to use. Configuration settings of the OData writer. true if writing a response message; otherwise false. The model to use. The optional URL resolver to perform custom URL resolution for URLs written to the payload. The newly created output context. Detects the payload kind(s) from the message stream. The content type of the message. An enumerable of zero, one or more payload kinds that were detected from looking at the payload in the message stream. Semantic node that represents a single-value open property access, which is not bound to an EDM model. The value containing this property. The name of the open property to be bound outside the EDM model. Constructs a . The value containing this property. The name of the open property to be bound outside the EDM model. Throws if the input source or openPropertyName is null. Accept a that walks a tree of s. Type that the visitor will return after visiting this token. An implementation of the visitor interface. An object whose type is determined by the type parameter of the visitor. Throws if the input visitor is null. Gets the value containing this property. Gets the name of the open property to be bound outside the EDM model. Gets the type of the single value this node represents. The value of this property will always be null for open properties. Gets the kind of this query node. Enumeration used to identify text content of syndication item. Plaintext HTML XHTML Enumeration type that is used to identify the syndication item element or attribute in the Open Data Protocol (OData) feed to which an entity property is mapped. Potentially the following atom specific elements could also be considered: * Content? * Id * Source? User specified a non-syndication property author/email author/name author/uri contributor/email contributor/name contributor/uri updated published rights summary title Attribute that specifies a custom mapping between properties of an entity type and elements of an entry in an Open Data Protocol (OData) feed returned by the data service.  Source property path. Target Xml element/attribute. If mapping to syndication element, the name of syndication item. If mapping to syndication content, the content type of syndication item. If mapping to non-syndication element/attribute, the namespace prefix for the target element/attribute. If mapping to non-syndication element/attribute, the namespace for the target element/attribute. The content can optionally be kept in the original location along with the newly mapping location by setting this option to true, false by default. Creates a new instance of the . The name of the property, as string, of the entity type that is mapped to the specified property of the feed item. A value that represents the element in the feed to which to map the property. This value must be set to None if the is not null. A value that identifies the format of the content to display in the feed. Boolean value that is true when the property being mapped must appear both in its mapped-to location and in the content section of the feed. Creates an instance of the to map a property to a custom feed element. The name of the property of the entity type, as string, that is mapped to the specified property in the feed. The name of the target, as string, in the resulting feed to which the property is mapped. This parameter, together with , specifies the namespace in which the element exists. Specifies the namespace URI of the element, as string, specified by the property. Boolean value that is true when the property being mapped must appear both in its mapped-to location and in the content section of the feed. Gets the name of the property of the syndication item that will be mapped to the specified element of the feed. String value that contains property name. Gets the name of the custom target in the feed to which the property is mapped. String value with target XML element or attribute. Gets the syndication item in the entry targeted by the mapping. A value that is the target of the mapping. Gets a string value that, together with , specifies the namespace in which the element exists. String value that contains the target namespace prefix. Gets a string value that specifies the namespace URI of the element specified by the property. String that contains the namespace URI. Gets the type of content of the property mapped by . A string that identifies the type of content in the feed element. Gets a Boolean value that indicates whether a property value should be repeated both in the content section of the feed and in the mapped location. A value that is true when the property is mapped into both locations in the feed; otherwise, false. Enumeration for the different kinds of reader and writer behaviors supported in the OData library. The default behavior of the OData library. The behavior of the WCF Data Services server. The behavior of the WCF Data Services client. Class that captures all the information needed to make readers behave differently when used inside of WCF Data Services or outside. The default reader behavior for the OData library. The API behavior kind of this behavior. Custom type resolver used by the WCF DS Client. This function is used instead of calling the IEdmModel.FindType. The first parameter to the function is the expected type (the type infered from the parent property or specified by the external caller). The second parameter is the type name from the payload. The function should return the resolved type, or null if no such type was found. If set to true, allows the writers to write duplicate properties of entries and complex values (i.e., properties that have the same name). Defaults to 'false'. true if the server uses a V1 provider; otherwise false. Used to specify custom type scheme. Used for compatibility with WCF DS Client. Used to specify custom data namespace. Used for compatibility with WCF DS Client. The format behavior kind of this behavior. Determines whether operations bound to the given type must be container qualified. Constructor. The format behavior kind of this behavior. The API behavior kind of this behavior. If set to true, allows the writers to write duplicate properties of entries and complex values (i.e., properties that have the same name). Defaults to 'false'. true if the server uses a V1 provider; otherwise false. Custom type resolver which takes both expected type and type name. This function is used instead of the IEdmModel.FindType is it's specified. The first parameter to the function is the expected type (the type infered from the parent property or specified by the external caller). The second parameter is the type name from the payload. The function should return the resolved type, or null if no such type was found. Custom data namespace. Custom type scheme to use when resolving types. Create the reader behavior for the WCF Data Services client. Custom type resolver which takes both expected type and type name. This function is used instead of the IEdmModel.FindType is it's specified. The first parameter to the function is the expected type (the type infered from the parent property or specified by the external caller). The second parameter is the type name from the payload. The function should return the resolved type, or null if no such type was found. Custom data namespace. Custom type scheme to use when resolving types. The created reader behavior. Create the reader behavior for the WCF Data Services server. true if the server uses a V1 provider; otherwise false. The created reader behavior. Resets the format behavior of the current reader behavior to the default format behavior. Get the default reader behavior for the OData library. The default reader behavior. Used to specify custom type scheme. Used for compatibility with WCF DS Client. Used to specify custom data namespace. Used for compatibility with WCF DS Client. If set to true, allows the writers to write duplicate properties of entries and complex values (i.e., properties that have the same name). Defaults to 'false'. Independently of this setting duplicate property names are never allowed if one of the duplicate property names refers to a named stream property, an association link or a collection. true if the server is using V1 provider; false otherwise. Custom type resolver used by the WCF DS Client. The format behavior kind of this behavior. The API behavior kind of this behavior. Determines whether operations bound to the given entity type must be container qualified. Class that captures all the information needed to make writer behave differently when used inside of WCF Data Services or outside. The default writer behavior for the OData library. The API behavior kind of this behavior. true if the server uses a V1 provider; otherwise false. true to allow null values for non-nullable primitive types; otherwise false. If set to true, allows the writers to write duplicate properties of entries and complex values (i.e., properties that have the same name). Defaults to 'false'. Used to specify custom type scheme. Used for compatibility with WCF DS Client. Used to specify custom data namespace. Used for compatibility with WCF DS Client. The format behavior kind of this behavior. Constructor. The format behavior kind of this behavior. The API behavior kind of this behavior. true if the server uses a V1 provider; otherwise false. true to allow null values for non-nullable primitive types; otherwise false. If set to true, allows the writers to write duplicate properties of entries and complex values (i.e., properties that have the same name). Custom data namespace. Custom type scheme to use when resolving types. Create the writer behavior for the WCF Data Services client. Custom data namespace. Custom type scheme to use when resolving types. The created writer behavior. Create the writer behavior for the WCF Data Services server. true if the server uses a V1 provider; otherwise false. The created writer behavior. Resets the format behavior of the current writer behavior to the default format behavior. Get the default writer behavior. The default writer behavior. Used to specify custom type scheme. Used for compatibility with WCF DS Client. Used to specify custom data namespace. Used for compatibility with WCF DS Client. EPM mappings are defined on entity types but not on complex types. For entity types, the EPM mapping for each of its primitive properties stay the same. For complex types however, the EPM mappings changes depending on the entity type each complex property is declared on. For example, if the "Customer" entity type has the properties Address1 and Address2 both of the complex type "Address". If properties in Address1 are not mapped while properties in Address2 are mapped with KeepInContent=false, when we serialze the Address type in atom format, we keep properties of Address1 in content while skipping properties of Address2 from the content. Thus the same complex type can get serialized differently for each instance of the type. Astoria has a bug for V1 providers in which it creates and caches EPM information on the complex type itself the first time it serializes an instance of the complex type. So subsequent writes will serialize the complex type the same way regardless of its EPM mapping. This creates the following 2 problems: 1. If a primitive property of a complex type is not part of a EPM mapping or has KeepInContent=true the first time it's serialized, the property will always be serialized in the content for the remaining lifetime of the service, even for instances where KeepInContent=false. 2. If a primitive property of a complex type has KeepInContent=false the first time it's serialized, the property will always be missing in the content for the remaining lifetime of the service, even for instances that do not belong to a EPM mapping or have KeepInContent=true. Unfortunately we cannot fix issue 1 because it can break existing third party clients. We have to fix issue 2 because it is a data corruption issue. The solution is to remember on the first write whether a primitive property of a complex type is serialized in content or not. On subsequent writes to the same property, we will always keep it in content if the initial write is in content. Otherwise we calculate whether it should be in content based on ShouldWritePropertyInContent. NOTE: this assumes that the complex type in question does not change throughout the lifetime of the service. See bug 174185. If set to true, the writers will allow writing null values even if the metadata specifies a non-nullable primitive type. If set to true, allows the writers to write duplicate properties of entries and complex values (i.e., properties that have the same name). Defaults to 'false'. Independently of this setting duplicate property names are never allowed if one of the duplicate property names refers to a named stream property, an association link or a collection. The format behavior kind of this behavior. The API behavior kind of this behavior. OData ATOM deserializer for error payloads. Constructor. The ATOM input context to read from. Reads the content of an error element. The Xml reader to read the error payload from. The maximumum number of recursive internalexception elements to allow. The representing the error. This method is used to read top-level errors as well as in-stream errors (from inside the buffering Xml reader). Pre-Condition: XmlNodeType.Element - The m:error start element. Post-Condition: XmlNodeType.EndElement - The m:error end-element. XmlNodeType.Element - The empty m:error start element. Reads a top-level error. An representing the read error. Pre-Condition: XmlNodeType.None - assumes that the Xml reader has not been used yet. Post-Condition: Any - the next node after the m:error end element or the empty m:error element node. Verifies that the specified element was not yet found in a top-level error element. The bit field which stores which elements of an error were found so far. The bit mask for the element to check. The name of the element to check (used for error reporting). Verifies that the specified element was not yet found in an inner error element. The bit field which stores which elements of an inner error were found so far. The bit mask for the element to check. The name of the element to check (used for error reporting). Reads the content of an inner error element. The (buffering) Xml reader to read the error payload from. The number of times this function has been called recursively. The maximumum number of recursive internalexception elements to allow. The representing the inner error. Pre-Condition: XmlNodeType.Element - the m:innererror or m:internalexception element Post-Condition: Any - the node after the m:innererror/m:internalexception end element or the node after the empty m:innererror/m:internalexception element node. An enumeration of the various kinds of elements in an m:error element. No duplicates. The 'code' element of the error element. The 'message' element of the error element. The 'innererror' element of the error element. An enumeration of the various kinds of elements in an internal error element. No duplicates. The 'message' element of the inner error element. The 'type' element of the inner error element. The 'stacktrace' element of the inner error element. The 'internalexception' element of the inner error element. Reader for the EPM custom-only. Read the EPM properties from cached values. Base class for EPM readers. The input context currently in use. The reader entry state to use for the entry to which the EPM is applied. Constructor. The reader entry state to use for the entry to which the EPM is applied. The input context currently in use. Sets the value read from EPM to a property on an entry. The EPM info for the mapping for which the value was read. The property value read, if the value was specified as null then this should be null, if the value was missing the method should not be called at all. For primitive properties this should be the string value, for all other properties this should be the exact value type. Sets the value read from EPM to a property on an entry. The target list, which is a list of properties (on entry or complex value). The type of the value on which to set the property (can be entity or complex). The EPM info for the mapping for which the value was read. The property value read, if the value was specified as null then this should be null, if the value was missing the method should not be called at all. For primitive properties this should be the string value, for all other properties this should be the exact value type. Sets a property value for a segment of the EPM source path. The EPM info according to which we are mapping the value to properties. The index in the epmInfo.PropertyValuePath for the source segment for which to set the value. The structural type of the parent segment. The list of properties of the parent segment, this method may add to this list. The property value read, if the value was specified as null then this should be null, if the value was missing the method should not be called at all. For primitive properties this should be the string value, for all other properties this should be the exact value type. Creates and adds a new property to the list of properties for an EPM. The list of properties to add the property to. The name of the property to add. The value of the property to add. true if the new property should be checked for duplicates against the entry properties; false otherwise. This should be true if the is the list of properties for the entry, and false in all other cases. The reader entry state to use for the entry to which the EPM is applied. The version of OData protocol to use. The reader settings to use. Constructor. The reader entry state for the entry to which the EPM is applied. The input context currently in use. Reads the custom EPM for an entry. The reader entry state for the entry to which the EPM is applied. The input context currently in use. Reads an EPM for the entire entry. Cache for values read during deserialization of custom EPM. List of custom EPM values read. This is a map from EPM info to the value read from the payload. The list order is the order in which the values were read from the payload. They will be applied to the entry properties in that order (this needs to be maintained). The key is the EPM info for the mapping according to which the value was read. The value is the string value read from the content (not converted in any way). null value means true null value should be used. If the value was missing from the payload there will be no record of it in this list. Constructor. Determines if the cache already contains a value for the specified EPM mapping. The EPM info for the EPM mapping to look for. true if the cache already contains a value for this mapping, false otherwise. Adds a value to cache. The EPM info for the mapping according to which the value was read. The value to cache. The method will only store the first value for any given EPM info, since in custom EPM only the first occurrence of the element/attribute is used, the others are ignored. The list of stored custom EPM values (key is the EPM info, value is the string value read for it). The list is in the order in which the values were read from the payload. OData ATOM deserializer for EPM. Constructor. The ATOM input context to read from. Reads an extension element in non-ATOM namespace in the content of the entry element. The reader entry state for the entry being read. true if a mapping for the current custom element was found and the element was read; otherwise false. Pre-Condition: XmlNodeType.Element - the element in non-ATOM namespace to read. Post-Condition: Any - the node after the extension element which was read. Reads an element for custom EPM. The reader entry state for the entry being read. The EPM target segment for the parent element to which the element belongs. true if a mapping for the current custom element was found and the element was read; otherwise false. Pre-Condition: XmlNodeType.Element - the element to read. Post-Condition: Any - the node after the element which was read. The method works on any element, it checks if the element should be used for EPM or not. Reads an attribute for custom EPM. The reader entry state for the entry being read. The EPM target segment for the element to which the attribute belongs. Pre-Condition: XmlNodeType.Attribute - the attribute to read. Post-Condition: XmlNodeType.Attribute - the same attribute, the method doesn't move the reader. The method works on any attribute, it checks if the attribute should be used for EPM or not. OData ATOM deserializer for entity reference links. OData element name for the 'links' element OData element name for the 'count' element OData element name for the 'next' element OData element name for the 'uri' element Constructor. The ATOM input context to read from. Read a set of top-level entity reference links. An representing the read links. Pre-Condition: PayloadStart - assumes that the XML reader has not been used yet. Post-Condtion: XmlNodeType.None - The reader must be at the end of the input. Reads a top-level entity reference link. An instance representing the read entity reference link. Pre-Condition: PayloadStart - assumes that the XML reader has not been used yet. Post-Condtion: XmlNodeType.None - The reader must be at the end of the input. Verifies that the specified element was not yet found in the entity reference links element. The bit field which stores which elements of an inner error were found so far. The bit mask for the element to check. The namespace name of the element ot check (used for error reporting). The name of the element to check (used for error reporting). Reads all top-level entity reference links and the (optional) inline count and next link elements. An instance representing the read entity reference links. Pre-Condition: XmlNodeType.Element - The 'd:links' element. Post-Condtion: any - The node after the 'd:links' end element (or empty 'd:links' element). Read an entity reference link. An instance of which was read. Pre-Condition: XmlNodeType.Element - the 'd:uri' element to read. Post-Condition: Any - the node after the 'd:uri' element which was read. An enumeration of the various kinds of properties on an entity reference link collection. No duplicates. The 'm:count' element of the 'links' element. The 'd:next' element of the 'links' element. Class with utility methods for dealing with OData metadata that are shared with the OData.Query project. Checks whether a type reference refers to an OData primitive type (i.e., a primitive, non-stream type). The (non-null) to check. true if the is an OData primitive type reference; otherwise false. Checks whether a type refers to an OData primitive type (i.e., a primitive, non-stream type). The (non-null) to check. true if the is an OData primitive type; otherwise false. Checks whether a type reference refers to an OData complex type. The (non-null) to check. true if the is an OData complex type reference; otherwise false. Checks whether a type refers to an OData complex type. The (non-null) to check. true if the is an OData complex type; otherwise false. Checks whether a type reference refers to an OData entity type. The (non-null) to check. true if the is an OData entity type reference; otherwise false. Checks whether a type refers to an OData entity type. The (non-null) to check. true if the is an OData entity type; otherwise false. Checks whether a type reference is considered a value type in OData. The to check. true if the is considered a value type; otherwise false. The notion of value type in the OData space is driven by the IDSMP requirements where Clr types denote the primitive types. Checks whether a type reference refers to a OData collection value type of non-entity elements. The (non-null) to check. true if the is a non-entity OData collection value type; otherwise false. Checks whether a type refers to a OData collection value type of non-entity elements. The (non-null) to check. true if the is a non-entity OData collection value type; otherwise false. Casts an to a or returns null if this is not supported. The type reference to convert. An instance or null if the cannot be converted. Casts an to a or returns null if this is not supported. The type reference to convert. An instance or null if the cannot be converted. Casts an to a or returns null if this is not supported. The type reference to convert. An instance or null if the cannot be converted. Determines if a is convertibale according to OData rules to the . The type which is to be converted. The type to which we want to convert. true if the source type is convertible to the target type; otherwise false. Represents an annotation to hold information for a particular property. Gets the behavior for readers when reading property with null value. The behavior for readers when reading property with null value. Represents an OData action. Represents a function or an action. the metadata builder for this operation. A human-readable description of the or the . true if a title was provided by the user or seen on the wire, false otherwise. A human-readable description of the or the , computed by the metadata builder. The URI to invoke the or the . true if a target was provided by the user or seen on the wire, false otherwise. The URI to invoke the or the , computed by the metadata builder. The cached full name of the operation to use. The binding parameter type name for this operation. Sets the metadata builder for this operation. The metadata builder used to compute values from model annotations. The metadata document Uri. Gets the metadata builder for this operation. The metadata builder used to compute values. Gets or sets the URI to get metadata for the . The URI to get metadata for the . Gets or sets a human-readable description of the . A human-readable description of the . Gets or sets the URI to invoke the . The URI to invoke the . Represents an OData function. Implementation of the OData input for metadata documents. The XML reader used to parse the input. Do not use this to actually read the input, instead use the xmlReader. The XML reader to read from. Constructor. The format for this input context. The stream to read data from. The encoding to use to read the input. Configuration settings of the OData reader. The OData protocol version to be used for reading the payload. true if reading a response message; otherwise false. true if the input should be read synchronously; false if it should be read asynchronously. The model to use. The optional URL resolver to perform custom URL resolution for URLs read from the payload. Read a metadata document. This method reads the metadata document from the input and returns an that represents the read metadata document. An representing the read metadata document. Disposes the input context. This methods reads the metadata from the input and returns an representing the read metadata information. An instance representing the read metadata. Class with code that will eventually live in EdmLib. This class should go away completely when the EdmLib integration is fully done. The qualifier to turn a type name into a Collection type name. Format string to describe a Collection of a given type. Map of CLR primitive type to EDM primitive type reference. Doesn't include spatial types since they need assignability and not equality. Type reference for Edm.Boolean. Type reference for Edm.Byte. Type reference for Edm.DateTime. Type reference for Edm.Decimal. Type reference for Edm.Double. Type reference for Edm.Int16. Type reference for Edm.Int32. Type reference for Edm.Int64. Type reference for Edm.SByte. Type reference for Edm.String. Type reference for Edm.Float. Constructor. A method that determines whether a given model is a user model or one of the built-in core models that can only used for primitive type resolution. The model to check. true if the is a user model; otherwise false. Checks whether the provided is a supported primitive type. The CLR type to check. true if the is a supported primitive type; otherwise false. Returns all the entity types in a model. The to get the entity types for (must not be null). An enumerable of all instances in the . Creates a collection value type for the specified . The for the item type. The created . Creates a collection type for the specified . The for the item type. The created . Checks if the type reference is assignable from the type reference. In other words, if is a subtype of or not. Type of the base type. Type of the sub type. true, if the is assignable to . Otherwise returns false. Note that this method only checks the type definition for assignability; it does not consider nullability or any other facets of the type reference. Checks if the type is assignable from the type. In other words, if is a subtype of or not. Type of the base type. Type of the sub type. true, if the is assignable to . Otherwise returns false. Checks if the structured type and the structured type have a common base type. In other words, if is a subtype of or not. Type of the base type. Type of the sub type. The common base type or null if no common base type exists. Checks if the primitive type and the primitive type have a common base type. In other words, if is a subtype of or not. Type of the base type. Type of the sub type. The common base type or null if no common base type exists. Returns the base type of a primitive type. The to get the base type for. The base type of the or null if no base type exists. Casts an to a or returns null if this is not supported. The type reference to convert. An instance or null if the cannot be converted. Casts an to a or returns null if this is not supported. The type reference to convert. An instance or null if the cannot be converted. Resolves the name of a primitive type. The name of the type to resolve. The representing the type specified by the ; or null if no such type could be found. Get the of the item type of the . The collection type to get the item type for. The item type of the . Returns the IEdmCollectionType implementation with the given IEdmType as element type. IEdmType instance which is the element type. An instance using the as Collection item type. Returns the IEdmCollectionType implementation with the given IEdmTypeReference as element type. IEdmTypeReference instance which is the element type. An instance using the as Collection item type. Checks whether a type reference is a Geography type. The to check. true if the is a Geography type; otherwise false. Checks whether a type reference is a Geometry type. The to check. true if the is a Geometry type; otherwise false. Returns CollectionValue item type name or null if the provided type name is not a collectionValue. CollectionValue type name read from payload. CollectionValue element type name or null if not a collectionValue. Gets the name of a function import group. The function import group in question. The name of the function import group. Gets the full name of a function import group. The function import group in question. The full name of the function import group. Name of the function import with parameters. Function import in question. Name of the function import with parameters. Full name of the function import with parameters. Function import in question. Full name of the function import with parameters. Determines whether operations bound to this type must be qualified with the operation they belong to when appearing in a $select clause. The entity type the operations are bound to. True if the operations must be container qualified, otherwise false. Gets the full name of the definition referred to by the type reference. The type reference to get the full name for. The full name of this . Note that this method is different from the EdmLib FullName extension method in that it also returns names for collection types. For EdmLib, collection types are functions and thus don't have a full name. The name/string they use in CSDL is just shorthand for them. Gets the full name of the type. The type to get the full name for. The full name of the . Note that this method is different from the EdmLib FullName extension method in that it also returns names for collection types. For EdmLib, collection types are functions and thus don't have a full name. The name/string they use in CSDL is just shorthand for them. Clones the specified type reference. The type reference to clone. true to make the cloned type reference nullable; false to make it non-nullable. The cloned instance. Gets the multiplicity of a navigation property. Reference to the calling object. The multiplicity of the navigation property in question. This has been added to EdmLib, but EdmLib won't be released for a while. If you need to use this functionality before we release EdmLib, then use this method. Change your calls to use the real method whenever we release EdmLib again. Checks if the is assignable to . In other words, if is a subtype of or not. Type of the base type. Type of the sub type. true, if the is assignable to . Otherwise returns false. Checks if the primitive type is a geography or geometry type. The type to check. true, if the is a geography or geometry type. Checks if the primitive type is assignable to primitive type. In other words, if is a subtype of or not. Type of the base type. Type of the sub type. true, if the is assignable to . Otherwise returns false. Returns the primitive CLR type for the specified primitive type reference. The primitive type to resolve. The CLR type for the primitive type reference. Turns a into the corresponding non-nullable . The type to convert. A non-nullable type reference for the . Determines whether the provided is an open type. The type to check. true if the is an open type; otherwise false. Determines whether the provided is a stream. The type to check. true if the represents a stream; otherwise false. Checks whether the specified is defined for the type . The type to check the properties on. The property to check for. true if the is defined for the ; otherwise false. Checks whether the specified is defined for the type . The type to check the properties on. The property to check for. true if the is defined for the ; otherwise false. Returns the fully qualified name of an entity container element. The container element to get the full name for. The full name of the owning entity container, slash, name of the container element. Returns the primitive type reference for the given Clr type. The Clr type to resolve. The primitive type reference for the given Clr type. Turns a into the corresponding . The type to convert. true if the returned type reference should be nullable; otherwise false. A type reference for the . Creates the EDM type name for a collection of the specified item type name. E.g. Collection(Edm.String) Type name of the items in the collection. Type name for a collection of the specified item type name. Finds the entity set with the specified container and name. The model to find the entity set in. The container qualified name of the entity set. The with the specified name or null if no such entity set exists. Finds the function import group with the specified container and name. If the name contains the function parameters, this method will return the function import with matching parameters. The model to find the function import in. The container qualified name of the function import. The group with the specified name or null if no such function import exists. Finds the function import group with the specified container and name. If the name contains the function parameters, this method will return the function import with matching parameters. The model to find the function import in. The container qualified name of the function import. May contain parameter type names, e.g. Function1(P1Type,P2Type) only if is true. Whether parameter type names are allowed to appear in the function import name to resolve. The group with the specified name or null if no such function import exists. Resolves a function import or function import group. The entity container. The function import name to resolve. May contain parameter type names, e.g. Function1(P1Type,P2Type) The resolved function import or function import group. Resolves a function import or function import group. The entity container. The function import name to resolve. May contain parameter type names, e.g. Function1(P1Type,P2Type) only if is true. Whether parameter type names are allowed to appear in the function import name to resolve. The resolved function import or function import group. Finds all function imports with the given name which are bindable to an instance of the giving binding type or a more derived type. The model to find the function import in. The binding entity type. The name of the function imports to find. May be qualified with an entity container name. The function imports that match the search criteria. Finds all function imports with the given name which are bindable to an instance of the giving binding type or a more derived type. The model to find the function import in. The binding entity type. The name of the function imports to find. May be qualified with an entity container name. The function imports that match the search criteria. Returns the primitive CLR type for the specified primitive type reference. The primitive type to resolve. Whether the returned type should be a nullable variant or not. The CLR type for the primitive type reference. Returns Collection item type name or null if the provided type name is not a collection. Collection type name. Whether it is a nested (recursive) call. Collection element type name or null if not a collection. The following rules are used for collection type names: - it has to start with "Collection(" and end with ")" - trailing and leading whitespaces make the type not to be recognized as collection. - there is to be no characters (including whitespaces) between "Collection" and "(" - otherwise it won't berecognized as collection - collection item type name has to be a non-empty string - i.e. "Collection()" won't be recognized as collection - nested collection - e.g. "Collection(Collection(Edm.Int32))" - are not supported - we will throw Note the following are examples of valid type names which are not collection: - "Collection()" - " Collection(Edm.Int32)" - "Collection (Edm.Int32)" - "Collection(" Gets the function import parameter types in string. Function import in question. Comma separated function import parameter types enclosed in parantheses. Gets a reference to a primitive kind definition of the appropriate kind. Primitive type to create a reference for. Flag specifying if the referenced type should be nullable per default. A new primitive type reference. Gets the single entity container or the default one if there are multiple containers. Model to find entity containers in. Single container that was found. Entity Container found in the model Finds the container elements with the specified container and name. The model to find the element in. The container qualified name of the elements. The resolver method to resolve the elements. The enumeration of with the specified name or null if no such element exists. Constant values used related to EPM (entity property mapping). Attribute name for the FC_KeepInContent attribute used for EPM. Attribute name for the FC_ContentKind attribute used for EPM. Attribute name for the FC_SourcePath attribute used for EPM. Attribute name for the FC_TargetPath attribute used for EPM. Attribute name for the target namespace prefix (FC_NsPrefix) attribute used for custom EPM. Attribute name for the target namespace Uri (FC_NsUri) attribute used for custom EPM. Target path for author/email Target path for author/name Target path for author/uri Target path for contributor/email Target path for contributor/name Target path for contributor/uri Target path for updated Target path for published Target path for rights Target path for summary Target path for title Target path for author/email Target path for author/name Target path for author/uri Target path for contributor/email Target path for contributor/name Target path for contributor/uri Target path for updated Target path for published Target path for rights Target path for summary Target path for title String value for the syndication content kind 'text'. String value for the syndication content kind 'HTML'. String value for the syndication content kind 'XHTML'. Builder class for the name of EPM attributes as serialized in CSDL. This class keeps track of the number of mappings for a given type/property and appends post fixes to the names as needed. Separator character for building attribute names. Current index. The first time the name builder is used the names have no suffix. The second time (after calling MoveNext once) the name builder will use suffix '_1', then suffix '_2' and so on. Suffix for current attribute names. Constructor Move to next attribute name generation. Current keep-in-content attribute name. Current source path attribute name. Current target path attribute name. Current content kind attribute name. Current namespace prefix attribute name. Current namespace Uri attribute name. Annotation stored on an entity type to hold entity property mapping information. A list of the EPM mappings this cache was constructed for. Used to determine whether the cache is dirty or not. Inherited EntityPropertyMapping attributes. Own EntityPropertyMapping attributes. EPM source tree for the type this annotation belongs to. EPM target tree for the type this annotation belongs to. EDM model. The total number of entity property mappings for the entity type that this cache is created for (on the type itself and all its base types). Constructor. The EPM mappings to create the cache for. The EDM model. The total number of entity property mappings for the entity type that this cache is created for (on the type itself and all its base types). Initializes the EPM annotation with EPM information from the specified type. Entity type to use the EPM infromation from. Entity type for this the EPM information is being built. Checks whether the current cache is dirty with respect to the . The EPM mappings to check this cache against. true if the are not the same as the ones the cache has been created for (or have changed). Does given property in the attribute exist in the specified type. The type to inspect. Attribute which has PropertyName. true if property exists in the specified type, false otherwise. Inherited EntityPropertyMapping attributes. Own EntityPropertyMapping attributes. EPM source tree for the type this annotation belongs to. EPM target tree for the type this annotation belongs to. All EntityPropertyMapping attributes. The total number of entity property mappings for the entity type that this cache is created for (on the type itself and all its base types). Represents an enumerable of that new items can be added to. List of the mappings represented by this enumerable. Creates a new instance of the class. Creates a new instance of the class. An enumerable of used to initialize the instance. This argument must not be null. Adds the mapping to the list of all mappings represented by this class. The to add to the enumerable represented by this class. Returns an enumerator for the instances in this enumerable. An enumerator for the instances in this enumerable. Returns a non-generic enumerator for the instances in this enumerable. A non-generic enumerator for the instances in this enumerable. The count of mappings stored in this collection. Helper methods used by the OData reader for the Verbose JSON format. Compares the against the list of supported feed-level properties and returns the kind of property. The name of the property to check. The kind of feed-level property of the property with name . Converts the given JSON value to the expected type as per OData conversion rules for JSON values. Value to the converted. Type reference to which the value needs to be converted. The message reader settings used for reading. The version of the OData protocol used for reading. true to validate null values; otherwise false. The name of the property whose value is being read, if applicable (used for error reporting). Object which is in sync with the property type (modulo the V1 exception of converting numbers to non-compatible target types). Ensure that the is not null; if so create a new instance. The type of the instance to check. The instance to check for null. Checks whether the specified property has already been found before. The bit field which stores which properties of an error or inner error were found so far. The bit mask for the property to check. true if the property has not been read before; otherwise false. Validates that the string property in __metadata is valid. The value of the property. The name of the property (used for error reporting). Verifies that the specified property was not yet found. The bit field which stores which metadata properties were found so far. The bit mask for the property to check. The name of the property to check (used for error reporting). Validates that the string property in an entity reference links collection is valid. The value of the property. The name of the property (used for error reporting). Validates that the count property in an OData-owned object wrapper is valid. The value of the property. Verifies that the specified property was not yet found. The bit field which stores which properties of an entity reference link collection were found so far. The bit mask for the property to check. The name of the property to check (used for error reporting). Verifies that the specified property was not yet found. The bit field which stores which properties of an error or inner error were found so far. The bit mask for the property to check. The name of the property to check (used for error reporting). Validates that the string property in __mediaresource is valid. The value of the property. The name of the property (used for error reporting). Validates that the property in feed wrapper is valid. The value of the property. The name of the property (used for error reporting). Gets the payload type name for an OData OM instance for JSON. The payload item to get the type name for. The type name as read from the payload item (or constructed for primitive items). Converts the given JSON string value to the expected type as per OData conversion rules for JSON values. String value to the converted. Target type to which the string value needs to be converted. The version of the payload being read. Object which is in sync with the target type. Converts the given JSON int value to the expected type as per OData conversion rules for JSON values. Int32 value to the converted. Target type to which the int value needs to be converted. Type reference to which the value needs to be converted. true if the conversion should use the V1 provider behavior, false if the default behavior should be used. Object which is in sync with the property type (modulo the V1 exception of converting numbers to non-compatible target types). Converts the given datetime value into the allowed target types. DateTime value as read by the JsonReader. Target type to which the datetime value needs to be converted. Type reference to which the value needs to be converted. ODataReaderBehavior instance. Object which is in sync with the target type. Checks if the given type is a V1 primitive type or not. Type instance. True if the given target type is a V1 primitive type otherwise returns false. An enumeration of the various kinds of properties on a feed wrapper object. An unsupported property at the feed level. The inline count property of a feed. The results property of a feed. The next page link property of a feed. An enumeration of the various kinds of properties on an entity reference link collection. An unsupported property at the wrapper level. The inline count property of an entity reference links wrapper. The results property of an entity reference links wrapper. The next page link property of an entity reference links wrapper. Enumeration of all properties in error payloads, the value of the enum is the bitmask which identifies a bit per property. We only use a single enumeration for both top-level as well as inner errors. This means that some bits are never set for top-level (or inner errors). No property found yet. The "error" of the top-level object. The "code" property. The "message" property of either the error object or the inner error object. The "lang" property of the message object. The "value" property of the message object. The "innererror" or "internalexception" property of the error object or an inner error object. The "type" property of an inner error object. The "stacktrace" property of an inner error object. Enumeration of all properties in __metadata, the value of the enum is the bitmask which identifies a bit per property. No property found yet. The "uri" property. The "type" property. The "etag" property. The "media_src" property. The "edit_media" property. The "content_type" property. The "media_etag" property. The "properties" property. The "id" property. The "actions" property. The "functions" property. OData reader for the Verbose JSON format. The input to read the payload from. The entry and feed deserializer to read input with. Constructor. The input to read the payload from. The entity set we are going to read entities for. The expected entity type for the entry to be read (in case of entry reader) or entries in the feed to be read (in case of feed reader). true if the reader is created for reading a feed; false when it is created for reading an entry. If not null, the Json reader will notify the implementer of the interface of relevant state changes in the Json reader. Implementation of the reader logic when in state 'Start'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.None: assumes that the JSON reader has not been used yet when not reading a nested payload. Post-Condition: when reading a feed: the reader is positioned on the first item in the feed or the end array node of an empty feed when reading an entry: the first node of the first navigation link value, null for a null expanded link or an end object node if there are no navigation links. Implementation of the reader logic when in state 'FeedStart'. true if more items can be read from the reader; otherwise false. Pre-Condition: Any start node - The first entry in the feed JsonNodeType.EndArray - The end of the feed Post-Condition: The reader is positioned over the StartObject node of the first entry in the feed or on the node following the feed end in case of an empty feed Implementation of the reader logic when in state 'FeedEnd'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.EndArray if the feed is not wrapped in the 'results' wrapper JsonNodeType.EndObject if the feed is wrapped in the 'results' wrapper Post-Condition: JsonNodeType.EndOfInput for a top-level feed when not reading a nested payload JsonNodeType.Property more properties exist on the owning entry after the expanded link containing the feed JsonNodeType.EndObject no further properties exist on the owning entry after the expanded link containing the feed JsonNodeType.EndArray end of expanded link in request, in this case the feed doesn't actually own the array object and it won't read it. Any in case of expanded feed in request, this might be the next item in the expanded array, which is not an entry Implementation of the reader logic when in state 'EntryStart'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.StartObject The first node of the navigation link property value to read next (feed wrapped in 'results' wrapper) JsonNodeType.StartArray The first node of the navigation link property value to read next (feed not wrapped in 'results' wrapper) JsonNodeType.PrimitiveValue (null) The null expanded entry value (representing the end of that entry) JsonNodeType.EndObject If no (more) properties exist in the entry's content Post-Condition: JsonNodeType.StartObject The first node of the navigation link property value to read next (feed wrapped in 'results' wrapper) JsonNodeType.StartArray The first node of the navigation link property value to read next (feed not wrapped in 'results' wrapper) JsonNodeType.PrimitiveValue (null) The null expanded entry value (representing the end of that entry) JsonNodeType.EndObject If no (more) properties exist in the entry's content Implementation of the reader logic when in state 'EntryEnd'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.EndObject end of object of the entry JsonNodeType.PrimitiveValue (null) end of null expanded entry Post-Condition: The reader is positioned on the first node after the entry's end-object node Implementation of the reader logic when in state 'NavigationLinkStart'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.StartObject The first node of the navigation link property value to read next (deferred link or entry inside expanded link or wrapped feed inside expanded link) JsonNodeType.StartArray feed not wrapped with 'results' wrapper inside of expanded link JsonNodeType.PrimitiveValue (null) expanded null entry Post-Condition: JsonNodeType.StartArray: expanded link with a feed that is not wrapped with 'results' wrapper JsonNodeType.StartObject expanded link with a feed that is warpped with 'results' wrapper JsonNodeType.PrimitiveValue (null) expanded null entry JsonNodeType.Property deferred link with more properties in owning entry JsonNodeType.EndObject deferred link as last property of the owning entry Implementation of the reader logic when in state 'NavigationLinkEnd'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.EndObject: expanded link property is last property in owning entry JsonNodeType.Property: there are more properties after the expanded link property in the owning entry Post-Condition: JsonNodeType.StartObject The first node of the navigation link property value to read next JsonNodeType.StartArray The first node of the navigation link property value with a non-wrapped feed to read next JsonNodeType.EndObject If no (more) properties exist in the entry's content JsonNoteType.Primitive (null) If an expanded link with null entity instance was found. Implementation of the reader logic when in state 'EntityReferenceLink'. true if more items can be read from the reader; otherwise false. This method doesn't move the reader Pre-Condition: JsonNodeType.EndObject: expanded link property is last property in owning entry JsonNodeType.Property: there are more properties after the expanded link property in the owning entry Any: expanded collection link - the node after the entity reference link. Post-Condition: JsonNodeType.EndObject: expanded link property is last property in owning entry JsonNodeType.Property: there are more properties after the expanded link property in the owning entry Any: expanded collection link - the node after the entity reference link. Reads the start of a feed and sets up the reader state correctly. true if the feed is inside an expanded link. Pre-Condition: The first node of the feed; this method will throw if the node is not JsonNodeType.StartArray: a feed without 'results' wrapper JsonNodeType.StartObject: a feed with 'results' wrapper Post-Condition: The reader is positioned on the first item in the feed, or on the end array of the feed. Reads the next node in the content of an expanded navigation link which represents a collection and is in a request payload. This method deals with all the special cases in request payload expanded navigation link for collections. It should be called when the array start of the content of such a link was already read. It should be called in these cases: - Start of the navigation link (to report the first content item of it) - Entity reference link was reported (to report the next item of the navigation link content) - Feed end was reported, to report the next non-entry item in the navigation link content - Entry end was reported, to determine if the next entry should be reported, or if the feed should be closed. Reads the start of an entry and sets up the reader state correctly Pre-Condition: JsonNodeType.StartObject Will fail if it's anything else Post-Condition: JsonNodeType.StartObject The first node of the navigation link property value to read next (deferred link or entry or >=v2 feed wrapper) JsonNodeType.StartArray The first node of the navigation link property value with a non-wrapped feed to read next JsonNodeType.PrimitiveValue (null) The null value of the navigation link property value to read next (expanded null entry) JsonNodeType.EndObject If no (more) properties exist in the entry's content Reads the __metadata property for an entry and resolves its type. Verifies that the current item is an instance, sets the cardinality of the link (IsCollection property) and moves the reader into state 'NavigationLinkEnd'. A flag indicating whether the link represents a collection or not. Starts the entry, initializing the scopes and such. This method starts a non-null entry only. Starts the navigation link. Does metadata validation of the navigation link and sets up the reader to report it. The navigation link to start. The navigation property for the navigation link to start. Creates a new for the specified and with the provided and pushes it on the stack of scopes. The to use for the new scope. The item to attach with the state in the new scope. The expected type for the new scope. Replaces the current scope with a new with the specified and the item of the current scope. The to use for the new scope. Called to transition into the EntryEnd state. Returns the current entry state. Returns current scope cast to JsonScope A reader scope; keeping track of the current reader state and an item associated with this state. Interface representing a state of the Verbose JSON reader for entry. The entry being read. The entity type for the entry (if available) Flag which indicates that during parsing of the entry represented by this state, the __metadata property was already found. If the reader finds a navigation link to report, but it must first report the parent entry it will store the navigation link in this property. So this will only ever store the first navigation link of an entry. If the reader finds a navigation link to report, but it must first report the parent entry it will store the navigation property in this property. So this will only ever store the first navigation proeprty of an entry. The duplicate property names checker for the entry represented by the current state. Constructor creating a new reader scope. The reader state of this scope. The item attached to this scope. The expected type for the scope. The has the following meanings for given state: Start - it's the expected base type of the top-level entry or entries in the top-level feed. FeedStart - it's the expected base type of the entries in the feed. note that it might be a more derived type than the base type of the entity set for the feed. EntryStart - it's the expected base type of the entry. If the entry has no type name specified this type will be assumed. Otherwise the specified type name must be the expected type or a more derived type. NavigationLinkStart - it's the expected base type the entries in the expanded link (either the single entry or entries in the expanded feed). In all cases the specified type must be an entity type. Flag which indicates that during parsing of the entry represented by this scope, the __metadata property was already found. If the reader finds a navigation link to report, but it must first report the parent entry it will store the navigation link in this property. So this will only ever store the first navigation link of an entry. If the reader finds a navigation link to report, but it must first report the parent entry it will store the navigation property in this property. So this will only ever store the first navigation proeprty of an entry. The duplicate property names checker for the entry represented by the current state. Flag which is only used on a StartFeed scope. true - if the feed is the special feed reported as content of an expanded navigation link in request. false - if the feed is any other (regular) feed. Flag which is used to remember whether the feed was wrapped in with 'results' wrapper and which indicates whether to expect (and read) '}' character at the end of the feed. Used on StartFeed scope for top level feeds and on NavigationLinkStart scope for nested expanded feed. true - if the feed was wrapped in results wrapper false - if the feed was not wrapped in results wrapper Flag which is only used on a StartNavigationLink scope in requests. true - we already found some content for the navigation link in question and it was (or is going to be) reported to the caller. false - we haven't found any content for the navigation link yet. The entry being read. The entity type for the entry (if available). Extension methods to make it easier to work with EPM. All supported base names for serializable EPM annotations. FC_TargetPath to enum mapping. Ensures that an up-to-date EPM cache exists for the specified . If no cache exists, a new one will be created based on the public mappings (if any). If the public mappings have changed (and the cache is thus dirty), the method re-constructs the cache. If all public mappings have been removed, the method also removes the EPM cache. IEdmModel containing the annotations. IEdmEntityType instance for which to ensure the EPM cache. The maximum allowed number of entity property mappings for a given entity type (on the type itself and all its base types). An instance of , if there are any EPM mappings for the given entity type, otherwise returns null. Determines if the has any EPM defined on it (or its base types). The model containing the annotations. The entity type to test for presence of EPM. true if the has EPM; false otherwise. Returns the EPM information for an entity type. The model containing the annotations. The entity type to get the EPM information for. Returns the EPM information for an entity type. If there's no such information, this returns null. Returns the cached EPM information for an entity type. The model containing the annotations. The entity type to get the cached EPM information for. Returns the cached EPM information for an entity type. If there's no cached information, this returns null. Gets all the annotations bindings in order to remove all EPM related annotations from a given . The model containing the annotations. The annotatable to get the EPM annotations for. A dictionary of local annotation name to annotation binding mappings for all serializable EPM annotations on . Removes the in-memory EPM annotations from an entity type; potentially also drops an existing EPM cache. The containing the annotation. The to remove the EPM annotation from. Saves the EPM annotations on the given . The containing the annotations. The to save the EPM annotations for. The EPM cache for the owning entity type. Saves the EPM annotations on the given . The containing the annotations. The to save the EPM annotations on. All the EPM annotations to be saved. true if the source path should be saved explicitly; otherwise false. true if the prefix of the source path should be removed; otherwise false. Returns the cached keep-in-content annotation for the primitive properties of a complex type. The model containing the annotation. The complex type to get the cached keep-in-content annotation for. Returns the keep-in-content annotation for a type. If there's no such annotation this returns null. Maps the enumeration of allowed values to their string representations. Value of the given in the contstructor. String representing the xml element path in the syndication property. Loads the serializable EPM annotations on the given into their in-memory representation. The model the entity type belongs to. The to load the EPM annotations for. Loads the serializable EPM annotations on the given into their in-memory representation. The model the annotatable belongs to. The to load the EPM annotations for. The collection of EPM annotations to add newly loaded annotations to. The name of the type for which to load the annotations or that declares the . Only used in error messages. The property to parse the EPM annotations for. Given a gets the corresponding syndication property. Target path in the form of a syndication property name. Enumeration value of a or SyndicationItemProperty.CustomProperty if the does not map to any syndication property name. Translates a content kind enumeration value to the corresponding string attribute value for serialization to CSDL. The content kind to translate. A string corresponding to the value. Translates a syndication item property enumeration value to the corresponding string attribute value for serialization to CSDL. The syndication item property to translate. A string corresponding to the value. Maps the string to an enumeration value of the enumeration. The content kind string to map. The suffix of the attribute name currently being parsed or validated.Only used in error messages. The name of the type for which to load the annotations or that declares the . Only used in error messages. The name of the property to parse the EPM annotations for. Only used in error messages. An value if the could be successfully mapped; otherwise throws. Parses the serializable EPM annotations of the , groups them by suffix and translates them into a set of structs. The containing the annotations. The to parse the EPM annotations for. The name of the type for which the annotations are parsed or that declares the . Only used in error messages. The property to parse the EPM annotations for. An enumerable of that represents all the parsed annotations grouped by their suffix. Validates the annotation values parsed for an EPM mapping. The to validate. The name of the type for which the annotations are validated or that declares the . Only used in error messages. The property for which the annotations are validated; null if the annotations are for a type. An instance that represents the mapping created from the . Removes an existing EPM cache annotation. The containing the annotations. The to remove the EPM cache from. Checks whether a given OData annotation is an EPM related annotation. The instance to check. true if the annotation is EPM related; otherwise false. Checks whether a given serializable annotation represents part of an EPM mapping. The annotation to check. The base name of the EPM annotation. The suffix of the EPM annotation or null if not an EPM annotation. true if the is an EPM annotation; otherwise false. Converts the value of the to a string. The to convert. The string representation of the converted annotation value. Checks that two strings are the same references (and asserts that if they are not they also don't have the same value). The first string to compare. The second string to compare. true if the and are the same reference; otherwise false; Checks whether the has EPM defined for it (either directly on the type or on one of the base types). The containing the annotation. The to check. true if the has EPM defined; otherwise false. Gets the annotation binding with the OData metadata namespace and the specified for the . The to set the annotation on. The local name of the annotation to set. The value of the annotation to set. An instance that represnets the annotation with the specified name and value. Ensures that an up-to-date EPM cache exists for the specified . If no cache exists, a new one will be created based on the public mappings (if any). If the public mappings have changed (and the cache is thus dirty), the method re-constructs the cache. If all public mappings have been removed, the method also removes the EPM cache. IEdmModel instance containing the annotations. IEdmEntityType instance for which to ensure the EPM cache. The maximum allowed number of entity property mappings for a given entity type (on the type itself and all its base types). true if the cache was modified; otherwise false. An instance of , if there are any EPM mappings for the given entity type, otherwise returns null. Private struct to store the values of the serializable EPM annotations during loading. The string value of the FC_SourcePath attribute (or null if not present). The string value of the FC_TargetPath attribute (or null if not present). The string value of the FC_KeepInContent attribute (or null if not present). The string value of the FC_ContentKind attribute (or null if not present). The string value of the FC_NsUri attribute (or null if not present). The string value of the FC_NsPrefix attribute (or null if not present). The attribute suffix used for the attribute names. Representation of each node in the EpmSourceTree. Name of the property under the parent type. This fields is used to differentiate between some special node types as well. - null - this is the root node of the source tree. - "" (empty string) - this is a node representing a value of a primitive item in a collection property. - anything else - this is a node representing a property with the name of this field. List of sub-properties if this segment corresponds to a complex type. Corresponding EntityPropertyMappingInfo. Constructor creates a root source path segment Constructor creates a source path segment with the name set to StartPath property name Name of the property under the parent type. This property is used to differentiate between some special node types as well. - null - this is the root node of the source tree. - "" (empty string) - this is a node representing a value of a primitive item in a collection property. - anything else - this is a node representing a property with the name of this property. These values should not be compared directly, instead use the IsCollectionValueItemValue property to differentiate between the last two. The root node itself should never be accessed directly so far. List of sub-properties if this segment corresponds to a complex type. Corresponding EntityPropertyMappingInfo. Tree representing the sourceName properties in all the EntityPropertyMappingAttributes for a type. Root of the tree. corresponding to this tree. Constructor which creates an empty root. Target xml tree Adds a path to the source and target tree which is obtained by looking at the EntityPropertyMappingAttribute in the EnitityPropertyMappingInfo holding the source path Validates the source tree. The entity type for which the validation is performed. Validates the specified segment and all its subsegments. The path segment to validate. The type of the property represented by this segment (null for open properties). Returns the type of the property on the specified type. The type to look for the property on. The name of the property to look for. The type of the property specified. Root of the tree Representation of each node in the EpmTargetTree. Name of the xml element/attribute. This field is used to differentiate between special nodes as well. - null - this is the root of the target tree. - anything else (doesn't start with @) - this node represents an element with the specified name. - anything else (starts with @) - this node represents an attribute with the specified name. Cached attribute name if the segment represents an attribute. URI of the namespace to which the belongs. Prefix to be used in xml document for . If this is a non-leaf element, the child elements/attributes collection. Parent element of this element/attribute. The EPM info object for this target segment, if there's any. Constructor initializes the list of sub-nodes to be empty, used for creating root nodes in the EpmTargetTree. Used for creating non-root nodes in the syndication/custom trees. Name of xml element/attribute URI of the namespace for Namespace prefix to be used for Reference to the parent node if this is a sub-node, useful for traversals in visitors Name of the xml element/attribute. This property is used to differentiate between special nodes as well. - null - this is the root of the target tree. - anything else (doesn't start with @) - this node represents an element with the specified name. - anything else (starts with @) - this node represents an attribute with the specified name. The value of the property should not be compared directly to differentiate between these cases, instead properties IsAttribute and IsElementContentSegment should be used. The root node should not be accessed directly from anywhere so far. Retruns name of the attribute the property is mapped to. Must not be called if a property is mapped to an element. URI of the namespace to which the belongs. Prefix to be used in xml document for . EntityPropertyMappingInfo corresponding to current segement. Whether this node corresponds to ResourceType or ClientType property values. Does this node correspond to xml attribute. Parent node in the tree (always an element if present). Sub-nodes of this node. Only exist if current node is an element node. Tree representing the targetName properties in all the EntityPropertyMappingAttributes for a type. Root of the sub-tree for syndication content. Root of the sub-tree for custom content. Number of properties that have V2 mapping with KeepInContent false. Initializes the sub-trees for syndication and non-syndication content. Adds a path to the tree which is obtained by looking at the EntityPropertyMappingAttribute in the . EnitityPropertyMappingInfo holding the target path Removes a path in the tree which is obtained by looking at the EntityPropertyMappingAttribute in the . EnitityPropertyMappingInfo holding the target path Validates the target tree. This also cleans up the tree if necessary. Checks if mappings could potentially result in mixed content and dis-allows it. StartPath being processed. A list of ancestor attributes that have content. Can contain a maximum of one attribute when the method is called, must never contain more than two. boolean indicating if the tree is valid or not. Given an gives the correct target path for it Given string with the correct value for the target path Root of the sub-tree for syndication content. Root of the sub-tree for custom content. Minimum protocol version required to serialize this target tree. Class with utility methods for reading ATOM metadata. Creates a new instance of ATOM entry metadata. The newly created ATOM entry metadata. Creates a new instance of ATOM feed metadata. The newly created ATOM feed metadata. Adds a new author to entry metadata. The entry metadata to add the author to. The author metadata to add. Adds a new contributor to entry metadata. The entry metadata to add the contributor to. The contributor metadata to add. Adds a new link to entry metadata. The entry metadata to add the link to. The link metadata to add. Adds a new link to feed metadata. The feed metadata to add the link to. The link metadata to add. Adds a new category to entry metadata. The entry metadata to add the category to. The category metadata to add. Adds a new category to feed metadata. The feed metadata to add the category to. The category metadata to add. Adds a new author to feed metadata. The feed metadata to add the author to. The author metadata to add. Adds a new contributor to feed metadata. The feed metadata to add the contributor to. The author metadata to add. Reader for the EPM syndication-only. Read the EPM properties from ATOM metadata OM. Constructor. The reader entry state for the entry to which the EPM is applied. The input context currently in use. Reads the syndication EPM for an entry. The reader entry state for the entry to which the EPM is applied. The input context currently in use. Reads an EPM for the entire entry. Reads a leaf segment which maps to a property value. The segment being read. The ATOM entry metadata to read from. Reads a non-leaf segment which has sub segments. The segment being read. The ATOM entry metadata to read from. Reads EPM values from a person construct (author or contributor). The target list, this can be either a list of properties (on entry or complex value), or a list of items (for a collection of primitive types). The type of the value on which to set the property (can be entity, complex or primitive). The target segment which points to either author or contributor element. The person ATOM metadata to read from. Reads the value of the ATOM text construct and sets it to the EPM. The EPM target segment for the value to read. The text construct to read it from (can be null). Base class for EPM writers. The output context currently in use. Constructor. The output context currently in use. Reads a property value starting on an entry. The EPM info which describes the mapping for which to read the property value. The EPM value cache for the entry to read from. The type of the entry. The value of the property (may be null), or null if the property itself was not found due to one of its parent properties being null. Reads a property value starting on a complex value. The EPM info which describes the mapping for which to read the property value. The complex value to start with. The EPM value cache to use. The index in the property value path to start with. The type of the complex value. The value of the property (may be null), or null if the property itself was not found due to one of its parent properties being null. Reads a property value starting with the specified index to the property value path. The EPM info which describes the mapping for which to read the property value. The enumeration of properties to search for the first property in the property value path. The index in the property value path to start with. The type of the entry or complex value the enumeration belongs to. The EPM value cache to use. The value of the property (may be null), or null if the property itself was not found due to one of its parent properties being null. The version of OData protocol to use. The settings to control the behavior of the writer. Interface representing a state of the ATOM reader for entry. The entry being read. The entity type for the entry (if available) Flag which indicates that the ATOM entry element representing the entry is empty. Flag which indicates whether we have found a read link for this empty (even if it had a null URI value). Flag which indicates whether we have found an edit link for this empty (even if it had a null URI value). Flag which indicates whether we have found an edit-media link for this empty (even if it had a null URI value). Flag which indicates whether we have found an id element. Flag which indicates whether we have found a content element . Flag which indicates whether we have found a category element with the required type name. Flag which indicates whether we have found a m:properties element. Flag indicating if we have already made a decision about the current entry and its being MLE or not. If this property has a null value, we don't know for sure yet (both are possible), if it has non-null value then we already know for sure and if we find something different we should fail. If the reader finds a navigation link to report, but it must first report the parent entry it will store the navigation link descriptor in this property. So this will only ever store the first navigation link of an entry. The duplicate property names checker for the entry represented by the current state. The EPM information for the entry, or null if there's no EPM for this entry. The ATOM entry metadata to fill as we read the content of the entry. The cache for values read from custom EPM. This should only be accessed if there's CachedEpm available for this entry. Interface representing a state of the ATOM reader for feed. The feed being read. Flag which indicates that the ATOM feed element representing the feed is empty. The ATOM feed metadata to fill as we read the content of the feed. Flag which indicates if a m:count element was found. Flag which indicates if a link[@rel='next'] element was found. Flag which indicates if a link[@rel='self'] element was found. Flag which indicates if a link[@rel='http://docs.oasis-open.org/odata/ns/delta'] element was found. OData ATOM deserializer for collections. Cached duplicate property names checker to use if the items are complex values. Constructor. The ATOM input context to read from. Reads the start element of a collection. true, if the collection element is empty; false otherwise. An representing the collection-level information. Currently this only contains the name of the collection. Pre-Condition: XmlNodeType.Element - The start element of the collection. Post-Condition: Any - The next node after the start element node of the collection or the empty collection element node. Reads the end of a collection. Pre-condition: XmlNodeType.EndElement - The end element of the collection. XmlNodeType.Element - The start element of the collection, if the element is empty. Post-condition: Any - Next node after the end element of the collection. Reads an item in the collection. The expected type of the item to read. The collection validator instance if no expected item type has been specified; otherwise null. The value of the collection item that was read; this can be an ODataComplexValue, a primitive value or 'null'. Pre-Condition: XmlNodeType.Element - The start element node of the item in the collection. Post-Condition: Any - The next node after the end tag of the item. Reads from the Xml reader skipping all nodes until an Element or an EndElement in the OData namespace is found or the reader.EOF is reached. Possible content types of expanded navigation link in ATOM. No content found, no m:inline. Empty content found, m:inline without anything in it. Usually represents null entry. Expanded entry found. Expanded feed found. OData ATOM deserializer for entries and feeds. Schema namespace for Atom. XML element name to mark entry element in Atom. 'category' - XML element name for ATOM 'category' element for entries. 'term' - XML attribute name for ATOM 'term' attribute for categories. 'scheme' - XML attribute name for ATOM 'scheme' attribute for categories. XML element name to mark content element in Atom. XML element name to mark link element in Atom. Element containing property values when 'content' is used for media link entries XML element name to mark feed element in Atom. XML element name to mark id element in Atom. XML attribute name of the link relation attribute in Atom. XML attribute name of the href attribute of a link in Atom. Atom source attribute name for the content of media link entries. OData attribute which indicates the etag value for the declaring entry element. OData element name for the 'count' element 'Inline' - wrapping element for inlined entry/feed content. Element name for m:action. Element name for m:function. Attribute name for m:action|m:function/@metadata. Attribute name for m:action|m:function/@title. Attribute name for m:action|m:function/@target. The reader used to parse annotation elements. ATOM deserializer for ATOM metadata on entries. This is created on-demand only when needed, but then it's cached. ATOM deserializer for ATOM metadata on feeds. This is created on-demand only when needed, but then it's cached. Constructor. The ATOM input context to read from. Ensure a media resource is created for the specified entry. The reader entry state for the entry being read. If set to true, this method will validate that marking the entry as MLE doesn't collide with it already being marked as non-MLE. Verified that the reader is positioned on the atom:entry start element node. Read the start of the entry. This method verifies that the current element is atom:entry and it reads the ETag from it. The entry instance to fill the properties on. Pre-Condition: XmlNodeType.Element - The method will fail if it's not element called atom:entry Post-Condition: XmlNodeType.Element - The atom:entry element Reads the content of an entry (child nodes of the atom:entry, not the atom:content element). The reader entry state for the entry being read. A descriptor representing the navigation link detected; null if no navigation link was found and the end of the entry was reached. Pre-Condition: Anything but Attribute - the child node of the atom:entry element, can be pretty much anything, the method will skip over insignificant nodes and text nodes if found. Post-Condition: XmlNodeType.EndElement atom:entry - The end of the atom:entry element if no nav. link was found and the end of the entry was reached. XmlNodeType.Element atom:link - The start tag of the atom:link element representing a navigation link. Read the end of the entry. Pre-Condition: XmlNodeType.Element (empty) atom:entry - The atom:entry empty element to read end of. XmlNodeType.EndElement atom:entry - The end element of atom:entry to read. Post-Condition: Any - The node right after the entry element. Read the start of the feed. This method verifies that the current element is atom:feed. Pre-Condition: XmlNodeType.Element - The method will fail if it's not called atom:feed (but won't validate that it's an element) Post-Condition: XmlNodeType.Element - The atom:feed element Reads the content of a feed (child nodes of the atom:feed). The reader feed state for the feed being read. true if the feed is inside an expanded link. true if an entry was found or false if no more entries were found in the feed. Pre-Condition: Anything but Attribute - the child node of the atom:feed element, can be pretty much anything, the method will skip over insignificant nodes and text nodes if found. Post-Condition: XmlNodeType.EndElement atom:feed - The end of the atom:feed element if no entry was found and the end of the feed was reached. XmlNodeType.Element atom:entry - The start tag of the atom:entry element representing an entry in the feed. Read the end of the feed. Pre-Condition: XmlNodeType.Element (empty) atom:feed - The atom:feed empty element to read end of. XmlNodeType.EndElement atom:feed - The end element of atom:feed to read. Post-Condition: Any - The node right after the entry element. Read the content of the navigation link before any expansion was found. An enumeration value indicating what content was found: None - no m:inline was found, the link is deferred. The reader is positioned on the atom:link end element. Empty - empty m:inline was found - usually means null entry. The reader is positioned on empty start m:inline or end element m:inline. Entry - expanded entry was found. The reader is positioned on the atom:entry element. Feed - expanded feed was found. The reader is positioned on the atom:feed element. Pre-Condition: Any - a node in the atom:link content. Post-Condition: XmlNodeType.EndElement atom:link - the end of the navigation link was reached. XmlNodeType.Element atom:feed - an expanded feed was found. XmlNodeType.Element atom:entry - an expanded entry was found. XmlNodeType.Element (empty) m:inline - empty inline was found. XmlNodeType.EndElement m:inline - empty inline was found. Determines if the reader is positioned on the m:inline end element or empty m:inline start element. true if the reader is on m:inline end element or m:inline empty start element; false otherwise. Skips everything until an end-element for atom:link is found. This method should only be used to skip the rest of the link content after the ReadNavigationLinkContentBeforeExpansion was called. Pre-Condition: XmlNodeType.Element atom:entry - start of the expanded entry XmlNodeType.Element atom:feed - start of the expanded feed XmlNodeType.Element (empty) m:inline - empty m:inline element (emptyInline = true) XmlNodeType.EndElement m:inline - end of the m:inline element. Post-Condition: XmlNodeType.EndElement atom:link - the end element of the navigation link. Read the content of the navigation link after the expansion was found. The method returns when the entire atom:link was read. true if the reader is positioned on the empty start tag or end tag of the m:inline element. false if the reader is inside m:inline (or on the end tag of m:inline). Pre-Condition: Any - child node of the m:inline element (emptyInline == false) XmlNodeType.Element (empty) m:inline - empty m:inline element (emptyInline = true) XmlNodeType.EndElement m:inline - end of the m:inline element. Post-Condition: XmlNodeType.EndElement atom:link - the end element of the navigation link. Read the end of the navigation link. Pre-Condition: XmlNodeType.Element (empty) atom:link - the empty atom:link element of a deferred navigation link. XmlNodeType.EndElement atom:link - the end element atom:link. Post-Condition: Any - The node right after the link element. Reads the entry content in buffering mode and looks for the type name (the category element with the right attributes). The type name if one of found or null if none was found. Pre-Condition: XmlNodeType.Element - the atom:entry element Post-Condition: XmlNodeType.Element - the atom:entry element on which the reader started. Returns an existing stream property value if it already exists in the list of OData properties otherwise creates a new ODataProperty for the stream property and returns the value of that property. The reader entry state for the entry being read. The name of the stream property to return. A new or an existing stream property value. If the is true, then the default behavior should throw. This method assumes the reader is positioned on the duplicated element. Used to determine if duplicate check should throw an exception. Reads an ATOM element inside the atom:entry from the input. The reader entry state for the entry being read. If the atom element is representing a navigation link a descriptor for that link is returned, otherwise null. Pre-Condition: XmlNodeType.Element in ATOM namespace - The element in ATOM namespace to read. Post-Condition: Any - The node after the ATOM element if it's not a navigation link. XmlNodeType.Element atom:link - The start tag of atom:link if it's a navigation link. Reads the atom:content element. The reader entry state for the entry being read. Pre-Condition: XmlNodeType.Element atom:content - The atom:content element to read. Post-Condition: Any - The node after the atom:content element. Reads the attributes of the <atom:content> element. The content type attribute value (or null if not found). The content source attribute value (or null if not found). Reads the atom:id element in the atom:entry element. The reader entry state for the entry being read. Pre-Condition: XmlNodeType.Element atom:id - The atom:id element to read. Post-Condition: Any - The node after the atom:id element. Reads the atom:link element in atom:entry. The reader entry state for the entry being read. If the link is a navigation link the method returns a descriptor representing that link, otherwise the method returns null. Pre-Condition: XmlNodeType.Element atom:link - The atom:link element to read. Post-Condition: Any - The node after the atom:link element if it's not a navigation link. XmlNodeType.Element atom:link - The atom:link start tag if it's a navigation link. Reads the atom:link element with one of the standard relation values in the atom:entry element. The reader entry state for the entry being read. The rel attribute value for the link. The href attribute value for the link (or null if the href attribute was not present). If the rel was one of the recognized standard relations and this method read the link the return value is true. Otherwise the method doesn't move the reader and returns false. Pre-Condition: XmlNodeType.Element atom:link - The atom:link element to read. Post-Condition: Any - The node after the atom:link element if the link was read by this method. XmlNodeType.Element atom:link - The atom:link element to read if the link was not read by this method. Reads a navigation link in entry element. The reader entry state for the entry being read. The value of the rel attribute of the link to read, unescaped parsed URI. The value of the href attribute of the link to read. A descriptor of a navigation link if a navigation link was found; null otherwise. Pre-Condition: XmlNodeType.Element atom:link - the start tag of the atom:link element to read. Post-Condition: XmlNodeType.Element atom:link - the start tag of the atom:link element - the reader doesn't move Reads a stream property edit or read link in an atom:entry. The reader entry state for the entry being read. The rel attribute value for the link, unescaped parsed URI. The href attribute value for the link (or null if the href attribute was not present). true if the link is a stream property read or edit link; otherwise false. true, if the named stream was read successfully, false otherwise. Pre-Condition: XmlNodeType.Element atom:link - The atom:link element to read. Post-Condition: Any - The node after the atom:link element if the link was read by this method. XmlNodeType.Element atom:link - The atom:link element to read if the link was not read by this method. Reads a stream property link in an atom:entry. The reader entry state for the entry being read. The name of the stream property that is being read. The rel attribute value for the link. The href attribute value for the link (or null if the href attribute was not present). true if we are reading an edit link; otherwise false. true if the stream property link was read; otherwise false. Pre-Condition: XmlNodeType.Element atom:link - The atom:link element to read. Post-Condition: Any - The node after the atom:link element if the link was read by this method. XmlNodeType.Element atom:link - The atom:link element to read if the link was not read by this method. Reads a an association link in atom:entry. The reader entry state for the entry being read. The rel attribute value for the link, unescaped parsed URI. The href attribute value for the link (or null if the href attribute was not present). true, if the association link was read succesfully, false otherwise. Pre-Condition: XmlNodeType.Element atom:link - The atom:link element to read. Post-Condition: Any - The node after the atom:link element if the link was read by this method. XmlNodeType.Element atom:link - The atom:link element to read if the link was not read by this method. Reads a an m:action or m:function in atom:entry. The reader entry state for the entry being read. true, if the m:action or m:function was read succesfully, false otherwise. Pre-Condition: XmlNodeType.Element m:action|m:function - The m:action or m:function element to read. Post-Condition: Any - The node after the m:action or m:function element if it was read by this method. XmlNodeType.Element m:action|m:function - The m:action or m:function element to read if it was not read by this method. Reads an ATOM element inside the atom:feed from the input. The reader feed state for the feed being read. true if the feed is inside an expanded link. true if the atom:entry element was found and the reader was not moved; false otherwise and the reader is positioned on the next node after the ATOM element. Pre-Condition: XmlNodeType.Element in ATOM namespace - The element in ATOM namespace to read. Post-Condition: Any - The node after the ATOM element which was consumed. XmlNodeType.Element atom:entry - The start of the atom:entry element (the reader did not move in this case). Reads the atom:link element with one of the standard relation values in the atom:feed element. The reader feed state for the feed being read. The rel attribute value for the link. The href attribute value for the link (or null if the href attribute was not present). true if the feed is inside an expanded link. If the rel was one of the recognized standard relations and this method read the link the return value is true. Otherwise the method doesn't move the reader and returns false. Pre-Condition: XmlNodeType.Element atom:link - The atom:link element to read. Post-Condition: Any - The node after the atom:link element if the link was read by this method. XmlNodeType.Element atom:link - The atom:link element to read if the link was not read by this method. Reads the Atom metadata for the link if metadata is required to be read, skip it otherwise. The rel attribute value for the link. The href attribute value for the link (or null if the href attribute was not present). Action for adding AtomLinkMetadata to the AtomFeedMetadata Reads the atom:link element's rel and href attributes. The value of the rel attribute or null if no such attribute was found. The value of the href attribute or null if no such attribute was found. Pre-Condition: XmlNodeType.Element atom:link - The atom:link element to read. Post-Condition: XmlNodeType.Element atom:link - The atom:link element to read - the reader doesn't not move. Reads the content of navigation link. true if m:inline was found, false if the end of the atom:link was found. Pre-Condition: Any - a child node of the atom:link element. Post-Condition: XmlNodeType.Element m:inline - the m:inline was found, the method returns true. XmlNodeType.EndElement atom:link - the atom:link end element, end of the navigation link, the method returns false. Reads content of the m:inline element. Enumeration denoting what was found in the content. Empty - The end of the m:inline element was found - the reader is positioned on the m:inline end element. Entry - An expanded entry was found - the reader is positioned on atom:entry element. Feed - An expanded feed was found - the reader is positioned on atom:feed element. None - will never be returned. Pre-Condition: Any - child node of the m:inline element. Post-Condition: XmlNodeType.Element atom:feed - an expanded feed was found. XmlNodeType.Element atom:entry - an expanded entry was found. XmlNodeType.EndElement m:inline - empty inline was found. Verifies that the specified content type of an atom:content element matches the expected value. The content type value read from the payload. The verified media type name (without parameters or charset) of the content type. ATOM deserializer for ATOM metadata on entries. This is created on-demand only when needed, but then it's cached. ATOM deserializer for ATOM metadata on feeds. This is created on-demand only when needed, but then it's cached. Flag indicating if ATOM metadata is required to be read by the user. OData ATOM deserializer for ATOM metadata on entries. The empty namespace used for attributes in no namespace. Schema namespace for Atom. Feed ATOM metadata deserializer for deserializing the atom:source element in an entry. This is created on-demand only when needed, but then it's cached. Constructor. The ATOM input context to read from. Reads an element in ATOM namespace in the content of the entry element. The reader entry state for the entry being read. Pre-Condition: XmlNodeType.Element (atom:*) - the ATOM element to read. Post-Condition: Any - the node after the ATOM element which was read. Reads the atom:link element in the entry content. The value of the rel attribute for the link element. The value of the href attribute for the link element. An instance storing the information about this link, or null if link info doesn't need to be stored. Pre-Condition: XmlNodeType.Element (atom:link) - the atom:link element to read. Post-Condition: XmlNodeType.Element (atom:link) - the atom:link element which was read. Reads the atom:category element in the entry content. The reader entry state for the entry being read. Pre-Condition: XmlNodeType.Element (atom:category) - the atom:category element to read. Post-Condition: Any - the node after the atom:category which was read. Reads the atom:category element. The ATOM category metadata read. Pre-Condition: XmlNodeType.Element (atom:category) - the atom:category element to read. Post-Condition: Any - the node after the atom:category which was read. Reads the atom:source element in the entry content. The information in the source element as . Pre-Condition: XmlNodeType.Element (atom:source) - the atom:source element to read. Post-Condition: Any - the node after the atom:source which was read. Reads an author element. The reader entry state for the entry being read. The EPM target path segment for the element to read, or null if no EPM for that element is defined. Pre-Condition: XmlNodeType.Element (atom:author) - the atom:author element to read. Post-Condition: Any - the node after the atom:author element which was read. Reads a contributor element. The reader entry state for the entry being read. The EPM target path segment for the element to read, or null if no EPM for that element is defined. Pre-Condition: XmlNodeType.Element (atom:contributor) - the atom:contributor element to read. Post-Condition: Any - the node after the atom:contributor element which was read. Determines if a person element should be read or skipped. true if some elements from the collection in question already exist; false if this is the first one. true if the collection element should be read; false if it should be skipped. Determines if we should read an element which is allowed to appear only once in ATOM. true if we already found such element before; false if this is the first occurence. true if the element should be processed; false if the element should be skipped. The method may throw if multiple occurences of such element occure and they should be treated as an error. Feed ATOM metadata deserializer for deserializing the atom:source element in an entry. This is created on-demand only when needed, but then it's cached. /// OData ATOM deserializer for service document. The name of the top-level service document element. The name of the 'workspace' element of a service document. href attribute name in Atom. The name of the 'collection' element of a service document. The name of the 'categories' element of a service document. The name of the 'accept' element of a service document. The Atom Publishing Protocol (APP) namespace. The ATOM namespace. The name of the 'title' element of a service document. The emtpy namespace used for attributes in no namespace. ATOM deserializer for ATOM metadata on service documents. This is created on-demand only when needed, but then it's cached. Constructor. The ATOM input context to read from. Reads a service document. This method reads the service document from the input and returns an that represents the read service document. An representing the read service document. Pre-Condition: XmlNodeType.Element - The start element of the service document. Post-Condtion: XmlNodeType.None - The reader must be at the end of the input. Reads a workspace of a service document. An representing the workspace of a service document. Pre-Condition: Any - the next node after the service element. Post-Condition: Any - The next node after the workspace element. Reads a resource collection element of a workspace of the service document. An representing the resource collection in a workspace of a service document. Pre-Condition: XmlNodeType.Element - the collection element inside the workspace. Post-Condition: Any - The next node after the collection element. Reads from the Xml reader skipping all nodes until an Element or an EndElement in the ATOM publishing namespace is found. ATOM deserializer for ATOM metadata on service documents. This is created on-demand only when needed, but then it's cached. Handles serialization and deserialization for types derived from Geography. Create a geography instance from the value in an Xml reader. The Xml reader to use to read the value. In order to be consistent with how we are reading other types of property values elsewhere in the product, the reader is expected to be placed at the beginning of the element when entering this method. After this method call, the reader will be placed at the EndElement, such that the next Element will be read in the next Read call. The deserializer that uses this value expects the reader to be in these states when entering and leaving the method. Geography instance that was read. Write the Atom representation of an instance of a primitive type to an XmlWriter. The instance to write. The Xml writer to use to write the instance. Write the Verbose Json representation of an instance of a primitive type to a json writer. The instance to write. Instance of JsonWriter. Type name of the instance to write. If the type name is null, the type name will not be written in the payload. The OData protocol version to be used for writing payloads. Write the Json Lite representation of an instance of a primitive type to a json writer. The instance to write. Instance of JsonWriter. The OData protocol version to be used for writing payloads. Annotation which stores a hashset of property names of a complex type that returned KeepInContent == true when written the first time. See the comments on ODataWriterBehavior.UseV1ProviderBehavior for more details. A hash set with the property names of properties that are kept in the content. Constructor. Enumeration of property names that are kept in content. Determines if a property is in a list of properties that are kept in the content. The name of the property to lookup. true if the property is kept in the content; false otherwise. Atom metadata description for a text construct (plain text, html or xhtml). Converts a string to an instance. The instance created for text. The to convert to an . Implicit conversion from string to . The to convert to an . The result. Gets or sets the kind of the text construct (plain text, html, xhtml). The kind of the text construct. Gets or sets the text content. The text content. Enumeration for classifying the different kinds of text content in ATOM metadata. Plain text. Html text. XHtml text. XML reader which supports look-ahead. The "http://www.w3.org/XML/1998/namespace" namespace for the "xml" prefix. The "base" name for the XML base attribute. The 'lang' attribute local name of the xml:lang attribute. XML namespace for data service annotations. XML namespace for data services. This is to provide compatibility with WCF DS client which accepts custom data namespace value. The 'error' local name of the error element. The underlying XML reader this buffering reader is wrapping. The (possibly empty) list of buffered nodes. This list stores only non-attribute nodes, attributes are stored in a separate list on an element node. A special buffered node instance which represents the end of input. We always have just one instance and compare references. Flag to control if the xml:base attributes should be processed when reading. The maximumum number of recursive internalexception elements to allow when reading in-stream errors. The base URI for the document. A pointer into the bufferedNodes list to track the most recent position of the current buffered node. A pointer into the linked list of attribute nodes which is only used if the currentBufferedNodeToReport is the attribute value node (not the attribute itself). In that case it points to the current attribute node. In all other cases this node is null. A pointer either into the bufferedNodes list or into the list of attributes on a buffered element node which points to the node which should be reported to the user. A flag indicating whether the reader is in buffering mode or not. A flag indicating that the last node for non-buffering read was taken from the buffer; we leave the node in the buffer until the next Read call. Flag to control whether in-stream errors should be detected when reading. The stack of XML base URI definitions. The XML base stack state when the buffering started. This is only used when in buffering mode. Constructor The reader to wrap. If this reader is wrapping an inner reader of some kind, this parameter should pass the xml:base effective value of the parent. The base URI for the document. Flag to control if the xml:base attributes should be processed when reading. The maximum number of recursive internalexception elements to allow when reading in-stream errors. XML namespace for data services. Reads the next node from the input. true if another node is available and the reader has moved to it; false if end of input was reached. Moves the reader to the element which owns the current attribute. true if the reader has moved (that is the current node was an attribute); false if the reader didn't move (the reader was already positioned on an element or other node). Moves the reader to the first attribute of the current element. true if the reader moved to the first attribute; false if there are no attribute for the current node (the reader didn't move). Moves the reader to the next attribute on the current element. true if the reader moved to the next attribute (if the node was an element it moves to the first attribute); false if the reader didn't move (no attributes for the current node). Reads the next node from the value of an attribute. true if next node was available; false if end of the attribute value was reached. Closes the reader and the underlying input. Returns the value of an attribute based on its index. The index of the attribute, starts at 0. The value of the attribute at index . Returns the value of an attribute based on its fully qualified name. The local name of the attribute. The namespace URI of the attribute. The value of the attribute with specified and . Returns the value of an attribute based on its name. The name of the attribute. (prefix:localname) The value of the attribute with specified . Looks up a namespace URI based on the prefix. The prefix to search for. The namespace URI for the specified . Moves the reader to the attribute specified by fully qualified name. The local name of the attribute. The namespace URI of the attribute. true if the attribute specified by and was found and the reader is positioned on it; false otherwise. Moves the reader to the attribute specified by name. The name of the attribute (prefix:localname). true if the attribute specified by was found and the reader is positioned on it; false otherwise. Resolves the current entity node. Puts the reader into the state where it buffers read nodes. Puts the reader into the state where no buffering happen on read. Either buffered nodes are consumed or new nodes are read (and not buffered). The actual implementatin of the Read method. Moves the reader to the next node. true if the reader should not check for in-stream errors; otherwise false. true if next node is available and the reader has moved; false if end-of-input was reached. Reads the next node from the XML reader and if m:error element node is detected starts reading ahead and tries to parse an in-stream error. true if a new node was found, or false if end of input was reached. Determines if the specified node is the end of input node. The buffered node to test. true if the node is the special end of input node, false otherwise. Buffers the current reader state into a node. The newly created buffered node. Returns the current element node (or node which acts like an element, it doesn't have to be of type Element). The current element node. Finds the buffered node for the attribute specified by its index. The index of the attribute. The linked list node of the found attribute, or null if no such attribute could be found. Finds the buffered node for the attribute specified by its local name and namespace URI. The local name of the attribute. The namespace URI of the attribute. The linked list node of the found attribute, or null if no such attribute could be found. Finds the buffered node for the attribute specified by its qualified name. The qualified name of the attribute to find, that is prefix:localName. The linked list node of the found attribute, or null if no such attribute could be found. If the reader is positioned on the attribute value node, this moves it to the owning attribute node. Returns the value of an attribute based on its fully qualified name. The local name of the attribute. This string must already be atomized against the reader's nametable. The namespace URI of the attribute. This string must already be atomized against the reader's nametable. The value of the attribute with specified and . Behaves the same as GetAttribute, but it assumes that the parameters are already atomized against our nametable. This allows the method to be much faster. Validates internal state of the reader - debug only. Returns the type of the current node. Returns true if the reader is positioned on an empty element. Returns the local name of the current node. Returns the prefix of the current node. Returns the namespace URI of the current node. Returns the value of the current node. Returns the depth of the current node. Returns true if the end of input was reached. Returns the current state of the reader. We need to support ReadState in order for Skip to work without us implementing it again. Returns the nametable used by the reader. Returns the number of attributes on the node. Returns the base URI of the node - note that this is not based on the xml:base attribute, just the input streams. Returns true if the current node has a value. The active XML base URI for the current node. The active XML base URI for the parent node (parent element) of the current node. Flag to control whether in-stream errors should be detected when reading. Class representing one buffered XML node The list of attribute nodes, if this node is an element node. Constructor. The XML reader to get all the interesting values from. The reader is positioned on the node which the new buffered node should buffer. Constructor for an attribute value node The value of the attribute value node to create. The parent attribute depth. The nametable to use. Constructor for end of input node. The atomized instance of an empty string. Creates a special node which represents the end of input. The nametable of the underlying reader. The newly created node. The type of the buffered node. The namespace URI of the buffered node. The local name of the buffered node. The prefix of the buffered node. The value of the buffered node. The depth of the buffered node. Denotes if the buffered node is an empty element. List of attributes. If the node is not element, this will be null. Helper class to store XML base URI definition for a specific depth of the reader. Constructor. The XML base URI for the definition. The depth of the XML reader for the definition. The base URI for this definition. The depth of the XmlReader on which this XML base is defined. Atom metadata for stream reference values. Gets or sets an Atom link metadata for the self link. An Atom link metadata for the self link. Gets or sets an Atom link metadata for the edit link. An Atom link metadata for the edit link. OData collection reader for ATOM format. The input to read the payload from. The collection deserializer to use to read from the input. Constructor. The input to read the payload from. The expected type reference for the items in the collection. Implementation of the collection reader logic when in state 'Start'. true if more items can be read from the reader; otherwise false. Pre-Condition: XmlNodeType.None - assumes that the Xml reader has not been used yet. Post-Condition: Any - the next node after the collection element node or the empty collection element node. Implementation of the reader logic when in state 'CollectionStart'. true if more nodes can be read from the reader; otherwise false. Pre-Condition: Any - the next node after the collection element or the empty collection element node. Post-Condition: Any - the next node after the end tag of the item or the collection. Implementation of the reader logic when in state 'Value'. true if more nodes can be read from the reader; otherwise false. Pre-Condition: Any - the next node after the end tag of the item. Post-Condition: Any - the next node after the end tag of the item or the collection. Implementation of the reader logic when in state 'CollectionEnd'. false since no more nodes can be read from the reader after the collection ends. Pre-Condition: Any - the next node after the end tag of the collection element. Post-Condtion: XmlNodeType.None - the reader is at the end of the input. Implementation of the OData input for ATOM OData format. The XML reader used to parse the input. Do not use this to actually read the input, instead use the xmlReader. The XML reader to read from. If entry XML customization is used this is the reader for the current entry. A stack used to track XML customization readers. At the beginning the base reader is pushed to the stack. Each non-null entry has an item on this stack. If the XML customization was used for a given entry the reader returned by the customization will be pushed to the stack for it. This is only used from ODataAtomReader, other readers don't use this. Constructor. The format for this input context. The stream to read data from. The encoding to use to read the input. Configuration settings of the OData reader. The OData protocol version to be used for reading the payload. true if reading a response message; otherwise false. true if the input should be read synchronously; false if it should be read asynchronously. The model to use. The optional URL resolver to perform custom URL resolution for URLs read from the payload. Creates an to read a feed. The entity set we are going to read entities for. The expected base type for the entries in the feed. The newly created . Creates an to read an entry. The entity set we are going to read entities for. The expected entity type for the entry to be read. The newly created . Create a . The expected type reference for the items in the collection. Newly create . Read a service document. This method reads the service document from the input and returns an that represents the read service document. An representing the read service document. This method creates an reads the property from the input and returns an representing the read property. The producing the property to be read. The expected type reference of the property to read. An representing the read property. Read a top-level error. An representing the read error. Read a set of top-level entity reference links. The navigation property for which to read the entity reference links. An representing the read links. Reads a top-level entity reference link. The navigation property for which to read the entity reference link. An representing the read entity reference link. Detects the payload kind(s) of the payload. Additional information available for the payload kind detection. An enumerable of zero or more payload kinds depending on what payload kinds were detected. Initializes the ability to use customization readers. This needs to be called before any of the reader customization functionality is used. Pushes a reader on the top of the customization stack. The reader to push. The xml:base URI to use as the base uri for all of the payload read from that reader. Pops a reader from the top of the customization stack. The popped reader, the one which was on the top of the stack before the operation. Disposes the input context. Creates an to read a feed. The entity set we are going to read entities for. The expected base type for the entries in the feed. The newly created . Creates an to read an entry. The entity set we are going to read entities for. The expected entity type for the entry to be read. The newly created . Create a . The expected type reference for the items in the collection. Newly create . This method creates and reads the property from the input and returns an representing the read property. The producing the property to be read. The expected type reference of the property to read. An representing the read property. This methods creates and reads a service document from the input and returns an representing the service document. An representing the service document. Read a top-level error. An representing the read error. Reads top-level entity reference links. An representing the read entity reference link. Reads a top-level entity reference link. An representing the read entity reference link. Returns the which is to be used to read the content of the message. Helper methods used by the OData reader for the ATOM format. Creates an Xml reader over the specified stream with the provided settings. The stream to create the XmlReader over. The encoding to use to read the input. The OData message reader settings used to control the settings of the Xml reader. An instance configured with the provided settings. Parses the value of the m:null attribute and returns a boolean. The string value of the m:null attribute. true if the value denotes that the element should be null; false otherwise. Creates a new XmlReaderSettings instance using the encoding. Configuration settings of the OData reader. The Xml reader settings to use for this reader. OData reader for the ATOM format. The input to read the payload from. The deserializer to use to read input. Stack of entry and feed deserializers, we need to create a new one for each XML customization so that the strings get atomized again and so that we can return to the original one without reatomizing everything. Constructor. The input to read the payload from. The entity set we are going to read entities for. The expected entity type for the entry to be read (in case of entry reader) or entries in the feed to be read (in case of feed reader). true if the reader is created for reading a feed; false when it is created for reading an entry. Implementation of the reader logic when in state 'Start'. true if more items can be read from the reader; otherwise false. Pre-Condition: PayloadStart - assumes that the XML reader has not been used yet. Post-Condition: XmlNodeType.Element (empty) atom:entry - The entry element when reading top-level entry and the entry element is empty. XmlNodeType.EndElement atom:entry - The end element of the top-level entry (if there were no nav. links. in it). XmlNodeType.Element atom:link - the atom:link element representing the first navigation link in the top-level entry. XmlNodeType.Element (empty) atom:feed - The feed element when reading top-level feed and the feed element is empty. XmlNodeType.EndElement atom:feed - The end element of the top-level feed (if there were no entries in it). XmlNodeType.Element atom:entry - if the feed contains an entry (the start tag of the first entry). Implementation of the reader logic when in state 'FeedStart'. true if more items can be read from the reader; otherwise false. Pre-Condition: XmlNodeType.Element atom:feed (empty) - The empty start tag of atom:feed. XmlNodeType.EndElement atom:feed - The end tag of the atom:feed. XmlNodeType.Element atom:entry - The start tag of the first entry element to read. XmlNodeType.Element m:inline (empty) - The empty start tag of an expanded navigation link m:inline element which we report as empty feed. XmlNodeType.EndElement m:inline - The end tag of an expanded navigation link m:inline element which we report as empty feed. Post-Condition: XmlNodeType.Element atom:feed (empty) - The empty start tag of atom:feed. XmlNodeType.EndElement atom:feed - The end tag of the atom:feed. XmlNodeType.Element atom:entry (empty) - The empty start tag of the first entry in the feed. XmlNodeType.EndElement atom:entry - The end tag of the first entry in the feed (if it had no nav. links). XmlNodeType.Element atom:link - the atom:link element representing the first navigation link in the first entry in the feed. XmlNodeType.Element m:inline (empty) - The empty start tag of an expanded navigation link m:inline element which we report as empty feed. XmlNodeType.EndElement m:inline - The end tag of an expanded navigation link m:inline element which we report as empty feed. Implementation of the reader logic when in state 'FeedEnd'. true if more items can be read from the reader; otherwise false. Pre-Condition: XmlNodeType.Element (empty) atom:feed - The empty start tag of atom:feed XmlNodeType.EndElement atom:feed - The end element of the atom:feed XmlNodeType.Element m:inline (empty) - The empty start tag of an expanded navigation link m:inline element which we report as empty feed. XmlNodeType.EndElement m:inline - The end tag of an expanded navigation link m:inline element which we report as empty feed. Post-Condition: Any - The node right after the top-level atom:feed element XmlNodeType.EndElement atom:link - The end of parent expanded link. Implementation of the reader logic when in state 'EntryStart'. true if more items can be read from the reader; otherwise false. Pre-Condition: XmlNodeType.Element atom:entry (empty) - The empty start tag of atom:entry. XmlNodeType.EndElement atom:entry - The end tag of the atom:entry. XmlNodeType.Element atom:link - The start tag of the atom:link which represents the first navigation link. XmlNodeType.Element (empty) m:inline - the empty m:inline element of an expanded null entry. XmlNodeType.EndElement m:inline - the end element m:inline of an expanded null entry. Post-Condition: XmlNodeType.Element atom:entry (empty) - The empty start tag of atom:entry. XmlNodeType.EndElement atom:entry - The end tag of the atom:entry. XmlNodeType.Element atom:link - The start tag of the atom:link which represents the first navigation link. XmlNodeType.Element (empty) m:inline - the empty m:inline element of an expanded null entry. XmlNodeType.EndElement m:inline - the end element m:inline of an expanded null entry. Implementation of the reader logic when in state 'EntryEnd'. true if more items can be read from the reader; otherwise false. Pre-Condition: XmlNodeType.Element (empty) atom:entry - The empty start tag of atom:entry. XmlNodeType.EndElement atom:entry - The end element of the atom:entry. XmlNodeType.Element (empty) m:inline - the empty m:inline element of an expanded null entry. XmlNodeType.EndElement m:inline - the end element m:inline of an expanded null entry. Post-Condition: Any - The node right after the top-level atom:entry element. XmlNodeType.EndElement atom:feed - The end element of the parent feed for the entry. XmlNodeType.Element (empty) atom:entry - The empty start tag of the next entry in the parent feed. XmlNodeType.EndElement atom:entry - The end element of the next entry in the parent feed (if it had no nav. links). XmlNodeType.Element atom:link - The start tag of the atom:link which represents the first navigation link in the next entry in the parent feed. XmlNodeType.EndElement atom:link - The end of parent expanded link. Implementation of the reader logic when in state 'NavigationLinkStart'. true if more items can be read from the reader; otherwise false. Pre-Condition: XmlNodeType.Element atom:link - the atom:link element representing the navigation link. Post-Condition: XmlNodeType.Element (empty) atom:link - the empty atom:link element of a deferred navigation link. XmlNodeType.EndElement atom:link - the end element atom:link of a deferred navigation link. XmlNodeType.Element atom:entry - the atom:entry element of the expanded entry. XmlNodeType.Element atom:feed - the atom:feed element of the expanded feed. XmlNodeType.Element (empty) m:inline - the empty m:inline element of an expanded null entry. XmlNodeType.EndElement m:inline - the end element m:inline of an expanded null entry. Implementation of the reader logic when in state 'NavigationLinkEnd'. true if more items can be read from the reader; otherwise false. Pre-Condition: XmlNodeType.Element (empty) atom:link - the empty atom:link element of a deferred navigation link. XmlNodeType.EndElement atom:link - the end element atom:link. Post-Condition: XmlNodeType.EndElement atom:entry - the end element atom:entry of the parent entry if there are no more navigation links. XmlNodeType.Element atom:link - the atom:link element of the next navigation link of the parent entry. Implementation of the reader logic when in state 'EntityReferenceLink'. true if more items can be read from the reader; otherwise false. Pre-Condition: XmlNodeType.Element (empty) atom:link - the empty atom:link element of an entity reference link. XmlNodeType.EndElement atom:link - the end element atom:link of the entity reference link. Post-Condition: Unchanged - the reader doesn't change its position. Reads the start of a feed and sets up the reader state correctly. Pre-Condition: XmlNodeType.Element - The method will fail if it's not atom:feed. Post-Condition: XmlNodeType.Element (empty) atom:feed - The feed element when reading top-level feed and the feed element is empty. XmlNodeType.EndElement atom:feed - The end element of the top-level feed (if there were no entries in it). XmlNodeType.Element atom:entry - if the feed contains an entry (the start tag of the first entry) Reads the start of an entry and sets up the reader state correctly. Pre-Condition: XmlNodeType.Element - The method will fail if it's not atom:entry. Post-Condition: XmlNodeType.Element (empty) atom:entry - The entry element when reading entry and the entry element is empty. XmlNodeType.EndElement atom:entry - The end element of the entry (if there were no nav. links. in it) XmlNodeType.Element atom:link - The start tag of the atom:link which represents the first navigation link in the entry. End the entry. Starts the navigation link. Does metadata validation of the navigation link and sets up the reader to report it. The navigation link descriptor for the navigation link to start. Moves the reader from the start state of a non-expanded navigation link. Creates a new for the specified and with the provided and pushes it on the stack of scopes. The to use for the new scope. The item to attach with the state in the new scope. The expected type for the new scope. Replaces the current scope with a new with the specified and the item of the current scope. The to use for the new scope. Replaces the current scope with a new FeedEnd scope and the item of the current scope. Returns the current entry state. Returns the current feed state. A reader scope; keeping track of the current reader state and an item associated with this state. Flag indicating if we have already made a decision about the current Entry (represented by this scope) and its being MLE or not. If this property have null value, we don't know for sure yet (both are possible), it it has non-null value then we already know for sure and if we find something different we should fail. Bitfield to track the current state of the ATOM scope. The ATOM entry metadata to fill as we read the content of the entry. This is lazily initialized only when it's actually needed. The ATOM feed metadata to fill as we read the content of the entry. This is lazily initialized only when it's actually needed. The cache for values read from custom EPM. This is lazily initialized only when it's actually needed. Constructor creating a new reader scope. The reader state of this scope. The item attached to this scope. The expected type for the scope. The has the following meanings for given state: Start - it's the expected base type of the top-level entry or entries in the top-level feed. FeedStart - it's the expected base type of the entries in the feed. note that it might be a more derived type than the base type of the entity set for the feed. EntryStart - it's the expected base type of the entry. If the entry has no type name specified this type will be assumed. Otherwise the specified type name must be the expected type or a more derived type. NavigationLinkStart - it's the expected base type the entries in the expanded link (either the single entry or entries in the expanded feed). In all cases the specified type must be an entity type. Sets the bit identified by the if is true, otherwise clears it. Indicates if the should be set Identifies the bit to set in atomScopeState Returns true if the bit identified by is set, false otherwise. Identifies the bit to set in atomScopeState True if the bit identified by the is set, false otherwise Flag which indicates that the element representing the current state is empty. Flag indicating if we have already made a decision about the current Entry (represented by this scope) and its being MLE or not. If this property has a null value, we don't know for sure yet (both are possible), if it has non-null value then we already know for sure and if we find something different we should fail. If the reader finds a navigation link to report, but it must first report the parent entry it will store the navigation link descriptor in this property. So this will only ever store the first navigation link of an entry. The duplicate property names checker for the entry represented by the current state. The EPM information for the entry, or null if there's no EPM for this entry. trye if the EpmCustomReaderValueCache has been initialized; false otherwise. true if the AtomEntryMetadata has been initialized; false otherwise. The navigation property retrieved from the metadata when reading a navigation link. The entry being read. The entity type for the entry (if available) Flag which indicates that the ATOM entry element representing the entry is empty. Flag which indicates whether we have found a read link for this entry (even if it had a null URI value). Flag which indicates whether we have found an edit link for this entry (even if it had a null URI value). Flag which indicates whether we have found an edit-media link for this entry (even if it had a null URI value). Flag which indicates whether we have found an id element for this entry. Flag which indicates whether we have found a content element for this entry. Flag which indicates whether we have found a category element for this entry. Flag which indicates whether we have found a m:properties element for this entry. Flag which indicates whether we have found a m:count elemnent for this feed. Flag which indicates whether we have found a link[@rel='next'] elemnent for this feed. Flag which indicates whether we have found a link[@rel='self'] elemnent for this feed. Flag which indicates if a link[@rel='http://docs.oasis-open.org/odata/ns/delta'] element was found. The ATOM entry metadata to fill as we read the content of the entry. The cache for values read from custom EPM. This should only be accessed if there's CachedEpm available for this entry. The feed metadata to fill as we read the content of a feed. The feed being read. Flag which indicates that the ATOM feed element representing the feed is empty. An enumeration of the various kinds of properties on an entity reference link collection. No state information. Empty element. A read link has been detected for this entry. An edit link has been detected for this entry. An id link has been detected for this entry. A content element has been detected for this entry. A category element which has the required type name has been detected for this entry. A m:properties element has been detected for this entry. A m:count link has been detected for this feed. A link[@rel='next'] link has been detected for this feed. A link[@rel='self'] link has been detected for this feed. An edit-media link has been detected for this entry. A link[@rel='http://docs.oasis-open.org/odata/ns/delta'] has been detected for this entry. Extension methods for the XML reader. Asserts that the reader is not buffer. The to read from. Asserts that the reader is buffer. The to read from. Reads the value of the element as a string. The reader to read from. The string value of the element. Pre-Condition: XmlNodeType.Element - the element to read the value for. XmlNodeType.Attribute - an attribute on the element to read the value for. Post-Condition: Any - the node after the element. This method is similar to ReadElementContentAsString with one difference: - It ignores Whitespace nodes - this is needed for compatiblity, WCF DS ignores insignificant whitespaces it does that by setting the IgnoreWhitespace option on reader settings, ODataLib can't do that cause it doesn't always control the creation of the XmlReader, so it has to explicitely ignore insignificant whitespaces. Reads the value of the first text, CDATA or significant whitespace node. The reader to read from. The value of the first text, CDATA or significant whitespace node. Pre-Condition: XmlNodeType.Element - the element to read the value for. Post-Condition: Any - the node after the element. Reads the value of the element as a string. The reader to read from. The string value of the element. Pre-Condition: XmlNodeType.Element - the element to read the value for. XmlNodeType.Attribute - an attribute on the element to read the value for. Post-Condition: XmlNodeType.Element - the element was empty. XmlNodeType.EndElement - the element had some value. This method is similar to ReadElementContentAsString with two differences: - It ignores Whitespace nodes - this is needed for compatiblity, WCF DS ignores insignificant whitespaces it does that by setting the IgnoreWhitespace option on reader settings, ODataLib can't do that cause it doesn't always control the creation of the XmlReader, so it has to explicitely ignore insignificant whitespaces. - It leaves the reader positioned on the EndElement node (or the start node if it was empty). Reads from the XML reader skipping insignificant nodes. The XML reader to read from. Do not use MoveToContent since for backward compatibility reasons we skip over nodes reported as Text which have whitespace only content (even though the XmlReader should report those as Whitespace). Skips the content of the element and leaves the reader on the end element (or empty start element) The reader to read from. Pre-Condition: XmlNodeType.Element - the element to read XmlNodeType.Attribute - attribute on the element to read Post-Condition: XmlNodeType.Element - if the element was empty element with no content. XmlNodeType.EndElement - if the element was element with empty content. Reads from the input until the first element is found. The XML reader to read from. Pre-Condition: XmlNodeType.None - the reader hasn't been used yet. Post-Condition: XmlNodeType.Element - the reader is positioned on the root/first element. Note that the method will fail if the top-level contains any significant node other than the root element or if no root element is found. Reads till the end of the input payload. The XML reader to read from. Pre-Condition: any - the reader will verify that only insignificant node is present. Post-Condition: XmlNodeType.None - the reader is at the end of the input. Determines if the current node's namespace equals to the specified The XML reader to get the current node from. The namespace URI to compare, this must be a string already atomized in the name table. true if the current node is in the specified namespace; false otherwise. Determines if the current node's local name equals to the specified The XML reader to get the current node from. The local name to compare, this must be a string already atomized in the name table. true if the current node has the specified local name; false otherwise. Tries to read the current element as an empty element (no or empty content). The XML reader to read from. true if the reader was on an empty element; false otherwise. Pre-Condition: XmlNodeType.Element - the element to read XmlNodeType.Attribute - attribute on the element to read Post-Condition: XmlNodeType.Element - if the element was empty element with no content. XmlNodeType.EndElement - if the element was element with empty content. any other - the first child node of the element, in this case the method returns false. Reads to the next element encountered in an Xml payload. The to read from. true if the method reached the next element; otherwise false. Checks whether the specifies string is null or blank. Text to check. true if text is null, empty, or all whitespace characters. Helper class to verify that no duplicate properties are specified for entries and complex values. Special value for the property annotations which is used to mark the annotations as processed. true if duplicate properties are allowed; otherwise false. See the comment on ODataWriterBehavior.AllowDuplicatePropertyNames or ODataReaderBehavior.AllowDuplicatePropertyNames for further details. true if we're processing a response; false if it's a request. A cache of property names to detect duplicate property names. The value stored for a given property name indicates what should happen if another property with the same name is found. See the comments on for more details. Constructor. true if duplicate properties are allowed; otherwise false. true if we're processing a response; false if it's a request. Check the for duplicate property names in an entry or complex value. If not explicitly allowed throw when duplicate properties are detected. If duplicate properties are allowed see the comment on ODataWriterBehavior.AllowDuplicatePropertyNames or ODataReaderBehavior.AllowDuplicatePropertyNames for further details. The property to be checked. Checks the for duplicate property names in an entry when the navigation link has started but we don't know yet if it's expanded or not. The navigation link to be checked. Check the for duplicate property names in an entry or complex value. If not explicitly allowed throw when duplicate properties are detected. If duplicate properties are allowed see the comment on ODataWriterBehavior.AllowDuplicatePropertyNames or ODataReaderBehavior.AllowDuplicatePropertyNames for further details. The navigation link to be checked. true if the link is expanded, false otherwise. true if the navigation link is a collection, false if it's a singleton or null if we don't know. The association link with the same name if there already was one. Check the for duplicate property names in an entry or complex value. If not explicitly allowed throw when duplicate properties are detected. If duplicate properties are allowed see the comment on ODataWriterBehavior.AllowDuplicatePropertyNames or ODataReaderBehavior.AllowDuplicatePropertyNames for further details. The association link to be checked. The navigation link with the same name as the association link if there's one. Clear the internal data structures of the checker so it can be reused. Adds an OData annotation to a property. The name of the property to add annotation to. string.empty means the annotation is for the current scope. The name of the annotation to add. The valud of the annotation to add. Adds a custom annotation to a property. The name of the property to add annotation to. string.empty means the annotation is for the current scope. The name of the annotation to add. Returns OData annotations for the specified property with name . The name of the property to return the annotations for. Enumeration of pairs of OData annotation name and and the annotation value, or null if there are no OData annotations for the property. Marks the property to note that all its annotations were already processed. The property name to mark. Properties marked like this will fail if there are more annotations found for them in the payload. Returns the names of all properties which have not been marked as processed through . A set of property names. Throw if property is processed already. Name of the property. DuplicationRecord of the property. Indicates whether a property's annotations have not yet been processed. The name of the property to check. true if the property associated with the given name has unprocessed annotations. Decides whether a the given supports duplicates (if allowed by the settings). The property to check. true if the supports duplicates (if allowed by the settings); otherwise false. Determines the effective value for the isCollection flag. true if the navigation link is expanded, false otherwise. true if the navigation link is marked as collection, false if it's marked as singletong or null if we don't know. The effective value of the isCollection flag. Note that we can't rely on singleton links which are not expanded since those can appear even in cases where the actual navigation property is a collection. We allow singleton deferred links for collection properties in requests, as that is one way of expressing a bind operation. Sets the properties on a duplication record for a navigation link. The duplication record to modify. The navigation link found for this property. true if the navigation link is expanded, false otherwise. true if the navigation link is marked as collection, false if it's marked as singletong or null if we don't know. Tries to get an existing duplication record for the specified . The property name to look for. The existing duplication if one was already found. true if a duplication record already exists, false otherwise. This method also initializes the cache if it was not initialized yet. Checks for duplication of a navigation link against an existing duplication record. The name of the navigation link. The existing duplication record. This only performs checks possible without the knowledge of whether the link was expanded or not. Gets a duplication record to use for adding property annotation. The name of the property to get the duplication record for. The name of the annotation being added (only for error reporting). The duplication record to use. This will never be null. An enumeration to represent the duplication kind of a given property name. This enumeration is used to determine what should happen if two properties with the same name are detected on an entry or complex value. When the first property is found, the initial value is set based on the kind of property found and the general setting to allow or disallow duplicate properties. When a second property with the same name is found, the duplication kind can be 'upgraded' (e.g., from association link to navigation property), 'ignored' (e.g. when finding the association link for an existing navigation property or when duplicate properties are allowed by the settings) or 'fail' (e.g., when duplicate properties are not allowed). We don't know enough about the property to determine its duplication kind yet, we've just seen a property annotation for it. Duplicates for this property name are not allowed. This kind indicates that duplicates are allowed (if the settings allow duplicates). A navigation link or association link was reported. A record of a single property for duplicate property names checking. Constructor. The duplication kind of the record to create. The duplication kind of the record to create. The navigation link if it was already found for this property. The association link if it was already found for this property. true if we know for sure that the navigation property with the property name is a collection, false if we know for sure that the navigation property with the property name is a singleton, null if we don't know the cardinality of the navigation property for sure (yet). Dictionary of OData annotations for the property for which the duplication record is stored. The key of the dictionary is the fully qualified annotation name (i.e. odata.type), the value is the parsed value of the annotation (this is annotation specific). Hashset of custom annotations for the property for which the duplication record is stored. This is just a hashset for now since we don't read custom annotations, we just need to check for duplicates. Utility methods serializing the xml error payload Default language for error messages if not specified. This constant is included here since this file is compiled into WCF DS Server as well so we can't compile in the ODataConstants. Extracts error details from an . The ODataError instance to extract the error details from. A data service-defined string which serves as a substatus to the HTTP response code. A human readable message describing the error. The language identifier representing the language the error message is in. Write an error message. The Xml writer to write to. The error instance to write. A flag indicating whether error details should be written (in debug mode only) or not. The maximumum number of nested inner errors to allow. Write an error message. The Xml writer to write to. The code of the error. The message of the error. The language of the message. Inner error details that will be included in debug mode (if present). The maximumum number of nested inner errors to allow. Writes the inner exception information in debug mode. The Xml writer to write to. The inner error to write. The local name of the element representing the inner error. The number of times this method has been called recursively. The maximumum number of nested inner errors to allow. OData JSON deserializer for collections. Cached duplicate property names checker to use if the items are complex values. Constructor. The JSON input context to read from. Reads the start of a collection; this includes collection-level properties (e.g., the 'results' property) if the version permits it. true if the results wrapper should be in the payload being read; false otherwise. An representing the collection-level information. Currently this is only the name of the collection in ATOM. Pre-Condition: JsonNodeType.StartArray: for a V1 collection JsonNodeType.StartObject: for a >=V2 collection Post-Condition: JsonNodeType.StartArray: the start of the array of the collection items Reads an item in the collection. The expected type of the item to read. The collection validator instance if no expected item type has been specified; otherwise null. The value of the collection item that was read; this can be an ODataComplexValue, a primitive value or 'null'. Pre-Condition: The first node of the item in the collection NOTE: this method will throw if the node is not JsonNodeType.StartObject: for a complex item JsonNodeType.PrimitiveValue: for a primitive item Post-Condition: The reader is positioned on the first node of the next item or an EndArray node if there are no more items in the collection Reads the end of a collection; this includes collection-level properties if the version permits it. true if the results wrapper should be in the payload being read; false otherwise. Pre-Condition: EndArray node: End of the collection content array Post-Condition: EndOfInput: V1 collection EndObject V1 collection in response EndObject wrapped collection with no extra properties after the 'results' property Property wrapped collection with extra properties after the 'results' property OData JSON deserializer for entity reference links. Constructor. The Verbose JSON input context to read from. Read a set of top-level entity reference links. An representing the read links. Reads a top-level entity reference link - implementation of the actual functionality. An representing the read entity reference link. Reads the properties of an entity reference link. The instance to set the read property values on. The bit field with all the properties already read. true if the method found the 'results' property; otherwise false. Read an entity reference link. An instance of which was read. Pre-Condition: any node - This method will throw if the node type is not a StartObject node Post-Condition: any node OData Verbose JSON deserializer for entries and feeds. Constructor. The Verbose JSON input context to read from. Reads the start of a feed; this includes feed-level properties if the version permits it. The instance to fill with the data read. A flag indicating whether we expect the results wrapper for feeds to be present. true if the feed is inside an expanded link. Pre-Condition: JsonNodeType.StartArray: for a feed without 'results' wrapper JsonNodeType.StartObject: for a feed wrapped with 'results' wrapper Post-Condition: Any start node The first item in the feed JsonNodeType.EndArray: The end of the feed Reads the end of a feed; this includes feed-level properties if the version permits them. The instance to fill with the data read. A flag indicating whether we expect the results wrapper for feeds to be present. true if the feed is inside an expanded link. Pre-Condition: JsonNodeType.EndArray Post-Condition: JsonNodeType.EndArray if the feed is not wrapped JsonNodeType.EndObject if the feed is wrapped Reads the start of an entry (non-null) Pre-Condition: JsonNodeType.StartObject Will fail if it's anything else Post-Condition: JsonNodeType.Property The first property of the entry JsonNodeType.EndObject The end of the property object Reads the entry metadata property. The state of the reader for entry to read. This method does not move the reader. Pre-Condition: JsonNodeType.Object The start object of the __metadata property value. Post-Condition: JsonNodeType.EndObject The end object of the __metadtaa property value. Validates entry metadata properties against the model. The state of the reader for entry to read. This method must be called only after the ReadEntryMetadata was already called. It should be called always, regardless of whether the __metadata property was found ot not. Reads the content of an entry until a navigation link is detected. The state of the reader for entry to read. If a navigation link was found this parameter will hold the navigation property for that link, otherwise it's null. A instance representing the navigation link detected while reading the entry contents; null if no navigation link was detected. Pre-Condition: JsonNodeType.Property The property to read JsonNodeType.EndObject If no (more) properties exist in the entry's content Post-Condition: JsonNodeType.EndObject If no (more) properties exist in the entry's content JsonNodeType.StartObject The first node of the navigation link property value to read next (deferred link or entry inside expanded link or feed with 'results' wrapper inside expanded link) JsonNodeType.StartArray feed without 'results' wrapper inside of expanded link JsonNodeType.PrimitiveValue (null) Expanded null entry Reads the Url of a non-expanded link and moves the reader forward to the position after the link. The navigation link to set the Url on. Pre-Condition: JsonNodeType.StartObject: the start of the object representing the deferred link Post-Condition: JsonNodeType.Property: the next property after the deferred link JsonNodeType.EndObject the end of the owning entry if the deferred link is the last property Reads the entity reference link and moves the reader forward to the position after the link. The entity reference link read from the payload. Pre-Condition: JsonNodeType.StartObject: the start of the object representing the entity reference link Post-Condition: JsonNodeType.Property: the next property after the entity reference link JsonNodeType.EndObject: the end of the owning entry if the entity reference link is the last property JsonNodeType.EndArray: the end of the owning array (if the entity reference link is part of expanded feed) Any: the next item in the owning array (if the entity reference link is part of expanded feed) Analyzes the current navigation property node to determine whether it represents a deferred link. true if we already detected a navigation link and now determine its kind; false if we are detecting a deferred navigation link. true if the current navigation property represents a deferred link; false for an expanded navigation link. This method does not move the reader. Pre-Condition: The first node of the property value Post-Condition: The first node of the property value Analyzes the current node to determine whether it represents an entity reference link. true if the current node represents an entity reference link; false is it's an entry or something else. This method does not move the reader. Pre-Condition: The first node of the property value Post-Condition: The first node of the property value Adds a new property to an entry. The entry state for the entry to add the property to. The name of the property to add. The value of the property to add. Read a feed-level property (e.g., __count, __next, etc.) and check its version compliance. This method fails on properties that are not recognized as feed-level properties. The instance to fill with the data read. The name of the property being read. true if the feed is inside an expanded link. Pre-Condition: The reader is on the first node of the feed-level property's value. Post-Condition: JsonNodeType.Property: the next feed property to read or JsonNodeType.EndObject: the end of the results wrapper Read an entry-level property and check its version compliance. The state of the reader for entry to read. The EDM property of the property being read, or null if the property is an open property. Pre-Condition: The reader is positioned on the first node of the property value Post-Condition: JsonNodeType.Property: the next property of the entry JsonNodeType.EndObject: the end-object node of the entry Read an open property. The state of the reader for entry to read. The name of the open property to read. Pre-Condition: The reader is positioned on the first node of the property value Post-Condition: JsonNodeType.Property: the next property of the entry JsonNodeType.EndObject: the end-object node of the entry Read an undeclared property. That is a property which is not declared by the model, but the owning type is not an open type. The state of the reader for entry to read. The name of the open property to read. Pre-Condition: The reader is positioned on the first node of the property value Post-Condition: JsonNodeType.Property: the next property of the entry JsonNodeType.EndObject: the end-object node of the entry A navigation link instance if the propery read is a navigation link which should be reported to the caller. Otherwise null if the property was either ignored or read and added to the list of properties on the entry. Reads a stream property value. The value of the stream property. Pre-Condition: Fails if the current node is not a JsonNodeType.StartObject Post-Condition: almost anything - the node after the stream reference (after the EndObject) Reads the uri property in metadata value. The entry being read. The bit fields with all the properties found in metadata value so far. Pre-Condition: first node of the 'uri' property's value Post-Condition: JsonNodeType.Property: the next metadata property JsonNodeType.EndObject: the end-object node of the metadata object Reads the id property in metadata value. The entry being read. The bit fields with all the properties found in metadata value so far. Pre-Condition: first node of the 'id' property's value Post-Condition: JsonNodeType.Property: the next metadata property JsonNodeType.EndObject: the end-object node of the metadata object Reads the etag property in metadata value. The entry being read. The bit fields with all the properties found in metadata value so far. Pre-Condition: first node of the 'etag' property's value Post-Condition: JsonNodeType.Property: the next metadata property JsonNodeType.EndObject: the end-object node of the metadata object Reads the media_src property in metadata value. The bit fields with all the properties found in metadata value so far. The media resource value for the entry. Pre-Condition: first node of the 'media_src' property's value Post-Condition: JsonNodeType.Property: the next metadata property JsonNodeType.EndObject: the end-object node of the metadata object Reads the edit_media property in metadata value. The bit fields with all the properties found in metadata value so far. The media resource value for the entry. Pre-Condition: first node of the 'edit_media' property's value Post-Condition: JsonNodeType.Property: the next metadata property JsonNodeType.EndObject: the end-object node of the metadata object Reads the content_type property in metadata value. The bit fields with all the properties found in metadata value so far. The media resource value for the entry. Pre-Condition: first node of the 'content_type' property's value Post-Condition: JsonNodeType.Property: the next metadata property JsonNodeType.EndObject: the end-object node of the metadata object Reads the media_etag property in metadata value. The bit fields with all the properties found in metadata value so far. The media resource value for the entry. Pre-Condition: first node of the 'media_etag' property's value Post-Condition: JsonNodeType.Property: the next metadata property JsonNodeType.EndObject: the end-object node of the metadata object Reads the actions property in metadata value. The entry being read. The bit fields with all the properties found in metadata value so far. Pre-Condition: first node of the 'actions' property's value Post-Condition: JsonNodeType.Property: the next metadata property JsonNodeType.EndObject: the end-object node of the metadata object Reads the functions property in metadata value. The entry being read. The bit fields with all the properties found in metadata value so far. Pre-Condition: first node of the 'functions' property's value Post-Condition: JsonNodeType.Property: the next metadata property JsonNodeType.EndObject: the end-object node of the metadata object Read the property metadata for the properties of an entry being read. The entry state for the current reader. The bit fields with all the properties found in metadata value so far. Pre-Condition: first node of the 'properties' property's value (we will throw if this is not a start object node) Post-Condition: JsonNodeType.Property: the next metadata property JsonNodeType.EndObject: the end-object node of the metadata object This method will not validate anything against the model because it will read the type name and thus it can't rely on knowing the actual type of the entry being read. Read the 'actions' or 'functions' metadata for the entry being read. The the 'actions' or 'functions' metadata is read for. When True the 'actions' metadata is being read, otherwise 'functions' metadata is being read. Pre-Condition: first node of the 'actions' or 'functions' property's value (we will throw if this is not a start object node) Post-Condition: JsonNodeType.Property: the next metadata property JsonNodeType.EndObject: the end-object node of the metadata object Reads the stream reference metadata from the value of the __mediaresource property. The value of the stream reference with the metadata properties filled. Pre-Condition: Fails if the current node is not a JsonNodeType.StartObject Post-Condition: Either a property node or an EndObject node. Tries to resolve the payload URI using the custom URI resolver. If the custom resolver fails, it returns the actual URI from the payload. the URI to be resolved. A resolved URI or the URI from the payload, if the custom resolver fails. Validates that the value of a JSON property can represent navigation link. true if the property is entity set reference property; false for a resource reference property. Determines whether a property of an entry should be skipped during reading. true if the current property should be skipped; otherwise false. Operations deserializer context to pass to JSON operations reader. The entry to add operations to. The deserializer to use. Constructor. The entry to add operations to. The deserializer to use. Given a URI from the payload, this method will try to make it absolute, or fail otherwise. The URI string from the payload to process. An absolute URI to report. Adds the specified action to the current entry. The action whcih is fully populated with the data from the payload. Adds the specified function to the current entry. The function whcih is fully populated with the data from the payload. The JSON reader to read the operations value from. OData Verbose JSON deserializer for errors. Constructor. The Verbose JSON input context to read from. Read a top-level error. An representing the read error. Reads an inner error payload. The number of times this method has been called recursively. An representing the read inner error. Pre-Condition: any - will throw if not StartObject Post-Condition: JsonNodeType.Property - The next property in the error value JsonNodeType.EndObject - The end of the error value Implementation of the OData input for Verbose JSON OData format. The text reader created for the input stream. The ODataJsonInputContext instance owns the textReader instance and thus disposes it. We further set this field to null when the input is disposed and use it for checks whether the instance has already been disposed. The JSON reader to read from. Constructor. The format for this input context. The reader to read data from. Configuration settings of the OData reader. The OData protocol version to be used for reading the payload. true if reading a response message; otherwise false. true if the input should be read synchronously; false if it should be read asynchronously. The model to use. The optional URL resolver to perform custom URL resolution for URLs read from the payload. Constructor. The format for this input context. The stream to read data from. The encoding to use to read the input. Configuration settings of the OData reader. The OData protocol version to be used for reading the payload. true if reading a response message; otherwise false. true if the input should be read synchronously; false if it should be read asynchronously. The model to use. The optional URL resolver to perform custom URL resolution for URLs read from the payload. Creates an to read a feed. The entity set we are going to read entities for. The expected base entity type for the entries in the feed. The newly created . Creates an to read an entry. The entity set we are going to read entities for. The expected entity type for the entry to be read. The newly created . Create a . The expected type reference for the items in the collection. Newly create . Create a . The function import whose parameters are being read. The newly created . Read a service document. This method reads the service document from the input and returns an that represents the read service document. An representing the read service document. This method creates an reads the property from the input and returns an representing the read property. The producing the property to be read. The expected type reference of the property to read. An representing the read property. Read a top-level error. An representing the read error. Read a set of top-level entity reference links. The navigation property for which to read the entity reference links. An representing the read links. Reads a top-level entity reference link. The navigation property for which to read the entity reference link. An representing the read entity reference link. Detects the payload kind(s) from the message stream. An enumerable of zero, one or more payload kinds that were detected from looking at the payload in the message stream. Disposes the input context. Helper method to create a TextReader over the message stream. This is needed by the constructor to dispose the message stream if the creation fails since this is called from the constructor in place where exception handling is not possible. The stream to read data from. The encoding to use to read the input. The newly created text reader. Verifies that CreateParameterReader can be called. The function import whose parameters are being read. Creates an to read a feed. The entity set we are going to read entities for. The expected base entity type for the entries in the feed. The newly created . Creates an to read an entry. The entity set we are going to read entities for. The expected entity type for the entry to be read. The newly created . Create a . The expected type reference for the items in the collection. Newly create . Create a . The function import whose parameters are being read. The newly created . This method creates and reads the property from the input and returns an representing the read property. The producing the property to be read. The expected type reference of the property to read. An representing the read property. Read a service document. This method reads the service document from the input and returns an that represents the read service document. An representing the read service document. Read a top-level error. An representing the read error. Read a set of top-level entity reference links. An representing the read links. Reads a top-level entity reference link - implementation of the actual functionality. An representing the read entity reference link. Returns the which is to be used to read the content of the message. OData JSON deserializer for service documents. Constructor. The Verbose JSON input context to read from. Read a service document. This method reads the service document from the input and returns an that represents the read service document. An representing the read service document. Class representing implementation specific debugging information to help determine the cause of the error. Initializes a new instance of the class with default values. Initializes a new instance of the class with exception object. The used to create the inner error. Gets or sets the error message. The error message. Gets or sets the type name of this error, for example, the type name of an exception. The type name of this error. Gets or sets the stack trace for this error. The stack trace for this error. Gets or sets the nested implementation specific debugging information. The nested implementation specific debugging information. OData representation of a top-level collection. Provides additional serialization information to the for this . Gets or sets the name of the collection (ATOM only). The name of the collection. Provides additional serialization information to the for this . OData collection reader for the Verbose JSON format. The input to read the payload from. The collection deserializer to use to read from the input. Constructor. The input to read the payload from. The expected type for the items in the collection. If not null, the reader will notify the implementer of the interface of relevant state changes in the reader. Implementation of the collection reader logic when in state 'Start'. true if more items can be read from the reader; otherwise false. Pre-Condition: JsonNodeType.None: assumes that the JSON reader has not been used yet when not reading a nested payload. Post-Condition: The reader is positioned on the first node of the first item or the EndArray node of an empty item array Implementation of the reader logic when in state 'CollectionStart'. true if more nodes can be read from the reader; otherwise false. Pre-Condition: The first node of the first item in the collection or the EndArray node of the (empty) item array NOTE: this method will throw if the node is not JsonNodeType.EndArray: for an empty item array of the collection JsonNodeType.StartObject: for a complex value as first item JsonNodeType.PrimitiveValue: for a primitive value as first item Post-Condition: The reader is positioned on the first node of the second item or an EndArray node if there are no items in the collection Implementation of the reader logic when in state 'Value'. true if more nodes can be read from the reader; otherwise false. Pre-Condition: The first node of the next item in the collection or the EndArray node of the item array NOTE: this method will throw if the node is not JsonNodeType.EndArray: for the end of the item array of the collection JsonNodeType.StartObject: for a complex item JsonNodeType.PrimitiveValue: for a primitive item Post-Condition: The reader is positioned on the first node of the next item or an EndArray node if there are no items in the collection Implementation of the reader logic when in state 'CollectionEnd'. false since no more nodes can be read from the reader after the collection ended. Pre-Condition: JsonNodeType.EndArray the end of the item array of the collection Post-Condition: JsonNodeType.EndOfInput nothing else to read when not reading a nested payload Set to true if collections are expected to have the 'results' wrapper. Collections are only expected to have a results wrapper if (a) the protocol version is >= 2 AND (b) we are reading a response NOTE: OIPI does not specify a format for >= v2 collections in requests; we thus use the v1 format and consequently do not expect a result wrapper. Enumeration of all possible states of an . The reader is at the start; nothing has been read yet. In this state, the Item property of the returns null. The reader has started reading and is reading the start element of the collection wrapper (if any). No items have been read. In this state, the Item property of the returns an instance of . The reader read an item from the collection. In this state, the Item property of the returns the read item (a primitive value, an ODataComplexValue or null). The reader has finished reading and is reading the end element of the collection wrapper (if any). All items have been read. In this state, the Item property of the returns the same instance of as in state CollectionStart. The reader has thrown an exception; nothing can be read from the reader anymore. In this state, the Item property of the returns null. The reader has completed; nothing can be read anymore. In this state, the Item property of the returns null. Exception type representing an in-stream error parsed when reading a payload. The value containing instance representing the error read from the payload. Creates a new instance of the class with default values. The Message property is initialized to a system-supplied message that describes the error. This message takes into account the current system culture. The Error property will be initialized with an empty instance. Creates a new instance of the class with an error message. The plain text error message for this exception. The Error property will be initialized with an empty instance. Creates a new instance of the class with an error message and an inner exception. The plain text error message for this exception. The inner exception that is the cause of this exception to be thrown. The Error property will be initialized with an empty instance. Creates a new instance of the class with an object. The instance representing the error read from the payload. The Message property is initialized to a system-supplied message that describes the error. This message takes into account the current system culture. Creates a new instance of the class with an error message and an object. The plain text error message for this exception. The instance representing the error read from the payload. Creates a new instance of the class with an error message, an inner exception, and an object. The plain text error message for this exception. The inner exception that is the cause of this exception to be thrown. The instance representing the error read from the payload. Gets the instance representing the error read from the payload. The instance representing the error read from the payload. Implement the ISafeSerializationData interface to contain custom exception data in a partially trusted assembly. Use this interface in post-ORCAS to replace the Exception.GetObjectData method, which is marked with the SecurityCriticalAttribute. Gets or sets the object. Implementation of the OData input for RAW OData format (raw value and batch). Use a buffer size of 4k that is read from the stream at a time. The to read. The encoding to use to read from the batch stream. The input stream to read the data from. The text reader to read non-binary values from. Constructor. The format for this input context. The stream to read data from. The encoding to use to read the input. Configuration settings of the OData reader. The OData protocol version to be used for reading the payload. true if reading a response message; otherwise false. true if the input should be read synchronously; false if it should be read asynchronously. The model to use. The optional URL resolver to perform custom URL resolution for URLs read from the payload. The to read. Create a . The batch boundary to use. The newly created . Read a top-level value. The expected primitive type for the value to be read; null if no expected type is available. An representing the read value. Disposes the input context. Create a . The batch boundary to use. If the reader should be created for synchronous or asynchronous API. The newly created . Read a top-level value. The expected primitive type for the value to be read; null if no expected type is available. An representing the read value. Read the binary value from the stream. A byte array containing all the data read. Reads the content of a text reader as string and, if is specified and primitive type conversion is enabled, converts the string to the expected type. The expected type of the value being read or null if no type conversion should be performed. The raw value that was read from the text reader either as string or converted to the provided . The stream of the raw input context. Handles serialization and deserialization for a specified set of primitive types. Instance of GeographyTypeConverter to register for all Geography types. Instance of GeographyTypeConverter to register for all Geography types. Set of type converters that implement their own conversion using IPrimitiveTypeConverter. Set of type converters that are known to this instance which convert values based on the ISpatial type. Create a new instance of the converter. Set of type converters to register for the ISpatial based values. Try to create an object of type from the value in . XmlReader to use to read the value. Expected type of the value in the reader. Object of type , null if no object could be created. True if the value was converted to the specified type, otherwise false. Try to write the XML representation of to the specified Object to convert to XML representation. XmlWriter to use to write the converted value. True if the value was written, otherwise false. Try to write the Verbose JSON representation of using a registered primitive type converter Object to convert to JSON representation. JsonWriter instance to write to. Type name of the instance. If the type name is null, the type name is not written. The OData protocol version to be used for writing payloads. Try to write the JSON Lite representation of using a registered primitive type converter Object to convert to JSON representation. JsonWriter instance to write to. The OData protocol version to be used for writing payloads. Tries to write the value of object instance using a registered primitive type converter. Object to write. Method to use when writing the value, if a registered converter is found for the type. True if the value was written using a registered primitive type converter, otherwise false. Get the primitive type converter for the given type. Clr type whose primitive type converter needs to be returned. Converter for the given clr type. True if a converter was found for the given type, otherwise returns false. PrimitiveConverter instance for use by the Atom and Json readers and writers. Annotation which stores a list of projected properties for an entry. The special '*' segment indicating that all properties are selected. Cached projected properties annotation with no properties projected. Cached projected properties annotation with all properties projected. A hash set with the projected property names. Initializes a new instance of the class. The enumeration of projected property names. Constructor. Determines if a property is in a list of projected properties. The name of the property to lookup. true if the property is projected; false otherwise. Note that we allow null and empty property names here for the lookup just so that we don't have to validate before we skip them. If we would not skip them, the writing would fail later on anyway. Adds the specified property name to the set of projected properties (if it is not already included). The name of the property to include in the set of projected properties. Removes the specified property name from the set of projected properties. The name of the property to remove from the set of projected properties. Projected properties annotation with no properties projected. Projected properties annotation with all properties projected. The set of projected property names. Class with utility methods for reading OData content. Creates a new instance to return to the user. The newly created entry. The method populates the Properties property with an empty read only enumeration. Checks for duplicate navigation links and if there already is an association link with the same name sets the association link URL on the navigation link. The duplicate property names checker for the current scope. The navigation link to be checked. true if the link is expanded, false otherwise. true if the navigation link is a collection, false if it's a singleton or null if we don't know. Checks that for duplicate association links and if there already is a navigation link with the same name sets the association link URL on that navigation link. The duplicate property names checker for the current scope. The association link to be checked. Adds an association link to an entry. The entry to get or create the association link for. The navigation property to get or create the association link for. The association link that we either retrieved or created for the . Returns true if the specified is set in the . The value of the setting to test. The flag to test. true if the flas is present, flase otherwise. Gets the expected property name from the specified property or function import. The to get the expected property name for (or null if none is specified). The expected name of the property to be read from the payload. Class with utility methods for validating OData content when reading. Validates that message reader settings are correct. The message reader settings to validate. true if the settings were specified when reading a response, false when reading a request. Validates an entity reference link. The entity reference link to check. Validates a stream reference property. The stream property to check. The owning type of the stream property or null if no metadata is available. The stream property defined by the model. The message reader settings being used. Validate a null value. The used to read the payload. The expected type of the null value. The message reader settings. true to validate the the null value; false to only check whether the type is supported. The version used to read the payload. The name of the property whose value is being read, if applicable (used for error reporting). Validates an to ensure all required information is specified and valid. The entry to validate. Finds a defined property from the model if one is available. The structured type can be null if no metadata is available. The name of the property to find. The owning type of the property with name or null if no metadata is available. The instance representing the property with name or null if no metadata is available. Validates that a property with the specified name exists on a given structured type. The structured type can be null if no metadata is available. The name of the property to validate. The owning type of the property with name or null if no metadata is available. The message reader settings being used. true if the property should be completely ignored and not parsed/reported, in this case the return value is null. false if the property should be parsed and reported as usual. The instance representing the property with name or null if no metadata is available. Validates that the expected property name matches the property name read from the payload. The expected property name. The property name read from the payload. Validates that a property with the specified name exists on a given structured type. The structured type can be null if no metadata is available. The name of the property to validate. The owning type of the property with name or null if no metadata is available. The message reader settings being used. The instance representing the property with name or null if no metadata is available. Validates that a navigation property with the specified name exists on a given entity type. The entity type can be null if no metadata is available. The name of the property to validate. The owning entity type or null if no metadata is available. The message reader settings being used. The instance representing the navigation property with name or null if no metadata is available. Creates an exception used when primitive type conversion fails. The target type reference to which the conversion failed. Possible inner exception with more information about the failure. The exception object to throw. Resolved the payload type name to the type. The model to use for the resolution. The expected type reference, or null if no expected type is available. The payload type name to resolve. The default payload type kind, this is used when the resolution is not possible, but the type name is not empty. (Should be either Complex or Entity). Reader behavior to use for compatibility. The version of the payload being read. This is set to the detected payload type kind, or None if the type was not specified. The resolved type. This may be null if either no user-specified model is specified, or the type name is not recognized by the model. The method detects the payload kind even if the model does not recognize the type. It figures out primitive and collection types always, and uses the for the rest. Resolves and validates the payload type against the expected type and returns the target type. The expected type kind for the value. The default payload type if none is specified in the payload; for ATOM this is Edm.String, for JSON it is null since there is no payload type name for primitive types in the payload. The expected type reference, or null if no expected type is available. The payload type name, or null if no payload type was specified. The model to use. The message reader settings to use. The version of the payload being read. A func to compute the type kind from the payload shape if it could not be determined from the expected type or the payload type. The target type kind to be used to read the payload. Potentially non-null instance of an annotation to put on the value reported from the reader. The target type reference to use for parsing the value. If there is no user specified model, this will return null. If there is a user specified model, this method never returns null. This method cannot be used for primitive type resolution. Primitive type resolution is format dependent and format specific methods should be used instead. Resolves the primitive payload type versus the expected type and validates that such combination is allowed. The expected type reference, if any. The kind of the payload type, or None if the detection was not possible. The resolved payload type, or null if no payload type was specified. The name of the payload type, or null if no payload type was specified. The default payload type if none is specified in the payload; for ATOM this is Edm.String, for JSON it is null since there is no payload type name for primitive types in the payload. The model to use. The message reader settings to use. The version of the payload being read. The target type reference to use for parsing the value. This method never returns null. Resolves the payload type versus the expected type and validates that such combination is allowed. The expected type kind for the value. The expected type reference, or null if no expected type is available. The payload type kind, this may be the one from the type itself, or one detected without resolving the type. The payload type, or null if the payload type was not specified, or it didn't resolve against the model. The payload type name, or null if no payload type was specified. The model to use. The message reader settings to use. The version of the payload being read. The target type reference to use for parsing the value. If there is no user specified model, this will return null. If there is a user specified model, this method never returns null. This method cannot be used for primitive type resolution. Primitive type resolution is format dependent and format specific methods should be used instead. Validates that the specified encoding is supported in batch/changeset envelopes (headers, boundaries, preamble, etc.). The to check. Validates whether the specified type reference is supported in the current version. The type reference to check. The version currently used. Validates that the parsed metadata URI from the payload is consistent with the expected entity set and entity type when reading a feed or entry payload. This method updates the if the metadata URI specifies more derived information. The parse result of the metadata URI from the payload. The top-level scope representing the reader state. Validates that the parsed metadata URI from the payload is consistent with the expected navigation property. The parse result of the metadata URI from the payload. The expected navigation property. This method is used to validate metadata URIs for both singleton entity reference links and collections of entity reference links. Validates that the parsed metadata URI from the payload is consistent with the expected collection item type when reading collection payloads. The parse result of the metadata URI from the payload. The expected item type of the collection items. The actual item type of the collection items. Validates that the property in an operation (an action or a function) is valid. The value of the property. The name of the property (used for error reporting). The metadata value for the operation (used for error reporting). The header for the operation, either 'actions' or 'functions'. Resolves the payload type if there's no expected type. The expected type kind for the value. The payload type, or null if the payload type was not specified, or it didn't resolve against the model. The target type reference to use for parsing the value. Resolves the payload type versus the expected type and validates that such combination is allowed when the strict validation is disabled. The expected type kind for the value. The expected type reference, or null if no expected type is available. The payload type, or null if the payload type was not specified, or it didn't resolve against the model. The target type reference to use for parsing the value. Resolves the payload type versus the expected type and validates that such combination is allowed when strict validation is enabled. The expected type kind for the value. The expected type reference, or null if no expected type is available. The payload type, or null if the payload type was not specified, or it didn't resolve against the model. The target type reference to use for parsing the value. Verifies that payload type is defined if the payload type name is present. The type name from the payload. The resolved type from the model. Verifies that complex type is valid against the expected type. The expected type reference. The payload type. true if the method should fail if the doesn't match the ; false if the method should just return in that case. The method verifies that the is not a derived complex type of the and always fails in that case. Verifies that in case of collection types, the item type is valid. The expected type reference. The payload type. This method verifies that item type is not a derived complex type, we want to explicitly disallow that case for possible future enablement. Conditionally creates the annotation to put on the read value in order to retain the type name from the payload. The payload type name. The type reference into which we're going to parse. The annotation to report to the reader for adding on the read value. Computes the type kind to be used to read the payload from the expected type, the payload type and possibly the payload shape. The expected type reference used to read the payload value. true when resolving a type name for an entity value; false for a non-entity value. The type name read from the payload. The type kind of the payload value. The message reader settings. A func to determine the type kind of the value by analyzing the payload data. The type kind to be used to read the payload. Gets the expected type kind based on the given , or EdmTypeKind.None if no specific type should be expected. The expected type reference. The message reader settings. The expected type kind based on the settings and type reference, or EdmTypeKind.None if no specific type should be expected. Determines if the expect value type and the current settings mandate us to validate type kinds of payload values. The message reader settings. The expected type reference for the value infered from the model. The type kind of the payload value. true if the payload value kind must be verified, false otherwise. This method deals with the strict versus lax behavior, as well as with the behavior when primitive type conversion is disabled. Validates that the specified allows null values. The expected type for the value, or null if no such type is available. true to validate the null value; otherwise false. The model to use to get the data service version. The name of the property whose value is being read, if applicable (used for error reporting). Create and throw exception that a null value was found when the expected type is non-nullable. The expected type for this value. The name of the property whose value is being read, if applicable. Implementation of IEnumerable which is based on another IEnumerable but only exposes readonly access to that collection. This class doesn't implement any other public interfaces or public API unlike most other IEnumerable implementations which also implement other public interfaces. The IEnumerable to wrap. Constructor. The enumerable to wrap. Returns the enumerator to iterate through the items. The enumerator object to use. Implementation of IEnumerable>T< which is based on a List>T< but only exposes readonly access to that collection. This class doesn't implement any other public interfaces or public API unlike most other IEnumerable implementations which also implement other public interfaces. The type of a single item in the enumeration. The IEnumerable to wrap. The empty instance of ReadOnlyEnumerableOfT. Constructor which initializes the enumerable with an empty list storage. Constructor. The list of values to wrap. Returns the enumerator to iterate through the items. The enumerator object to use. Gets the empty instance of ReadOnlyEnumerableOfT. Returns the empty instance of ReadOnlyEnumerableOfT. This internal method adds to the wrapped source list. From the public's perspective, this enumerable is still readonly. Item to add to the source list. Annotation which stores the type name to serialize. This annotation will be recognized on ODataEntry, ODataComplexValue, ODataCollectionValue and ODataPrimitiveValue. Gets or sets the type name to serialize, for the annotated item. The type name to serialize, for the annotated item. If this property is null, no type name will be written. If this property is non-null, the property value will be used as the type name written to the payload. If this annotation is present, it always overrides the type name specified on the annotated item. If this annotation is not present, the value of the TypeName property on the ODataEntry, ODataComplexValue or ODataCollectionValue is used as the type name in the payload. Uri utility methods. Returns the unescaped string representation of the Uri; if the Uri is absolute returns the absolute Uri otherwise the original string. The Uri to convert to a string. For absolute Uris the string representation of the absolute Uri; otherwise the Uri's original string. Class with utility methods for validating OData content when writing. Validates that message writer settings are correct. The message writer settings to validate. True if we are writing a response. Validates an for not being null. The property to validate for not being null. Validates a property name to ensure all required information is specified. The property name to validate.. Validates that a property with the specified name exists on a given structured type. The structured type can be null if no metadata is available. The name of the property to validate. The owning type of the property with name or null if no metadata is available. The instance representing the property with name or null if no metadata is available. Validates that a navigation property with the specified name exists on a given entity type. The entity type can be null if no metadata is available. The name of the property to validate. The owning entity type or null if no metadata is available. The instance representing the navigation property with name or null if no metadata is available. Validates an entry in an expanded link to make sure the entity types match. The of the entry. The type of the parent navigation property. Validates an to ensure all required information is specified and valid. The association link to validate. The version of the OData protocol used for checking. true if we are writing a response; otherwise false. Validates that an can be written. The operation (an action or a function) to validate. true if writing a response; otherwise false. Validates an to ensure all required information is specified and valid on the WriteEnd call. The feed to validate. Flag indicating whether the feed is written as part of a request or a response. The version of the OData protocol used for checking. Validates an to ensure all required information is specified and valid on WriteStart call. The entry to validate. Validates an to ensure all required information is specified and valid on WriteEnd call. The entry to validate. Validates an to ensure all required information is specified and valid. The stream reference to validate. true if is the default stream for an entity; false if it is a named stream property value. Validates a named stream property to ensure it's not null and it's name if correct. The stream reference property to validate. Property metadata to validate against. The version of the OData protocol used for checking. true when writing a response; otherwise false. This does NOT validate the value of the stream property, just the property itself. Validates that the specified is not null. The entity reference link to validate. This should be called only for entity reference links inside the ODataEntityReferenceLinks.Links collection. Validates an entity reference link instance. The entity reference link to validate. Validates an to ensure all required information is specified and valid. The navigation link to validate. The declaring the navigation property; or null if metadata is not available. The of the expanded content of this navigation link or null for deferred links. The type of the navigation property for this navigation link; or null if no was specified. Validates that the specified navigation link has a Url. The navigation link to validate. Validates that the sepcified navigation link has cardinality, that is it has the IsCollection value set. The navigation link to validate. Validates that the expected property allows null value. The expected property type or null if we don't have any. The name of the property. The instance controlling the behavior of the writer. The model to use to get the data service version. Validates the value of the Id property on an entry. The id value for an entry to validate. Extension methods for the JSON reader. Reads the next node from the and verifies that it is a StartObject node. The to read from. Reads the next node from the and verifies that it is an EndObject node. The to read from. Reads the next node from the and verifies that it is an StartArray node. The to read from. Reads the next node from the and verifies that it is an EndArray node. The to read from. Verifies that the current node is a property node and returns the property name. The to read from. The property name of the current property node. Reads the next node from the , verifies that it is a Property node and returns the property name. The to read from. The property name of the property node read. Reads the next node from the and verifies that it is a PrimitiveValue node. The to read from. The primitive value read from the reader. Reads the next node from the and verifies that it is a PrimitiveValue node of type string. The to read from. The string value read from the reader; throws an exception if no string value could be read. Reads the next node from the and verifies that it is a PrimitiveValue node of type string. The to read from. The name of the property for which to read the string; used in error messages only. The string value read from the reader; throws an exception if no string value could be read. Reads the next node from the and verifies that it is a PrimitiveValue node of type double. The to read from. The double value read from the reader; throws an exception if no double value could be read. Skips over a JSON value (primitive, object or array). The to read from. Pre-Condition: JsonNodeType.PrimitiveValue, JsonNodeType.StartArray or JsonNodeType.StartObject Post-Condition: JsonNodeType.PrimitiveValue, JsonNodeType.EndArray or JsonNodeType.EndObject Reads the next node. Use this instead of the direct call to Read since this asserts that there actually is a next node. The to read from. The node type of the node that reader is positioned on after reading. Determines if the reader is on a value node. The reader to inspect. true if the reader is on PrimitiveValue, StartObject or StartArray node, false otherwise. Asserts that the reader is not buffer. The to read from. Asserts that the reader is buffer. The to read from. Creates an exception instance that is appropriate for the current library being built. Allows the code in this class to be shared between ODataLib and the common spatial library. String to use for the exception messag. Exception to be thrown. Reads the next node from the and verifies that it is of the expected node type. The to read from. The expected of the read node. Validates that the reader is positioned on the specified node type. The to use. The expected node type. Enumeration of all possible states of an . The reader is at the start; nothing has been read yet. In this state the Item property of the returns null. The start of a feed has been read. In this state the Item property of the returns an but no properties may be filled in until the FeedEnd state is reached. The end of a feed has been read. In this state the Item property of the returns an with all properties filled in. The start of an entry has been read. In this state the Item property of the returns an but no properties may be filled in until the EntryEnd state is reached. The end of an entry has been read. In this state the Item property of the returns an with all properties filled in. The start of a navigation link has been read. In this state the Item property of the returns an but no properties may be filled in until the LinkEnd state is reached. The end of a navigation link has been read. In this state the Item property of the returns an with all properties filled in. An entity reference link was read. In this state the Item property of the returns an which is fully populated. Note that there's no End state for this item. The reader has thrown an exception; nothing can be read from the reader anymore. In this state the Item property of the returns null. The reader has completed; nothing can be read anymore. In this state the Item property of the returns null. Class for reading OData batch messages; also verifies the proper sequence of read calls on the reader. An interface that allows creators of a to listen for status changes of the operation stream. This method notifies the implementer of this interface that the content stream for a batch operation has been requested. This method notifies the implementer of this interface that the content stream of a batch operation has been disposed. The input context to read the content from. The batch stream used by the batch reader to devide a batch payload into parts. True if the writer was created for synchronous operation; false for asynchronous. The batch-specific URL resolver that stores the content IDs found in a changeset and supports resolving cross-referencing URLs. The current state of the batch reader. The current size of the batch message, i.e., how many query operations and changesets have been read. The current size of the active changeset, i.e., how many operations have been read for the changeset. An enumeration tracking the state of the current batch operation. The value of the content ID header of the current part. The content ID header of the current part should only be visible to subsequent parts so we can only add it to the URL resolver once we are done with the current part. Constructor. The input context to read the content from. The boundary string for the batch structure itself. The encoding to use to read from the batch stream. true if the reader is created for synchronous operation; false for asynchronous. Reads the next part from the batch message payload. True if more items were read; otherwise false. Returns an for reading the content of a batch operation. A request message for reading the content of a batch operation. Returns an for reading the content of a batch operation. A response message for reading the content of a batch operation. This method is called to notify that the content stream for a batch operation has been requested. This method is called to notify that the content stream of a batch operation has been disposed. Returns the next state of the batch reader after an end boundary has been found. The next state of the batch reader. Reads the next part from the batch message payload. true if more information was read; otherwise false. Continues reading from the batch message payload. true if more items were read; otherwise false. Skips all data in the stream until the next part is detected; then reads the part's request/response line and headers. The next state of the batch reader after skipping to the next part and reading the part's beginning. Returns the cached for reading the content of an operation in a batch request. The message that can be used to read the content of the batch request operation from. Returns the cached for reading the content of an operation in a batch request. The message that can be used to read the content of the batch request operation from. Parses the request line of a batch operation request. The request line as a string. The parsed HTTP method of the request. The parsed of the request. Parses the response line of a batch operation response. The response line as a string. The parsed status code from the response line. Verifies that calling CreateOperationRequestMessage if valid. true if the call is to be synchronous; false otherwise. Verifies that calling CreateOperationResponseMessage if valid. true if the call is to be synchronous; false otherwise. Verifies that calling Read is valid. true if the call is to be synchronous; false otherwise. Validates that the batch reader is ready to process a new read or create message request. Verifies that a call is allowed to the reader. true if the call is to be synchronous; false otherwise. Increases the size of the current batch message; throws if the allowed limit is exceeded. Increases the size of the current change set; throws if the allowed limit is exceeded. Resets the size of the current change set to 0. Sets the 'Exception' state and then throws an ODataException with the specified error message. The error message for the exception. Catch any exception thrown by the action passed in; in the exception case move the writer into state Exception and then rethrow the exception. The type of the result returned from the . The action to execute. The result of the . Gets the current state of the batch reader. The current state of the batch reader. An enumeration to track the state of a batch operation. No action has been performed on the operation. The batch message for the operation has been created and returned to the caller. The stream of the batch operation message has been requested. The stream of the batch operation message has been disposed. Configuration settings for OData message readers. A instance representing any knobs that control the behavior of the readers inside and outside of WCF Data Services. ATOM entry XML customization callback. Initializes a new instance of the class with default values. Initializes a new instance of the class. The other message reader settings. Sets the atom entry XML customization callback. The atom entry XML customization callback. This method only affects ATOM format payloads. For payloads of other formats this method has no effect. It takes three parameters: - ODataEntry entry - which is the entry to be read. - XmlReader reader - which is the current XmlReader used by the ODataReader to read the entry. The reader is positioned on the atom:entry start element tag. Note that the reader might not be the exact instance of the reader create by the parent entry customization or passed in by other means to the ODataReader, the ODataReader sometimes needs to wrap the readers and the wrapped XmlReader might be passed in here. - Uri - the current xml:base URI value for the reader. If there is no active xml:base this parameter is passed a null value. It returns XmlReader: - null - means there's no need for customization and the original XmlReader will be used to read the entry. - non-null XmlReader - an XmlReader which the ODataReader will use to read the entry. This reader must be positioned on the atom:entry start element tag. The ODataReader will not close or dispose the reader. It will read from it and leave the reader positioned on the atom:entry end element tag (or the empty atom:entry start tag). Once the ODataReader reports the ODataReaderState.EntryEnd for the entry, it will not use this XmlReader anymore. After the ODataReaderState.EntryEnd is reported the parent reader (the parameter to the func) is expected to be positioned on the node AFTER the atom:entry end element tag (or after the atom:entry empty start tag). Note that this means that the ODataReader will only read till the end tag on the inner reader, but it expects the parent reader to move after the end tag. It's the resposibility of the caller to move the parent read after the end tag manually if necessary. The func must NOT return the same XmlReader instance as the XmlReader passed to it. Enables the default behavior. Specifies whether the WCF data services server behavior is enabled. true to use V1 provider; otherwise, false. Enables the same behavior that the WCF Data Services client has. Also, lets the user set the values for custom data namespace and type scheme. Custom type resolver which takes both expected type and type name. This function is used instead of the IEdmModel.FindType if it's specified. The first parameter to the function is the expected type (the type inferred from the parent property or specified by the external caller). The second parameter is the type name from the payload. The function should return the resolved type, or null if no such type was found. Custom data namespace. Custom type scheme to use when resolving types. This should be validated to be a valid URI, this method will not check that. If non-null this func will be called when an entry start is found and the entry is to be read. It takes three parameters: - ODataEntry entry - which is the entry to be read. - XmlReader reader - which is the current XmlReader used by the ODataReader to read the entry. The reader is positioned on the atom:entry start element tag. Note that the reader might not be the exact instance of the reader create by the parent entry customization or passed in by other means to the ODataReader, the ODataReader sometimes needs to wrap the readers and the wrapped XmlReader might be passed in here. - Uri - the current xml:base URI value for the reader. If there is no active xml:base this parameter is passed a null value. It returns XmlReader: - null - means there's no need for customization and the original XmlReader will be used to read the entry. - non-null XmlReader - an XmlReader which the ODataReader will use to read the entry. This reader must be positioned on the atom:entry start element tag. The ODataReader will not close or dispose the reader. It will read from it and leave the reader positioned on the atom:entry end element tag (or the empty atom:entry start tag). Once the ODataReader reports the ODataReaderState.EntryEnd for the entry, it will not use this XmlReader anymore. After the ODataReaderState.EntryEnd is reported the parent reader (the parameter to the func) is expected to be positioned on the node AFTER the atom:entry end element tag (or after the atom:entry empty start tag). Note that this means that the ODataReader will only read till the end tag on the inner reader, but it expects the parent reader to move after the end tag. It's the resposibility of the caller to move the parent read after the end tag manually if necessary. The func must NOT return the same XmlReader instance as the XmlReader passed to it. Enables the same behavior that the WCF Data Services client has. Also, lets the user set the values for custom data namespace and type scheme. Custom type resolver which takes both expected type and type name. This function is used instead of the IEdmModel.FindType if it's specified. The first parameter to the function is the expected type (the type inferred from the parent property or specified by the external caller). The second parameter is the type name from the payload. The function should return the resolved type, or null if no such type was found. Custom data namespace. Custom type scheme to use when resolving types. This should be validated to be a valid URI, this method will not check that. If non-null this func will be called when an entry start is found and the entry is to be read. It takes three parameters: - ODataEntry entry - which is the entry to be read. - XmlReader reader - which is the current XmlReader used by the ODataReader to read the entry. The reader is positioned on the atom:entry start element tag. Note that the reader might not be the exact instance of the reader create by the parent entry customization or passed in by other means to the ODataReader, the ODataReader sometimes needs to wrap the readers and the wrapped XmlReader might be passed in here. - Uri - the current xml:base URI value for the reader. If there is no active xml:base this parameter is passed a null value. It returns XmlReader: - null - means there's no need for customization and the original XmlReader will be used to read the entry. - non-null XmlReader - an XmlReader which the ODataReader will use to read the entry. This reader must be positioned on the atom:entry start element tag. The ODataReader will not close or dispose the reader. It will read from it and leave the reader positioned on the atom:entry end element tag (or the empty atom:entry start tag). Once the ODataReader reports the ODataReaderState.EntryEnd for the entry, it will not use this XmlReader anymore. After the ODataReaderState.EntryEnd is reported the parent reader (the parameter to the func) is expected to be positioned on the node AFTER the atom:entry end element tag (or after the atom:entry empty start tag). Note that this means that the ODataReader will only read till the end tag on the inner reader, but it expects the parent reader to move after the end tag. It's the resposibility of the caller to move the parent read after the end tag manually if necessary. The func must NOT return the same XmlReader instance as the XmlReader passed to it. Callback to determine whether operations bound to a particular entity type must be qualified with a container name when appearing in a $select clause. Returns true to indicate that the annotation with the name should be skipped, false otherwise. The name of the annotation in question. Returns true to indicate that the annotation with the name should be skipped, false otherwise. Gets or sets the document base URI (used as base for all relative URIs). If this is set, it must be an absolute URI. The base URI. Note that for typical OData services this should end with a slash character. For example "http://services.odata.org/OData/OData.svc/" will work as expected, that is a relative URI "Products(0)" will correctly combine with the base to produce "http://services.odata.org/OData/OData.svc/Products(0)". If the URI would not end with a slash, the last segment is not considered when base and relative URIs are combined. So for example this base URI "http://services.odata.org/OData/OData.svc" combined with relative URI "Products(0)" would produce "http://services.odata.org/OData/Products(0)", which is typically not the desired result. Gets or sets a value that indicates whether not to convert all primitive values to the type specified in the model or provided as an expected type. Note that values will still be converted to the type specified in the payload itself. true if primitive values and report values are not converted; false if all primitive values are converted to the type specified in the model or provided as an expected type. The default value is false. Gets or sets the behavior the reader should use when it finds undeclared property. The behavior the reader should use when it finds undeclared property. This setting has no effect if there's no model specified for the reader. This setting must be set to Default when reading request payloads. Detailed behavior description: ODataUndeclaredPropertyBehaviorKind.Default If an undeclared property is found reading fails. ODataUndeclaredPropertyBehaviorKind.ReportUndeclaredLinkProperty ATOM - Undeclared deferred navigation link will be read and reported. - Undeclared expanded navigation link will fail. - Undeclared stream property link (both read and edit) will be read and reported. - Undeclared association link will be read and reported. - Undeclared properties inside m:properties fail. Verbose JSON - If an undeclared property is found a detection logic will run: - __deferred value is found - the link will be read and reported as a deferred navigation link. - __mediaresource value is found - the link will be read and reported as a stream property - If nothing from the above matches the reading fails. - Undeclared association links inside __metadata/properties will be read and reported. JSON Light - If an undeclared property is found a detection logic will run: - The property has 'odata.navigationLink' or 'odata.associationLink' annotation on it and no value - it will be read as navigation/association link - The property has 'odata.mediaEditLink', 'odata.mediaReadLink', 'odata.mediaContentType' or 'odata.mediaETag' on it and no value - it will be read as a stream property. - Any other property (that is property with a value or property with no annotation mentioned above) will fail. ODataUndeclaredPropertyBehaviorKind.IgnoreUndeclaredValueProperty ATOM - Undeclared property inside m:properties is ignored (not even read). - Undeclared navigation link, stream property link or association link fail. Verbose JSON - If an undeclared property is found a detection logic will run: - __deferred value is found - fail as undeclared deferred nav. link. - __mediaresource value is found - fail as undeclared stream property. - All other properties are ignored and not read. - Undeclared association links inside __metadata/properties fail. JSON Light - If an undeclared property is found a detection logic will run: - The property has 'odata.navigationLink' or 'odata.associationLink' annotation on it (deferred or expanded navigation link) - fail as undeclared navigation property - The property has 'odata.mediaEditLink', 'odata.mediaReadLink', 'odata.mediaContentType' or 'odata.mediaETag' on it and no value - fail as undeclared stream property. - The property has a value and no annotation mentioned above - the property is ignored and not read. ODataUndeclaredPropertyBehaviorKind.ReportUndeclaredLinkProperty | ODataUndeclaredPropertyBehaviorKind.IgnoreUndeclaredValueProperty ATOM - Undeclared deferred navigation link will be read and reported. - Undeclared expanded navigation link will be read and the navigation link part will be reported, the expanded content will be ignored and not read or reported. - Undeclared stream property link (both read and edit) will be read and reported. - Undeclared association link will be read and reported. - Undeclared properties inside m:properties will be ignored and not read. Verbose JSON - If an undeclared property is found a detection logic will run: - __deferred value is found - read and report a deferred navigation link. - __mediaresource value is found - read and report stream property. - All other properties are ignore and not read. - Undeclared association links inside __metadata/properties are read and reported. JSON Light - If an undeclared property is found a detection logic will run: - The property has 'odata.navigationLink' or 'odata.associationLink' annotation on it and no value (deferred navigation link) - it will be read as navigation/association link - The property has 'odata.navigationLink' or 'odata.associationLink' annotation on it and with value (expanded navigation link) - it will be read, the navigation and association link will be reported and the content will be ignored. - The property has 'odata.mediaEditLink', 'odata.mediaReadLink', 'odata.mediaContentType' or 'odata.mediaETag' on it and no value - it will be read as a stream property. - The property has a value and no annotation mentioned above - the property is ignored and not read. Note that there's one difference between ATOM/JSON Light and Verbose JSON. In ATOM and JSON Light expanded links are treated as both undeclared link and a value property. The URLs are the link part, the expanded content is the value part. In Verbose JSON expanded links are treated as a value property as a whole. Since in JSON expanded links don't actually have the link part (the payload doesn't contain the "href") this is not such a big difference. Gets or sets a value that indicates whether the message stream will not be disposed after finishing writing with the message. true if the message stream will not be disposed after finishing writing with the message; otherwise false. The default value is false. Gets or sets the maximum OData protocol version the reader should accept and understand. The maximum OData protocol version the reader should accept and understand. If the payload to be read has higher DataServiceVersion than the value specified for this property the reader will fail. Reader will also not report features which require higher version than specified for this property. It may either ignore such features in the payload or fail on them. false - metadata validation is strict, the input must exactly match against the model. true - metadata validation is lax, the input doesn't have to match the model in all cases. This property has effect only if the metadata model is specified. Strict metadata validation: Primitive values: The wire type must be convertible to the expected type. Complex values: The wire type must resolve against the model and it must exactly match the expected type. Entities: The wire type must resolve against the model and it must be assignable to the expected type. Collections: The wire type must exactly match the expected type. If no expected type is available we use the payload type. Lax metadata validation: Primitive values: If expected type is available, we ignore the wire type. Complex values: The wire type is used if the model defines it. If the model doesn't define such a type, the expected type is used. If the wire type is not equal to the expected type, but it's assignable, we fail because we don't support complex type inheritance. If the wire type if not assignable we use the expected type. Entities: same as complex values except that if the payload type is assignable we use the payload type. This allows derived entity types. Collections: If expected type is available, we ignore the wire type, except we fail if the item type is a derived complex type. If no expected type is available we use the payload type and it must resolve against the model. If DisablePrimitiveTypeConversion is on, the rules for primitive values don't apply and the primitive values are always read with the type from the wire. The reader behavior that holds all the knobs needed to make the reader behave differently inside and outside of WCF Data Services. ATOM entry XML customization callback. Whether or not to report any undeclared link properties in the payload. Computed from the UndeclaredPropertyBehaviorKinds enum property. Whether or not to ignore any undeclared value properties in the payload. Computed from the UndeclaredPropertyBehaviorKinds enum property. Reader class used to read all OData payloads (entries, feeds, metadata documents, service documents, etc.). The message for which the message reader was created. A flag indicating whether we are reading a request or a response message. The message reader settings to use when reading the message payload. The model. Non-null if we do have metadata available. The to be used for reading the payload. The optional URL resolver to perform custom URL resolution for URLs read from the payload. The resolver to use when determining an entity set's element type. Flag to ensure that only a single read method is called on the message reader. true if Dispose() has been called on this message reader, false otherwise. The input context used to read the message content. The payload kind of the payload to be read with this reader. This field is set implicitly when one of the read (or reader creation) methods is called. The of the payload to be read with this reader. This field is set implicitly when one of the read (or reader creation) methods is called. The parsed from the content type header. This field is set implicitly when one of the read (or reader creation) methods is called. The of the payload to be read with this reader. This field is set implicitly when one of the read (or reader creation) methods is called. The batch boundary string if the payload to be read is a batch request or response. This is set implicitly when the CreateBatchReader method is called. The media type resolver to use when interpreting the incoming content type. Storage for format specific states from payload kind detection. Creates a new for the given request message. The request message for which to create the reader. Creates a new for the given request message and message reader settings. The request message for which to create the reader. The message reader settings to use for reading the message payload. Creates a new ODataMessageReader for the given request message and message reader settings. The request message for which to create the reader. The message reader settings to use for reading the message payload. The model to use. Creates a new for the given response message. The response message for which to create the reader. Creates a new for the given response message and message reader settings. The response message for which to create the reader. The message reader settings to use for reading the message payload. Creates a new ODataMessageReader for the given response message and message reader settings. The response message for which to create the reader. The message reader settings to use for reading the message payload. The model to use. Determines the potential payload kinds and formats of the payload being read and returns it. The set of potential payload kinds and formats for the payload being read by this reader. When this method is called it first analyzes the content type and determines whether there are multiple matching payload kinds registered for the message's content type. If there are, it then runs the payload kind detection on all formats that have a matching payload kind registered. Note that this method can return multiple results if a payload is valid for multiple payload kinds but will always at most return a single result per payload kind. Creates an to read a feed. The created reader. Creates an to read a feed. The expected base type for the entities in the feed. The created reader. Creates an to read a feed. The entity set we are going to read entities for. The expected base type for the entities in the feed. The created reader. Creates an to read an entry. The created reader. Creates an to read an entry. The expected entity type for the entry to be read. The created reader. Creates an to read an entry. The entity set we are going to read entities for. The expected entity type for the entry to be read. The created reader. Creates an to read a collection of primitive or complex values (as result of a service operation invocation). The created collection reader. Creates an to read a collection of primitive or complex values (as result of a service operation invocation). The expected type reference for the items in the collection. The created collection reader. Creates an to read a batch of requests or responses. The created batch reader. Creates an to read the parameters for . The function import whose parameters are being read. The created parameter reader. Reads a service document payload. The service document read. Reads an as message payload. The property read from the payload. Reads an as message payload. The expected type reference of the property to read. The property read from the payload. Reads an as message payload. The metadata of the property to read. The property read from the payload. Reads an as the message payload. The read from the message payload. Reads the result of a $links query (entity reference links) as the message payload. The entity reference links read as message payload. Reads the result of a $links query (entity reference links) as the message payload. The navigation property for which to read the entity reference links. The entity reference links read as message payload. Reads a singleton result of a $links query (entity reference link) as the message payload. The entity reference link read from the message payload. Reads a singleton result of a $links query (entity reference link) as the message payload. The navigation property for which to read the entity reference link. The entity reference link read from the message payload. Reads a single value as the message body. The expected type reference for the value to be read; null if no expected type is available. The read value. Reads the message body as metadata document. Returns . implementation to cleanup unmanaged resources of the reader. Determines the format of the payload being read and returns it. The format of the payload being read by this reader. The format of the payload is determined when starting to read the message; if this method is called before reading has started it will throw. Processes the content type header of the message to determine the format of the payload, the encoding, and the payload kind. All possible kinds of payload to be read with this message reader; must not include ODataPayloadKind.Unsupported. Gets the content type header of the message and validates that it is present and not empty. The content type header of the message. Verify arguments for creation of an to read a feed. The entity set we are going to read entities for. The expected base entity type for the entities in the feed. Verify arguments for creation of an to read an entry. The entity set we are going to read entities for. The expected entity type for the entry to be read. Verify arguments for creation of an to read a collection of primitive or complex values (as result of a service operation invocation). The expected type for the items in the collection. Verify arguments for creation of a batch as the message body. Verify arguments for creation of an to read the parameters for . The function import whose parameters are being read. Verify arguments for reading of a service document payload. Verify arguments for reading of a metadata document payload. Verify arguments for reading of an as message payload. The metadata of the property to read. Verify arguments for reading of an as message payload. The expected type reference of the property to read. Verify arguments for reading of an as the message payload. Verify arguments for reading of the result of a $links query (entity reference links) as the message payload. The navigation property for which to read the entity reference links. Verify arguments for reading of a singleton result of a $links query (entity reference link) as the message payload. Verify arguments for reading of a single value as the message body. The expected type reference for the value to be read; null if no expected type is available. The payload kinds allowed for the given expected type. Verifies that the ODataMessageReader has not been used before; an ODataMessageReader can only be used to read a single message payload but cannot be reused later. Check if the object has been disposed. Throws an ObjectDisposedException if the object has already been disposed. Perform the actual cleanup work. If 'true' this method is called from user code; if 'false' it is called by the runtime. Method which creates an input context around the input message and calls a func to read the input. The type returned by the read method. The read function which will be called over the created input context. All possible kinds of payload to read. The read value from the input. Gets all the supported payload kinds for a given content type across all formats and returns them. The set of supported payload kinds for the content type of the message. true if no or a single payload kind was found for the content type; false if more than one payload kind was found. Compares two payload kind detection results. The first . The second . -1 if is considered less than , 0 if the kinds are considered equal, 1 if is considered greater than . The message reader settings to use when reading the message payload. The media type resolver to use when interpreting the incoming content type. Enumeration of all JSON node type. No node - invalid value. Start of JSON object record, the { character. End of JSON object record, the } character. Start of JSON array, the [ character. End of JSON array, the ] character. Property, the name of the property (the value will be reported as a separate node or nodes) Primitive value, that is either null, true, false, number or string. End of input reached. Utility methods used with the OData library. String representation of the version 1.0 of the OData protocol. String representation of the version 2.0 of the OData protocol. String representation of the version 3.0 of the OData protocol. Sets the content-type and data service version headers on the message used by the message writer. The content-type and data service version headers on the message used by the message writer. The message writer to set the headers for. The kind of payload to be written with the message writer. This method can be called if it is important to set all the message headers before calling any of the write methods on the . If it is sufficient to set the headers when the write methods on the are called, you don't have to call this method and setting the headers will happen automatically. Returns the format used by the message reader for reading the payload. The format used by the messageReader for reading the payload. The to get the read format from. This method must only be called once reading has started. This means that a read method has been called on the or that a reader (for entries, feeds, collections, etc.) has been created. If the method is called prior to that it will throw. Loads the supported, OData-specific serializable annotations into their in-memory representations. The to process. Loads the supported, OData-specific serializable annotations into their in-memory representations. The to process. The maximum number of entity mapping attributes to be found for an entity type (on the type itself and all its base types). Loads the supported, OData-specific serializable annotations into their in-memory representations. The containing the annotations. The to process. Loads the supported, OData-specific serializable annotations into their in-memory representations. The containing the annotations. The to process. The maximum number of entity mapping attributes to be found for an entity type (on the type itself and all its base types). Turns the in-memory representations of the supported, OData-specific annotations into their serializable form. The to process. Turns the in-memory representations of the supported, OData-specific annotations into their serializable form. The containing the annotations. The to process. Checks whether the has a default stream. The containing the annotation. The to check. true if the entity type has a default stream; otherwise false. Adds or removes a default stream to/from the . The containing the annotation. The to modify. true to add a default stream to the entity type; false to remove an existing default stream (if any). Checks whether the is the default entity container. The containing the annotation. The to check. true if the is the default container; otherwise false. Adds or removes a default stream to/from the . The containing the annotation. The to modify. true to set the as the default container; false to remove an existing default container annotation (if any). Checks whether the has a MIME type annotation. The containing the annotation. The to check. The (non-null) value of the MIME type annotation of the or null if no MIME type annotation exists. Sets the MIME type annotation of the to . The containing the annotation. The to modify. The MIME type value to set as annotation value; if null, an existing annotation will be removed. The MIME type annotation is only supported on service operations and primitive properties for serialization purposes. Checks whether the has an HttpMethod annotation. The containing the annotation. The to check. The (non-null) value of the HttpMethod annotation of the or null if no such annotation exists. Sets the HttpMethod annotation of the to . The contatining the annotation. The to modify. The HttpMethod value to set as annotation value; if null, an existing annotation will be removed. The HttpMethod annotation is only supported on service operations for serialization purposes. Gets the value of IsAlwaysBindable annotation on the . The containing the annotation. The to get the annotation from. The value of the annotation if it exists; false otherwise. Thrown if the IsAlwaysBindable annotation is set to true for a non-bindable . Sets the value of IsAlwaysBindable annotation of the to The containing the annotation. The to set the annotation on. The value of the annotation to set. Thrown if IsAlwaysBindable is set to true for a non-bindable . Gets the reader behavior for null property value on the specified property. The model containing the annotation. The property to check. The behavior to use when reading null value for this property. Adds a transient annotation to indicate how null values for the specified property should be read. The containing the annotations. The to modify. The new behavior for reading null values for this property. Displays the OData version to string representation. The OData version. The OData version. Displays a string to OData version representation. The OData version. The OData version. Translates the to a func that would evalutate whether the filter would match a given annotation name. The func would evaluate to true if the matches the annotation name that's passed to the it, and false otherwise. The filter string may be a comma delimited list of any of the following supported patterns: "*" -- Matches all annotation names. "ns.*" -- Matches all annotation names under the namespace "ns". "ns.name" -- Matches only the annotation name "ns.name". "-" -- The exclude operator may be used with any of the supported pattern, for example: "-ns.*" -- Excludes all annotation names under the namespace "ns". "-ns.name" -- Excludes only the annotation name "ns.name". Null or empty filter is equivalent to "-*". The relative priority of the pattern is base on the relative specificity of the patterns being compared. If pattern1 is under the namespace pattern2, pattern1 is more specific than pattern2 because pattern1 matches a subset of what pattern2 matches. We give higher priority to the pattern that is more specific. For example: "ns.*" has higher priority than "*" "ns.name" has higher priority than "ns.*" "ns1.name" has same priority as "ns2.*" Patterns with the exclude operator takes higher precedence than the same pattern without. For example: "-ns.name" has higher priority than "ns.name". Examples: "ns1.*,ns.name" -- Matches any annotation name under the "ns1" namespace and the "ns.name" annotation. "*,-ns.*,ns.name" -- Matches any annotation name outside of the "ns" namespace and only "ns.name" under the "ns" namespace. Returns a func which would evaluate to true if the matches the annotation name that's passed to the it, and false otherwise. Turns the in-memory representations of the supported, OData-specific annotations into their serializable form. Assumes that the entity type and the model have been validated. The containing the annotations. The to process. Gets a boolean value for the OData metadata annotation on the . The model containing the annotation. The annotatable to get the annotation from. The local name of the annotation to get. true to search the base type hierarchy of the structured type for the annotation; otherwise false. true if the annotation exists and has the value 'true'; false if the annotation does not exist or has the value 'false'. true if the annotation with the specified local names exists; otherwise false. If the annotation exists but does not have a valid boolean value this method will throw. Gets a boolean value for the OData metadata annotation on the . The model containing the annotation. The annotatable to get the annotation from. The local name of the annotation to get. true if the annotation exists and has the value 'true'; false if the annotation does not exist or has the value 'false'. true if the annotation with the specified local names exists; otherwise false. If the annotation exists but does not have a valid boolean value this method wil throw. Sets the as value of the annotation on the . The model containing the annotation. The annotatable to set the annotation on. The local name of the annotation to set. The value of the annotation to set. Generic utility methods. Calls IDisposable.Dispose() on the argument if it is not null and is an IDisposable. The instance to dispose. 'True' if IDisposable.Dispose() was called; 'false' otherwise. Perform a stable sort of the using the specified . The type of the items in the array to sort. The array to sort. The comparison to use to compare items in the array Array of KeyValuePairs where the sequence of Values is the sorted representation of . Stable comparer of a sequence of key/value pairs where each pair knows its position in the sequence and its value. The type of the values in the sequence. The to compare the values. Constructor. The to compare the values. Compares two key/value pairs by first comparing their value. If the values are equal, the position in the array determines the relative order (and preserves the original relative order). First key/value pair. Second key/value pair. A value < 0 if is less than . The value 0 if is equal to . Note this only happens when comparing the same items when used in StableSort. A value > 0 if is greater than . This method will never return the value 0 since the input sequence is constructed in a way that all key/value pairs have unique indeces. Class with utility methods for dealing with OData metadata. Returns the annotation in the OData metadata namespace with the specified . The containing the annotation. The to get the annotation from. The local name of the annotation to find. The value of the annotation in the OData metadata namespace and with the specified . true if an annotation with the specified local name was found; otherwise false. Sets the annotation with the OData metadata namespace and the specified on the . The containing the annotations."/> The to set the annotation on. The local name of the annotation to set. The value of the annotation to set. Gets all the serializable annotations in the OData metadata namespace on the . The containing the annotations."/> The to get the annotations from. All annotations in the OData metadata namespace; or null if no annotations are found. Gets the EDM type of an OData instance from the of the instance (if available). The OData instance to get the EDM type for. The EDM type of the if available in the annotation. Resolves the name of a primitive, complex, entity or collection type to the respective type. Uses the semantics used by writers. Thus it implements the strict speced behavior. The model to use. The name of the type to resolve. The representing the type specified by the ; or null if no such type could be found. Resolves the name of a primitive, complex, entity or collection type to the respective type. Uses the semantics used be readers. Thus it can be a bit looser. The model to use. The expected type for the type name being resolved, or null if none is available. The name of the type to resolve. Reader behavior if the caller is a reader, null if no reader behavior is available. The version of the payload being read. The type kind of the type, if it could be determined. This will be None if we couldn't tell. It might be filled even if the method returns null, for example for Collection types with item types which are not recognized. The representing the type specified by the ; or null if no such type could be found. Resolves the name of a primitive, complex, entity or collection type to the respective type. The model to use. The expected type for the type name being resolved, or null if none is available. The name of the type to resolve. Custom type resolver to use, if null the model is used directly. The version to use when resolving the type name. The type kind of the type, if it could be determined. This will be None if we couldn't tell. It might be filled even if the method returns null, for example for Collection types with item types which are not recognized. The representing the type specified by the ; or null if no such type could be found. Calculates the operations that are always bindable to the given type. The binding type in question. The model to search for operations. The edm type resolver to get the parameter type. An enumeration of operations that are always bindable to the given type. Looks up the given term name in the given model, and returns the term's type if a matching term was found. The name of the term to lookup, including the namespace. The model to look in. The type of the term in the model, or null if no matching term was found. Gets the nullable type reference for a payload type; if the payload type is null, uses Edm.String. The payload type to get the type reference for. The nullable for the . Class with utility methods for validating OData content (applicable for readers and writers). Maximum batch boundary length supported (not includeding leading CRLF or '-'). The set of characters that are invalid in property names. Keep this array in sync with MetadataProviderUtils.InvalidCharactersInPropertyNames in Astoria. Validates that an open property value is supported. The name of the open property. The value of the open property. Validates a type kind for a value type. The type kind. The name of the type (used for error reporting only). Validates that is a valid type name for a collection and returns its item type name. The name of the collection type. The item type name for the . Validates that the is assignable to the and fails if it's not. The expected entity type reference, the base type of the entities expected. The payload entity type reference to validate. Validates that the represents a collection type. The type reference to validate. The instance representing the collection passed as . Validates an item of a collection to ensure it is not of collection and stream reference types. The collection item. True if the items in the collection are streamable, false otherwise. Validates a null collection item against the expected type. The expected item type or null if no expected item type exists. The instance controlling the behavior of the writer. Validates a stream reference property to ensure it's not null and its name if correct. The stream reference property to validate. Property metadata to validate against. Validates an to ensure it's not null. The association link to ensure it's not null. Validates the name for an association link. The name of the association link to validate. Validates an to ensure all required information is specified and valid. The association link to validate. Increases the given recursion depth, and then verifies that it doesn't exceed the recursion depth limit. The current depth of the payload element hierarchy. The maximum allowed recursion depth. Validates an to ensure it's not null. The operation to ensure it's not null. Whether is an . Validates an to ensure its metadata is specified and valid. The operation to validate. Validates an to ensure its target is specified and valid. The operation to validate. Validates that the specified is a valid entry as per the specified type. The entry to validate. Optional entity type to validate the entry against. Model containing the entity type. true if the validation of the default MediaResource should be done; false otherwise. If the is available only entry-level tests are performed, properties and such are not validated. Validates that a given primitive value is of the expected (primitive) type. The value to check. The expected type for the value. Validates that a given primitive value is of the expected (primitive) type. The value to check. The primitive type reference for the value - some callers have this already, so we save the lookup here. The expected type for the value. Some callers have the primitive type reference already resolved (from the value type) so this method is an optimized version to not lookup the primitive type reference again. Validates that the expected primitive type matches the actual primitive type. The expected type. The actual type. Validates a resource collection. The resource collection to validate. Validates a resource collection Url. The resource collection url to validate. Validates that the observed type kind is the expected type kind. The actual type kind to compare. The expected type kind to compare against. The name of the type to use in the error. Validates that a boundary delimiter is valid (non-null, less than 70 chars, only valid chars, etc.) The boundary delimiter to test. Null validation of complex properties will be skipped if edm version is less than v3 and data service version exists. In such cases, the provider decides what should be done if a null value is stored on a non-nullable complex property. The model containing the complex property. True if complex property should be validated for null values. Validates that a property name is valid in OData. The property name to validate. true if the property name is valid, otherwise false. Validates a property name to check whether it contains reserved characters. The property name to check. Validates that the total number of entity property mapping attributes on the base entity type and the current entity type does not exceed the specified security limit. The EPM cache of the base entity type or null if no base entity type exists. The EPM collection of the current entity type. The maximum number of mappings allowed for an entity type (on the type itself and all its base types). The total number of entity property mappings for the current entity type. Class with utility methods for writing OData content. Determines if a property should be written or skipped. The projected properties annotation to use (can be null). The name of the property to check. true if the property should be skipped, false to write the property. Class with utility methods to work with media types. An array of all the supported payload kinds. UTF-8 encoding, without the BOM preamble. While a BOM preamble on UTF8 is generally benign, it seems that some MIME handlers under IE6 will not process the payload correctly when included. Because the data service should include the encoding as part of the Content-Type in the response, there should be no ambiguity as to what encoding is being used. For further information, see http://www.unicode.org/faq/utf_bom.html#BOM. Given the Accept and the Accept-Charset headers of the request message computes the media type, encoding and to be used for the response message. The message writer settings to use for serializing the response payload. The kind of payload to be serialized as part of the response message. The media type resolver to use when interpreting the content type. The media type to be used in the response message. The encoding to be used in the response message. The used when serializing the response. Determine the to use for the given . If no supported content type is found an exception is thrown. The name of the content type to be checked. All possiblel kinds of payload that can be read with this content type. The media type resolver to use when interpreting the content type. The media type parsed from the . The encoding from the content type or the default encoding for the . The payload kind that was selected form the list of for the specified . The batch boundary read from the content type for batch payloads; otherwise null. The for the . Gets all payload kinds and their corresponding formats that match the specified content type header. The content type header to get the payload kinds for. The media type resolver to use when interpreting the content type. The parsed content type as . The encoding from the content type or the default encoding from . The list of payload kinds and formats supported for the specified . Checks whether two media types with subtypes (but without parameters) are equal. The first media type and subtype. The second media type and subtype. true if the is equal to ; otherwise false. Checks whether a media type starts with the expected type and subtype. The media type to check. The type and subtype the should start with. true if the starts with ; otherwise false. Checks whether the specified media type has a parameter with the expected value. The media type to check the parameters for. The name of the expected parameter. The value of the expected parameter. true if the has a parameter called with value ; otherwise false. Determines whether the media type has a 'streaming' parameter with the value 'true'. The media type to check. true if the media type has a 'streaming' parameter with the value 'true'; otherwise, false. Checks for wildcard characters in the . The to check. JSONP - instead of writing 'application/json', we write 'text/javascript'. In all other ways we pretend it is JSON Original content-type value string. New content-type value string. Determine the to use for the given . If no supported content type is found an exception is thrown. The name of the content type to be checked. All possiblel kinds of payload that can be read with this content type. The media type resolver to use when interpreting the content type. The media type parsed from the . The encoding from the content type or the default encoding for the . The payload kind that was selected form the list of for the specified . The for the . Parses the specified content type header into a media type instance. The content type header to parse. The optional charset specified with the content type. The of the parsed . Gets the default media type for a given payload kind in a given format. A list of supported media types and formats. The user-specified format in which to write the payload (can be null). The default format for the specified payload kind The default media type for the given payload kind and format. Parses the accepted charsets and matches them against the supported encodings for the given . The Accept-Charset header of the request. The for which to compute the encoding. The media type used to compute the default encoding for the payload. true if the default encoding should be returned if no acceptable charset is found; otherwise false. The encoding to be used for the response. Matches the supported media types against the list of media types specified in the Accept header or ContentType header of the message. Matching follows the rules for media type matching as described in RFC 2616. The set of media types to be matched against the . The set of media types the will be matched against. The best found during the matching process or null if no match was found. Converts all occurrences of the 'application/json' media type to 'application/json;odata=minimalmetadata'. This is necessary because for an accept header 'application/json, application/json;odata=verbose' we want the result to be 'application/json;odata=minimalmetadata' although this is not compliant with the default conneg rules (where application/json;odata=verbose would win). The parsed acceptable media types. UTF-8 encoding, without the BOM preamble. While a BOM preamble on UTF8 is generally benign, it seems that some MIME handlers under IE6 will not process the payload correctly when included. Because the data service should include the encoding as part of the Content-Type in the response, there should be no ambiguity as to what encoding is being used. For further information, see http://www.unicode.org/faq/utf_bom.html#BOM. Class representing the result of matching two instances. The default quality value (in the normalized range from 0 .. 1000). Index of the source type in the list of all source types. Index of the target type in the list of all target types. Constructor. The source to match against the target type. The target to match against the source type. Index of the source type in the list of all source types. Index of the target type in the list of all target types. Implementation of . The to compare against. -1 if this instance is a worse match than . 0 if both matches are the same. 1 if is a better match than this instance. Selects a quality value for the specified type. The text representation of the quality value. The quality value, in range from 0 through 1000. See http://tools.ietf.org/html/rfc2616#section-14.1 for further details. Tries to find a parameter with the specified in the given list of parameters. Does not include accept extensions (i.e., parameters after the q quality value parameter) The list of parameters to search. The name of the parameter to find. The parameter value of the parameter with the specified . True if a parameter with the specified was found; otherwise false. Returns a flag indicating whether a given media type parameter name is the Http quality value parameter. The parameter name to check. True if the parameter name is for the quality value; otherwise false. Matches the source type against the media type. The source to match against the target type. The target to match against the source type. Index of the source type in the list of all source types. Index of the target type in the list of all target types. Represents the number of non-* matching type name parts or -1 if not matching at all. Represents the number of matching parameters or -1 if neither the source type nor the target type have parameters. The quality value of the target type (or -1 if none is specified). The number of parameters of the source type that are used for comparison. All accept-parameters are ignored. true if this represents a valid match (i.e., the source and target types match/are compatible); otherwise false. Two types are considered compatible if at least one type name part matches (or we are dealing with a wildcard) and all the parameters in the source type have been matched. Represents a collection of entity reference links (the result of a $links query). Might include an inline count and a next link. Provides additional serialization information to the for this . Gets or sets the optional inline count of the $links collection. The optional inline count of the $links collection. Gets or sets the optional next link of the $links collection. The optional next link of the $links collection. Gets or sets the enumerable of instances representing the links of the referenced entities. The enumerable of instances. These links should be usable to retrieve or modify the referenced entities. Provides additional serialization information to the for this . Represents an entity reference link (the result of a $link query). Base class for Feed and Entry. Provides additional serialization information to the for this . Gets or sets the URI representing the URL of the referenced entity. The URI representing the URL of the referenced entity. This URL should be usable to retrieve or modify the referenced entity. Provides additional serialization information to the for this . Interface for synchronous OData request messages. Returns a value of an HTTP header. The value of the HTTP header, or null if no such header was present on the message. The name of the header to get. Sets the value of an HTTP header. The name of the header to set. The value of the HTTP header or 'null' if the header should be removed. Gets the stream backing for this message. The stream backing for this message. Gets an enumerable over all the headers for this message. An enumerable over all the headers for this message. Gets or sets the request URL for this request message. The request URL for this request message. Gets or sets the HTTP method used for this request message. The HTTP method used for this request message. Interface for synchronous OData response messages. Returns a value of an HTTP header. The value of the HTTP header, or null if no such header was present on the message. The name of the header to get. Sets the value of an HTTP header. The name of the header to set. The value of the HTTP header or 'null' if the header should be removed. Gets the stream backing for this message. The stream backing for this message. Gets an enumerable over all the headers for this message. An enumerable over all the headers for this message. Gets or sets the result status code of the response message. The result status code of the response message. Implementation class wrapped by the and implementations. Base class for the internal wrappers around IODataRequestMessageAsync and IODataResponseMessageAsync. true if the message is being written; false when it is read. true if the stream returned should ignore dispose calls. The maximum size of the message in bytes (or null if no maximum applies). true to use a buffering read stream wrapper around the actual message stream; otherwise false. The buffering read stream used for payload kind detection; only non-null inside of payload kind detection. Constructs a new ODataMessage. true if the message is being written; false when it is read. true if the stream returned should ignore dispose calls. The maximum size of the message in bytes (or a negative value if no maximum applies). Returns a value of an HTTP header. The name of the header to get. The value of the HTTP header, or null if no such header was present on the message. Sets the value of an HTTP header. The name of the header to set. The value for the header with name . Get the stream backing this message. The stream for this message. Queries the message for the specified interface type. The type of the interface to query for. The instance of the interface asked for or null if it was not implemented by the message. We need this method since the input contexts don't get access to the actual instance of the message given to us by the user instead they get this class, and thus they can't just cast to get to the interface they want. Synchronously get the stream backing this message. A function that returns the stream backing the message. true if the message is a request message; false for a response message. The backing the message. Verifies that setting a header is allowed We allow modifying the headers only if we are writing the message and we are not detecting the payload kind. Validates that a given message stream can be used. The stream to validate. true if the message is a request message; false for a response message. Gets the buffering read stream if one is available; otherwise returns null. The currently being used or null if no buffering stream is currently being used. Returns an enumerable over all the headers for this message. true to use a buffering read stream wrapper around the actual message stream; otherwise false. true to use a buffering read stream wrapper around the actual message stream; otherwise false. Listener interface to be notified of operation changes. The URL resolver to perform custom URL resolution for URLs read or written from/to the payload. A function to retrieve the content stream for this batch operation message. The set of headers for this operation. Constructor. Base class constructor to create a message for an operation of a batch request/response. A function to retrieve the content stream for this batch operation message. The headers of the batch operation message. Listener interface to be notified of part changes. The URL resolver to perform custom URL resolution for URLs read or written from/to the payload. true if the request message is being written; false when it is read. Returns a value of an HTTP header of this operation. The name of the header to get. The value of the HTTP header, or null if no such header was present on the message. Sets the value of an HTTP header of this operation. The name of the header to set. The value of the HTTP header or 'null' if the header should be removed. Get the stream backing this message. The stream for this message. Queries the message for the specified interface type. The type of the interface to query for. The instance of the interface asked for or null if it was not implemented by the message. Method to implement a custom URL resolution scheme. This method returns null if not custom resolution is desired. If the method returns a non-null URL that value will be used without further validation. The (optional) base URI to use for the resolution. The URI read from the payload. A instance that reflects the custom resolution of the method arguments into a URL or null if no custom resolution is desired; in that case the default resolution is used. Indicates that the headers and request/response line have been read or written. Can be called only once per batch part and headers cannot be modified anymore after this method was called. Verifies that writing of the message has not been completed; this is called from all methods that are only valid to be called before the message content is written or the message Returns an enumerable over all the headers for this message. Message representing an operation in a batch response. The actual implementation of the message. We don't derive from this class since we want the actual implementation to remain internal while this class is public. The result status code of the response message. Constructor. A function to retrieve the content stream for this batch operation message. The headers of the batch operation message. Listener interface to be notified of part changes. The optional URL resolver to perform custom URL resolution for URLs written to the payload. true if the request message is being written; false when it is read. Returns a value of an HTTP header of this operation. The value of the HTTP header, or null if no such header was present on the message. The name of the header to get. Sets the value of an HTTP header of this operation. The name of the header to set. The value of the HTTP header or null if the header should be removed. Gets the stream backing for this message. The stream backing for this message. Method to implement a custom URL resolution scheme. This method returns null if not custom resolution is desired. If the method returns a non-null URL that value will be used without further validation. A instance that reflects the custom resolution of the method arguments into a URL or null if no custom resolution is desired; in that case the default resolution is used. The (optional) base URI to use for the resolution. The URI read from the payload. Creates an operation response message that can be used to write the operation content to. The output stream underlying the operation message. The operation listener. The (optional) URL resolver for the message to create. An that can be used to write the operation content. Creates an operation response message that can be used to read the operation content from. The batch stream underyling the operation response message. The status code to use for the operation response message. The headers to use for the operation response message. The operation listener. The (optional) URL resolver for the message to create. An that can be used to read the operation content. Gets or sets the result status code of the response message. The result status code of the response message. Gets an enumerable over all the headers for this message. An enumerable over all the headers for this message. Returns the actual operation message which is being wrapped. Message representing an operation in a batch request. The actual implementation of the message. We don't derive from this class since we want the actual implementation to remain internal while this class is public. Constructor. Creates a request message for an operation of a batch request. A function to create the content stream. The HTTP method used for this request message. The request Url for this request message. The headers for the this request message. Listener interface to be notified of operation changes. The optional URL resolver to perform custom URL resolution for URLs written to the payload. true if the request message is being written; false when it is read. Returns a value of an HTTP header of this operation. The value of the HTTP header, or null if no such header was present on the message. The name of the header to get. Sets the value of an HTTP header of this operation. The name of the header to set. The value of the HTTP header or 'null' if the header should be removed. Gets the stream backing for this message. The stream backing for this message. Implements a custom URL resolution scheme. A instance that reflects the custom resolution of the method arguments into a URL or null if no custom resolution is desired; in that case the default resolution is used. The (optional) base URI to use for the resolution. The URI read from the payload. Creates an operation request message that can be used to write the operation content to. The output stream underlying the operation message. The HTTP method to use for the message to create. The request URL for the message to create. The operation listener. The (optional) URL resolver for the message to create. An to write the request content to. Creates an operation request message that can be used to read the operation content from. The batch stream underyling the operation response message. The HTTP method to use for the message to create. The request URL for the message to create. The headers to use for the operation request message. The operation listener. The (optional) URL resolver for the message to create. An to read the request content from. Gets an enumerable over all the headers for this message. An enumerable over all the headers for this message. Gets or sets the request URL for this request message. The request URL for this request message. Gets or Sets the HTTP method used for this request message. The HTTP method used for this request message. Returns the actual operation message which is being wrapped. Helper methods used by the ODataBatchWriter. Creates a new batch boundary string based on a randomly created GUID. A flag indicating whether the boundary should be created for a request or a resonse. The newly created batch boundary as string. Creates a new changeset boundary string based on a randomly created GUID. A flag indicating whether the boundary should be created for a request or a resonse. The newly created changeset boundary as string. Creates the multipart/mixed content type with the specified boundary (if any). The boundary to be used for this operation or null if no boundary should be included. The multipart/mixed content type with the specified boundary (if any). Write the start boundary. Writer to which the boundary needs to be written. Boundary string. true if this is the first start boundary. Write the end boundary. Writer to which the end boundary needs to be written. Boundary string. true if there was no start boundary written before this end boundary. Writes the headers, (optional) Content-ID and the request line Writer to write to. The Http method to be used for this request operation. The Uri to be used for this request operation. Writes the headers and response line. Writer to write to. Writes the preamble for a change set (e.g., the content-type header). Writer to write to. The boundary string to use for the change set. Holds information needed during content serialization/deserialization for each EntityPropertyMappingAttribute. Private field backing Attribute property. Private field backing DefiningType property. Type whose property is to be read. Path to the property value. Stored as an array of source path segments which describe the path from the entry to the property in question. If this mapping is for a non-collection property or for the collection property itself, this path starts at the entity resource (not including the root segment). If this mapping is for a collection item property, this path starts at the collection item. In this case empty path is allowed, meaning the item itself. Set to true if this info describes mapping to a syndication item, or false if it describes a custom mapping Creates instance of EntityPropertyMappingInfo class. The corresponding to this object Type the was defined on. Type whose property is to be read. This can be different from defining type when inheritance is involved. Sets path to the source property. The path as an array of source path segments. Compares the defining type of this info and other EpmInfo object. The other EpmInfo object to compare to. true if the defining types are the same The corresponding to this object. Entity type that has the . Entity type whose property is to be read. Path to the property value. Stored as an array of source path segments which describe the path from the entry to the property in question. If this mapping is for a non-collection property or for the collection property itself, this path starts at the entity resource. If this mapping is for a collection item property, this path starts at the collection item. In this case empty path is allowed, meaning the item itself. Set to true if this info describes mapping to a syndication item, or false if it describes a custom mapping. Writer for the EPM custom-only. Writes the EPM custom mapping properties into XmlWriter. Constructor. The output context currently in use. Writes the custom mapped EPM properties to an XML writer which is expected to be positioned such to write a child element of the entry element. The XmlWriter to write to. The EPM target tree to use. The entry properties value cache to use to access the properties. The type of the entry. The output context currently in use. Writes a namespace declaration attribute for the namespace required by the target segment. The writer to write the declaration to. The target segment to write the declaration for. The name of the prefix if it was already declared. Writes the custom mapped EPM properties to an XML writer which is expected to be positioned such to write a child element of the entry element. The XmlWriter to write to. The EPM target tree to use. The entry properties value cache to use to access the properties. The type of the entry. Writes an EPM element target. The writer to write to. The target segment describing the element to write. The entry properties value cache to use to access the properties. The type of the entry. The name of the prefix if it was already declared. Writes an EPM attribute target. The writer to write to. The target segment describing the attribute to write. The entry properties value cache to use to access the properties. The type of the entry. The name of the prefix if it was already declared. Given a target segment the method returns the text value of the property mapped to that segment to be used in EPM. The target segment to read the value for. The entry EPM value cache to use. The entity type of the entry being processed. The test representation of the value, or the method throws if the text representation was not possible to obtain. Writer for the EPM syndication-only. Writes the EPM properties into ATOM metadata OM. The EPM target tree to use. Atom entry metadata to write to. Constructor. The EPM target tree to use. The output context currently in use. Writes the syndication part of EPM for an entry into ATOM metadata OM. The EPM target tree to use. The entry properties value cache to use to access the properties. The type of the entry. The output context currently in use. The ATOM metadata OM with the EPM values populated. Creates a text ATOM value. The text value to use. The content kind of the value. The Atom text value. Given an object returns the corresponding DateTimeOffset value through conversions. Object containing property value. The target syndication property for the mapping (used for exception messages). The current settings to control the behavior of the writer. DateTimeOffset after conversion. Given an object returns the corresponding string representation of the value. Object containing property value. The current settings to control the behavior of the writer. String representation of the property value. Writes the syndication part of EPM for an entry into ATOM metadata OM. The entry properties value cache to use to access the properties. The type of the entry. The ATOM metadata OM with the EPM values populated. Writes a non-leaf segment which has sub segments. The segment being written EPM value cache to use to get property values, or a primitive value The type of the entry or collection item. Writes EPM value to a person construct (author or contributor). The target segment which points to either author or contributor element. EPM value cache to use to get property values, or a primitive value The type of the entry or collection item. The person metadata or null if no person metadata should be written for this mapping. Given a target segment the method returns the text value of the property mapped to that segment to be used in EPM. The target segment to read the value for. EPM value cache to use to get property values, or a primitive value The type of the entry or collection item. The test representation of the value, or the method throws if the text representation was not possible to obtain. Atom metadata description for a workspace. Gets or sets the title of the workspace. The title of the workspace. Atom metadata description for a collection (in a workspace). Gets or sets the title of the collection. The title of the collection. Gets or sets the accept range of media types for this collection. The accept range of media types for this collection. Gets or sets the categories for this collection. The categories for this collection. Caches values of properties and items enumerations so that we only ever enumerate these once even if they were use in EPM. Caches either ComplexValue properties enumeration or Collection items enumeration. The key is the complex value, or collection for the property in question. For complex property, the value is a List of ODataProperty which stores the enumeration ODataComplexValue.Properties cache. For collection property, the value is a List of object which stores the enumeration ODataCollectionValue.Items cache. The items are either EpmCollectionItemCache instances in which case the value of the item is cached inside that instance, or it's any other type in which case the value of the item is that instance. Creates a new empty cache. Returns the properties for the specified complex value. The EPM value cache to use (can be null). The complex value to get the properties for. If we're writing content of an entry or not. The properties enumeration for the complex value. Caches and returns the properties for the specified complex value. The complex value to cache the properties for. The cached properties enumeration for the complex value. This method assumes that the complex value's properties are not cached yet. Returns the properties for the specified complex value. The complex value to get the properties for. true if we're writing entry content or false when writing out-of-content EPM. The properties enumeration for the complex value. Caches values of properties enumerations on an entry and then EPM values for the rest of property values. Caches the ODataEntry.Properties enumeration. Creates a new cache. The entry for which to create the properties cache. Returns enumeration of properties (excluding stream properties) for the entry. Returns enumeration of stream properties for the entry. Helper methods for EPM writers. Given a property value returns the text value to be used in EPM. The value of the property. The text representation of the value, or the method throws if the text representation was not possible to obtain. Gets the for the specified from the . The EPM source path segment for the parent of the property being written. The name of the property to get the for. The for the specified or null if none exists. Gets the for the specified . The EPM source path segment to get the from. The for the specified or null if none exists. Returns an for a given property provided the parent . The parent to get the property segment from. The name of the property to get the for. An for a given property provided the parent . Cache all the properties and collection item enumerations needed for EPM processing. The property value cache to cache the EPM related properties in. The source tree describing all properties taking part in entity property mappings. Cache the property and collection item enumerations needed in EPM mappings. We do this for syndication and custom mappings. The property value cache to use for caching. The source path segments to cache. The values to compute the segments against. Gets the property value as the requested type. The expected type of the property value. The properties to search. The name of the property to get the value for. The property value as or null if no property with name or with the expected type exists. true if a property of the expected type was found; otherwise false. Helper methods used to merge Atom metadata from EPM with those specified through annotations. Merges custom and EPM ATOM metadata. The custom ATOM metadata, or null if there were no custom ATOM metadata. The EPM ATOM metadata, or null if there are no EPM mappings to syndication targets. The instance configuring the writer. The merged ATOM metadata to write to the output. The merge means that if one of the sides has null, the other is used, otherwise if both are non-null we verify that the values are the same, otherwise we throw. Merges enumerations of person metadata. The enumeration of custom person metadata. The enumeration of EPM person metadata. The type of syndication mapping, one of AtomLinkMetadata, AtomCategoryMetadata, AtomPersonMetadata, The merged enumeration. Merges ATOM text values. The custom value. The EPM value. The name of the ATOM property which holds the text value, used for error reporting. The merged ATOM text value. Merges text values. The custom value. The EPM value. The name of the ATOM property which holds the text value, used for error reporting. The merged text value. Merges date time offset values. The custom value. The EPM value. The name of the ATOM property which holds the value, used for error reporting. The merged date time offset value. Tries to merge custom and EPM values if one of them is null. The type of the value to merge. The custom value. The EPM value. The merge value if the merge was possible. true if one of the values was null and thus the other was returned in ; false if both were not null and thus full merge will have to be performed. Tries to merge custom and EPM values if one of them is null. The type of the value to merge. The custom value. The EPM value. The merge value if the merge was possible. true if one of the values was null and thus the other was returned in ; false if both were not null and thus full merge will have to be performed. Class for writing OData batch messages; also verifies the proper sequence of write calls on the writer. The output context to write to. The boundary string for the batch structure itself. The batch-specific URL resolver that stores the content IDs found in a changeset and supports resolving cross-referencing URLs. The state the writer currently is in. The boundary string for the current changeset (only set when writing a changeset, e.g., after WriteStartChangeSet has been called and before WriteEndChangeSet is called). When not writing a changeset this field is null. A flag to indicate whether the batch start boundary has been written or not; important to support writing of empty batches. A flags to indicate whether the current changeset start boundary has been written or not. This is false if a changeset has been started by no changeset boundary was written, and true once the first changeset boundary for the current changeset has been written. The request message for the operation that is currently written if it's a request; or null if no part is written right now or it's a response part. The response message for the operation that is currently written if it's a response; or null if no part is written right now or it's a request part. The value of the Content-ID header of the current operation (or null if no Content-ID header exists). Note that the current Content-ID header is not included immediately in the content ID cache since the current content ID will only be visible to subsequent operations. The current size of the batch message, i.e., how many query operations and changesets have been written. The current size of the active changeset, i.e., how many request have been written for the changeset. Constructor. The output context to write to. The boundary string for the batch structure itself. Starts a new batch; can be only called once and as first call. Ends a batch; can only be called after WriteStartBatch has been called and if no other active changeset or operation exist. Starts a new changeset; can only be called after WriteStartBatch and if no other active operation or changeset exists. Ends an active changeset; this can only be called after WriteStartChangeset and only once for each changeset. Creates an for writing an operation of a batch request. The message that can be used to write the request operation. The Http method to be used for this request operation. The Uri to be used for this request operation. Creates a message for writing an operation of a batch response. The message that can be used to write the response operation. Flushes the write buffer to the underlying stream. This method is called to notify that the content stream for a batch operation has been requested. This method is called to notify that the content stream of a batch operation has been disposed. This method notifies the listener, that an in-stream error is to be written. This listener can choose to fail, if the currently written payload doesn't support in-stream error at this position. If the listener returns, the writer should not allow any more writing, since the in-stream error is the last thing in the payload. Determines whether a given writer state is considered an error state. The writer state to check. True if the writer state is an error state; otherwise false. Verifies that calling WriteStartBatch is valid. true if the call is to be synchronous; false otherwise. Starts a new batch - implementation of the actual functionality. Verifies that calling WriteEndBatch is valid. true if the call is to be synchronous; false otherwise. Ends a batch - implementation of the actual functionality. Verifies that calling WriteStartChangeset is valid. true if the call is to be synchronous; false otherwise. Starts a new changeset - implementation of the actual functionality. Verifies that calling WriteEndChangeset is valid. true if the call is to be synchronous; false otherwise. Ends an active changeset - implementation of the actual functionality. Verifies that calling CreateOperationRequestMessage if valid. true if the call is to be synchronous; false otherwise. The Http method to be used for this request operation. The Uri to be used for this request operation. Creates an for writing an operation of a batch request - implementation of the actual functionality. The Http method to be used for this request operation. The Uri to be used for this request operation. The message that can be used to write the request operation. Verifies that calling CreateOperationResponseMessage is valid. true if the call is to be synchronous; false otherwise. Creates an for writing an operation of a batch response - implementation of the actual functionality. The message that can be used to write the response operation. Writes all the pending headers and prepares the writer to write a content of the operation. Disposes the batch writer and set the 'OperationStreamRequested' batch writer state; called after the flush operation(s) have completed. Remember a non-null Content-ID header for change set request operations. If a non-null content ID header is specified for a change set request operation, record it in the URL resolver. The Content-ID header value read from the message. Note that the content ID of this operation will only become visible once this operation has been written and OperationCompleted has been called on the URL resolver. Verifies that the writer is in correct state for the Flush operation. true if the call is to be synchronous; false otherwise. Verifies that a call is allowed to the writer. true if the call is to be synchronous; false otherwise. Catch any exception thrown by the action passed in; in the exception case move the writer into state ExceptionThrown and then rethrow the exception. The action to execute. Sets a new writer state; verifies that the transition from the current state into new state is valid. The writer state to transition into. Verify that the transition from the current state into new state is valid . The new writer state to transition into. Validates that the batch writer is ready to process a new write request. Write any pending headers for the current operation message (if any). A flag to control whether after writing the pending data we report writing the message to be completed or not. Writes the start boundary for an operation. This is either the batch or the changeset boundary. Sets the 'Error' state and then throws an ODataException with the specified error message. The error message for the exception. Increases the size of the current batch message; throws if the allowed limit is exceeded. Increases the size of the current change set; throws if the allowed limit is exceeded. Resets the size of the current change set to 0. The request message for the operation that is currently written if it's a request; or null if no operation is written right now or it's a response operation. The response message for the operation that is currently written if it's a response; or null if no operation is written right now or it's a request operation. The message for the operation that is currently written; or null if no operation is written right now. An enumeration representing the current state of the writer. The writer is in initial state; nothing has been written yet. WriteStartBatch has been called. WriteStartChangeSet has been called. CreateOperationRequestMessage/CreateOperationResponseMessage has been called. ODataMessage.GetStreamAsync() has been called on an operation which caused a to be created; the batch writer is unusable while an operation is being written. The stream for writing the content of an operation has been disposed. The batch writer can now be used again. WriteEndChangeSet has been called. WriteEndBatch has been called. The writer is in error state; nothing can be written anymore except the error payload. Class representing a media type definition. Parameters specified on the media type. Sub-type specification (for example, 'plain'). Type specification (for example, 'text'). Initializes a new read-only instance. Type specification (for example, 'text'). Sub-type specification (for example, 'plain'). Initializes a new read-only instance. Type specification (for example, 'text'). Sub-type specification (for example, 'plain'). The parameters specified on the media type. Initializes a new read-only instance. Type specification (for example, 'text'). Sub-type specification (for example, 'plain'). Parameters specified on the media type. Selects the encoding appropriate for this media type specification (possibly null). The encoding explicitly defined on the media type specification, or the default encoding for well-known media types. As per http://tools.ietf.org/html/rfc2616#section-3.7, the type, subtype and parameter name attributes are case-insensitive. Converts the current to a string representation suitable for use in a content-type header. The string representation of media type. Converts the current to a string representation suitable for use in a content-type header. The encoding to use when converting the media type into text. The string representation of the current media type. Gets the named encoding if specified. Name (possibly null or empty). The named encoding if specified; the encoding for HTTP missing charset specification otherwise. See http://tools.ietf.org/html/rfc2616#section-3.4.1 for details. Encoding to fall back to an appropriate encoding is not available. Encoding implied by an unspecified encoding value. See http://tools.ietf.org/html/rfc2616#section-3.4.1 for details. Returns the full media type in standard type/subtype form, without parameters. Returns the subtype part of the media type. Returns the type part of the media type. media type parameters ODataCollectionWriter for the Verbose JSON format. The output context to write to. The Verbose JSON collection serializer to use. Constructor for creating a collection writer to use when writing operation result payloads. The output context to write to. The item type of the collection being written or null if no metadata is available. Constructor for creating a collection writer to use when writing parameter payloads. The output context to write to. The type reference of the expected item type or null if no expected item type exists. If not null, the writer will notify the implementer of the interface of relevant state changes in the writer. Check if the object has been disposed; called from all public API methods. Throws an ObjectDisposedException if the object has already been disposed. Flush the output. Start writing an OData payload. Finish writing an OData payload. Start writing a collection. The representing the collection. Finish writing a collection. Writes a collection item (either primitive or complex) The collection item to write. The expected type of the collection item or null if no expected item type exists. ODataCollectionWriter for the ATOM format. The output context to write to. The collection serializer to use for writing. Constructor. The output context to write to. The item type of the collection being written or null if no metadata is available. Check if the object has been disposed; called from all public API methods. Throws an ObjectDisposedException if the object has already been disposed. Flush the output. Start writing an OData payload. Finish writing an OData payload. Start writing a collection. The representing the collection. Finish writing a collection. Writes a collection item (either primitive or complex) The collection item to write. The expected type of the collection item or null if no expected item type exists. Class with utility methods to help with debug only code. Checks that the method which called this helper method was not called by any code outside of the Microsoft.Data.OData.dll. The method is only called when in DEBUG builds, since it's quite expensive and we expect all our external callers to run DEBUG builds at least sometimes. The method is also called when compiling for FxCop analysis, as we run our official FxCop pass on RET build and we need to check that all internal methods call this one to check for accessibility even though only in debug builds. Checks that the method which called this helper method was not called by any code outside of the Microsoft.Data.OData.dll. Set to true if this check is called from a public method which should also be checked for non-external callers. In that case, make sure that the calling method will not get inlined! The method is only called when in DEBUG builds, since it's quite expensive and we expect all our external callers to run DEBUG builds at least sometimes. The method is also called when compiling for FxCop analysis, as we run our official FxCop pass on RET build and we need to check that all internal methods call this one to check for accessibility even though only in debug builds. Enumeration representing the different kinds of payloads ODatLib can write. Payload kind for a feed. Payload kind for an entry. Payload kind for a property. Payload kind for an entity reference link. Payload kind for entity reference links. Payload kind for a raw value. Payload kind for a binary value. Payload kind for a collection. Payload kind for a service document. Payload kind for a metadata document. Payload kind for an error. Payload kind for a batch. Payload kind for parameters for a service action. Unknown format Class representing a resource collection in a workspace of a data service. Gets or sets the URI representing the Unified Resource Locator (URL) to the collection. The URI representing the Unified Resource Locator (URL) to the collection. Gets or sets the name of the collection; this is the entity set name in JSON and the HREF in Atom. The name of the collection. This property is required when reading and writing the JSON light format, but has no meaning in the Verbose JSON format. If present in ATOM, it will be used to populate the title element. Class representing the a workspace of a data service. Gets or sets the set of collections in the workspace. The set of collections in the workspace. Constant values used in the EDM. namespace for edm primitive types. edm binary primitive type name edm boolean primitive type name edm byte primitive type name edm datetime primitive type name Represents a Time instance as an interval measured in milliseconds from an instance of DateTime. edm decimal primitive type name edm double primitive type name edm guid primitive type name edm single primitive type name edm sbyte primitive type name edm int16 primitive type name edm int32 primitive type name edm int64 primitive type name edm string primitive type name Represents an interval measured in milliseconds. edm stream primitive type name edm geography primitive type name Represents a geography Point type. Represents a geography LineString type. Represents a geography Polygon type. Represents a geography GeomCollection type. Represents a geography MultiPolygon type. Represents a geography MultiLineString type. Represents a geography MultiPoint type. Represents an arbitrary Geometry type. Represents a geometry Point type. Represents a geometry LineString type. Represents a geometry Polygon type. Represents a geometry GeomCollection type. Represents a geometry MultiPolygon type. Represents a geometry MultiLineString type. Represents a geometry MultiPoint type. The namespace for Edmx V1. The namespace for Edmx V2. The namespace for Edmx V3. The element name of the top-level <Edmx> metadata envelope. The attribute name used on entity types to indicate that they are MLEs. The attribute name used on service operations and primitive properties to indicate their MIME type. The attribute name used on service operations to indicate their HTTP method. The attribute name used on a service operation to indicate whether all instances of the binding parameter type can be bound to that service operation. The attribute name used on an entity container to mark it as the default entity container. 'true' literal 'false' literal Use this class to compare objects by reference in collections such as dictionary or hashsets. Type of objects to compare. Typically accessed statically as eg ReferenceEqualityComparer<Expression>.Instance. Single instance per 'T' for comparison. Initializes a new ReferenceEqualityComparer instance. Determines whether two objects are the same. First object to compare. Second object to compare. true if both are the same; false otherwise. Serves as hashing function for collections. Object to hash. Hash code for the object; shouldn't change through the lifetime of . Returns a singleton instance for this comparer type. Utility methods for working with CLR types. Checks whether the specified type is a generic nullable type. Type to check. true if is nullable; false otherwise. Gets a non-nullable version of the specified type. Type to get non-nullable version for. if type is a reference type or a non-nullable type; otherwise, the underlying value type. Checks whether the specified can be assigned null. If it is a non-nullable value type it creates the corresonding nullable type and returns it. The type to check. The if it allows null or the corresponding nullable type. Checks whether the specified can be assigned null. Type to check. true if type is a reference type or a Nullable type; false otherwise. Determines if two CLR types are equivalent. First type to compare. Second type to compare. true if the types are equivalent (they both represent the same type), or false otherwise. This method abstracts away the necessity to call Type.IsEquivalentTo method in .NET 4 and higher but use simple reference equality on platforms which don't have that method (like Silverlight). Type for Atom Syndication Format (Atom) feed annotationsAsArray. Gets or sets a collection of authors of a feed. A collection of authors of a feed. Gets or sets the categories of a feed. The categories of a feed. Gets or sets a collection of contributors of a feed. A collection of contributors of a feed. Gets or sets the generator of a feed. The generator of a feed. Gets or sets the URI of the icon for a feed. The URI of the icon for a feed. Gets or sets the collection of all Atom link information except for the next page and self links. The collection of all Atom link information except for the next page and self links. Gets or sets the URI for the feed's logo. The URI for the feed’s logo. Gets or sets the rights text of a feed. The rights text of a feed. Gets or sets the self link of the feed. This link should point to the source of the feed. The self link of the feed. Gets the next page link of the feed. This link should point to the next page of results. Gets or sets the identifier for the feed if used as metadata of an Atom:source element. The identifier for the feed if used as metadata of an Atom:source element. Gets or sets the subtitle of a feed. The subtitle of a feed. Gets or sets the title of the feed. The title of the feed. Gets or sets the date and time of last update to the source. The date and time of last update to the source. Type for Atom Syndication Format (Atom) entry annotationsAsArray. The date/time when the entry was published. Date/Time of last update to the source in string format. Gets or sets a collection of authors of an entry. A collection of authors of an entry. Gets or sets the ATOM metadata for the category element which stores the type name of the entry. Gets or sets the categories of an entry. The categories of an entry. Gets or sets a collection of contributors of an entry. A collection of contributors of an entry. Gets or sets an Atom link metadata for the self link. An Atom link metadata for the self link. Gets or sets an Atom link metadata for the edit link. An Atom link metadata for the edit link. Gets or sets the collection of all Atom link information except for the self/edit links and the navigation property links. The collection of all Atom link information except for the self/edit links and the navigation property links. Gets or sets the date and time when the entry was published. The date and time when the entry was published. Gets or sets the rights text of an entry. The rights text of an entry. Gets or sets the source of an entry and if the entry was copied from a different stream the property contains the feed metadata of the original feed. The source of an entry. Gets or sets the summary of the entry. The summary of the entry. Gets or sets the title of the entry. The title of the entry. Gets or sets the date and time of last update to the source. The date and time of last update to the source. The date/time when the entry was published. This property is only used in WCF DS client mode (and replaces the 'Published' property then). Date/Time of last update to the source in string format. This property is only used in WCF DS client mode (and replaces the 'Updated' property then). Atom metadata description for a link. The IRI value coming from EPM. We use AtomLinkMetadata class to hold navigation links, association links etc. They convert Href property to string based on baseURI and whether Href is absolute or not. Also we do not want to rely on validation done by Uri class, so we are holding EPM values mapped to link/@href on a separate field. Initializes a new instance of the class. Copy constructor. The instance to copy the values from; can be null. Gets or sets the URI of the link. The URI of the link. Gets or sets the link's relation type. The link’s relation type. Gets or sets the media type of the data returned by the link. The media type of the data returned by the link. Gets or sets the language tag (for example, en-US) of the resource pointed to by the link. The language tag of the resource pointed to by the link. Gets or sets a human-readable description of the link. A human-readable description of the link. Gets or sets a hint at the length of the content returned from the link. A hint at the length of the content returned from the link. Atom metadata description for a category. Initializes a new instance of the class. Copy constructor. The instance to copy the values from; can be null. Gets or sets the string value identifying the category. The string value identifying the category. Gets or sets the URI that indicates the scheme of the category. The URI that indicates the scheme of the category. Gets or sets a human-readable label for display in user interfaces. A human-readable label. Atom metadata description for a person. The name of the person. The email of the person. The URI value comming from EPM. In WCF DS when mapping a property through EPM to person/uri element we convert the value of the property to string and then set the syndication APIs Uri property which is also of type string. Syndication API doesn't do any validation on the value and just writes it out. So it's risky to try to convert the string to a Uri instance due to the unknown validation the Uri class might be doing. Instead we use internal property to set from EPM. Converts a string to an instance. The instance created for name. The name used in the person metadata. Implicit conversion from string to . The to convert to an . The result. Gets or sets the name of the person (required). The name of the person (required). Gets or sets an IRI associated with the person. An IRI associated with the person. Gets or sets an email address associated with the person. An email address associated with the person. The URI value comming from EPM. In WCF DS when mapping a property through EPM to person/uri element we convert the value of the property to string and then set the syndication APIs Uri property which is also of type string. Syndication API doesn't do any validation on the value and just writes it out. So it's risky to try to convert the string to a Uri instance due to the unknown validation the Uri class might be doing. Instead we use internal property to set from EPM. Atom metadata description of a content generator. Gets or sets the human readable name of the generator of the content. The human readable name of the generator of the content. Gets or sets the (optional) URI describing the generator of the content. The (optional) URI describing the generator of the content. Gets or sets the (optional) version of the generator. The (optional) version of the generator. Helper methods related to the ATOM Format The length of the media type for ATOM payloads (application/atom+xml). The length of the media type for ATOM payloads when terminated by a ';' (application/atom+xml;). The length of the media type for links referencing a single entry (application/atom+xml;type=entry). The length of the media type for links referencing a collection of entries (application/atom+xml;type=feed). Parameter string for the media type for links referencing a single entry. Parameter string for the media type for links referencing a collection of entries. Creates the value for the navigation property's link relation attribute. The link representing the navigation property for which the relation value is created. The relation attribute value for the navigation property's link relation. Creates the value for the navigation property's type attribute. The link representing the navigation property for which the type value is created. The type attribute value for the navigation property. Creates the value for the navigation property's association link relation attribute. The link representing the navigation property's association for which the relation value is created. The relation attribute value for the navigation property's association link relation. Creates the value for the stream property's link relation attribute. The stream property to create the relation for. 'true' if the relation is computed for an edit link; otherwise 'false'. The relation attribute value for the stream property's link relation. Unescape the attribute value for ATOM link element. ATOM link relation attribute value. The unescaped relation attribute string if it's a valid URI. null if relation attribute is not a valid URI. Return name following the specified in the . ATOM link relation attribute value, unescaped parsed URI string. Value which the rel attribute should start with. The name if the starts with the given . If the value does not start with the a null value is returned. Determines whether the type of a navigation link has one of the expected standard values. The navigation link type to check. true if the navigation link type has a 'type' parameter with the value 'entry'; otherwise false. true if the navigation link type has a 'type' parameter with the value 'feed'; otherwise false. true if the navigation link type is the expected application/atom+xml; otherwise false. Helper methods used by the OData writer to write ATOM metadata. Creates a new instance by merging the given (if any) with the specified , and (optional) . The metadata to merge with the , and (optional) . The relation to use in the merged metadata. The href to use in the merged metadata. The (optional) title to use in the merged metadata. The (optional) media type to use in the merged metadata. A new instance created by merging all the arguments. If the already holds values for , , , or this method validates that they are the same as the ones specified in the method arguments. Creates a new instance by merging the given (if any) with the specified and . The metadata to merge with the and . The term to use in the merged metadata. The scheme to use in the merged metadata. A new instance created by merging all the arguments. If the already holds values for or this method validates that they are the same as the ones specified in the method arguments. Helper to convert values to strings compliant to the ATOM format Used for settings the updated element properly. Converts a boolean to the corresponding ATOM string representation. The boolean value to convert. The ATOM strings representing boolean literals. Converts a byte to the corresponding ATOM string representation. The byte value to convert. The ATOM strings representing the byte value. Converts a decimal to the corresponding ATOM string representation. The decimal value to convert. The ATOM strings representing the decimal value. Converts the given date/time value to the string appropriate for Atom format The date/time value to convert. The string version of the date/time value in Atom format. Converts the given DateTimeOffset value to string appropriate for Atom format. Given DateTimeOffset value. Atom format string representation of . Converts the given DateTimeOffset value to string appropriate for Atom format. ToAtomString is used to write values in atom specific elements like updated, etc. Given DateTimeOffset value. Atom format string representation of . Converts the given timespan value to the string appropriate for Atom format The timespan value to convert. The string version of the timespan value in Atom format. Converts the given double value to the string appropriate for Atom format The double value to convert. The string version of the double value in Atom format. Converts the given Int16 value to the string appropriate for Atom format The Int16 value to convert. The string version of the Int16 value in Atom format. Converts the given Int32 value to the string appropriate for Atom format. The Int32 value to convert. The string version of the Int32 in Atom format. Converts the given Int64 value to the string appropriate for Atom format. The Int64 value to convert. The string version of the Int64 in Atom format. Converts the given SByte value to the string appropriate for Atom format. The SByte value to convert. The string version of the SByte in Atom format. Converts the given byte array value to the string appropriate for Atom format. The byte array to convert. The string version of the byte array in Atom format. Converts the given Single value to the string appropriate for Atom format. The Single value to convert. The string version of the Single in Atom format. Converts the given Guid value to the string appropriate for Atom format. The Guid value to convert. The string version of the Guid in Atom format. Atom specific extension methods. Determines an extension method to get the for an annotatable entry. An instance or null if no annotation of that type exists. The entry instance to get the annotation from. Determines an extension method to get the for an annotatable feed. An instance or null if no annotation of that type exists. The feed instance to get the annotation from. Determines an extension method to get the for an annotatable navigation link. An instance or null if no annotation of that type exists. The navigation link instance to get the annotation from. Determines an extension method to get the for an annotatable workspace. An instance or null if no annotation of that type exists. The workspace to get the annotation from. Determines an extension method to get the for an annotatable (resource) collection. An instance or null if no annotation of that type exists. The (resource) collection to get the annotation from. Determines an extension method to get the for an annotatable association link. An instance or null if no annotation of that type exists. The association link to get the annotation from. Write-only stream which buffers all synchronous write operations until FlushAsync is called. The stream being wrapped. Queue of buffers to write. The last buffer in the bufferQueue. This is the buffer we're writing into. Constructor The underlying async stream to wrap. Note that only asynchronous write operation will be invoked on this stream. Flush the stream to the underlying storage. Reads data from the stream. This operation is not supported by this stream. The buffer to read the data to. The offset in the buffer to write to. The number of bytes to read. The number of bytes actually read. Seeks the stream. This operation is not supported by this stream. The offset to seek to. The origin of the seek operation. The new position in the stream. Sets the length of the stream. This operation is not supported by this stream. The length in bytes to set. Writes to the stream. The buffer to get data from. The offset in the buffer to start from. The number of bytes to write. Clears any internal buffers without writing them to the underlying stream. Synchronous flush operation. This will flush all buffered bytes to the underlying stream through synchronous writes. Disposes the object. True if called from Dispose; false if called from the finalizer. Queues a new buffer to the queue of buffers Prepares all buffers for flushing and returns the queue of buffers to flush. The queue of buffer to flush. Determines if the stream can read - this one cannot Determines if the stream can seek - this one cannot Determines if the stream can write - this one can Returns the length of the stream, which this implementation doesn't support. Gets or sets the position in the stream, this stream doesn't support seeking, so position is also unsupported. Class to wrap a byte buffer used to store portion of the buffered data. The size of a buffer to allocate (80 KB is the limit for large object heap, so use 79 to be sure to avoid LOB) The byte buffer used to store the data. Number of bytes being stored. Constructor - creates a new buffer Writes data into the buffer. The buffer containing the data to write. The index to start at. Number of bytes to write. How many bytes were written. Writes the buffer to the specified stream. The stream to write the data into. Constant values related to the ATOM format. 'http://www.w3.org/2000/xmlns/' - namespace for namespace declarations. Attribute use to add xml: namespaces specific attributes. Schema Namespace prefix For xmlns. Schema Namespace prefix For xml. XML attribute value to indicate the base URI for a document or element. Name of the xml:lang attribute. Name of the xml:space attribute. 'preserve' value for the xml:space attribute. XML namespace for data service annotations. XML namespace prefix for data service annotations. XML namespace for data services. Prefix for data services namespace. OData attribute which indicates the etag value for the declaring entry element. OData attribute which indicates the null value for the element. OData element name for the 'count' element OData scheme namespace for data services category scheme in atom:category elements. OData stream property 'mediaresource' Uri segment name used in named stream link relations. OData stream property 'edit-media' Uri segment name used in named stream link relations. OData stream property prefix for named stream 'mediaresource' related link relations. OData stream property prefix for named stream 'edit-media' related link relations. OData navigation properties 'related' Uri segment name used in navigation link relations. OData navigation properties prefix for navigation link relations. OData navigation properties 'relatedlinks' Uri segment name used in association link relations. OData association link prefix for relation attribute. 'Inline' - wrapping element for inlined entry/feed content. Name of the error element for Xml error responses. Name of the error code element for Xml error responses. Name of the error message element for Xml error responses. Name of the inner error message element for Xml error responses. Name of the message element in inner errors for Xml error responses. Name of the type element in inner errors for Xml error responses. Name of the stack trace element in inner errors for Xml error responses. Name of the inner error element nested in inner errors for Xml error responses. Element name for the items in a collection. Element name for m:action. Element name for m:function. Attribute name for m:action|m:function/@metadata. Attribute name for m:action|m:function/@title. Attribute name for m:action|m:function/@target. XML element name for the wrapper 'links' element around a sequence of Uris in response to a $links request. XML element name for a Uri response to a $links request. XML element name for a next link in a response to a $links request. XML element name for an annotation in an ATOM payload. Attribute name for m:annotation/@target. Attribute name for m:annotation/@term. Attribute name for m:annotation/@string. Attribute name for m:annotation/@bool. Attribute name for m:annotation/@decimal. Attribute name for m:annotation/@int. Attribute name for m:annotation/@float. Schema namespace for Atom. Prefix for the Atom namespace - empty since it is the default namespace. Prefix for the Atom namespace used in cases where we need a non-empty prefix. XML element name to mark entry element in Atom. XML element name to mark feed element in Atom. XML element name to mark content element in Atom. XML element name to mark type attribute in Atom. Element containing property values when 'content' is used for media link entries XML element name to mark id element in Atom. XML element name to mark title element in Atom. XML element name to mark the subtitle element in Atom. XML element name to mark the summary element in Atom. XML element name to mark the 'published' element in Atom. XML element name to mark the 'source' element in Atom. XML element name to mark the 'rights' element in Atom. XML element name to mark the 'logo' element in Atom. XML element name to mark the 'author' element in Atom. XML element name to mark the 'author name' element in Atom. XML element name to mark the 'contributor' element in Atom. XML element name to mark the 'generator' element in Atom. XML attribute name of the 'uri' attribute of a 'generator' element in Atom. XML attribute name of the 'version' attribute of a 'generator' element in Atom. XML element name to mark the 'icon' element in Atom. XML element name to mark the 'name' element in an Atom person construct. XML element name to mark the 'uri' element in an Atom person construct. XML element name to mark the 'email' element in an Atom person construct. 'updated' - XML element name for ATOM 'updated' element for entries. 'category' - XML element name for ATOM 'category' element for entries. 'term' - XML attribute name for ATOM 'term' attribute for categories. 'scheme' - XML attribute name for ATOM 'scheme' attribute for categories. 'scheme' - XML attribute name for ATOM 'label' attribute for categories. Atom link relation attribute value for edit links. Atom link relation attribute value for self links. XML element name to mark link element in Atom. XML attribute name of the link relation attribute in Atom. XML attribute name of the type attribute of a link in Atom. XML attribute name of the href attribute of a link in Atom. XML attribute name of the hreflang attribute of a link in Atom. XML attribute name of the title attribute of a link in Atom. XML attribute name of the length attribute of a link in Atom. XML element name to mark href attribute element in Atom. Atom source attribute name for the content of media link entries. Atom link relation attribute value for edit-media links. XML attribute value of the link relation attribute for next page links in Atom. XML attribute value of the link relation attribute for delta links in Atom. Link relation: alternate - refers to a substitute for this context. Link relation: related - identifies a related resource. Link relation: enclosure - identifies a related resource that is potentially large and might require special handling. Link relation: via - identifies a resource that is the source of the information in the link's context. Link relation: describedby - refers to a resource providing information about the link's context. Link relation: service - indicates a URI that can be used to retrieve a service document. Atom metadata text construct kind: plain text Atom metadata text construct kind: html Atom metadata text construct kind: xhtml Default title for service document workspaces. 'true' literal 'false' literal IANA link relations namespace. The Atom Publishing Protocol (APP) namespace: 'http://www.w3.org/2007/app'. The name of the top-level 'service' element when writing service documents in Xml format. The name of the 'workspace' element when writing service documents in Xml format. The name of the 'collection' element when writing service documents in Xml format. The name of the 'categories' element encountered while reading a service document in XML format. The name of the 'accept' element encountered while reading a service document in XML format. The name of the 'fixed' attribute of an inline categories element in APP. The value 'yes' of the 'fixed' attribute of an inline categories element in APP. The value 'no' of the 'fixed' attribute of an inline categories element in APP. XML namespace for GeoRss format XML namespace prefix for GeoRss format XML namespace for GML format XML namespace prefix for GML format Helper methods used by the OData writer for the JSON format. Write an error message. The JSON writer to write the error. Action to write the instance annotations. The error instance to write. A flag indicating whether error details should be written (in debug mode only) or not. The maximumum number of nested inner errors to allow. true if we're writing JSON lite, false if we're writing verbose JSON. Writes the __metadata property with the specified type name. The JSON writer to write to. The type name to write. Will write the function's name and start the JSONP scope if we are writing a response and the JSONP function name is not null or empty. JsonWriter to write to. Writer settings. If we are writing a response and the given Json Padding function name is not null or empty this function will close the JSONP scope. JsonWriter to write to. Writer settings. Returns the string representation of the URI; Converts the URI into an absolute URI if the parameter is set to true. The output context for which to convert the URI. The uri to process. true, if the URI needs to be translated into an absolute URI; false otherwise. If the parameter is set to true, then a string representation of an absolute URI which is either the specified if it was absolute, or it's a combination of the BaseUri and the relative ; otherwise a string representation of the specified . This method will fail if is set to true and the specified is relative and there's no base URI available. Write an error message. JSON writer. The code of the error. The message of the error. The language of the message. Inner error details that will be included in debug mode (if present). Instance annotations for this error. Action to write the instance annotations. The maximumum number of nested inner errors to allow. true if we're writing JSON lite, false if we're writing verbose JSON. Write an inner error property and message. The JSON writer to write the error to. Inner error details. The property name for the inner error property. The number of times this method has been called recursively. The maximumum number of nested inner errors to allow. Class with utility methods to work with HTTP concepts Reads a Content-Type header and extracts the media type's name (type/subtype) and parameters. The Content-Type header. The media type in standard type/subtype form, without parameters. The (optional) charset parameter of the media type. The parameters of the media type not including the 'charset' parameter. Builds a Content-Type header which includes media type and encoding information. Media type to be used. Encoding to be used in response, possibly null. The value for the Content-Type header. Returns all media types from the specified (non-blank) . Non-blank text, as it appears on an HTTP Accepts header. An enumerable object with key/value pairs of media type descriptions with their (optional) charset parameter values. Does an ordinal ignore case comparision of the given media type names. First media type name. Second media type name. returns true if the media type names are the same. Does an ordinal ignore case comparision of the given MIME type parameter name. First parameter name. Second parameter name. returns true if the parameter names are the same. Gets the best encoding available for the specified charset request. The Accept-Charset header value (eg: "iso-8859-5, unicode-1-1;q=0.8"). The media type used to compute the default encoding for the payload. The encoding to use for UTF-8 charsets; we use the one without the BOM. The encoding to use if no encoding could be computed from the or . An Encoding object appropriate to the specifed charset request. Reads the numeric part of a quality value substring, normalizing it to 0-1000 rather than the standard 0.000-1.000 ranges. Text to read qvalue from. Index into text where the qvalue starts. After the method executes, the normalized qvalue. For more information, see RFC 2616.3.8. Validates that the HTTP method string matches one of the supported HTTP methods. The HTTP method string to validate. Determines whether the given HTTP method is one that is accepted for queries. GET is accepted for queries. The HTTP method to check. True if the given httpMethod is GET. Gets the string status message for a given Http response status code. The status code to get the status message for. The string status message for the . Returns the encoding object for the specified charset name. The of the charset to get the encoding for. The encoding object or null if such encoding is not supported. Reads a token or quoted-string value from the header. Name of the header. Header text. Parsing index in . Returns true if the value is a quoted-string, false if the value is a token. Func to create the appropriate exception to throw from the given error message. The token or quoted-string value that was read from the header. Skips whitespace in the specified text by advancing an index to the next non-whitespace character. Text to scan. Index to begin scanning from. true if the end of the string was reached, false otherwise. Enumerates each charset part in the specified Accept-Charset header. Non-null and non-empty header value for Accept-Charset. A (non-sorted) enumeration of CharsetPart elements, which include a charset name and a quality (preference) value, normalized to 0-1000. Reads a media type definition as used in a Content-Type header. Text to read. A list of key/value pairs representing the s and their (optional) 'charset' parameters parsed from the specified Read a parameter for a media type/range. Text to read from. Pointer in text. Array with parameters to grow as necessary. The (optional) charset parameter value. Reads the type and subtype specifications for a media type name. Text in which specification exists. Pointer into text. Type of media found. Subtype of media found. Determines whether the specified character is a valid HTTP header token character. Character to verify. true if c is a valid HTTP header token character; false otherwise. Determines whether the specified character is valid in the quoted header values. Character to verify. true if c is a valid in a quoted HTTP header value; false otherwise. Determines whether the specified character is a valid HTTP separator. Character to verify. true if c is a separator; false otherwise. See RFC 2616 2.2 for further information. Reads a token on the specified text by advancing an index on it. Text to read token from. Index for the position being scanned on text. true if the end of the text was reached; false otherwise. Converts the specified character from the ASCII range to a digit. Character to convert. The Int32 value for c, or -1 if it is an element separator. Verfies whether the specified character is a valid separator in an HTTP header list of element. Character to verify. true if c is a valid character for separating elements; false otherwise. "Reads" a literal from the specified string by verifying that the exact text can be found at the specified position. Text within which a literal should be checked. Index in text where the literal should be found. Literal to check at the specified position. true if the end of string is found; false otherwise. Structure to represent a charset name with a quality value. Name of the charset. Charset quality (desirability), normalized to 0-1000. Initializes a new CharsetPart with the specified values. Name of charset. Charset quality (desirability), normalized to 0-1000. Writer class used to write all OData payloads (entries, feeds, metadata documents, service documents, etc.). The message for which the message writer was created. A flag indicating whether we are writing a request or a response message. The message writer settings to use when writing the message payload. The model. Non-null if we do have metadata available. The optional URL resolver to perform custom URL resolution for URLs written to the payload. Flag to ensure that only a single write method is called on the message writer. True if Dispose() has been called on this message writer, False otherwise. The output context we're using to write the payload. This is null until the first write operation is called. The payload kind of the payload to be written with this writer. This is either set via the SetHeadersForPayload method or implicitly when one of the write (or writer creation) methods is called. The of the payload to be written with this writer. This is either set via the SetHeadersForPayload method or implicitly when one of the write (or writer creation) methods is called. The of the payload to be written with this writer. This is either set via the SetHeadersForPayload method or implicitly when one of the write (or writer creation) methods is called. The batch boundary string if the payload to be written is a batch request or response. This is either set via the SetHeadersForPayload method or implicitly when the CreateBatchWriter method is called. Flag to prevent writing more than one error to the payload. The media type resolver to use when interpreting the content type. The of the payload to be written with this writer. This is either set via the SetHeadersForPayload method or implicitly when one of the write (or writer creation) methods is called. Creates a new for the given request message. The request message for which to create the writer. Creates a new for the given request message and message writer settings. The request message for which to create the writer. The message writer settings to use for writing the message payload. Creates a new ODataMessageWriter for the given request message and message writer settings. The request message for which to create the writer. The message writer settings to use for writing the message payload. The model to use. Creates a new for the given response message. The response message for which to create the writer. Creates a new for the given response message and message writer settings. The response message for which to create the writer. The message writer settings to use for writing the message payload. Creates a new ODataMessageWriter for the given response message and message writer settings. The response message for which to create the writer. The message writer settings to use for writing the message payload. The model to use. Creates an to write a feed. The created writer. Creates an to write a feed. The created writer. The entity set we are going to write entities for. Creates an to write a feed. The created writer. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). Creates an to write an entry. The created writer. Creates an to write an entry. The entity set we are going to write entities for. The created writer. Creates an to write an entry. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). The created writer. Creates an to write a collection of primitive or complex values (as result of a service operation invocation). The created collection writer. Creates an to write a collection of primitive or complex values (as result of a service operation invocation). The item type of the collection being written or null if no metadata is available. The created collection writer. Creates an to write a batch of requests or responses. The created batch writer. Creates an to write a parameter payload. The function import whose parameters will be written. The created parameter writer. Writes a service document with the specified as the message payload. The default workspace to write in the service document. Writes an as the message payload. The property to write. Writes an as the message payload. The error to write. A flag indicating whether debug information (for example, the inner error from the ) should be included in the payload. This should only be used in debug scenarios. Writes the result of a $links query as the message payload. The entity reference links to write as message payload. Writes the result of a $links query as the message payload. The entity reference links to write as message payload. The entity set of the navigation property. The navigation property for which the entity reference links are being written, or null if none is available. Writes a singleton result of a $links query as the message payload. The entity reference link to write as the message payload. Writes a singleton result of a $links query as the message payload. The entity reference link to write as message payload. The entity set of the navigation property. The navigation property for which the entity reference link is being written, or null if none is available. Writes a single value as the message body. The value to write. Writes the metadata document as the message body. implementation to cleanup unmanaged resources of the writer. Sets the content-type and data service version headers on the message used by the message writer. This method can be called if it is important to set all the message headers before calling any of the write (or writer creation) methods on the . If it is sufficient to set the headers when the write (or writer creation) methods on the are called, you don't have to call this method and setting the headers will happen automatically. The kind of payload to be written with this message writer. The used for the specified . If no headers have been set, sets the content-type and data service version headers on the message used by the message writer. If headers have been set explicitly (via ODataUtils.SetHeaderForPayload) this method verifies that the payload kind used to create the headers is the same as the one being passed in . The kind of payload to be written with this message writer. Ensures that the version of the OData protocol is set. If a version is specified explicitly on the writer settings, it is used. Otherwise the method tries to read the version from the message headers. If there is a version header but the value cannot be parsed, we fail. If there is no version header, we fall back to the default version. Ensures that the OData format is computed and set; if needed, sets the content type header of the message. This method computes and ensures that a content type exists and computes the OData format from it. If a content type is explicitly specified through or it will be used. If no content type is specified in either place, the message headers are checked for a content type header. If the content type is computed from settings, the content type header is set on the message. Verifies that feed writer can be created. Verifies that entry writer can be created. Verifies that collection writer can be created. The item type of the collection being written or null if no metadata is available. Verifies that batch writer can be created. Verifies that parameter writer can be created. The function import whose parameters will be written. Verifies headers for parameter payload. Verifies that service document can be written. The default workspace to write. Verifies that property can be written. The property to write. Verifies that top-level error can be written. The error to write. Verifies that in-stream error can be written. The error to write. Verifies that entity reference links can be written. The entity reference links to write as message payload. The navigation property for which the entity reference links are being written, or null if none is available. Verifies headers for entity reference links. The entity reference links to write as message payload. Verifies that entity reference link can be written. The link result to write as message payload. Verifies that value can be written. The value to write. The payload kind to use when writing this value. Verifies that metadata document can be written. Verifies headers for metadata document. Verifies that the ODataMessageWriter has not been disposed and has not been used before. An ODataMessageWriter can only be used to write a single message payload but can't be reused later except for writing an in-stream error. Check if the object has been disposed. Throws an ObjectDisposedException if the object has already been disposed. Perform the actual cleanup work. If 'true' this method is called from user code; if 'false' it is called by the runtime. Verifies that, if a payload kind has been set via SetHeaders, the payload kind that is being written is the same. The payload kind that is attempted to write. Creates an output context and invokes a write operation on it. The payload kind to write. Optional action which will be called after the headers has been verified to perform payload specific verification. The write operation to invoke on the output. Creates an output context and invokes a write operation on it. The type of the result of the write operation. The payload kind to write. Optional action which will be called after the headers has been verified to perform payload specific verification. The write operation to invoke on the output. The result of the write operation. The message writer settings to use when writing the message payload. The media type resolver to use when interpreting the content type. Wrapper class around an IODataResponseMessageAsync to isolate our code from the interface implementation. This class also implements the message interface since it is passed to the payload kind detection logic on the format implementations and manages the buffering read stream. The response message this class is wrapping. Constructs an internal wrapper around the that isolates the internal implementation of the ODataLib from the interface. The response message to wrap. true if the message is being written; false when it is read. true if the stream returned should ignore dispose calls. The maximum size of the message in bytes (or a negative number if no maximum applies). Returns a value of an HTTP header. The name of the header to get. The value of the HTTP header, or null if no such header was present on the message. Sets the value of an HTTP header. The name of the header to set. The value of the HTTP header or 'null' if the header should be removed. Get the stream backing this message. The stream for this message. Queries the message for the specified interface type. The type of the interface to query for. The instance of the interface asked for or null if it was not implemented by the message. The result status code of the response message. Returns an enumerable over all the headers for this message. Wrapper class around an IODataRequestMessageAsync to isolate our code from the interface implementation. The request message this class is wrapping. Constructs an internal wrapper around the that isolates the internal implementation of the ODataLib from the interface. The request message to wrap. true if the request message is being written; false when it is read. true if the stream returned should ignore dispose calls. The maximum size of the message in bytes (or a negative value if no maximum applies). Returns a value of an HTTP header. The name of the header to get. The value of the HTTP header, or null if no such header was present on the message. Sets the value of an HTTP header. The name of the header to set. The value of the HTTP header or 'null' if the header should be removed. Synchronously get the stream backing this message. The stream for this message. Queries the message for the specified interface type. The type of the interface to query for. The instance of the interface asked for or null if it was not implemented by the message. The request Url for this request message. The HTTP method used for this request message. Returns an enumerable over all the headers for this message. Represents an association link. the metadata builder for this association link. URI representing the Unified Resource Locator (Url) of the link. true if the association link has been set by the user or seen on the wire or computed by the metadata builder, false otherwise. Sets the metadata builder for this association link. The metadata builder used to compute values from model annotations. Gets or sets the name of the association link. The name of the associate link. This is the name of the navigation property to which the association link belongs. Gets or sets the URI representing the Unified Resource Locator (URL) of the link. The URI representing the Unified Resource Locator (URL) of the link. This URL should point to a resource which can be used to retrieve or modify the association itself not the URL to traverse the navigation property. Class representing an error payload. Verifies that can be added as an annotation of this. Annotation instance. Gets the collection of instance annotations from this instance. The collection of instance annotations Adds an instance annotation from the payload to this instance. The name of the instance annotation. The value of the instance annotation. Gets or sets the error code to be used in payloads. The error code to be used in payloads. Gets or sets the error message. The error message. Gets or sets the language for the exception Message. The language for the exception Message. Gets or sets the implementation specific debugging information to help determine the cause of the error. The implementation specific debugging information. Collection of custom instance annotations. Utility class to check feature availability in a certain version of OData. Check whether the inline count feature is supported in the specified version. The version to check. Check whether CollectionValue properties are supported in the specified version. The version to check. The name of the property which holds the collection. Check whether CollectionValue is supported in the specified version. The version to check. Check whether the next link feature is supported in the specified version. The version to check. Check whether the delta link feature is supported in the specified version. The version to check. Check whether the named streams feature is supported in the specified version. The version to check. Check whether the association links feature is supported in the specified version. The version to check. Check whether the custom Type Scheme feature is supported in the specified version. The version to check. Check whether the custom Data Namespace feature is supported in the specified version. The version to check. Check whether parameters in the payload are supported in the specified version. The version to check. Check whether the EPM on the specified entity type is supported in the specified version. The version to check. The entity type to check. The model containing annotations for the entity type. Check whether the spatial value is supported in the specified version. The version to check. Checks that the version specified on the request or the response is supported by this library. The version to check. The message reader settings specified for the reader. In internal drops we currently do not support protocol version 3. An enumeration that lists the internal errors. Unreachable codepath in ODataWriterCore.WriteEnd Unreachable codepath in ODataWriterCore.ValidateTransition Unreachable codepath in ODataWriterCore.Scope.Create Unreachable codepath in ODataWriterCore.DuplicatePropertyNamesChecker. Unreachable codepath in ODataWriterCore.ParentNavigationLinkScope. Unreachable codepath in ODataUtils.VersionString Unreachable codepath in ODataUtilsInternal.ToDataServiceVersion Unreachable codepath in ODataUtilsInternal.IsPayloadKindSupported Unreachable codepath in ODataUtils.GetDefaultEncoding Unreachable codepath in ODataUtils.ParseSerializableEpmAnnotations Unreachable codepath in ODataMessageWriter.WriteProperty Unreachable codepath in ODataMessageWriter.WriteEntityReferenceLink Unreachable codepath in ODataMessageWriter.WriteEntityReferenceLinks Unreachable codepath in ODataMessageWriter.WriteError Unreachable codepath in ODataMessageWriter.WriteServiceDocument Unreachable codepath in ODataMessageWriter.WriteMetadataDocument Unreachable codepath in EpmSyndicationWriter.WriteEntryEpm when writing content target. Unreachable codepath in EpmSyndicationWriter.CreateAtomTextConstruct when converting text kind from Syndication enumeration. Unreachable codepath in EpmSyndicationWriter.WritePersonEpm. Unhandled EpmTargetPathSegment.SegmentName in EpmSyndicationWriter.WriteParentSegment. Unreachable codepath in ODataAtomConvert.ToString(AtomTextConstructKind) Unreachable codepath in ODataCollectionWriter.CreateCollectionWriter Unreachable codepath in ODataCollectionWriterCore.ValidateTransition Unreachable codepath in ODataCollectionWriterCore.WriteEnd Unreachable codepath in ODataParameterWriter.CreateParameterWriter Unreachable codepath in ODataParameterWriter.ValidateTransition Unreachable codepath in ODataParameterWriter.ValidateTransition Unreachable codepath in ODataParameterWriter.ValidateTransition Unreachable codepath in ODataParameterWriter.ValidateTransition Unreachable codepath in ODataParameterWriter.ValidateTransition Unreachable codepath in ODataParameterWriter.ValidateTransition Unreachable codepath in ODataParameterWriter.WriteEndImplementation Unreachable codepath in ODataPathValidator.ValidateSegment root branch Unreachable codepath in ODataPathValidator.ValidateSegment non-root branch Unreachable codepath in ODataBatchWriter.ValidateTransition Unreachable codepath in ODataBatchWriter.ToText(this HttpMethod). Unreachable codepath in ODataBatchReader.ReadImplementation. Unreachable codepath in ODataBatchReader.GetEndBoundary in state Completed. Unreachable codepath in ODataBatchReader.GetEndBoundary in state Exception. Unreachable codepath in ODataBatchReader.GetEndBoundary because of invalid enum value. Unreachable codepath in ODataBatchReaderStream.SkipToBoundary. Unreachable codepath in ODataBatchReaderStream.ReadLine. Unreachable codepath in ODataBatchReaderStream.ReadWithDelimiter. Unreachable codepath in ODataBatchReaderStreamBuffer.ScanForBoundary. Unreachable codepath in ODataBatchReaderStreamBuffer.ReadWithLength. Unreachable codepath in JsonReader.Read. Unreachable codepath in ODataReader.CreateReader. Unreachable codepath in ODataReaderCore.ReadImplementation. Unreachable codepath in ODataReaderCoreAsync.ReadAsynchronously. Unreachable codepath in ODataVerboseJsonEntryAndFeedDeserializer.ReadFeedProperty. Unreachable codepath in ODataVerboseJsonReader.ReadEntryStart. Unreachable codepath in ODataVerboseJsonPropertyAndValueDeserializer.ReadPropertyValue. Unreachable codepath in ODataCollectionReader.CreateReader. Unreachable codepath in ODataCollectionReaderCore.ReadImplementation. Unreachable codepath in ODataCollectionReaderCoreAsync.ReadAsynchronously. Unreachable codepath in ODataParameterReaderCore.ReadImplementation. Unreachable codepath in ODataParameterReaderCoreAsync.ReadAsynchronously. The value from the parameter reader must be a primitive value, an ODataComplexValue or null Unreachable codepath in ODataAtomReader.ReadAtNavigationLinkStartImplementation. Unreachable codepath in ODataAtomPropertyAndValueDeserializer.ReadNonEntityValue. Unreachable codepath in AtomValueUtils.ConvertStringToPrimitive. Unreachable codepath in EdmCoreModel.PrimitiveType (unsupported type). Unreachable codepath in EpmSyndicationReader.ReadEntryEpm when reading content target. Unreachable codepath in EpmSyndicationReader.ReadParentSegment. Unreachable codepath in EpmSyndicationReader.ReadPersonEpm. Unreachable codepath in EpmReader.SetEpmValueForSegment when found unexpected type kind. Unreachable codepath in EpmReader.SetEpmValueForSegment when found EPM for a primitive stream property. Unreachable codepath in ReaderValidationUtils.ResolveAndValidateTypeName in the strict branch, unexpected type kind. Unreachable codepath in ReaderValidationUtils.ResolveAndValidateTypeName in the lax branch, unexpected type kind. Unreachable codepath in EpmExtensionMethods.ToAttributeValue(ODataSyndicationItemProperty) when found unexpected type syndication item property kind. The ODataMetadataFormat.CreateOutputContextAsync was called, but this method is not yet supported. The ODataMetadataFormat.CreateInputContextAsync was called, but this method is not yet supported. An unsupported method or property has been called on the IDictionary implementation of the ODataModelFunctions. Unreachable codepath in ODataJsonLightPropertyAndValueDeserializer.ReadPropertyValue. Unreachable codepath in ODataJsonLightPropertyAndValueDeserializer.GetNonEntityValueKind. Unreachable codepath in ODataJsonLightEntryAndFeedDeserializer.ReadFeedProperty. Unreachable codepath in ODataJsonLightReader.ReadEntryStart. Unreachable codepath in ODataJsonLightEntryAndFeedDeserializer_ReadTopLevelFeedAnnotations.ReadTopLevelFeedAnnotations. Unreachable codepath in ODataJsonLightReader.ReadFeedEnd. Unreachable codepath in ODataJsonLightCollectionDeserializer.ReadCollectionStart. Unreachable codepath in ODataJsonLightCollectionDeserializer.ReadCollectionStart.TypeKindFromPayloadFunc. Unreachable codepath in ODataJsonLightCollectionDeserializer.ReadCollectionEnd. Unreachable codepath in ODataJsonLightEntityReferenceLinkDeserializer.ReadSingleEntityReferenceLink. Unreachable codepath in ODataJsonLightEntityReferenceLinkDeserializer.ReadEntityReferenceLinksAnnotations. Unreachable codepath in ODataJsonLightParameterDeserializer.ReadNextParameter. Unreachable codepath in ODataJsonLightAnnotationGroupDeserializer.ReadAnnotationGroupDeclaration. Unreachable codepath in EdmTypeWriterResolver.GetReturnType for function import group. Unreachable codepath in the indexer of ODataVersionCache for unknown versions. Implementation of the ODataWriter for the Verbose JSON format. The output context to write to. The JSON entry and feed seriazlizer to use. Constructor. The output context to write to. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the writer is created for writing a feed; false when it is created for writing an entry. Check if the object has been disposed; called from all public API methods. Throws an ObjectDisposedException if the object has already been disposed. Flush the output. Starts writing a payload (called exactly once before anything else) Ends writing a payload (called exactly once after everything else in case of success) Start writing an entry. The entry to write. Finish writing an entry. The entry to write. Start writing a feed. The feed to write. Finish writing a feed. The feed to write. Start writing a deferred (non-expanded) navigation link. The navigation link to write. Start writing a navigation link with content. The navigation link to write. Finish writing a navigation link with content. The navigation link to write. Write an entity reference link. The parent navigation link which is being written around the entity reference link. The entity reference link to write. Create a new feed scope. The feed for the new scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. The newly create scope. Create a new entry scope. The entry for the new scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. The newly create scope. Writes the __count property for a feed if it has not been written yet (and the count is specified on the feed). The feed to write the count for. Returns the current VerboseJsonFeedScope. A scope for a verbose JSON feed. true if the __count was already written, false otherwise. Constructor to create a new feed scope. The feed for the new scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. true if the __count was already written, false otherwise. Uri utility methods. An absolute Uri to use as the base Uri for escaping a Uri fragment. Returns an absolute URI constructed from the specified base URI and a relative URI The base URI to use. The relative URI to use. The absolute URI as a result of combining the base URI with the relative URI. A method to ensure that the original string of a relative URI is escaped. The relative to escape. A relative URI instance with guaranteed escaped original string. Gets the escaped metadata reference property name. The metadata reference property name in question. The Uri escaped metadata reference property name. OData representation of a Collection. Gets or sets the type of the collection value. The type of the collection value. Gets or sets the items in the bag value. The items in the bag value. Configuration settings for OData message writers. The acceptable charsets used to the determine the encoding of the message. This is a comma separated list of charsets as specified in RFC 2616, Section 14.2 The acceptable media types used to determine the content type of the message. This is a comma separated list of content types as specified in RFC 2616, Section 14.1 The format to use when writing the payload; this replaces the 'AcceptHeader' and 'AcceptCharSetHeader' fields and uses the default values for the respective format. If null is specified the default format and the default media type will be picked depending on the writer these settings are used with. true if the Format property should be used to compute the media type; false if AcceptableMediaTypes and AcceptableCharsets should be used. null if neither the format nor the acceptable media types/charsets have been set. The start ATOM entry callback for XML customization of entries. The end ATOM entry callback for XML customization of entries. An instance representing any knobs that control the behavior of the writers inside and outside of WCF Data Services. Stores the base uri for the metadata document along with a select clause. Func to evaluate whether an annotation should be writen by the writer. The func should return true if the annotation should be writen and false if the annotation should be skipped. If set to true, then the root element of each payload will be written in the default (non-prefix-qualified) namespace of the document. All other elements in the same namespace will also not have prefixes. Initializes a new instance of the class with default settings. Initializes a new instance of the class with specified settings. The specified settings. Sets the acceptable media types and character sets from which the content type will be computed when writing the payload. The acceptable media types used to determine the content type of the message. This is a comma separated list of content types as specified in RFC 2616, Section 14.1. The acceptable charsets to use to determine the encoding of the message. This is a comma separated list of charsets as specified in RFC 2616, Section 14.2 Calling this method replaces any previously set content-type settings. Sets the format to be used when writing the payload. This will automatically set a compatible content type header. The format to use for writing the payload. Calling this method replaces any previously set content-type settings. Sets the customization XML format for Atom entry. The start of the Atom entry XML customization callback. The end of the Atom entry XML customization callback. Either both and must be null, or both must be non-null. The XmlWriter returned by the startEntryXmlCustomizationCallback is not owned by the ODataWriter and it won't be Disposed or Flushed or cleared in any way by it. It's the responsibility of the caller to flush/dispose it inside the endEntryXmlCustomizationCallback and also in case of an exception. In case an exception is thrown while a new writer is used to write an entry, only the original XmlWriter will be disposed and no endEntryXmlCustomizationCallback will be called. It's the responsibility of this callback to write the entry payload written to the entryWriter into the parentWriter at this point. The ODataWriter assumes that once this callback returns the entry was already written and it will continue onward. If expanded entries are being written this callback may get called multiple times without the corresponding end callback in between. It's the responsibility of the callback and the caller to be able to handle nested entries. This method only applies when writing ATOM format payloads. When writing payloads in different formats, this method has no effect. param name="atomStartEntryXmlCustomizationCallback" If non-null this func will be called when a new (non-null) entry is to be written. It takes two parameters: - ODataEntry entry - which is the entry to be written. - XmlWriter writer - which is the current XmlWriter used by the ODataWriter to write the entry. It returns XmlWriter: - null - means there's no need to customize the XML for this entry, and thus the original writer will be used to write the entry. - non-null XmlWriter - the ODataWriter will use the new returned writer to write the entry. Once the entry has been written the EndEntryXmlCustomizationCallback will be called and the writer will be passed to it. Note that the ODataWriter will not dipose or otherwise clear the writer. The callback must never return the same instance as the writer parameter! param name="atomEndEntryXmlCustomizationCallback" If non-null this action will be called when a (non-null) entry has been written. The action takes three parameters: - ODataEntry entry - which is the entry which was written. - XmlWriter entryWriter - the XmlWriter used to write the entry. The action must dispose or otherwise clear this writer. - XmlWriter parentWriter - the XmlWriter used to write the parent scope of the entry. This is the writer which will be used to write further payload once this action returns. Enables the default behavior. Specifies whether the WCF data services server behavior is enabled. true if the server uses V1 provider, otherwise, false. Specifies whether the WCF data services server behavior is enabled. true if the server uses V1 provider, otherwise, false. true if the server is configured to leave prefixes off all root elements and anything else in the same namespace, otherwise, false. Enables the WCF data services client behavior. The start of the entry XML customization callback. The end of the entry XML customization callback. The OData namespace. The type scheme. Either both and must be null, or both must be non-null. The XmlWriter returned by the startEntryXmlCustomizationCallback is not owned by the ODataWriter and it won't be Disposed or Flushed or cleared in any way by it. It's the responsibility of the caller to flush/dispose it inside the endEntryXmlCustomizationCallback and also in case of an exception. In case an exception is thrown while a new writer is used to write an entry, only the original XmlWriter will be disposed and no endEntryXmlCustomizationCallback will be called. It's the responsibility of this callback to write the entry payload written to the entryWriter into the parentWriter at this point. The ODataWriter assumes that once this callback returns the entry was already written and it will continue onward. If expanded entries are being written this callback may get called multiple times without the corresponding end callback in between. It's the responsibility of the callback and the caller to be able to handle nested entries. Sets the URI of the metadata document. The URI of the metadata document. Sets the URI of the metadata document. The URI of the metadata document. The select clause. Determines if there is a JSON padding function defined. True if the JsonPCallback property is not null or emtpy. Returns true to indicate that the annotation with the name should not be writen, false otherwise. The name of the annotation in question. Returns true to indicate that the annotation with the name should not be writen, false otherwise. Gets or sets the OData protocol version to be used for writing payloads. The OData protocol version to be used for writing payloads. Gets or sets the document base URI which is used as base for all relative URIs. The document base URI which is used as base for all relative URIs. Note that for typical OData services this should end with a slash character. For example "http://services.odata.org/OData/OData.svc/" will work as expected, that is a relative URI "Products(0)" will correctly combine with the base to produce "http://services.odata.org/OData/OData.svc/Products(0)". If the URI would not end with a slash, the last segment is not considered when base and relative URIs are combined. So for example this base URI "http://services.odata.org/OData/OData.svc" combined with relative URI "Products(0)" would produce "http://services.odata.org/OData/Products(0)", which is typically not the desired result. Gets or sets a value that indicates whether the message stream will not be disposed after finishing writing with the message. true if the message stream will not be disposed after finishing writing with the message; otherwise false. The default value is false. Gets or sets a callback function use to wrap the response from server. The callback function used to wrap the response from server. If it has a value and we are writing a JSON response, then we will wrap the entirety of the response in the provided function name and parenthesis for JSONP. Otherwise this value is ignored. Gets or sets a value that indicates whether the writer should automatically generate or omit metadata in JSON payloads based on the metadata level. Payload metadata includes the type names of entries and property values as well as any information that may be computed automatically, such as edit links. If, for example, ODataEntry.EditLink is not specified, then it will be automatically computed and written out in full metadata mode. If ODataEntry.EditLink is specified, then that value will be considered an "override" of the default computed edit link, and will be written out in full and minimal metadata modes. It will not be written in no metadata mode. Gets or sets a value that indicates whether the writer should put key values in their own URI segment when automatically building URIs. If this value is false, automatically-generated URLs will take the form "../EntitySet('KeyValue')/..". If this value is true, automatically-generated URLs will take the form "../EntitySet/KeyValue/..". If this value is not set (null), decision will be made based on the "Com.Microsoft.Data.Services.Conventions.V1.UrlConventions" vocabulary annotation on the IEdmEntityContainer, if available. The default behavior is to put key values inside parentheses and not a distinct URL segments. This setting only applies to URLs that are automatically generated by the and does not modify URLs explicitly provided by the user. If set to true, then the root element of each payload will be written in the default (non-prefix-qualified) namespace of the document. All other elements in the same namespace will also not have prefixes. The acceptable media types used to determine the content type of the message. This is a comma separated list of content types as specified in RFC 2616, Section 14.1 A null or empty accept header means that all content types are acceptable. For response messages this is usually the 'Accept' header of the request message. The acceptable charsets used to the determine the encoding of the message. This is a comma separated list of charsets as specified in RFC 2616, Section 14.2 A null or empty accept charset header means that all charsets are acceptable. For response messages this is usually the 'Accept-Charset' header of the request message. The writer behavior that holds all the knobs needed to make the writer behave differently inside and outside of WCF Data Services. The format to use when writing the payload; this replaces the 'AcceptHeader' and 'AcceptCharSetHeader' properties and uses the default values for the respective format. If null is specified the default format and the default media type will be picked depending on the writer these settings are used with. true if the Format property should be used to compute the media type; false if AcceptableMediaTypes and AcceptableCharsets should be used. null if neither the format nor the acceptable media types/charsets have been set. The start ATOM entry callback for XML customization of entries. The end ATOM entry callback for XML customization of entries. Gets the metadata document URI that has been set on the settings, or null if it has not been set. Func to evaluate whether an annotation should be writen by the writer. The func should return true if the annotation should be writen and false if the annotation should be skipped. Constant values related to media types. Media type for requesting any media type. 'application' - media type for application types. 'text' - media type for text subtypes. 'multipart' - media type. 'atom+xml' - constant for atom+xml subtypes. 'atomsvc+xml' - constant for atomsvc+xml subtypes. 'xml' - constant for xml subtypes. 'json' - constant for JSON subtypes. 'plain' - constant for text subtypes. 'javascript' - constant for javascript subtypes. 'octet-stream' subtype. 'mixed' subtype. 'http' subtype. Parameter name for 'type' parameters. Parameter value for type 'entry'. Parameter value for type 'feed'. Parameter name for 'odata' parameters. Parameter value for 'verbose' JSON. JSON Light parameter value 'fullmetadata'. JSON Light parameter value 'minimalmetadata'. JSON Light parameter value 'nometadata'. Parameter name for 'streaming' parameter. JSON Light streaming parameter value 'true'. JSON Light streaming parameter value 'false'. Media type for XML bodies. Media type for ATOM payloads. Media type for links referencing a single entry. Media type for links referencing a collection of entries. Media type for JSON payloads. Media type for binary raw content. Media type for batch parts. Media type for Xml bodies (deprecated). Media type for raw content (except binary). Media type for javascript content. Media type for raw content (except binary). The '*' wildcard usable in type names and subtype names. Separator between mediat type and subtype. Helper methods used by the OData writer for the ATOM format. Creates an Xml writer over the specified stream, with the provided settings and encoding. The stream to create the XmlWriter over. The OData message writer settings used to control the settings of the Xml writer. The encoding used for writing. An instance configured with the provided settings and encoding. Write an error message. The Xml writer to write to. The error instance to write. A flag indicating whether error details should be written (in debug mode only) or not. The maximumum number of nested inner errors to allow. Write the m:etag attribute with the given string value. The Xml writer to write to. The string value of the ETag. Write the m:null attribute with a value of 'true' The Xml writer to write to. Writes raw markup with the given writer, adding the xml:space="preserve" attribute to the element if the markup has leading or trailing whitespace. The to write to. A string containing the text to write. Writes a string with the given writer, adding the xml:space="preserve" attribute to the element if the string has leading or trailing whitespace. The to write to. The string to write as element text content. Creates a new XmlWriterSettings instance using the encoding. Configuration settings of the OData writer. Encoding to use in the writer settings. The Xml writer settings to use for this writer. Writes an xml:space="preserve" attribute if the given value starts or ends with whitespace. The writer to use for writing out the attribute string. The value to check for insignificant whitespace. Utility methods around writing of ATOM values. The characters that are considered to be whitespace by XmlConvert. Converts the given value to the ATOM string representation and uses the writer to write it. The writer to write the stringified value. The value to be written. Converts the specified value to a serializable string in ATOM format, or throws an exception if the value cannot be converted. Non-null value to convert. The specified value converted to an ATOM string. Reads a value of an XML element and converts it to the target primitive value. The XML reader to read the value from. The primitive type reference to convert the value to. The primitive value read. This method does not read null values, it only reads the actual element value (not its attributes). Pre-Condition: XmlNodeType.Element - the element to read the value for. XmlNodeType.Attribute - an attribute on the element to read the value for. Post-Condition: XmlNodeType.Element - the element was empty. XmlNodeType.EndElement - the element had some value. Converts a given to a string appropriate for Atom format. The text construct kind to convert. The string version of the text construct format in Atom format. Converts the specified value to a serializable string in ATOM format. Non-null value to convert. The specified value converted to an ATOM string. boolean value indicating conversion successful conversion Converts a string to a primitive value. The string text to convert. Type to convert the string to. The value converted to the target type. This method does not convert null value. Reimplementation of XmlConvert.ToBoolean that accepts 'True' and 'False' in addition to 'true' and 'false'. The string value read from the Xml reader. The converted boolean value. Constant values used by the OData or HTTP protocol or OData library. HTTP method name for GET requests. HTTP method name for POST requests. HTTP method name for PUT requests. HTTP method name for DELETE requests. HTTP method name for PATCH requests. Custom HTTP method name for MERGE requests. Name of the HTTP content type header. Name of the OData 'DataServiceVersion' HTTP header. Name of the HTTP content-ID header. Name of the Content-Length HTTP header. 'q' - HTTP q-value parameter name. Http Version in batching requests and response. 'charset' - HTTP parameter name. multi-part keyword in content-type to identify batch separator Name of the HTTP content transfer encoding header. Content-Transfer-Encoding value for batch payloads. The default protocol version to use in ODataLib if none is specified. The template used when computing a batch request boundary. The template used when computing a batch response boundary. The template used when computing a request changeset boundary. The template used when computing a response changeset boundary. Weak etags in HTTP must start with W/. Look in http://www.ietf.org/rfc/rfc2616.txt?number=2616 section 14.19 for more information. Weak etags in HTTP must end with ". Look in http://www.ietf.org/rfc/rfc2616.txt?number=2616 section 14.19 for more information. The default maximum allowed recursion depth for recursive payload definitions, such as complex values inside complex values. The default maximum number of bytes that should be read from a message. The default maximum number of top-level operations and changesets per batch payload. The default maximum number of operations per changeset. The default maximum number of entity property mapping attributes for an entity type (on the type itself and all its base types). The maximum recognized OData version by this library. The '/' (forward slash) which is the URI segment separator. The '/' (forward slash) which is the URI segment separator. The '$links' segment name for constructing association links. The '$value' segment name for the default stream value. Internal utility methods used in the OData library. Converts a given to its representation. The instance to convert. The representation of the . Sets the 'DataServiceVersion' HTTP header on the message based on the protocol version specified in the settings. The message to set the data service version header on. The determining the protocol version to use. Reads the DataServiceVersion header from the and parses it. If no DataServiceVersion header is found it sets the default version to be used for reading. The message to get the data service version header from. The default version to use if the header was not specified. The retrieved from the DataServiceVersion header of the message. The default version if none is specified in the header. Checks whether a payload kind is supported in a request or a response. The to check. true if the check is for a request; false for a response. true if the is valid in a request or response respectively based on . Concats two enumerables. Element type of the enumerable. Enumerable 1 to concat. Enumerable 2 to concat. Returns the combined enumerable. Gets the selected properties from the given . The instance to get the selected properties node from. The selected properties node instance. This can be a property on . Having it as an extension method here so we don't have to do the null check at the call site. OData writer for the ATOM format. Value for the atom:updated element. The writer will use the same default value for the atom:updated element in a given payload. While there is no requirement for this, it saves us from re-querying the system time and converting it to string every time we write an item. The output context to write to. The serializer to write payload with. Constructor creating an OData writer using the ATOM format. The output context to write to. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). True if the writer is created for writing a feed; false when it is created for writing an entry. Check if the object has been disposed; called from all public API methods. Throws an ObjectDisposedException if the object has already been disposed. Flush the output. Start writing an OData payload. Finish writing an OData payload. Start writing an entry. The entry to write. Finish writing an entry. The entry to write. Start writing a feed. The feed to write. Finish writing a feed. The feed to write. Start writing a navigation link. The navigation link to write. Start writing a navigation link with content. The navigation link to write. Finish writing a navigation link with content. The navigation link to write. Write an entity reference link. The parent navigation link which is being written around the entity reference link. The entity reference link to write. Create a new feed scope. The feed for the new scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. The newly create scope. Create a new entry scope. The entry for the new scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. The newly create scope. Writes the collection of to the ATOM payload. The collection of to write. Helper class to track if an annotation has been writen. Writes the collection of for the given to the ATOM payload. The feed to write the for. The current feed scope. Write the content of the given entry. The entry for which to write properties. The of the entry (or null if not metadata is available). The cache of properties. The root of the EPM source tree, if there's an EPM applied. Set of projected properties, or null if all properties should be written. Writes the navigation link start atom:link element including the m:inline element if there's a parent navigation link. Writes the navigation link end m:inline and end atom:link elements if there's a parent navigation link. Writes the navigation link's start element and atom metadata. The navigation link to write. Url to use for the navigation link. If this is specified the Url property on the will be ignored. If this parameter is null, the Url from the navigation link is used. Writes custom extensions and the end element for a navigation link Determines if XML customization should be applied to the entry and applies it. The entry to apply the customization to. This method must be called before anything is written for the entry in question. Ends XML customization for the entry (if one was applied). The entry to end the customization for. This method must be called after all the XML for a given entry is written. Returns the current AtomEntryScope. Returns the current AtomFeedScope. Enumeration of ATOM element flags, used to keep track of which elements were already written. The atom:id element. The atom:link with rel='self'. The atom:link with rel='edit'. A scope for an feed. true if the author element was already written, false otherwise. Constructor to create a new feed scope. The feed for the new scope. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. The selected properties of this scope. true if the author element was already written, false otherwise. A scope for an entry in ATOM writer. Bit field of the ATOM elements written so far. Constructor to create a new entry scope. The entry for the new scope. The serialization info for the current entry. The entity set we are going to write entities for. The entity type for the entries in the feed to be written (or null if the entity set base type should be used). true if the content of the scope to create should not be written. true if we are writing a response, false if it's a request. The instance controlling the behavior of the writer. The selected properties of this scope. Marks the as written in this entry scope. The ATOM element which was written. Determines if the was already written for this entry scope. The ATOM element to test for. true if the was already written for this entry scope; false otherwise. Enumeration representing the OData protocol version. Version 1.0. Version 2.0. Version 3.0. Writes text indented as per the indentation level setting The indentation string to prepand to each line for each indentation level. The underlying writer to write to. Set to true if the writer should actually indent or not. Number which specifies the level of indentation. Starts with 0 which means no indentation. Set to true if indentation should be written before the next string is written. Constructor The underlying writer to wrap. Set to true if the writer should actually indent or not. Increases the level of indentation applied to the output. Decreases the level of indentation applied to the output. Closes the underlying writer. Clears the buffer of the current writer. Writes the given string value to the underlying writer. String value to be written. Writes the given char value to the underlying writer. Char value to be written. Writes a new line. Closes or disposes the underlying writer. Writes the tabs depending on the indent level. Returns the Encoding for the given writer. Returns the new line character. Constants for the JSON format. "results" header for Json data array. Text used to start a data object wrapper in JSON. Data property name of the data object wrapper in JSON. "id" header for the id of an Entry. "__metadata" header for Json metadata object "uri" header for the URI identifying the entry being represented. "type" header for the type name of the entity "etag" header for the ETag of an entity "__mediaresource" property name for the metadata of a stream reference value. "media_src" header for the MLE read link "content_type" header for the MLE "media_etag" header for the MLE "edit_media" header for the MLE "properties" header for the property metadata "associationuri" header for the association link url of a navigation property "__count" header for the inline count in a feed "__next" header for the next link in a feed "__deferred" header for the non-expanded link in an entry "uri" header for the navigation link URL The name of the property returned for a singleton $links query "actions" header for entry metadata. "functions" header for entry metadata. "title" header for "actions" and "functions" metadata. "metadata" header for "actions" and "functions" metadata. "target" header for "actions" and "functions" metadata. "error" header for the error payload "code" header for the error code property "message" header for the error message property "lang" header for the error message language property "value" header for the error message value property "innererror" header for the inner error property "message" header for an inner error (for Astoria compatibility) "typename" header for an inner error (for Astoria compatibility) "stacktrace" header for an inner error (for Astoria compatibility) "internalexception" header for an inner, inner error property (for Astoria compatibility) JSON datetime format. JSON datetime offset format. A plus sign for the date time offset format. The fixed property name for the entity sets array in a service document payload. The true value literal. The false value literal. The null value literal. Character which starts the object scope. Character which ends the object scope. Character which starts the array scope. Character which ends the array scope. "(" Json Padding Function scope open parens. ")" Json Padding Function scope close parens. The separator between object members. The separator between array elements. The separator between the name and the value. The quote character. Writer for the JSON format. http://www.json.org Writer to write text into. Scope of the json text - object, array. If true, all double values will be written so that they either have an 'E' for scientific notation or contain a decimal point. Creates a new instance of Json writer. Writer to which text needs to be written. If the output should be indented or not. The json-based format to use when writing. Start the padding function scope. End the padding function scope. Start the object scope. End the current object scope. Start the array scope. End the current array scope. Write the "d" wrapper text. Write the "results" header for the data array. Write the name for the object property. Name of the object property. Writes a function name for JSON padding. Name of the padding function to write. Write a boolean value. Boolean value to be written. Write an integer value. Integer value to be written. Write a float value. Float value to be written. Write a short value. Short value to be written. Write a long value. Long value to be written. Write a double value. Double value to be written. Write a Guid value. Guid value to be written. Write a decimal value Decimal value to be written. Write a DateTime value DateTime value to be written. The OData protocol version to be used for writing payloads. Writes a DateTimeOffset value DateTimeOffset value to be written. The OData protocol version to be used for writing payloads. Writes a TimeSpan value TimeSpan value to be written. Write a byte value. Byte value to be written. Write an sbyte value. SByte value to be written. Write a string value. String value to be written. Clears all buffers for the current writer. Writes a separator of a value if it's needed for the next value to be written. Start the scope given the scope type. The scope type to start. Various scope types for Json writer. Array scope. Object scope. JSON padding function scope. Class representing scope information. The type of the scope. Constructor. The type of the scope. What to write at the beginning of this scope. What to write at teh end of this scope. Get/Set the object count for this scope. Gets the scope type for this scope. Class with utility methods to work with exceptions Type of OutOfMemoryException. Type of StackOverflowException. Type of ThreadAbortException. Determines whether the specified exception can be caught and handled, or whether it should be allowed to continue unwinding. to test. true if the specified exception can be caught and handled; false otherwise. Checks the argument value for null and throws if it is null. Type of the argument, used to force usage only for reference types. Argument whose value needs to be checked. Name of the argument, used for exception message. Checks the argument string value empty string and throws if it is empty. The value can be null though. Argument whose value needs to be checked. Name of the argument, used for exception message. Checks the argument string value for null or empty string and throws if it is null or empty. Argument whose value needs to be checked. Name of the argument, used for exception message. Checks the for not being negative and throws if it is negative. Argument whose value needs to be checked. Name of the argument, used for exception message. Checks the for being greater than zero and throws if it is not positive. Argument whose value needs to be checked. Name of the argument, used for exception message. Checks the for being greater than zero and throws if it is not positive. Argument whose value needs to be checked. Name of the argument, used for exception message. Checks the for not being empty. Argument whose value needs to be checked. Name of the argument, used for exception message. Type of the collection. It does not matter. A workaround to a problem with FxCop which does not recognize the CheckArgumentNotNull method as the one which validates the argument is not null. This has been suggested as a workaround in msdn forums by the VS team. Note that even though this is production code the attribute has no effect on anything else. Provides helper method for converting data values to and from the OData JSON format. Const tick value for caculating tick values. Characters which, if found inside a number, indicate that the number is a double when no other type information is available. Map of special characters to strings. Write a boolean value. The text writer to write the output to. The boolean value to write. Write an integer value. The text writer to write the output to. Integer value to be written. Write a float value. The text writer to write the output to. Float value to be written. Write a short value. The text writer to write the output to. Short value to be written. Write a long value. The text writer to write the output to. Long value to be written. Write a double value. The text writer to write the output to. Double value to be written. If true, all double values will be written so that they either have an 'E' for scientific notation or contain a decimal point. Write a Guid value. The text writer to write the output to. Guid value to be written. Write a decimal value The text writer to write the output to. Decimal value to be written. Write a DateTime value The text writer to write the output to. DateTime value to be written. The format to write out the DateTime value in. Write a DateTimeOffset value. The text writer to write the output to. DateTimeOffset value to be written. The format to write out the DateTime value in. Write a TimeSpan value. The text writer to write the output to. TimeSpan value to be written. Write a byte value. The text writer to write the output to. Byte value to be written. Write an sbyte value. The text writer to write the output to. SByte value to be written. Write a string value. The text writer to write the output to. String value to be written. Returns the string value with special characters escaped. The text writer to write the output to. Input string value. Converts the number of ticks from the JSON date time format to the one used in .NET DateTime or DateTimeOffset structure. The ticks to from the JSON date time format. The ticks to use in the .NET DateTime of DateTimeOffset structure. Write the string value with quotes. The text writer to write the output to. String value to be written. Converts the number of ticks from the .NET DateTime or DateTimeOffset structure to the ticks use in the JSON date time format. The ticks from the .NET DateTime of DateTimeOffset structure. The ticks to use in the JSON date time format. Converts a given date time to its universal date time equivalent. The date time to convert to UTC universal date time equivalent of the value. Creates the special character to escaped string map. The map of special characters to the corresponding escaped strings. OData representation of a complex value. Gets or sets the properties and values of the complex value. The properties and values of the complex value. Gets or sets the type of the complex value. The type of the complex value. Describes a collection of entities. URI representing the next page link. URI representing the delta link. Provides additional serialization information to the for this . Gets or sets the number of items in the feed. The number of items in the feed. Gets or sets the URI that identifies the entity set represented by the feed. The URI that identifies the entity set represented by the feed. Gets or sets the URI representing the next page link. The URI representing the next page link. URI representing the delta link. Collection of custom instance annotations. Provides additional serialization information to the for this . Represents a single link. the metadata builder for this navigation link. URI representing the Unified Resource Locator (Url) of the link as provided by the user or seen on the wire (never computed). true if the navigation link has been set by the user or seen on the wire or computed by the metadata builder, false otherwise. The association link URL for this navigation link as provided by the user or seen on the wire (never computed). true if the association link has been set by the user or seen on the wire or computed by the metadata builder, false otherwise. Sets the metadata builder for this navigation link. The metadata builder used to compute values from model annotations. Gets or sets a value that indicates whether the navigation link represents a collection or an entry. true if the navigation link represents a collection; false if the navigation represents an entry. This property is required to have a value for ATOM payloads and is optional for JSON payloads. Gets or sets the name of the link. The name of the link. Gets or sets the URI representing the Unified Resource Locator (URL) of the link. The URI representing the Unified Resource Locator (URL) of the link. The association link URL for this navigation link. Represents a media resource. the metadata builder for this OData entry. The name of the named stream this value belongs to; null for the default media resource. Edit link for media resource. Edit link for media resource. true if an edit link was provided by the user or seen on the wire, false otherwise. Read link for media resource. Read link for media resource. true if a read link was provided by the user or seen on the wire, false otherwise. Sets the metadata builder for this stream reference value. The metadata builder used to compute values from model annotations. The property name for the named stream; null for the default media resource. Gets the metadata builder for this stream reference value. The metadata builder used to compute links. Gets or sets the edit link for media resource. The edit link for media resource. Gets or sets the read link for media resource. The read link for media resource. Gets or sets the content media type. The content media type. Gets or sets the media resource ETag. The media resource ETag. Represents a single property of an entry. The value of this property, accessed and set by both and . Provides additional serialization information to the for this . Gets or sets the property name. The property name. Gets or sets the property value. The property value. Property value, represented as an ODataValue. This value is the same as , except that primitive types are wrapped in an instance of ODataPrimitiveValue, and null values are represented by an instance of ODataNullValue. Provides additional serialization information to the for this . Represents a single entity. the metadata builder for this OData entry. The entry ETag, as provided by the user or seen on the wire (never computed). true if an etag was provided by the user or seen on the wire, false otherwise. The Entry ID, as provided by the user or seen on the wire (never computed). true if an id was provided by the user or seen on the wire, false otherwise. Link used to edit the entry, as provided by the user or seen on the wire (never computed). true if an edit link was provided by the user or seen on the wire, false otherwise. A link that can be used to read the entry, as provided by the user or seen on the wire (never computed). true if a read link was provided by the user or seen on the wire, false otherwise. The default media resource of the media link entry, as provided by the user or seen on the wire (never computed). The entry properties provided by the user or seen on the wire (never computed). The entry actions provided by the user or seen on the wire (never computed). The entry functions provided by the user or seen on the wire (never computed). Provides additional serialization information to the for this . Gets or sets the entry ETag. The entry ETag. Gets or sets the Entry identifier. The Entry identifier. Gets or sets the link used to edit the entry. The link used to edit the entry. Gets or sets a link that can be used to read the entry. The link that can be used to read the entry. Gets or sets the default media resource of the media link entry. The default media resource of the media link entry. Gets or sets the association links. The association links. Gets or sets the entity actions. The entity actions. Gets or sets the entity functions. The entity functions. Gets or sets the entry properties. The entry properties. Non-property content goes to annotations. Gets or sets the type name of the entry. The type name of the entry. Collection of custom instance annotations. The metadata builder for this OData entry. Returns the entry's Id property that has been set directly, and was not computed using the metadata builder. true if an id was provided by the user or seen on the wire, false otherwise. Returns the entry's EditLink property that has been set directly, and was not computed using the metadata builder. true if an edit link was provided by the user or seen on the wire, false otherwise. Returns the entry's ReadLink property that has been set directly, and was not computed using the metadata builder. true if a read link was provided by the user or seen on the wire, false otherwise. Returns the entry's ETag property that has been set directly, and was not computed using the metadata builder. true if an etag was provided by the user or seen on the wire, false otherwise. Returns the default media resource of the media link entry that has been set directly and was not computed using the metadata builder. Returns the entity properties that has been set directly and was not computed using the metadata builder. Returns the entity actions that has been set directly and was not computed using the metadata builder. Returns the entity functions that has been set directly and was not computed using the metadata builder. Provides additional serialization information to the for this . Helper methods that provide a common API surface on all platforms. Use this instead of Type.EmptyTypes. Use this instead of Uri.UriSchemeHttp. Use this instead of Uri.UriSchemeHttps. Replacement for Type.Assembly. Type on which to call this helper method. See documentation for property being accessed in the body of the method. Replacement for Type.IsValueType. Type on which to call this helper method. See documentation for property being accessed in the body of the method. Replacement for Type.IsGenericParameter. Type on which to call this helper method. See documentation for property being accessed in the body of the method. Replacement for Type.IsAbstract. Type on which to call this helper method. See documentation for property being accessed in the body of the method. Replacement for Type.IsGenericType. Type on which to call this helper method. See documentation for property being accessed in the body of the method. Replacement for Type.IsGenericTypeDefinition. Type on which to call this helper method. See documentation for property being accessed in the body of the method. Replacement for Type.IsVisible. Type on which to call this helper method. See documentation for property being accessed in the body of the method. Replacement for Type.IsInterface. Type on which to call this helper method. See documentation for property being accessed in the body of the method. Replacement for Type.IsClass. Type on which to call this helper method. See documentation for property being accessed in the body of the method. Replacement for Type.IsEnum. Type on which to call this helper method. See documentation for property being accessed in the body of the method. Replacement for Type.BaseType. Type on which to call this helper method. See documentation for property being accessed in the body of the method. Replacement for Type.ContainsGenericParameters. Type on which to call this helper method. See documentation for property being accessed in the body of the method. Replacement for Array.AsReadOnly(T[]). Type of items in the array. Array to use to create the ReadOnlyCollection. ReadOnlyCollection containing the specified array items. Converts a string to a DateTime. String to be converted. See documentation for method being accessed in the body of the method. Converts a string to a DateTimeOffset. String to be converted. See documentation for method being accessed in the body of the method. Adds the seconds padding as zeros to the date time string if seconds part is missing. String that needs seconds padding DateTime string after adding seconds padding Converts the DateTime to a string, internal method. DateTime to convert to String. Converted String. Converts a DateTime to a string. DateTime to be converted. See documentation for property being accessed in the body of the method. Gets the specified type. Name of the type to get. Throws if the type could not be found. Type instance that represents the specified type name. Gets the TypeCode for the specified type. Type on which to call this helper method. TypeCode representing the specified type. Gets the Unicode Category of the specified character. Character to get category of. Category of the character. Replacement for usage of MemberInfo.MemberType property. MemberInfo on which to access this method. True if the specified member is a property, otherwise false. Replacement for usage of Type.IsPrimitive property. Type on which to access this method. True if the specified type is primitive, otherwise false. Replacement for usage of Type.IsSealed property. Type on which to access this method. True if the specified type is sealed, otherwise false. Replacement for usage of MemberInfo.MemberType property. MemberInfo on which to access this method. True if the specified member is a method, otherwise false. Compares two methodInfos and returns true if they represent the same method. Need this for Windows Phone as the method Infos of the same method are not always instance equivalent. MemberInfo to compare. MemberInfo to compare. True if the specified member is a method, otherwise false. Gets public properties for the specified type. Type on which to call this helper method. True if method should return only instance properties, false if it should return both instance and static properties. Enumerable of public properties for the type. Gets public properties for the specified type. Type on which to call this helper method. True if method should return only instance properties, false if it should return both instance and static properties. True if method should return only properties that are declared on the type, false if it should return properties declared on the type as well as those inherited from any base types. Enumerable of public properties for the type. Gets instance constructors for the specified type. Type on which to call this helper method. True if method should return only public constructors, false if it should return only non-public constructors. Enumerable of instance constructors for the specified type. Gets a instance constructor for the type that takes the specified argument types. Type on which to call this helper method. True if method should search only public constructors, false if it should search only non-public constructors. Array of argument types for the constructor. ConstructorInfo for the constructor with the specified characteristics if found, otherwise null. Tries to the get method from the type, returns null if not found. The type. The name. The parameter types. Returns True if found. Gets a method on the specified type. Type on which to call this helper method. Name of the method on the type. True if method should search only public methods, false if it should search only non-public methods. True if method should search only static methods, false if it should search only instance methods. MethodInfo for the method with the specified characteristics if found, otherwise null. Gets a method on the specified type. Type on which to call this helper method. Name of the method on the type. Argument types for the method. True if method should search only public methods, false if it should search only non-public methods. True if method should search only static methods, false if it should search only instance methods. MethodInfo for the method with the specified characteristics if found, otherwise null. Gets all public static methods for a type. Type on which to call this helper method. Enumerable of all public static methods for the specified type. Replacement for Type.GetNestedTypes(BindingFlags.NonPublic) Type on which to call this helper method. All types nested in the current type Creates a Compiled Regex expression Pattern to match. Options to use. Regex expression to match supplied patter Is marked as compiled option only in platforms otherwise RegexOption.None is used Constructs a new sys description. description text. Retrieves the description text. description AutoGenerated resource class. Usage: string s = TextRes.GetString(TextRes.MyIdenfitier); Strongly-typed and parameterized string resources. A string like "The format '{0}' does not support writing a payload of kind '{1}'." A string like "The format '{0}' does not support writing custom instance annotations." A string like "The format '{0}' does not support reading a payload of kind '{1}'." A string like "A relative URI value '{0}' was specified in the data to write, but the metadata document URI or the metadata for the item to be written was not specified for the writer. The metadata document URI and the metadata for the item to be written must be provided to the writer when using relative URI values." A string like "A relative URI value '{0}' was specified in the data to write, but a base URI was not specified for the writer. A base URI must be set when using relative URI values." A string like "The property '{0}' is a stream property, but it is not a property of an ODataEntry instance. In OData, stream properties must be properties of ODataEntry instances." A string like "An invalid state transition has been detected in an OData writer. Cannot transition from state '{0}' to state '{1}'." A string like "Cannot transition from state '{0}' to state '{1}'. The only valid actions in state '{0}' are to write an entry or a feed." A string like "Cannot transition from state '{0}' to state '{1}'. The only valid action in state '{0}' is to write a navigation link." A string like "Cannot transition from state '{0}' to state '{1}'. You must first call ODataWriter.WriteEnd to finish writing a null ODataEntry." A string like "Cannot transition from state '{0}' to state '{1}'. The only valid action in state '{0}' is to write an entry." A string like "Cannot transition from state '{0}' to state '{1}'. The only valid actions in state '{0}' are to write an entry or a feed." A string like "Cannot transition from state '{0}' to state '{1}'. Nothing further can be written once the writer has completed." A string like "Cannot transition from state '{0}' to state '{1}'. Nothing can be written once the writer entered the error state." A string like "ODataWriter.WriteEnd was called in an invalid state ('{0}'); WriteEnd is only supported in states 'Entry', 'Feed', 'NavigationLink', and 'NavigationLinkWithContent'." A string like "Multiple properties with the name '{0}' were detected in an entry or a complex value. In OData, duplicate property names are not allowed." A string like "Multiple navigation links with the same name '{0}' for a singleton navigation property were detected on an entry. In OData, a singleton navigation property can have only one navigation link." A string like "Multiple annotations with the name '{0}' were detected. In OData, duplicate annotations are not allowed." A string like "Multiple annotations with the name '{0}' were detected for the property with name '{1}'. In OData, duplicate annotations are not allowed." A string like "Multiple annotations with the name '{0}' were detected for the instance annotation with name '{1}'. In OData, duplicate annotations are not allowed." A string like "An annotation with name '{0}' for property '{1}' was detected after the property, or after an annotation for another property. In OData, annotations for a property must be in a single group and must appear before the property they annotate." A string like "Cannot convert a value of type '{0}' to the string representation of an Atom primitive value." A string like "The value of type '{0}' is not supported and cannot be converted to a JSON representation." A string like "The version '{0}' specified by the payload is higher than the maximum protocol version '{1}' specified by the ODataMessageReaderSettings.MaxProtocolVersion property." A string like "The property '{0}' is not supported when ODataVersion is greater than '{1}'." A string like "Parameters in the payload are only supported in version 3.0 of the OData protocol and higher versions. They are not supported in version {0}." A string like "Association links are only supported in version 3.0 of the OData protocol and higher versions. They are not supported in version {0}." A string like "The inline count feature is only supported in version 2.0 of the OData protocol and higher versions. It is not supported in version {0}." A string like "The next link feature is only supported in version 2.0 of the OData protocol and higher versions. It is not supported in version {0}." A string like "The delta link feature is only supported in version 3.0 of the OData protocol and higher versions. It is not supported in version {0}." A string like "A collection property '{0}' was detected; Collection properties are only supported in version 3.0 of the OData protocol and higher versions. They are not supported in version {1}." A string like "Collection types are only supported in version 3.0 of the OData protocol and higher versions. They are not supported in version {0}." A string like "Stream properties are only supported in version 3.0 of the OData protocol and higher versions. They are not supported in version {0}." A string like "The entity property mapping specified on type '{0}' is only supported in version {1} of the OData protocol and higher versions. It is not supported in version {2}." A string like "Geography and Geometry types are only supported in version 3.0 of the OData protocol and higher versions. They are not supported in version {0}." A string like "The '{0}' value for the href of a link, which was either specified or computed, does not match the '{1}' value specified in the metadata of the link. When an href is specified in metadata, the href values must match." A string like "The '{0}' value for the title of a link, which was either specified or computed, does not match the '{1}' value specified in the metadata of the link. When a title is specified in metadata, the titles must match." A string like "The '{0}' value for the relation of a link, which was either specified or computed, does not match the '{1}' value specified in the metadata of the link. When a relation is specified in metadata, the relations must match." A string like "The '{0}' value for the media type of a link, which was either specified or computed, does not match the '{1}' value specified in the metadata of the link. If a media type is specified in metadata, the media types must match." A string like "An annotation of type string was expected for the '{{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:{0}' annotation, but an annotation of type '{1}' was found." A string like "The '{0}' value for the term of a category, which was either specified or computed, does not match the value '{1}' specified in the ATOM metadata of the category. When a term is specified in Atom metadata, the terms must match." A string like "The '{0}' value for the scheme of a category, which was either specified or computed, does not match the value '{1}' specified in the ATOM metadata of the category. When a scheme is specified in Atom metadata, the schemes must match." A string like "The text kind '{1}' specified by the atom metadata property '{0}' conflicts with the text kind '{2}' mapped to this property by using entity property mapping. When both the metadata and the entity property mapping specify text kinds, those text kinds must be equal." A string like "The value '{1}' specified by the atom metadata property '{0}' conflicts with the value '{2}' mapped to this property by using entity property mapping. When both the metadata and the entity property mapping specify a value, these values must be equal." A string like "The content type '{0}' is not supported when writing raw values." A string like "Cannot set message headers for the invalid payload kind '{0}'." A string like "The payload kind '{0}' used in the last call to ODataUtils.SetHeadersForPayload is incompatible with the payload being written, which is of kind '{1}'." A string like "The stream property '{0}' cannot be written to the payload as a top level property." A string like "The ODataMessageWriter.WriteProperty method was called with an owning type '{0}' of kind '{1}'. The owning type of a property can only be of kind Complex or Entity." A string like "The ODataMessageWriter.WriteProperty method was called with a producing function import with return type '{0}'. The producing function import for property payloads must return type which is either a primitive, complex, primitive collection of complex collection type." A string like "The navigation property named '{0}' given to ODataMessageWriter.WriteEntityReferenceLinks represents a singleton property. When writing multiple entity reference links, the navigation property must be a collection." A string like "A JsonPaddingFunctionName was specified, but the content-type '{0}' is not supported with Json Padding." A string like "The type '{0}' specified as the collection's item type is not primitive or complex. An ODataCollectionWriter can only write collections of primitive or complex values." A string like "Cannot create an ODataCollectionWriter for ODataFormat.{0}. Only ODataFormat.PlainXml and ODataFormat.Json are supported." A string like "Cannot transition from state '{0}' to state '{1}'. The only valid actions in state '{0}' are to write the collection or to write nothing at all." A string like "Cannot transition from state '{0}' to state '{1}'. The only valid actions in state '{0}' are to write an item or to write the end of the collection." A string like "Cannot transition from state '{0}' to state '{1}'. The only valid actions in state '{0}' are to write an item or the end of the collection." A string like "ODataCollectionWriter.WriteEnd was called in an invalid state ('{0}'); WriteEnd is only supported in states 'Start', 'Collection', and 'Item'." A string like "A collection with name '{0}' is being written with producing function import name '{1}'. If the producing function import is specified the collection name must be either null or match the name of the function import." A string like "The producing function import '{0}' specified for the collection writer returns type '{1}' which is not a collection of primitive or complex values. An ODataCollectionWriter can only write collections of primitive or complex values." A string like "An invalid HTTP method '{0}' was detected for a query operation. Query operations only support the HTTP 'GET' method." A string like "An invalid HTTP method '{0}' was detected for a request in a change set. Requests in change sets only support the HTTP methods 'POST', 'PUT', 'DELETE', 'MERGE', and 'PATCH'." A string like "The header with name '{0}' was not present in the header collection of the batch operation." A string like "Multiple headers with names that match '{0}', when using a case insensitive comparison, have been added. When case-insensitive header names are used, at most one header can be added for each name." A string like "The parameter '{0}' has already been written. Duplicate parameter names are not allowed in the parameter payload." A string like "The parameter '{0}' is of Edm type kind '{1}'. You cannot call WriteValue on a parameter that is not of Edm type kinds 'Primitive' or 'Complex'." A string like "The value for parameter '{0}' is of type '{1}'. WriteValue can only write null, ODataComplexValue and primitive types that are not Stream type." A string like "The parameter '{0}' is of Edm type kind '{1}'. You cannot call CreateCollectionWriter on a parameter that is not of Edm type kind 'Collection'." A string like "The name '{0}' is not a recognized parameter name for function import '{1}'." A string like "The parameters {0} of the function import '{1}' could not be found when writing the parameter payload. All parameters present in the function import must be written to the parameter payload." A string like "The current batch message contains too many parts. Only batch messages with a maximum number of '{0}' query operations and change sets are allowed." A string like "The current change set contains too many operations. Only change sets with a maximum number of '{0}' operations are allowed." A string like "The content ID '{0}' was found more than once in the same change set. Content IDs have to be unique across all operations of a change set." A string like "The relative URI '{0}' was specified in a batch operation, but a base URI was not specified for the batch writer or batch reader." A string like "The relative URI '{0}' was specified in a batch operation, but a base URI was not specified for the batch writer or batch reader. When the relative URI is a reference to a content ID, the content ID does not exist in the current change set." A string like "The method CreateOperationRequestMessage was called in state '{0}', which is not allowed. CreateOperationRequestMessage can only be called in state 'Operation'." A string like "The method CreateOperationResponseMessage was called in state '{0}', which is not allowed. CreateOperationResponseMessage can only be called in state 'Operation'." A string like "ODataBatchReader.ReadAsync or ODataBatchReader.Read was called in an invalid state. No further calls can be made to the reader in state '{0}'." A string like "The current batch message contains too many parts. A maximum number of '{0}' query operations and change sets are allowed in a batch message." A string like "The current change set contains too many operations. A maximum number of '{0}' operations are allowed in a change set." A string like "The content ID '{0}' was found more than once in the same change set. Content IDs have to be unique across all operations of a change set." A string like "The message header '{0}' is invalid. The header value must be of the format '<header name>: <header value>'." A string like "The request line '{0}' is invalid. The request line at the start of each operation must be of the format 'HttpMethod RequestUrl HttpVersion'." A string like "The response line '{0}' is invalid. The response line at the start of each operation must be of the format 'HttpVersion StatusCode StatusCodeString'." A string like "The HTTP version '{0}' used in a batch operation request or response is not valid. The value must be '{1}'." A string like " The HTTP status code '{0}' is invalid. An HTTP status code must be an integer value." A string like "A missing or invalid '{0}' header was found. The '{0}' header must be specified for each batch operation, and its value must be '{1}'." A string like "The '{0}' header value '{1}' is invalid. When this is the start of the change set, the value must be '{2}'; otherwise it must be '{3}'." A string like "The content length header '{0}' is not valid. The content length header must be a valid Int32 literal and must be greater than or equal to 0." A string like "The header '{0}' was specified multiple times. Each header must appear only once in a batch part." A string like "Invalid multi-byte encoding '{0}' detected. Multi-byte encodings other than UTF-8 are only supported for operation payloads. They are not supported in batch or change set parts." A string like "Too many white spaces after a boundary delimiter and before the terminating line feed. For security reasons, the total number of characters for a boundary including white spaces must not exceed {0}." A string like "The MIME type '{0}' is invalid or unspecified." A string like "The MIME type '{0}' requires a '/' character between type and subtype, such as 'text/plain'." A string like "The MIME type '{0}' requires a subtype definition." A string like "The MIME type is missing a parameter value for a parameter with the name '{0}'." A string like "An error occurred when parsing the HTTP header '{0}'. The header value '{1}' is incorrect at position '{2}' because the escape character '{3}' is not inside a quoted-string." A string like "An error occurred when parsing the HTTP header '{0}'. The header value '{1}' is incorrect at position '{2}' because it terminates with the escape character '{3}'. In a quoted-string, the escape characters must always be followed by a character." A string like "An error occurred when parsing the HTTP header '{0}'. The header value '{1}' is incorrect at position '{2}' because the closing quote character was not found for the quoted-string." A string like "An error occurred when parsing the HTTP header '{0}'. The header value '{1}' is incorrect at position '{2}' because the character '{3}' is not allowed in a quoted-string. For more information, see RFC 2616, Sections 3.6 and 2.2." A string like "The MIME type '{0}' requires a semi-colon character (';') before a parameter definition." A string like "An invalid quality value was detected in the header string '{0}'; quality values must start with '0' or '1' but not with '{1}'." A string like "An invalid quality value '{0}' was detected in the header string '{1}'; quality values must be in the range [0, 1]." A string like "An error occurred when converting the character '{0}' to an integer." A string like "The separator ',' was missing between charset values in the header '{0}'." A string like "A separator character was missing between charset values in the header '{0}'." A string like "An invalid (empty) charset name found in the header '{0}'." A string like "An unexpected end of the q-Value was detected in the header '{0}'." A string like "The expected literal '{0}' was not found at position '{1}' in the string '{2}'." A string like "The string '{0}' cannot be converted into a supported HTTP method. The only supported HTTP methods are GET, DELETE, PUT, POST, PATCH and MERGE." A string like "The specified content type '{0}' contains either no media type or more than one media type, which is not allowed. You must specify exactly one media type as the content type." A string like "An error occurred when parsing the HTTP header '{0}'. The header value '{1}' is incorrect at position '{2}' because '{3}' is not a recognized separator. The supported separators are ',', ';', and '='." A string like "An error occurred when parsing the HTTP header '{0}'. The header value '{1}' is incorrect at position '{2}' because a token is expected but a quoted-string is found instead." A string like "An error occurred when parsing the HTTP header '{0}'. The header value '{1}' is incorrect at position '{2}' because a token or a quoted-string is expected at this position but were not found." A string like "An error occurred when parsing the HTTP header '{0}'. The header value '{1}' is incorrect at position '{2}' because '{3}' is not a valid separator after a quoted-string." A string like "An error occurred when parsing the HTTP header '{0}'. The header value '{1}' is incorrect at position '{2}' because the header value should not end with the separator '{3}'." A string like "The character set '{0}' is not supported." A string like "A supported MIME type could not be found that matches the acceptable MIME types for the request. The supported type(s) '{0}' do not match any of the acceptable MIME types '{1}'." A string like "A supported MIME type could not be found that matches the content type of the response. None of the supported type(s) '{0}' matches the content type '{1}'." A string like "The specified content type '{0}' contains either no media type or more than one media type, which is not allowed. You must specify exactly one media type as the content type." A string like "The content type '{0}' specifies a batch payload; however, the payload either does not include a batch boundary or includes more than one boundary. In OData, batch payload content types must specify exactly one batch boundary in the '{1}' parameter of the content type." A string like "The '{0}' value provided for the EntityPropertyMappingAttribute is not valid." A string like "The TargetName property path '{0}' set in the EntityPropertyMappingAttribute is not valid." A string like "The value '{0}' of the targetNamespaceUri parameter provided to the EntityPropertyMappingAttribute does not have a valid URI format." A string like "The PropertyName property value '{1}' set in the EntityPropertyMappingAttribute on type '{0}' is not valid." A string like "The property '{0}' provided at the end of the PropertyName property of the EntityPropertyMappingAttribute on a type is not a primitive type or a collection type." A string like "The property '{0}' provided in the middle of the PropertyName property of the EntityPropertyMappingAttribute on a type is not a complex type." A string like "More than one EntityPropertyMappingAttribute on type '{0}' have a 'PropertyName' value '{1}'. In OData, an entity property cannot be mapped more than once." A string like "The property '{0}' on type '{1}' is not present." A string like "The property '{0}' defined on type '{1}' is not present in the instance of the type." A string like "The property '{0}' on the type '{1}' is of the type 'Edm.Stream'. Stream properties cannot be mapped with an entity property mapping." A string like "The property '{0}' on the type '{1}' is a spatial type. Spatial type properties cannot be mapped with an entity property mapping." A string like "The open property '{0}' on the type '{1}' is a spatial type. Spatial type properties cannot be mapped with an entity property mapping." A string like "The open property '{0}' on the type '{1}' does not have a primitive type. Only open primitive properties can be mapped with an entity property mapping." A string like "The property '{0}' on the type '{1}' is a collection. Collection properties cannot be mapped with an entity property mapping." A string like "The TargetName property path '{0}' set in the EntityPropertyMappingAttribute is not valid because it contains an empty segment." A string like "The TargetName property paths '{0}' and '{1}' set in two EntityPropertyMappingAttribute instances are invalid because they would result in mixed content. Mixed content produced by entity property mappings is not supported." A string like "The attribute identifier '{0}' is provided in the middle of the 'TargetName' property of EntityPropertyMappingAttribute." A string like "More than one EntityPropertyMappingAttribute on the type '{0}' have the same 'TargetName' value '{1}'. The conflicting properties are '{2}' and '{3}'. In OData, target names of entity property mappings must be unique on a given type." A string like "The property value corresponding to '{0}' property in SyndicationItemProperty could not be converted to the type DateTimeOffset." A string like "The collection property '{0}' has no items but is mapped to the author element. Only non-empty collection properties can be mapped to the author element in an entry." A string like "The property '{0}' on type '{1}' that is mapped to '{2}' has a 'null' value. Properties that are mapped to attributes cannot be null." A string like "'{0}' is not a valid value for 'atom:link/@length' attribute. " A string like "The value '{0}' for the property '{1}' on type '{2}' that is mapped to 'link/@rel' is not valid. Properties that are mapped to 'link/@rel' cannot have values that are Atom-defined simple identifiers, such as alternate, related, self, enclosure, via, describedby, service, edit, or edit-media; cannot be an Atom-defined simple identifier following the IANA namespace, such as 'http://www.iana.org/assignments/relation/edit'; and cannot begin with the namespace 'http://schemas.microsoft.com/ado/2007/08/dataservices'." A string like "The value '{0}' for the property '{1}' on type '{2}' that is mapped to 'category/@scheme' is not valid. Properties that are mapped to 'category/@scheme' must have values that are URIs and cannot begin with the namespace 'http://schemas.microsoft.com/ado/2007/08/dataservices'." A string like "Expected literal type token but found token '{0}'." A string like "The relative URI '{0}' cannot be escaped because it starts with '{1}' and a base URI is not available. Relative URIs without a base URI cannot start with '/', '\\' or '..'." A string like "The type '{0}' is not supported when converting to a URI literal." A string like "The format '{0}' is not supported when converting to a URI literal. The supported formats are ODataFormat.JsonLight and ODataFormat.VerboseJson." A string like "Type verification failed. Expected type '{0}' but received the value '{1}'." A string like "Type verification failed. Expected type '{0}' but received non-matching null value with associated type '{1}'." A string like "Type verification failed. Expected non-nullable type '{0}' but received a null value." A string like "The value of type '{0}' could not be converted to the string representation of a raw primitive value." A string like "A default MIME type could not be found for the requested payload in format '{0}'." A string like "The value '{0}' of the DataServiceVersion HTTP header is invalid. Only '1.0', '2.0' and '3.0' are supported as values for the DataServiceVersion header." A string like "The value returned by the '{0}' property cannot be modified until the end of the owning entry is reported by the reader." A string like "A null value was found with the expected type '{0}[Nullable=False]'. The expected type '{0}[Nullable=False]' does not allow null values." A string like "A null value was found for the property named '{0}', which has the expected type '{1}[Nullable=False]'. The expected type '{1}[Nullable=False]' does not allow null values." A string like "Complex type '{1}' is a subtype of a base type '{0}'. Derived complex types are not supported." A string like "Cannot convert a primitive value to the expected type '{0}'. See the inner exception for more details." A string like "The base URI '{0}' specified in ODataMessageReaderSettings.BaseUri is invalid; it must be either null or an absolute URI." A string like "An undeclared property '{0}' was found on type '{1}', which is marked as open; however, either the ODataUndeclaredPropertyBehaviorKinds.IgnoreUndeclaredValueProperty or the ODataUndeclaredPropertyBehaviorKinds.ReportUndeclaredLinkProperty setting is used. The ODataUndeclaredPropertyBehaviorKinds.IgnoreUndeclaredValueProperty or ODataUndeclaredPropertyBehaviorKinds.ReportUndeclaredLinkProperty setting cannot be used with open types." A string like "The metadata URI '{0}' references the entity set with name '{1}'; however, the name of the expected entity set is '{2}' and does not match the entity set referenced in the metadata URI." A string like "The metadata URI '{0}' references the entity type with name '{1}'; however, the name of the expected entity type is '{2}' which is not compatible with the entity type with name '{1}'." A string like "The metadata URI '{0}' references the property with name '{1}' on type '{2}'; however, the name of the expected property is '{3}'." A string like "The metadata URI '{0}' references the property with name '{1}' on type '{2}'; however, the declaring type of the expected property is '{3}'." A string like "The metadata URI '{0}' references the function import with name '{1}'; however, the name of the expected producing function import is '{2}'." A string like "The metadata URI '{0}' references the function import with name '{1}' which returns a collection with item type '{2}'; however, the item type of the collection returned by the expected producing function import is '{3}'." A string like "The metadata URI '{0}' references a property with name '{1}' on type '{2}'; however, a producing function import with name '{3}' was specified." A string like "The metadata URI '{0}' references a function import with name '{1}'; however, an expected structural property with name '{2}' on type '{3}' was specified." A string like "The collection name '{0}' was read from the payload; however, the name of the expected producing function import is '{1}'." A string like "The property or function import name '{0}' was read from the payload; however, the name of the expected property or function import is '{1}'." A string like "The metadata URI '{0}' references the property with name '{1}' on type '{2}'; however, the expected property with the same name is declared on type '{3}'." A string like "The metadata URI '{0}' references the property with name '{1}' and type '{2}' on declaring type '{3}'; however, the expected property type is '{4}'." A string like "The metadata URI '{0}' references the function import with name '{1}'; however, the name of the expected function import is '{2}'." A string like "The metadata URI '{0}' references the function import with name '{1}' and return type '{2}'; however, the expected return type is '{3}'." A string like "The metadata URI '{0}' references the type '{1}'; however the expected type is '{2}'." A string like "The metadata URI '{0}' refers to the item type '{1}' which is not assignable to the expected item type '{2}'." A string like "The parameter '{0}' is specified with a non-null value, but no metadata is available for the reader. The expected type can only be specified if metadata is made available to the reader." A string like "The parameter '{0}' is specified with a non-null value, but no metadata is available for the reader. The entity set can only be specified if metadata is made available to the reader." A string like "The parameter '{0}' is specified with a non-null value, but no metadata is available for the reader. The function import can only be specified if metadata is made available to the reader." A string like "The producing function import '{0}' for a collection reader has the return type '{1}'. Only function imports returning collections of primitive or complex values can be specified as the producing function import for a collection reader." A string like "The expected type for a collection reader is of kind '{0}'. Only types of Primitive or ComplexType kind can be specified as the expected type for a collection reader." A string like "The expected type for a value is of kind '{0}'. Only types of Primitive kind can be specified as the expected type for reading a value." A string like "The wildcard '*' was detected in the value '{0}' of the content type header. The value of the content type header cannot contain wildcards." A string like "The navigation property '{0}' with singleton cardinality on type '{1}' was specified for reading a collection of entity reference links. A navigation property with collection cardinality has to be provided." A string like "The content type '{0}' specifies a batch payload but does not include a batch boundary. In OData, batch payload content types must specify a batch boundary in the '{1}' parameter of the content type." A string like "ODataReader.ReadAsync or ODataReader.Read was called in an invalid state. No further calls can be made to the reader in state '{0}'." A string like "Calling Read or ReadAsync on an ODataReader instance is not allowed in state '{0}'." A string like "A node of type '{0}' was read from the JSON reader when trying to read the entries of a feed. A 'StartObject' or 'EndArray' node was expected." A string like "A node of type '{0}' was read from the JSON reader when trying to read the start of a feed. A 'StartObject' or 'StartArray' node was expected." A string like "A node of type '{0}' was read from the JSON reader when trying to read the start of an entry. A 'StartObject' node was expected." A string like "Cannot convert a value of type 'Edm.Int32' to the expected target type '{0}'." A string like "Cannot convert a value of type 'Edm.Double' to the expected target type '{0}'." A string like "Cannot convert a value of type 'Edm.Boolean' to the expected target type '{0}'." A string like "Cannot convert a value of type 'Edm.DateTime' to the expected target type '{0}'." A string like "Cannot convert a value of type 'Edm.DateTimeOffset' to the expected target type '{0}'." A string like "Multiple '{0}' properties were found in the value of the '__metadata' property. In OData, the value of the '__metadata' property must have at most one '{0}' property." A string like "Multiple '{0}' properties were found in an entity reference link wrapper object. In OData, an entity reference link wrapper must have at most one '{0}' property." A string like "Multiple '{0}' properties were found in an error or inner error object. In OData, an error or inner error must have at most one '{0}' property." A string like "The '{0}' property in a feed wrapper has a null value. In OData, the '{0}' property must have a non-null value." A string like "The '{0}' property in the value of the '__mediaresource' property has a null value. In OData, the '{0}' property must have a string value." A string like "The '{0}' property for a collection of entity reference links has a null value. In OData, the '{0}' property must have a non-null string value." A string like "The '{0}' property in a collection of entity reference links has a null value. In OData, the '{0}' property must have a non-null string value." A string like "The '{0}' property in the value of the '__metadata' property has a null value. In OData, the '{0}' property must have a non-null string value." A string like "A relative URI value '{0}' was specified in the payload, but no base URI for it was found. If the payload contains a relative URI a base URI must be specified on the reader settings." A string like "A node of type '{0}' was read from the JSON reader when trying to read the items of a collection; however, a 'StartArray' node was expected." A string like "A node of type '{0}' was read from the JSON reader when trying to read the start of an entity reference link. In OData, entity reference links must be objects." A string like "A node of type '{0}' was read from the JSON reader when trying to read the entries of a feed; however, a 'StartArray' node was expected." A string like "Multiple '{0}' properties were found for a stream reference value. In OData, a stream reference value can only contain one '{0}' property." A string like "Found a node of type '{1}' when starting to read the property value, however a node of type 'StartObject' was expected. The '{0}' property of an entry metadata must have an object value. " A string like "A node of type '{0}' was read from the JSON reader when trying to read the contents of a resource reference navigation link; however, a 'StartObject' node or 'PrimitiveValue' node with null value was expected." A string like "A node of type '{0}' was read from the JSON reader when trying to read the contents of an entity set reference navigation link; however, a 'StartObject' or 'StartArray' node was expected." A string like "An annotation group member with an empty name was found for the annotation group with name '{0}'. In OData, annotation group members must have a non-null, non-empty names." A string like "An annotation group member with name '{0}' in annotation group '{1}' has an invalid value. In OData, annotation group member values must be strings; values of type '{2}' are not supported." A string like "An annotation group member with name '{0}' in annotation group '{1}' is not an annotation. In OData, JSON Light annotation groups can only contain instance and property annotations." A string like "Multiple annotation groups with name '{0}' were found in the payload. In OData, annotation group names must be unique for the entire payload and the same annotation group instance has to be used for its declaration and when referencing it." A string like "Multiple operations have the same 'Metadata' property value of '{0}'. The 'Target' property value of these operations must be set to a non-null value." A string like "Multiple operations have the same 'Metadata' property value of '{0}' and the same 'Target' property value of '{1}'. When multiple operations have the same 'Metadata' property value, their 'Target' property values must be unique." A string like "A property with name '{0}' was found in the error object when reading a top-level error. In OData, a top-level error object must have exactly one property with name 'error'." A string like "A property with name '{0}' was found in the message value of a top-level error. In OData, the message value of a top-level error value can only have properties with name 'lang' or 'value'." A string like "A property with name '{0}' was found in the error value of a top-level error. In OData, a top-level error value can only have properties with name 'code', 'message', or 'innererror'." A string like "A node of type '{0}' was read from the JSON reader when trying to read a value of a property; however, a 'PrimitiveValue' or 'StartObject' node was expected." A string like "Multiple '{0}' properties were found in a collection. In OData, a collection can only have one '{0}' property." A string like "The 'type' property value '{0}' is not a valid type name. The value of the 'type' property must be a non-empty string." A string like "The 'type' property value '{0}' is not valid. The type name can only be specified when the primitive property is a spatial property. Please make sure that the type name is either a spatial type name or a non-primitive type name." A string like "Found a node of type '{0}' when starting to read the property value; however, a node of type 'StartObject' was expected. The '__metadata' property must have an object value." A string like "ODataCollectionReader.ReadAsync or ODataCollectionReader.Read was called in an invalid state. No further calls can be made to the reader in state '{0}'." A string like "The current state of the collection reader is '{0}'; however, the expected item type of a collection reader can only be set in state '{1}'." A string like "ODataParameterReader.ReadAsync or ODataParameterReader.Read was called in an invalid state. No further calls can be made to the reader in state '{0}'." A string like "ODataParameterReader.ReadAsync or ODataParameterReader.Read was called in the '{0}' state. '{1}' must be called in this state, and the created reader must be in the 'Completed' state before the next ODataParameterReader.ReadAsync or ODataParameterReader.Read can be called." A string like "ODataParameterReader.ReadAsync or ODataParameterReader.Read was called in the '{0}' state and '{1}' was called but the created reader is not in the 'Completed' state. The created reader must be in 'Completed' state before the next ODataParameterReader.ReadAsync or ODataParameterReader.Read can be called." A string like "You cannot call the method '{0}' in state '{1}'." A string like "The '{0}' method has already been called for the parameter '{1}'. Only one create reader method call is allowed for each entry, feed, or collection parameter." A string like "The parameter '{0}' in the request payload is not a valid parameter for the function import '{1}'." A string like "Multiple parameters with the name '{0}' were found in the request payload." A string like "One or more parameters of the function import '{0}' are missing from the request payload. The missing parameters are: {1}." A string like "The parameter '{0}' is of the '{1}' primitive type, which is not supported." A string like "The parameter '{0}' is of an unsupported type kind '{1}'. The supported type kinds are Primitive, Complex, Primitive Collection and Complex Collection." A string like "When trying to read a null collection parameter value in verbose JSON, a node of type '{0}' with the value '{1}' was read from the JSON reader; however, a 'null' value was expected." A string like "The parameter '{0}' is specified with a null value. For JSON, the '{0}' argument to the 'CreateParameterReader' method cannot be null." A string like "A node of type '{0}' was read from the JSON reader when trying to read the start of a collection with a collection wrapper object. A 'StartObject' node was expected." A string like "When trying to read the start of a collection without a collection wrapper object, a node of type '{0}' was read from the JSON reader; however, a 'StartArray' node was expected." A string like "The 'Metadata' property on an {0} must be set to a non-null value." A string like "The 'Target' property on an {0} must be set to a non-null value." A string like "The '{0}' enumerable contains a null item. This enumerable cannot contain null items." A string like "The property '{0}' does not exist on type '{1}'. Make sure to only use property names that are defined by the type." A string like "A primitive value was specified; however, a value of the non-primitive type '{0}' was expected." A string like "Unsupported primitive type. A primitive type could not be determined for an instance of type '{0}'." A string like "An incompatible primitive type '{0}[Nullable={1}]' was found for an item that was expected to be of type '{2}[Nullable={3}]'." A string like "Type name '{0}' is an invalid collection type name; a collection type name must be in the format 'Collection(<itemTypeName>)'." A string like "A type named '{0}' could not be resolved by the model. When a model is available, each type name must resolve to a valid type." A string like "Incompatible type kinds were found. The type '{0}' was found to be of kind '{2}' instead of the expected kind '{1}'." A string like "Incompatible type kinds were found. Found type kind '{0}' instead of the expected kind '{1}'." A string like "A value with type '{0}' was found, which is of kind '{1}'. Value can only be of kind 'Primitive', 'Complex' or 'Collection'." A string like "The property '{0}' cannot be a stream property because it is not of kind EdmPrimitiveTypeKind.Stream." A string like "The ETag value '{0}' is not valid. An ETag value must be a quoted string or 'W/' followed by a quoted string. Refer to HTTP RFC 2616 for details on valid ETag formats." A string like "A value was encountered that has a type name that is incompatible with the metadata. The value specified its type as '{0}', but the type specified in the metadata is '{1}'." A string like "An open collection property '{0}' was found. In OData, open collection properties are not supported." A string like "An open stream property '{0}' was found. In OData, open stream properties are not supported." A string like "An invalid collection type kind '{0}' was found. In OData, collection types must be of kind 'Collection'." A string like "An entry with type '{0}' was found with a media resource, but this entity type is not a media link entry (MLE). When the type is not an MLE entity, the entry cannot have a media resource." A string like "An entry with type '{0}' was found without a media resource, but this entity type is a media link entry (MLE). When the type is an MLE entity, the entry must have a media resource." A string like "An entry with type '{0}' was found, but it is not assignable to the expected type '{1}'. The type specified in the entry must be equal to either the expected type or a derived type." A string like "A navigation property with name '{0}' was found on type '{1}', however this property was not declared. Open navigation properties are not supported; all navigation properties must be declared in metadata." A string like "A property with name '{0}' on type '{1}' has kind '{2}', but it is expected to be of kind 'Navigation'." A string like "The boundary delimiter '{0}' is invalid. A boundary delimiter must be non-null, be non-empty, and have a maximum of {1} characters." A string like "The maximum recursion depth limit was reached. The depth of nested values in a single property cannot exceed {0}." A string like "The depth limit for entries in nested expanded navigation links was reached. The number of nested expanded entries cannot exceed {0}." A string like "A null value was found in a collection, but the expected collection item type '{0}' does not allow null values." A string like "The property name '{0}' is invalid; property names must not contain any of the reserved characters {1}." A string like "The maximum number of entity property mappings allowed on an entity type and all its base types has been exceeded. A total of {0} entity property mappings were found, but a maximum of {1} entity property mappings are allowed." A string like "Encountered a property '{0}' that was expected to be a reference to a location in the $metadata document but does not contain a '#' character or is otherwise not a valid metadata reference property. A metadata reference property must contain a '#' and be a valid absolute URI or begin with a '#' and be a valid URI fragment." A string like "A top level property with name '{0}' and a producing function import with name '{1}' is being written. If the producing function import is specified the property name must be either null or must match the function import name." A string like "A duplicate value '{0}' was detected as the name of a resource collection. Resource collections must have unique names in a given workspace." A string like "The base URI '{0}' specified in ODataMessageWriterSettings.BaseUri is invalid; it must either be null or an absolute URI." A string like "The type '{0}' of an entry in an expanded link is not compatible with the element type '{1}' of the expanded link. Entries in an expanded link must have entity types that are assignable to the element type of the expanded link." A string like "The ODataNavigationLink with the URL value '{0}' specifies in its 'IsCollection' property that its payload is a feed, but the actual payload is an entry." A string like "The ODataNavigationLink with the URL value '{0}' specifies in its 'IsCollection' property that its payload is an entry, but the actual payload is a feed." A string like "The ODataNavigationLink with the URL value '{0}' specifies in its 'IsCollection' property that its payload is a feed, but the metadata declares it as an entry." A string like "The ODataNavigationLink with the URL value '{0}' specifies in its 'IsCollection' property that its payload is an entry, but the metadata declares it as feed." A string like "The content of the ODataNavigationLink with the URL value '{0}' is a feed, but the metadata declares it as an entry." A string like "The content of the ODataNavigationLink with the URL value '{0}' is an entry, but the metadata declares it as feed." A string like "The collection property '{0}' has a null value, which is not allowed. In OData, collection properties cannot have null values." A string like "The property '{0}[Nullable=False]' of type '{1}' has a null value, which is not allowed." A string like "The stream property '{0}' has a null value, which is not allowed. In OData, stream properties cannot have null values." A string like "An action or a function with metadata '{0}' was detected when writing a request; actions and functions are only supported in responses." A string like "An association link with name '{0}' could not be written to the request payload. Association links are only supported in responses." A string like "An stream property with name '{0}' could not be written to the request payload. Stream properties are only supported in responses." A string like "The metadata document URI '{0}' specified in ODataMessageWriterSettings.MetadataDocumentUri is invalid; it must be either null or an absolute URI." A string like "The ODataNavigationLink.Url property on an navigation link '{0}' is null. The ODataNavigationLink.Url property must be set to a non-null value that represents the entity or entities the navigation link references." A string like "The ODataNavigationLink.IsCollection property on a navigation link '{0}' is null. The ODataNavigationLink.IsCollection property must be specified when writing a link into a request." A string like "An XML node of type '{0}' was found in a string value. An element with a string value can only contain Text, CDATA, SignificantWhitespace, Whitespace or Comment nodes." A string like "An XML node of type '{0}' was found at the root level. The root level of an OData payload must contain a single XML element and no text nodes." A string like "The element '{0}' has non-empty content, an attribute with name {{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:null, and value of 'true'. When an element has an attribute with name {{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:null and value 'true', it must be empty." A string like "The metadata document could not be read from the message content.\r\n{0}" A string like "The metadata document could not be written as specified.\r\n{0}" A string like "The value of the '{0}' attribute on type '{1}' is not allowed. Supported values are 'true' or 'false'." A string like "The value of the '{0}' attribute on property '{1}' of type '{2}' is not allowed. Supported values are 'true' or 'false'." A string like "The value of the '{0}' attribute on type '{1}' is not allowed. Supported values are 'text', 'html' and 'xhtml'." A string like "The value of the '{0}' attribute on property '{1}' of type '{2}' is not allowed. Supported values are 'text', 'html' and 'xhtml'." A string like "The required '{0}' attribute is missing on type '{1}'." A string like "The required '{0}' attribute is missing on property '{1}' on type '{2}'." A string like "The '{0}' attribute is not allowed on type '{1}' when a property is mapped to a non-AtomPub element." A string like "The '{0}' attribute is not allowed on property '{1}' on type '{2}' when the property is mapped to a non-AtomPub element." A string like "The '{0}' attribute is not allowed on type '{1}' when a property is mapped to an AtomPub element." A string like "The '{0}' attribute is not allowed on property '{1}' on type '{2}' when the property is mapped to an AtomPub element." A string like "The value for the annotation with namespace '{0}' and local name '{1}' is of type '{2}'. Only string values are supported." A string like "A navigation link '{0}' was found with type 'feed', but its matching navigation property is of kind EntityReference. A navigation link with type 'feed' must match a navigation property of kind EntitySetReference." A string like "A relative URI value '{0}' was specified in the payload, but no base URI for it was found. When the payload contains a relative URI, there must be an xml:base in the payload or else a base URI must specified in the reader settings." A string like "A child element of the collection was named '{0}'. Each child element representing the value of the collection must be named 'element', and each must belong to the '{1}' namespace." A string like "A root element in namespace '{0}' was found. A top-level collection must have the root element in the '{1}' namespace." A string like "A root element in namespace '{0}' was found. A top-level property payload must have the root element in the '{1}' namespace." A string like "The element '{0}' has non-empty content, an attribute with name {{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:null, and value of 'true'. When an element has an attribute with name {{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:null and a value of 'true', it must be empty." A string like "The element with name '{0}' is not a valid collection item. The name of the collection item element must be 'element' and it must belong to the '{1}' namespace." A string like "The property '{0}' on type '{1}' was found in the {{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:properties element, and it is declared as a navigation property. Navigation properties in ATOM must be represented as {{http://www.w3.org/2005/Atom}}:link elements." A string like "Writing null value for the instance annotation '{0}' is not allowed. The instance annotation '{0}' has the expected type '{1}[Nullable=False]'." A string like "A node of type '{0}' was found where a node of type 'Element' was expected. An entry must be represented as an XML element." A string like "An element with name '{0}' in namespace '{1}' was found; however, an entry was expected. An entry must be represented as an {{http://www.w3.org/2005/Atom}}:entry element." A string like "The 'type' attribute on element {{http://www.w3.org/2005/Atom}}:content is either missing or has an invalid value '{0}'. Only 'application/xml' and 'application/atom+xml' are supported as the value of the 'type' attribute on the {{http://www.w3.org/2005/Atom}}:content element." A string like "An XML node '{0}' was found in the {{http://www.w3.org/2005/Atom}}:content element. The only valid child nodes of the {{http://www.w3.org/2005/Atom}}:content element are insignificant nodes and the {{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:properties element." A string like "An element with name '{0}' in namespace '{1}' was found; however, a feed was expected. A feed must be represented as a {{http://www.w3.org/2005/Atom}}:feed element." A string like "An element with name '{0}' in namespace 'http://www.w3.org/2005/Atom' was found inside the {{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:inline element. Only 'entry' and 'feed' elements from the 'http://www.w3.org/2005/Atom' namespace, or elements from other namespaces are allowed inside the {{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:inline element." A string like "Another expanded '{0}' was found in {{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:inline, but it already contains an expanded feed or entry. Only one expanded feed or expanded entry is allowed in the {{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:inline element." A string like "Multiple edit links were found for the stream property '{0}'. Only one edit link is allowed for a given stream property." A string like "Multiple read links were found for the stream property '{0}'. Only one read link is allowed for a given stream property." A string like "Multiple content type values were found for the stream property '{0}'. When a stream property is represented as two {{http://www.w3.org/2005/Atom}}:link elements that both have the 'type' attribute, then both values must be the same." A string like "Found a stream property '{0}', but there is already another property with the same name on the entity. The stream property name cannot conflict with the name of another property." A string like "The 'metadata' attribute on the {{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:{0} element is missing." A string like "The 'target' attribute on the {{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:{0} element is missing." A string like "Multiple 'link' elements with a relation of '{0}' were found on an entry. In OData, at most one link element with a '{0}' relation is allowed." A string like "Multiple 'link' elements with a relation of '{0}' were found on a feed. In OData, at most one link element with a '{0}' relation is allowed." A string like "Duplicate '{{{0}}}:{1}' elements were found. In OData, at most one '{{{0}}}:{1}' element is allowed." A string like "The value of the 'type' attribute on the association link for the navigation property '{0}' is invalid. The value of the 'type' attribute on an association link must be 'application/xml'. " A string like "Encountered an 'annotation' element with a 'target' attribute value of '{0}' and a term name of '{1}'. When an 'annotation' element occurs as a direct child of an 'entry' or 'feed' element, it must have either no 'target' attribute or a 'target' attribute with a value of '.'." A string like "A root element with name '{0}' was found in namespace '{1}'. The root element of a service document must be named 'service' and it must belong to the 'http://www.w3.org/2007/app' namespace." A string like "An element with name '{0}' was found in namespace 'http://www.w3.org/2007/app'. With the exception of extension elements, a service document can contain only a single {{http://www.w3.org/2007/app}}:workspace element." A string like "An element with name '{0}' was found in namespace 'http://www.w3.org/2007/app'. A workspace element can only contain the {{http://www.w3.org/2005/Atom}}:title element, extension elements, and the {{http://www.w3.org/2007/app}}:collection element." A string like "An element with name '{0}' was fond in namespace 'http://www.w3.org/2007/app'. A {{http://www.w3.org/2007/app}}:collection element can only contain the {{http://www.w3.org/2005/Atom}}:title element, extension elements, and the {{http://www.w3.org/2007/app}}:accept or {{http://www.w3.org/2007/app}}:categories element." A string like "The type attribute with value '{0}' was fond on an Atom text construct element with local name '{1}'. The type attribute must be missing or else it must have a value 'text', 'html' or 'xhtml'." A string like "Multiple '{0}' elements were found inside a '{1}' element. A '{1}' element cannot contain more than one '{0}' element." A string like "The element with name '{0}' in namespace '{1}' is not a valid root element for an error. The root element of an error must be 'error' and must belong to the 'http://schemas.microsoft.com/ado/2007/08/dataservices/metadata' namespace." A string like "Multiple '{{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:{0}' elements were found in a top-level error value. In OData, the value of a top-level error value can have no more than one '{{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:{0}' element" A string like "Multiple '{{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:{0}' elements were found in an inner error value. In OData, the value of an inner error value can have at most one '{{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}}:{0}' element." A string like "The element with name '{0}' in namespace '{1}' is not a valid start element for an entity reference link. The start element of an entity reference link must be 'uri' and it must belong to the 'http://schemas.microsoft.com/ado/2007/08/dataservices' namespace." A string like "The element with name '{0}' in namespace '{1}' is not a valid start element for entity reference links. The start element of entity reference links must be 'links' and it must belong to the 'http://schemas.microsoft.com/ado/2007/08/dataservices' namespace." A string like "Multiple '{{{0}}}:{1}' elements were found in an entity reference links element. In OData, the value of an entity reference links element must have at most one '{{{0}}}:{1}' element." A string like "The entity property mapping with source path '{0}' uses an open complex or collection property. Open complex or collection properties cannot be read through entity property mapping." A string like "Multiple values were found for the non-collection property '{0}' on type '{1}' that is mapped to '{2}'." A string like "A 'fixed' attribute with the value '{0}' was found on a 'categories' element. When the 'fixed' attribute is not missing, it must have a value of either 'yes' or 'no'." A string like "Multiple 'title' elements were found inside a '{0}' element. A '{0}' element can only contain a single {{http://www.w3.org/2005/Atom}}:title element." A string like "The specified resource collection name '{0}' does not match the specified title '{1}' as set in AtomResourceCollectionMetadata.Title." A string like "An invalid item type kind '{0}' was found. Items in a collection can only be of type kind 'Primitive' or 'Complex', but not of type kind '{0}'." A string like "An item of type kind '{0}' was found in a collection that otherwise has items of type kind '{1}'. In OData, all items in a collection must have the same type kind." A string like "An item with type name '{0}' was found in a collection of items with type name '{1}'. In OData, all items in a collection must have the same type name." A string like "An entry of type '{0}' was found in a feed that otherwise has entries of type '{1}'. In OData, all entries in a feed must have a common base type." A string like "The maximum number of bytes allowed to be read from the stream has been exceeded. After the last read operation, a total of {0} bytes has been read from the stream; however a maximum of {1} bytes is allowed." A string like "The custom type resolver set in ODataMessageWriterSettings.EnableWcfDataServicesClientBehavior returned 'null' when resolving the type '{0}'. When a custom type resolver is specified, it cannot return null." A string like "The type '{0}' was found for a primitive value. In OData, the type '{0}' is not a supported primitive type." A string like "Incompatible primitive type kinds were found. The type '{0}' was found to be of kind '{2}' instead of the expected kind '{1}'." A string like "Incompatible primitive type kinds were found. Found type kind '{0}' instead of the expected kind '{1}'." A string like "A value with primitive kind '{0}' cannot be converted into a primitive object value." A string like "The property '{0}' is not declared on the non-open type '{1}'." A string like "Multiple annotations for term '{0}' were found on element '{1}'. Only a single annotation for the term '{0}' can be specified." A string like "Multiple annotations for term '{0}' with qualifier '{1}' were found on element '{2}'. Only a single annotation for the term '{0}' with the qualifier '{1}' can be specified." A string like "An annotation for term '{0}' with an invalid qualifier '{1}' was found on element '{2}'. Only a single annotation for the term '{0}' without any qualifier can be specified." A string like "An annotation for term '{0}' with an invalid qualifier '{1}' was found on element '{2}'. A single annotation for the term '{0}' with the qualifier '{3}' is expected." A string like "The entity set '{0}' doesn't have the 'OData.EntitySetUri' annotation. This annotation is required." A string like "The entity set '{0}' has a URI '{1}' which has no path segments. An entity set URI suffix cannot be appended to a URI without path segments." A string like "Neither the 'OData.EntityInstanceUri' nor the 'OData.EntitySetUriSuffix' annotation was found for entity set '{0}'. One of these annotations is required." A string like "The entity type '{0}' is not compatible with the base type '{1}' of the provided entity set '{2}'. When an entity type is specified for an OData feed or entry reader, it has to be the same or a subtype of the base type of the specified entity set." A string like "The parameter '{0}' is specified with a null value. For JSON Light, the '{0}' argument to the 'CreateParameterReader' method cannot be null." A string like "The required property '{0}' was not found at the expected position in the payload. Instead, found a property named '{1}'." A string like "The annotation '{0}' was targeting the instance annotation '{1}'. Only the '{2}' annotation is allowed to target an instance annotation." A string like "The annotation '{0}' is found targeting the instance annotation '{1}'. However the value for the instance annotation '{1}' is not found immediately after. In JSON Light, an annotation targeting an instance annotation must be immediately followed by the value of the targeted instance annotation." A string like "The base type '{0}' of the entity set specified for writing a JSON Light payload is not assignable from the specified entity type '{1}'. When an entity type is specified it has to be the same or derived from the base type of the entity set." A string like "The annotation '{0}' was found. This annotation is either not recognized or not expected at the current position." A string like "The property '{0}' has a property annotation '{1}'. This annotation is either not recognized or not expected at the current position." A string like "An OData property annotation '{0}' was found. This property annotation is either not recognized or not expected at the current position." A string like "A property with name '{0}' was found. This property is either not recognized or not expected at the current position." A string like "A top-level property with name '{0}' was found in the payload; however, property and collection payloads must always have a top-level property with name '{1}'." A string like "The 'odata.type' instance annotation value '{0}' is not a valid type name. The value of the 'odata.type' instance annotation must be a non-empty string." A string like "The 'odata.type' instance annotation value '{0}' is not valid. The type name can only be specified when the primitive property is a spatial property. Please make sure that the type name is either a spatial type name or a non-primitive type name." A string like "One or more property annotations for property '{0}' were found in the top-level property or collection payload without the property to annotate. Top-level property and collection payloads must contain a single property, with optional annotations for this property." A string like "One or more property annotations for property '{0}' were found in the complex value without the property to annotate. Complex values must only contain property annotations for existing properties." A string like "A complex property with an '{0}' property annotation was found. Complex properties must not have the '{0}' property annotation, instead the '{0}' should be specified as an instance annotation in the complex value." A string like "The property '{0}' has a property annotation '{1}'. Primitive, complex, collection or open properties can only have an 'odata.type' property annotation." A string like "The property with name '{0}' was found after the data property with name '{1}'. If a type is specified for a data property, it must appear before the data property." A string like "An '{0}' annotation was read inside a JSON object representing a primitive value; type annotations for primitive values have to be property annotations of the owning property." A string like "A top-level property with an invalid primitive null value was found. In OData, top-level properties with null value have to be serialized as JSON object with an '{0}' annotation that has the value '{1}'." A string like "Encountered a metadata reference property '{0}' in a scope other than an entry. In OData, a property name with a '#' character indicates a reference into the metadata and is only supported for describing operations bound to an entry." A string like "The property with name '{0}' was found in a null payload. In OData, no properties or OData annotations can appear in a null payload." A string like "The metadata URI '{0}' references the null value; however the payload is not a null value payload." A string like "The '{0}' instance or property annotation has a null value. In OData, the '{0}' instance or property annotation must have a non-null string value." A string like "An '{0}' annotation was found with an invalid value. In OData, the only valid value for the '{0}' annotation is '{1}'." A string like "The InstanceAnnotations collection has more than one instance annotations with the name '{0}'. All instance annotation names must be unique within the collection." A string like "The metadata URI '{0}' was found in a service document payload. Metadata URIs for service documents must not have a fragment." A string like "The metadata URI '{0}' is not valid for the expected payload kind '{1}'." A string like "The metadata URI '{0}' references the entity set or type '{1}'. However, no entity set or type with name '{1}' is declared in the metadata." A string like "The metadata URI '{0}' references the property '{1}' on type '{2}'. However, type '{2}' does not declare a property with name '{1}' and is not an open type. " A string like "The metadata URI '{0}' ends with the suffix '{1}'. However, a metadata URI containing an entity set and type cast must either have no suffix or end in '{2}'." A string like "The metadata URI '{0}' includes a type cast to entity type '{1}'. However, no entity type '{1}' is declared in the metadata." A string like "The metadata URI '{0}' includes a type cast to entity type '{1}'. However, the entity type '{1}' is not a subtype of the entity type '{2}' which is the base type of the entity set with name '{3}'." A string like "The metadata URI '{0}' ends with the suffix '{1}'. However, a metadata URI for an entity reference link containing a collection navigation property must end in '{2}'." A string like "The metadata URI '{0}' references the property with name '{1}'. However, a metadata URI for an entity reference link must reference a navigation property which '{1}' is not." A string like "The metadata URI '{0}' references the singleton navigation property with name '{1}'. However, when a metadata URI for an entity reference link ends in '{2}' it must reference a collection navigation property." A string like "The metadata URI '{0}' has a fragment with '{1}' parts. However, valid metadata URIs must have at most '{2}' parts." A string like "The metadata URI '{0}' references the entity set or function import '{1}'. However, no entity set or function import with name '{1}' is declared in the metadata." A string like "A '$select' query option was found for the payload kind '{0}'. In OData, a '$select' query option is only supported for payload kinds 'Entry' and 'Feed'." A string like "The metadata URI '{0}' has $links in an invalid position. The Metadata URI must specify the entity set, optional type segment, $links, a navigation property." A string like "The metadata URI '{0}' references the entity set '{1}'. However, no entity set name '{1}' is declared in the metadata." A string like "The '{0}' instance annotation in an entry object is preceded by a property or property annotation. In OData, the '{0}' instance annotation must be before any property or property annotation in an entry object." A string like "A node of type '{0}' was read from the JSON reader when trying to read the start of the content of a feed; however, a node of type 'StartArray' was expected." A string like "Did not find the required '{0}' property for the expected feed." A string like "A node of type '{0}' was read from the JSON reader when trying to read the entries of a feed; however, a node of type 'StartObject' or 'EndArray' was expected." A string like "A property annotation for a property with name '{0}' was found when reading a top-level feed. No property annotations, only instance annotations are allowed when reading top-level feeds." A string like "A property with name '{0}' was found when reading a top-level feed. No properties other than the feed property with name '{1}' are allowed." A string like "A property '{0}' which only has property annotations in the payload but no property value is declared to be of type '{1}'. In OData, only navigation properties and named streams can be represented as properties without values." A string like "A property '{0}' which only has property annotations in the payload but no property value is an open property. In OData, open property must be represented as a property with value." A string like "The stream property '{0}' has a property annotation '{1}'. Stream property can only have the 'odata.mediaEditLink', 'odata.mediaReadLink', 'odata.mediaETag' and 'odata.mediaContentType' property annotations." A string like "A stream property '{0}' has a value in the payload. In OData, stream property must not have a value, it must only use property annotations." A string like "The navigation property '{0}' has a property annotation '{1}'. Deferred navigation links can only have the 'odata.navigationLinkUrl' and 'odata.associationLinkUrl' property annotations." A string like "A node of type '{0}' was read from the JSON reader when trying to read the contents of a resource reference navigation link; however, a 'StartObject' node or 'PrimitiveValue' node with null value was expected." A string like "A node of type '{0}' was read from the JSON reader when trying to read the contents of an entity set reference navigation link; however, a 'StartArray' node was expected." A string like "The navigation property '{0}' has a property annotation '{1}'. Expanded entry navigation links can only have the 'odata.navigationLinkUrl' and 'odata.associationLinkUrl' property annotations." A string like "The navigation property '{0}' has a property annotation '{1}'. Expanded feed navigation links can only have the 'odata.navigationLinkUrl', 'odata.associationLinkUrl' and 'odata.nextLink' property annotations." A string like "Multiple property annotations '{0}' were found when reading the expanded navigation link '{1}'. Only a single property annotation '{0}' can be specified for an expanded navigation link." A string like "A property annotation '{0}' was found after the property '{1}' it is annotating. Only the 'odata.nextLink' property annotation can be used after the property it is annotating." A string like "An annotation group member with an empty name was found for the annotation group with name '{0}'. In OData, annotation group members must have a non-null, non-empty names." A string like "An annotation group member with name '{0}' in annotation group '{1}' has an invalid value. In OData, annotation group member values must be strings; values of type '{2}' are not supported." A string like "The navigation property '{0}' has a property annotation '{1}'. Navigation links in request payloads can only have the '{2}' property annotation." A string like "The resource reference navigation property '{0}' has a property annotation '{1}' with an array value. Resource reference navigation properties can only have a property annotation '{1}' with a string value." A string like "The resource set reference navigation property '{0}' has a property annotation '{1}' with a string value. Resource set reference navigation properties can only have a property annotation '{1}' with an array value." A string like "The value of '{0}' property annotation is an empty array. The '{0}' property annotation must have a non-empty array as its value." A string like "The navigation property '{0}' has no expanded value and no '{1}' property annotation. Navigation property in request without expanded value must have the '{1}' property annotation." A string like "The resource reference navigation property '{0}' has both the '{1}' property annotation as well as a value. Resource reference navigation properties can have either '{1}' property annotations or values, but not both." A string like "An undeclared property '{0}' which only has property annotations in the payload but no property value was found in the payload. In OData, only declared navigation properties and declared named streams can be represented as properties without values." A string like "The metadata URI '{0}' references the function import '{1}'. However, no or multiple function imports with name '{1}' are declared in the metadata." A string like "Encountered the function import '{0}' which can not be resolved to an ODataAction or ODataFunction." A string like "Multiple '{0}' properties were found for an operation '{1}'. In OData, an operation can have at most one '{0}' property." A string like "Multiple 'target' properties were found for an operation '{0}'. In OData, an operation must have exactly one 'target' property." A string like "Multiple target bindings encountered for the operation '{0}' but the 'target' property was not found in an operation value. To differentiate between multiple target bindings, each operation value must have exactly one 'target' property." A string like "The '{0}' property of the operation '{1}' cannot have a null value." A string like "Encountered a reference into metadata '{0}' which does not refer to the known metadata url '{1}'. Open metadata reference properties are not supported." A string like "A relative URI value '{0}' was specified in the payload, but the {1} annotation is missing from the payload. The payload must only contain absolute URIs or the {1} annotation must be on the payload." A string like "The {0} annotation is missing from the payload." A string like "When trying to read the start of a collection, the expected collection property with name '{0}' was not found." A string like "A node of type '{0}' was read from the JSON reader when trying to read the items of a collection; however, a 'StartArray' node was expected." A string like "A property or annotation for a property with name '{0}' or an instance annotation with name '{0}' was found after reading the items of a top-level collection. No additional properties or annotations are allowed after the collection property." A string like "An 'odata.type' annotation with value '{0}' was found for a top-level collection payload; however, top-level collections must specify a collection type." A string like "A node of type '{0}' was read from the JSON reader when trying to read the start of an entity reference link. In JSON Light, entity reference links must be objects." A string like "A property annotation with name '{0}' was detected when reading an entity reference link; entity reference links do not support property annotations." A string like "An instance annotation with name '{0}' or a property annotation for the property with name '{0}' was found when reading an entity reference link. No OData property or instance annotations are allowed when reading entity reference links." A string like "A property with name '{0}' was found when reading an entity reference link. No properties other than the entity reference link property with name '{1}' are allowed." A string like "The required property '{0}' for an entity reference link was not found." A string like "Multiple '{0}' properties were found in an entity reference link object; however, a single '{0}' property was expected." A string like "The '{0}' property of an entity reference link object cannot have a null value." A string like "A property with name '{0}' or a property annotation for a property with name '{0}' was found when trying to read a collection of entity reference links; however, a property with name '{1}' was expected." A string like "A property annotation for a property with name '{0}' was found when reading an entity reference links payload. No property annotations, only instance annotations are allowed when reading entity reference links." A string like "Did not find the required '{0}' property for an entity reference links payload." A string like "The '{0}' property of an operation '{1}' in '{2}' cannot have a null value." A string like "Found a node of type '{1}' when starting to read the '{0}' operations value, however a node of type 'StartObject' was expected. The '{0}' operations value must have an object value. " A string like "The '{0}' operations object can only have one property for each distinct metadata; however, a duplicate of metadata '{1}' was found." A string like "Found a node of type '{1}' when starting to read the value of the '{0}' property in '{2}'; however, a node of type 'StartArray' was expected. The value of each property in the '{2}' operations object must be an array value." A string like "Found a node of type '{1}' when reading an item in the array value of the '{0}' property; however, a node of type 'StartObject' was expected. The items in the array value for the '{0}' property in the '{2}' operations object must be object values." A string like "Multiple '{0}' properties were found for an operation '{1}' in '{2}'. In OData, an operation can have at most one '{0}' property." A string like "Multiple 'target' properties were found for an operation '{0}' in '{1}'. In OData, an operation must have exactly one 'target' property." A string like "The 'target' property was not found in an operation '{0}' in '{1}'. In OData, an operation must have exactly one 'target' property." A string like "Multiple '{0}' properties were found in a service document. In OData, a service document must have exactly one '{0}' property." A string like "Multiple '{0}' properties were found in a resource collection in a service document. In OData, a resource collection must have exactly one '{0}' property." A string like "No '{0}' property was found for a service document. In OData, a service document must have exactly one '{0}' property." A string like "Encountered a resource collection without a '{0}' property. In service documents, resource collections must contain a '{0}' property." A string like "An unrecognized property annotation '{0}' was found in a '{1}' object in a service document. OData property annotations are not allowed in workspaces." A string like "An unrecognized instance annotation '{0}' was found in a '{1}' object in a service document. OData instance annotations are not allowed in workspaces." A string like "An unrecognized property annotation '{0}' was found in a resource collection in a service document. OData property annotations are not allowed in resource collections." A string like "An unrecognized instance annotation '{0}' was found in a resource collection in a service document. OData instance annotations are not allowed in resource collections." A string like "Encountered unexpected property '{0}' in a resource collection. In service documents, resource collections may only have '{1}' and '{2}' properties." A string like "Encountered unexpected property '{0}' in a service document. The top level object of a service document may only have a '{1}' property." A string like "Encountered a property annotation for the property '{0}' which wasn't immediately followed by the property. Property annotations must occur directly before the property being annotated." A string like "One or more property annotations for property '{0}' were found in a parameter payload without the property to annotate. Parameter payloads must not contain property annotations for properties that are not in the payload." A string like "The parameter '{0}' is of the '{1}' primitive type, which is not supported in JSON Light." A string like "When trying to read a null collection parameter value in JSON Light, a node of type '{0}' with the value '{1}' was read from the JSON reader; however, a primitive 'null' value was expected." A string like "The parameter '{0}' is of an unsupported type kind '{1}'. Only primitive, complex, primitive collection and complex collection types are supported." A string like "An OData property annotation '{0}' was found in an error payload; however, error payloads do not support OData property annotations." A string like "An OData instance annotation '{0}' was found in an error payload; however, error payloads do not support OData instance annotations." A string like "One or more property annotations for property '{0}' were found in an error payload without the property to annotate. Error payloads must not contain property annotations for properties that are not in the payload." A string like "A property with name '{0}' was found in the error value of a top-level error. In OData, a top-level error value can only have properties with name 'code', 'message', or 'innererror', or custom instance annotations." A string like "The entity type '{0}' has no key properties. Entity types must define at least one key property." A string like "The key property '{0}' on type '{1}' has a null value. Key properties must not have null values." A string like "An ODataEntry of type '{0}' is found without key properties. When writing without a user model, each entry must contain at least one property whose 'ODataProperty.SerializationInfo.PropertyKind' set to 'ODataPropertyKind.Key'. When writing with a user model, the entity type '{0}' defined in the model must define at least one key property." A string like "The key property '{0}' on type '{1}' has a null value. Key properties must not have null values." A string like "The property '{0}' on type '{1}' is a non-primitive value. All key and etag properties must be of primitive types." A string like "The primitive property '{0}' on type '{1}' has a value which is not a primitive value." A string like "The entity instance value of type '{0}' doesn't have a value for property '{1}'. To compute an entity's metadata, its key and concurrency-token property values must be provided." A string like "Encountered an annotation group containing a property '{0}' which is not a valid annotation name." A string like "Encountered an annotation group named '{0}' containing a property '{1}' which is not a valid annotation name." A string like "Encountered a reference to an annotation group named '{0}', but no annotation group with that name has been defined at this point in the payload." A string like "Encountered multiple annotation group named '{0}'. Annotation group names must be unique within a payload." A string like "An ODataPrimitiveValue was instantiated with a value of type '{0}'. ODataPrimitiveValue can only wrap values which can be represented as primitive EDM types." A string like "'{0}' is an invalid instance annotation name. An instance annotation name must contain a period that is not at the start or end of the name." A string like "'{0}' is a reserved instance annotation name because it starts with '{1}'. Reserved names are not allowed for custom instance annotations." A string like "'{0}' is an invalid instance annotation name." A string like "The value of the 'type' attribute on an 'annotation' element was '{0}', which is incompatible with the '{1}' attribute." A string like "Encountered the attribute '{0}' on a non-empty 'annotation' element. If attribute value notation is used to specify the annotation's value, then there can be no body to the element." A string like "The pattern '{0}' is not a valid pattern to match an annotation. It must contain at least one '.' separating the namespace and the name segments of an annotation." A string like "The pattern '{0}' is not a valid pattern to match an annotation. It must not contain a namespace or name segment that is empty." A string like "The pattern '{0}' is not a supported pattern to match an annotation. It must not contain '*' as part of a segment." A string like "The pattern '{0}' is not a supported pattern to match an annotation. '*' must be the last segment of the pattern." A string like "A service operation with name '{0}' could not be found in the provided model." A string like "Found multiple service operations with name '{0}' in a single entity container. Service operation overloads are not supported." A string like "An entity set with name '{0}' could not be found in the provided model." A string like "Only operands with primitive types are allowed in binary operators. Found operand types '{0}' and '{1}'." A string like "Both operands of a binary operators must have the same type. Found different operand types '{0}' and '{1}'." A string like "The specified URI '{0}' must be absolute." A string like "Invalid value '{0}' for $skip query option found. The $skip query option requires a non-negative integer value." A string like "Invalid value '{0}' for $top query option found. The $top query option requires a non-negative integer value." A string like "Invalid value '{0}' for $inlinecount query option found. Valid values are '{1}'." A string like "Query option '{0}' was specified more than once, but it must be specified at most once." A string like "The CLR literal of type '{0}' is not supported to be written as a Uri part." A string like "QueryToken '{0}' is not supported to be written as a Uri part." A string like "Expression expected at position {0} in '{1}'." A string like "'(' expected at position {0} in '{1}'." A string like "')' or ',' expected at position {0} in '{1}'." A string like "')' or operator expected at position {0} in '{1}'." A string like "Expecting a Star token but got: '{0}'." A string like "The range variable '{0}' has already been declared." A string like "The URI '{0}' is not valid because it is not based on '{1}'." A string like "The key value '{0}' was not recognized as a valid literal." A string like "Unable to find property '{2}' on the instance type '{1}' of the structured type '{0}'." A string like "An unsupported query token kind '{0}' was found." A string like "Could not find an entity set for root segment '{0}'." A string like "Type '{0}' is not an entity type. Key value can only be applied to an entity type." A string like "Could not find a property named '{1}' on type '{0}'." A string like "Property '{0}' is not declared on type '{1}' or is not a key property. Only key properties can be used in key lookups." A string like "An unnamed key value was used in a key lookup on a type '{0}' which has more than one key property. Unnamed key value can only be used on a type with one key property." A string like "A key property '{0}' was found twice in a key lookup. Each key property can be specified just once in a key lookup." A string like "A key lookup on type '{0}' didn't specify values for all key properties. All key properties must be specified in a key lookup." A string like "Expression of type '{0}' cannot be converted to type '{1}'." A string like "Segment '{0}' which is a service operation returning non-queryable result has a key lookup. Only service operations returning queryable results can have a key lookup applied to them." A string like "Service operation '{0}' of kind '{1}' returns type '{2}' which is not an entity type. Service operations of kind QueryWithMultipleResults or QueryWithSingleResult can only return entity types." A string like "Service operation '{0}' is missing the required parameter '{1}'." A string like "The parameter '{0}' with value '{1}' for the service operation '{2}' is not a valid literal of type '{3}'." A string like "The MultiValue property '{0}' cannot be used in $filter or $orderby query expression. MultiValue properties are not supported with these query options." A string like "The operand for a binary operator '{0}' is not a single value. Binary operators require both operands to be single values." A string like "The operand for a unary operator '{0}' is not a single value. Unary operators require the operand to be a single value." A string like "The parent value for a property access of a property '{0}' is not a single value. Property access can only be applied to a single value." A string like "A binary operator with incompatible types was detected. Found operand types '{0}' and '{1}' for operator kind '{2}'." A string like "A unary operator with an incompatible type was detected. Found operand type '{0}' for operator kind '{1}'." A string like "An unknown function with name '{0}' was found. This may also be a key lookup on a navigation property, which is not allowed." A string like "The argument for an invocation of a function with name '{0}' is not a single value. All arguments for this function must be single values." A string like "No function signature for the function with name '{0}' matches the specified arguments. The function signatures considered are: {1}." A string like "The system query option '{0}' is not supported." A string like "A token of kind '{0}' was bound to the value null; this is invalid. A query token must always be bound to a non-null query node." A string like "The value '{0}' is not a non-negative integer value. In OData, the $top query option must specify a non-negative integer value." A string like "The value '{0}' is not a non-negative integer value. In OData, the $skip query option must specify a non-negative integer value." A string like " The service operation '{0}' does not have an associated result kind. Without a result kind, a service operation cannot be bound." A string like "Encountered invalid type cast. '{0}' is not assignable from '{1}'." A string like "The parameter '{0}' is not in scope." A string like "The Cast or IsOf expression has an invalid number of operands: number of operands is '{0}' and it should be 1 or 2." A string like "The geo.length function has an invalid number of operands: number of operands is '{0}' and it should be 1." A string like "The geo.intersects function has an invalid number of operands: number of operands is '{0}' and it should be 2." A string like "The operator '{0}' is not supported in this release. " A string like "'{0}' queries are not supported in this release." A string like "Can only bind segments that are Navigation, Structural, Complex, or Collections. We found a segment '{0}' that isn't any of those. Please revise the query." A string like "The '{0}' option cannot be applied to the query path. '{0}' can only be applied to a collection of entities. " A string like "Cannot find a suitable overload for function '{0}' that takes '{1}' arguments." A string like "Cannot compose function '{0}' to a parent doesn't represent a single value." A string like "Found a function import for '{0}', but it is invalid for Filter/Orderby." A string like "Found a built-in function '{0}' with a parent token. Built-in functions cannot have parent tokens. " A string like "Found a function '{0}' on an open property. Functions on open properties are not supported." A string like "'{0}' is not a valid InlineCount option." A string like "The child type '{0}' in a cast was not an entity type. Casts can only be performed on entity types." A string like "Invalid content-id '{0}' for batch reference segment." A string like "Property '{0}' is of an unrecognized EdmPropertyKind." A string like "Cant find the property '{0}' in the model." A string like "Only properties specified in $expand can be traversed in $select query options. Selected item was '{0}'." A string like "Found a type segment '{0}' that isn't an entity type." A string like "Trying to follow type segments on a segment that isn't a type. Segment was '{0}'." A string like "Found a system token, '{0}', while parsing a select clause." A string like "Found an invalid segment, '{0}', while parsing a select clause." A string like "The type '{0}' is not defined in the model." A string like "Property '{0}' on type '{1}' is not a navigation property. Only navigation properties can be expanded." A string like "An entity type '{0}' was given to NonEntityParameterQueryNode. Use EntityParameterQueryNode instead." A string like "An EntityCollectionServiceOperationQueryNode was provided with a IEdmFunctionImport with return type '{0}', which is not an entity type." A string like "A node of this kind requires the associated property to be a structural, non-collection type, but property '{0}' is not structural." A string like "A node of this kind requires the associated property to be a structural, non-collection type, but property '{0}' is a collection." A string like "A node of this kind requires the associated property to be a structural, collection type, but property '{0}' is not a collection." A string like "Term '{0}' is not valid in a $select or $expand expression." A string like "Functions are not allowed in a $select expression, but one was found in the expression '{0}'." A string like "Top option must be an integer, its set to '{0}' instead." A string like "Skip option must be an integer, its set to '{0}' instead." A string like "Found system token '{0}' in select or expand clause '{1}'." A string like "The URI '{0}' must be an absolute URI." A string like "The result of parsing $expand contained at least {0} items, but the maximum allowed is {1}." A string like "The result of parsing $expand was at least {0} items deep, but the maximum allowed is {1}." A string like "The service operation '{0}' is missing a ODataServiceOperationResultKind attribute." A string like "Multiple Service Operations with the name '{0}' were found. There can only be one Service Operation with a given name in a model." A string like "The request URI is not valid. $links cannot be applied to the segment '{0}' since $links can only follow an entity segment." A string like "The type '{0}' does not inherit from and is not a base type of '{1}'. The type of '{2}' must be related to the Type of the EntitySet." A string like "Found a segment of type '{0} in an expand path, but only NavigationProperty and Type segments are allowed." A string like "Found a segment of type '{0} in a select path, but only TypeSegment, NavigationPropertySegment, PropertySegment, OperationSegment or OpenPropertySegments are allowed." A string like "The Entity Set of the operation '{0}' is not specified. This is most likely an error in the IEdmModel." A string like "The target Entity Set of Navigation Property '{0}' could not be found. This is most likely an error in the IEdmModel." A string like "The function overloads matching '{0}' are invalid. This is most likely an error in the IEdmModel." A string like "Unable to resolve function overloads to a single function. There was more than one function in the model with name '{0}' and parameter names '{1}'." A string like "Multiple action overloads were found with the same binding parameter for '{0}'." A string like "The request URI is not valid. The segment '{0}' is not valid. Since the uri contains the '{1}' segment, there must be only one segment specified after that." A string like "The request URI is not valid. The segment '{0}' must be the last segment in the URI because it is one of the following: $batch, $value, $metadata, a collection property, a named media resource, a service operation that does not return a value, or a service action." A string like "The request URI is not valid. The segment '{0}' must refer to a navigation property since the previous segment identifier is '{1}'." A string like "The request URI is not valid. There must a segment specified after the '{0}' segment and the segment must refer to a entity resource." A string like "The request URI is not valid, $count cannot be applied to the segment '{0}' since $count can only follow a resource segment." A string like "The request URI is not valid, since the segment '{0}' refers to a singleton, and the segment '{1}' can only follow a resource collection." A string like "The request URI is not valid. Since the segment '{0}' refers to a collection, this must be the last segment in the request URI. All intermediate segments must refer to a single resource." A string like "The request URI is not valid. The segment '{0}' cannot include key predicates, however it may end with empty parenthesis." A string like "The segment '{1}' in the request URI is not valid. The segment '{0}' refers to a primitive property, function, or service operation, so the only supported value from the next segment is '$value'." A string like "The type '{0}' specified in the URI is neither a base type nor a sub-type of the previously-specified type '{1}'." A string like "Complex types can not be marked as 'Open'. Error occurred for type '{0}'." A string like "Open navigation properties are not supported on OpenTypes. Property name: '{0}'." A string like "The response requires that version {0} of the protocol be used, but the MaxProtocolVersion of the data service is set to {1}." A string like "The number of keys specified in the URI does not match number of key properties for the resource '{0}'." A string like "Resource not found for the segment '{0}'." A string like "Batched service action '{0}' cannot be invoked because it was bound to an entity created in the same changeset." A string like "Resource Not Found - '{0}' refers to a service operation or function which does not allow further composition." A string like "An internal error '{0}' occurred." A string like "A non-negative integer value was expected, but the value '{0}' is not a valid non-negative integer." A string like "A positive integer value was expected, but the value '{0}' is not a valid positive integer." A string like "A positive long value was expected; however, the value '{0}' is not a valid positive long value." A string like "An identifier was expected at position {0}." A string like "There is an unterminated string literal at position {0} in '{1}'." A string like "Syntax error: character '{0}' is not valid at position {1} in '{2}'." A string like "Syntax error at position {0} in '{1}'." A string like "There is an unterminated literal at position {0} in '{1}'." A string like "A digit was expected at position {0} in '{1}'." A string like "Unrecognized '{0}' literal '{1}' at '{2}' in '{3}'." A string like "Invalid JSON. An unexpected comma was found in scope '{0}'. A comma is only valid between properties of an object or between elements of an array." A string like "Invalid JSON. Unexpected token '{0}'." A string like "Invalid JSON. A colon character ':' is expected after the property name '{0}', but none was found." A string like "Invalid JSON. An unrecognized escape sequence '{0}' was found in a JSON string value." A string like "Invalid JSON. The value '{0}' is not a valid number." A string like "Invalid JSON. A comma character ',' was expected in scope '{0}'. Every two elements in an array and properties of an object must be separated by commas." A string like "Invalid JSON. The property name '{0}' is not valid. The name of a property cannot be empty." A string like "An unexpected '{1}' node was found when reading from the JSON reader. A '{0}' node was expected." A string like "Cannot read the value '{0}' for the property '{1}' as a quoted JSON string value." A string like "Cannot read the value '{0}' as a quoted JSON string value." A string like "Cannot read the value '{0}' as a double numeric value." A string like "Value cannot be empty." A string like "An asynchronous operation was requested on an IODataRequestMessage instance. For asynchronous operations to succeed, the request message instance must implement IODataRequestMessageAsync." A string like "The IODataRequestMessageAsync.GetStreamAsync method returned null. An asynchronous method that returns a task can never return null." A string like "The IODataRequestMessage.GetStream or IODataRequestMessageAsync.GetStreamAsync method returned a null stream value. The message can never return a null stream." A string like "An asynchronous operation was requested on an IODataResponseMessage instance. For asynchronous operations to succeed, the response message instance must implement IODataResponseMessageAsync." A string like "The IODataResponseMessageAsync.GetStreamAsync method returned null. An asynchronous method that returns a task can never return null." A string like "The IODataResponseMessage.GetStream or IODataResponseMessageAsync.GetStreamAsync method returned a null stream value. The message can never return a null stream." A string like "A writer or stream has been disposed with data still in the buffer. You must call Flush or FlushAsync before calling Dispose when some data has already been written." A string like "Only a top-level feed can have the 'ODataFeed.Count' property value specified. Expanded links do not support inline counts." A string like "The ODataFeed.Count must be null for request payloads. Inline counts are only supported in responses." A string like "Cannot write a top-level feed with a writer that was created to write a top-level entry." A string like "Cannot write a top-level entry with a writer that was created to write a top-level feed." A string like "A synchronous operation was called on an asynchronous writer. Calls on a writer instance must be either all synchronous or all asynchronous." A string like "An asynchronous operation was called on a synchronous writer. Calls on a writer instance must be either all synchronous or all asynchronous." A string like "An entity reference link was written without a surrounding navigation link. The WriteEntityReferenceLink or WriteEntityReferenceLinkAsync methods can only be used when writing the content of a navigation link." A string like "An entity reference link was written into a response. The WriteEntityReferenceLink or WriteEntityReferenceLinkAsync methods can only be used when writing a request." A string like "A deferred link was written into a request. In requests, each navigation link must have a feed, entry, or entity reference link written into it." A string like "More than one item was written into the content of a navigation link. In OData, a navigation link can only contain more than one item in its content when it is a navigation link, ODataNavigationLink.IsCollection set to true, and the writer is writing a request." A string like "The ODataFeed.DeltaLink property must be null for expanded feeds. Delta link is not supported on expanded feeds." A string like "An error occurred while processing the OData message." A string like "An error was read from the payload. See the 'Error' property for more details." A string like "An error occurred while parsing part of the URI." A string like "Version 3.0 of the OData protocol is not supported by this library. Please use version 1.0 or 2.0 instead." A string like "An ODataCollectionStart with a 'null' name was passed to the ATOM collection writer. In ATOM, an ODataCollectionStart cannot have a 'null' name." A string like "The startEntryXmlCustomizationCallback set in ODataMessageWriterSettings.EnableWcfDataServicesClientBehavior can never return the same XmlWriter instance that was provided in its parameter." A string like "A null value was detected in the 'AtomEntryMetadata.Authors' enumerable; the author metadata does not support null values." A string like "A null value was detected in the 'AtomEntryMetadata.Categories' enumerable; the category metadata does not support null values." A string like "A null value was detected in the 'AtomEntryMetadata.Contributors' enumerable; the contributor metadata does not support null values." A string like "A null value was detected in the 'AtomEntryMetadata.Links' enumerable; the link metadata does not support null values." A string like "The 'AtomLinkMetadata.Href' property is required and cannot be null." A string like "The 'AtomCategoryMetadata.Term' property is required and cannot be null." A string like "The 'AtomCategoriesMetadata.Href' property can only be set when no other property is set. When the 'Href' property is not null, the categories cannot have any 'Fixed' or 'Scheme' values, and the 'Categories' collection must be null or empty." A string like "The ODataMessageWriter has already been used to write a message payload. An ODataMessageWriter can only be used once to write a payload for a given message." A string like "Top-level entity reference link collection payloads are not allowed in requests." A string like "An error cannot be written to a request payload. Errors are only supported in responses." A string like "A service document cannot be written to request payloads. Service documents are only supported in responses." A string like "A metadata document cannot be written to request payloads. Metadata documents are only supported in responses." A string like "Cannot write the value 'null' in raw format." A string like "The WriteError method or the WriteErrorAsync method on the ODataMessageWriter has already been called to write an error payload. Only a single error payload can be written with each ODataMessageWriter instance." A string like "The WriteError method or the WriteErrorAsync method on ODataMessageWriter cannot be called after the WriteValue method or the WriteValueAsync method is called. In OData, writing an in-stream error for raw values is not supported." A string like "No model was specified in the ODataMessageWriterSettings; a model has to be provided in the ODataMessageWriterSettings in order to write a metadata document." A string like "No model was specified in the ODataMessageWriterSettings; a model has to be provided in the ODataMessageWriterSettings when CreateODataParameterWriter is called with a non-null function import." A string like "Both startEntryXmlCustomizationCallback and endEntryXmlCustomizationCallback must be either null or non-null." A string like "A synchronous operation was called on an asynchronous collection writer. All calls on a collection writer instance must be either synchronous or asynchronous." A string like "An asynchronous operation was called on a synchronous collection writer. All calls on a collection writer instance must be either synchronous or asynchronous." A string like "An ODataCollectionStart with an empty name was passed to the collection writer. An ODataCollectionStart cannot have an empty name." A string like "Writing an in-stream error is not supported when writing a parameter payload." A string like "CreateParameterWriter was called on a response message. A parameter payload is only allowed in a request message." A string like "A synchronous operation was called on an asynchronous parameter writer. All calls on a parameter writer instance must be either synchronous or asynchronous." A string like "An asynchronous operation was called on a synchronous parameter writer. All calls on a parameter writer instance must be either synchronous or asynchronous." A string like "WriteStart can only be called once, and it must be called before writing anything else." A string like "WriteValue and CreateCollectionWriter can only be called after WriteStart and before WriteEnd; they cannot be called until the previously created sub-writer is completed." A string like "WriteEnd can only be called after WriteStart and after the previously created sub-writer has completed." A string like "The writer is in either the 'Error' or 'Completed' state. No further writes can be performed on this writer." A string like "ODataBatchWriter.Flush or ODataBatchWriter.FlushAsync was called while a stream being used to write operation content, obtained from the operation message by using GetStream or GetStreamAsync, was still active. This is not allowed. ODataBatchWriter.Flush or ODataBatchWriter.FlushAsync can only be called when an active stream for the operation content does not exist." A string like "An invalid method call on ODataBatchWriter was detected. You cannot call ODataBatchWriter.WriteEndBatch with an active change set; you must first call ODataBatchWriter.WriteEndChangeset." A string like "An invalid method call on ODataBatchWriter was detected. You cannot call ODataBatchWriter.WriteStartChangeset with an active change set; you must first call ODataBatchWriter.WriteEndChangeset." A string like "An invalid method call on ODataBatchWriter was detected. You cannot call ODataBatchWriter.WriteEndChangeset without an active change set; you must first call ODataBatchWriter.WriteStartChangeset." A string like "An invalid method call on ODataBatchWriter was detected. After creating the writer, the only valid methods are ODataBatchWriter.WriteStartBatch and ODataBatchWriter.FlushAsync." A string like "An invalid method call on ODataBatchWriter was detected. After calling WriteStartBatch, the only valid methods on ODataBatchWriter are WriteStartChangeset, CreateOperationRequestMessage, CreateOperationResponseMessage, WriteEndBatch, and FlushAsync." A string like "An invalid method call on ODataBatchWriter was detected. After calling WriteStartChangeset, the only valid methods on ODataBatchWriter are CreateOperationRequestMessage, CreateOperationResponseMessage, WriteEndChangeset, and FlushAsync." A string like "An invalid method call on ODataBatchWriter was detected. After calling CreateOperationRequestMessage or CreateOperationResponseMessage, the only valid methods on ODataBatchWriter are WriteStartChangeset, WriteEndChangeset, WriteEndBatch, and FlushAsync." A string like "An invalid method call on ODataBatchWriter was detected. You cannot use the batch writer while another writer is writing the content of an operation. Dispose the stream for the operation before continuing to use the ODataBatchWriter." A string like "An invalid method call on ODataBatchWriter was detected. After writing the content of an operation, the only valid methods on ODataBatchWriter are CreateOperationRequestMessage, CreateOperationResponseMessage, WriteStartChangeset, WriteEndChangeset, WriteEndBatch and FlushAsync." A string like "An invalid method call on ODataBatchWriter was detected. After calling WriteEndChangeset, the only valid methods on ODataBatchWriter are CreateOperationRequestMessage, CreateOperationResponseMessage, WriteStartChangeset, WriteEndBatch, and FlushAsync." A string like "An invalid method call on ODataBatchWriter was detected. You can only call ODataBatchWriter.FlushAsync after ODataBatchWriter.WriteEndBatch has been called." A string like "When writing a batch response, you cannot create a batch operation request message." A string like "When writing a batch request, you cannot create a batch operation response message." A string like "A synchronous operation was called on an asynchronous batch writer. Calls on a batch writer instance must be either all synchronous or all asynchronous." A string like "An asynchronous operation was called on a synchronous batch writer. Calls on a batch writer instance must be either all synchronous or all asynchronous." A string like "The WriteError and WriteErrorAsync methods on ODataMessageWriter cannot be called when a batch is being written by using ODataBatchWriter. In OData, writing an in-stream error for a batch payload is not supported." A string like "An attempt to change the properties of the message or to retrieve the payload stream for the message has failed. Either the payload stream has already been requested or the processing of the message has been completed. In both cases, no more changes can be made to the message." A string like "Cannot access a closed stream." A string like "When reading a batch response, you cannot create a batch operation request message." A string like "When reading a batch request, you cannot create a batch operation response message." A string like "A request message for the operation has already been created. You cannot create a request message for the same operation multiple times." A string like "A response message for the operation has already been created. You cannot create a response message for the same operation multiple times." A string like "You cannot use a batch reader while the stream for the content of an operation is still active. You must first dispose the operation stream before further calls to the batch reader are made." A string like "A synchronous operation was called on an asynchronous batch reader. Calls on a batch reader instance must be either all synchronous or all asynchronous." A string like "An asynchronous operation was called on a synchronous batch reader. Calls on a batch reader instance must be either all synchronous or all asynchronous." A string like "An operation was detected, but no message was created for it. You must create a message for every operation found in a batch or change set." A string like "The 'Content-Type' header is missing. The 'Content-Type' header must be specified for each MIME part of a batch message." A string like "Nested change sets in a batch payload are not supported." A string like "Encountered an unexpected end of input while reading the batch payload." A string like "The MIME type is missing a parameter name for a parameter definition." A string like "The value for the Content-Type header is missing." A string like "An IEdmTypeReference must be provided with a matching IEdmModel. No model was provided." A string like "A built-in model was detected when trying to save annotations. Annotations can only be saved to a user-defined model." A string like "An invalid enum value was specified for the version number." A string like "The MIME type annotation must not have a null value." A string like "The HTTP method annotation must not have a null value." A string like "The 'IsAlwaysBindable' annotation cannot be set to 'true' for a non-bindable function import." A string like "The 'IsAlwaysBindable' annotation was found with a 'true' value in a non-bindable function import. The 'IsAlwaysBindable' annotation cannot be 'true' for a non-bindable function import." A string like "No URI value was found for an entity reference link. A single URI value was expected." A string like "A value without a type name was found and no expected type is available. When the model is specified, each value in the payload must have a type which can be either specified in the payload, explicitly by the caller or implicitly inferred from the parent value." A string like "An entry without a type name was found, but no expected type was specified. To allow entries without type information, the expected type must also be specified when the model is specified." A string like "The ODataMessageReaderSettings.UndeclaredPropertyBehaviorKinds is not set to ODataUndeclaredPropertyBehaviorKinds.None. When reading request payloads, the ODataMessageReaderSettings.UndeclaredPropertyBehaviorKinds property must be set to ODataUndeclaredPropertyBehaviorKinds.None; other values are not supported." A string like "The ODataMessageReader has already been used to read a message payload. An ODataMessageReader can only be used once to read a payload for a given message." A string like "A top-level error cannot be read from request payloads. Top-level errors are only supported in responses." A string like "A service document cannot be read from request payloads. Service documents are only supported in responses." A string like "A metadata document cannot be read from request payloads. Metadata documents are only supported in responses." A string like "The expected type for property reading is of entity collection kind. Top-level properties can only be of primitive, complex, primitive collection or complex collection kind." A string like "The expected type for property reading is of entity kind. Top-level properties cannot be of entity type." A string like "The expected type for property reading is Edm.Stream. Top-level properties cannot be of stream type." A string like "A missing or empty content type header was found when trying to read a message. The content type header is required." A string like "Top-level entity reference link collection payloads are not allowed in requests." A string like "GetFormat was called before reading was started. GetFormat can only be called after a read method was called or a reader was created." A string like "DetectPayloadKind or DetectPayloadKindAsync was called more than once; DetectPayloadKind or DetectPayloadKindAsync can only be called once." A string like "Payload kind detection has not completed. Read or create methods cannot be called on the ODataMessageReader before payload kind detection is complete." A string like "The ODataMessageReader is using the server behavior for WCF Data Services, as specified in its settings. Payload kind detection is not supported when using the WCF Data services server behavior." A string like "A parameter payload cannot be read from a response payload. Parameter payloads are only supported in requests." A string like "An attempt was made to modify the message. The message cannot be modified." A string like "A synchronous operation was called on an asynchronous reader. Calls on a reader instance must be either all synchronous or all asynchronous." A string like "An asynchronous operation was called on a synchronous reader. Calls on a reader instance must be either all synchronous or all asynchronous." A string like "Parsing JSON feeds or entries without model is not supported." A string like "Primitive values of type 'Edm.Decimal' and 'Edm.Int64' must be quoted in the payload. Make sure the value is quoted." A string like "The top-level data wrapper object does not have a property 'd'. In JSON responses, a top-level data wrapper object with a 'd' property is expected." A string like "Multiple 'd' properties were found in the top-level data wrapper object. In JSON, the top-level data wrapper object is expected to have a single 'd' property." A string like "Did not find the required 'results' property on the object wrapping a collection in protocol version 2.0 and greater." A string like "Multiple 'results' properties were found for a collection. In OData, a collection cannot have more than one 'results' property." A string like "Did not find the required 'results' property on the object wrapping an entity reference link in protocol version 2.0 and greater." A string like "Multiple 'uri' properties were found in an entity reference link object; however, a single 'uri' property was expected." A string like "The 'uri' property of an entity reference link object cannot have a null value." A string like "Did not find the required 'results' property on the object wrapping a feed." A string like "Multiple '__metadata' properties were found in an entry. In OData, an entry can only contain one '__metadata' property." A string like "Multiple 'uri' properties were found in the deferred link object; however, a single 'uri' property was expected." A string like "The 'uri' property of a deferred link object cannot have a null value." A string like "The 'uri' property was not found in a deferred link object. A single 'uri' property is expected." A string like "A 'PrimitiveValue' node with non-null value was found when trying to read the value of a navigation property; however, a 'StartArray' node, a 'StartObject' node, or a 'PrimitiveValue' node with null value was expected." A string like "Found multiple 'results' properties in the object wrapping a feed in protocol version 2.0 and greater. In OData, the feed wrapping object can only contain a single 'results' property." A string like "Could not parse an expected stream reference value. In OData, a stream reference value must be a JSON object with a single property called '__mediaresource'." A string like "A stream property was found in a JSON request payload. Stream properties are only supported in responses." A string like "An annotation group with a null or empty name was found for an entry. In OData, annotation groups must have a non-null, non-empty name that is unique across the entire payload." A string like "A JSON Light annotation group was detected when writing a request payload. In OData, JSON Light annotation groups are only supported in responses." A string like "Parsing a JSON top-level property without a model is not supported." A string like "Either zero or more than one top-level properties were found. A top-level property must be represented as a JSON object with exactly one property." A string like "Multiple '__metadata' properties were found in a complex value. In OData, a complex value can only have one '__metadata' property." A string like "A collection was found without the 'results' property. In OData, each collection must be represented as a JSON object with a property 'results'." A string like "Multiple 'EntitySets' properties were found for a service document. In OData, a service document must have exactly one 'EntitySets' property." A string like "No 'EntitySets' property was found for a service document. In OData, a service document must have exactly one 'EntitySets' property." A string like "A synchronous operation was called on an asynchronous collection reader. All calls on a collection reader instance must be either synchronous or asynchronous." A string like "An asynchronous operation was called on a synchronous collection reader. All calls on a collection reader instance must be either synchronous or asynchronous." A string like "A synchronous operation was called on an asynchronous parameter reader. All calls on a parameter reader instance must be either synchronous or asynchronous." A string like "An asynchronous operation was called on a synchronous parameter reader. All calls on a parameter reader instance must be either synchronous or asynchronous." A string like "Parsing JSON collections without model is not supported." A string like "The 'Name' property on an ODataAssociationLink must be set to a non-empty string." A string like "The 'Url' property on an ODataAssociationLink must be set to a non-null value that represents the association or associations the link references." A string like "An empty type name was found; the name of a type cannot be an empty string." A string like "The 'Url' property on a resource collection must be set to a non-null value." A string like "A resource collection without a Url was detected; a resource collection must have a non-null Url value." A string like "A null value was detected in the items of a collection property value; non-streaming instances of collection types do not support null values as items." A string like "The 'Name' property on an ODataNavigationLink must be set to a non-empty string." A string like "Nested collection instances are not allowed." A string like "An ODataStreamReferenceValue item was found in a collection property value, which is not allowed. Collection properties can only have primitive and complex values as items." A string like "A null value was detected when enumerating the collections in a workspace. Workspace collections cannot be null." A string like "An ODataFeed without an ID was detected; in OData, a Feed must have a non-null, non-empty ID value." A string like "The 'ODataEntry.Properties' enumerable contains a null item. This enumerable cannot contain null items." A string like "An ODataProperty instance without a name was detected; an ODataProperty must have a non-null, non-empty name." A string like "No TypeName was found for an ODataComplexValue of an open property, ODataEntry or custom instance annotation, even though metadata was specified. If a model is passed to the writer, each complex value on an open property, entry or custom instance annotation must have a type name." A string like "The ODataFeed.NextPageLink must be null for request payloads. A next link is only supported in responses." A string like "A default stream ODataStreamReferenceValue was detected with a 'ContentType' property but without a ReadLink value. In OData, a default stream must either have both a content type and a read link, or neither of them." A string like "A default stream ODataStreamReferenceValue was detected with a 'ReadLink' property but without a ContentType value. In OData, a default stream must either have both a content type and a read link, or neither of them." A string like "An ODataStreamReferenceValue was detected with null values for both EditLink and ReadLink. In OData, a stream resource must have at least an edit link or a read link." A string like "An ODataStreamReferenceValue was detected with an ETag but without an edit link. In OData, a stream resource must have an edit link to have an ETag." A string like "An ODataStreamReferenceValue was detected with an empty string 'ContentType' property. In OData, a stream resource must either have a non-empty content type or it must be null." A string like "An entry with an empty ID value was detected. In OData, an entry must either a non-empty ID value or no ID value." A string like "An ODataEntityReferenceLink with a null Url was detected; an ODataEntityReferenceLink must have a non-null Url." A string like "The 'ODataEntityReferenceLinks.Links' enumerable contains a null item. This enumerable cannot contain null items." A string like "A JSON Padding function was specified on ODataMessageWriterSettings when trying to write a request message. JSON Padding is only for writing responses." A string like "An Atom entry can be either a regular entry or a media link entry (MLE). This means that there cannot be data in both the {http://www.w3.org/2005/Atom}:content element, which indicates a regular entry, and the {http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}:properties element, which indicates an MLE. " A string like "An expanded feed was found in a navigation link of type entry; however, only an expanded entry can occur in a navigation link of type entry." A string like "An expanded entry was found in a navigation link of type feed; however, only an expanded feed can occur in a navigation link of type feed." A string like "A deferred entry was found in a navigation link of type feed; however, only a deferred feed can occur in a navigation link of type feed." A string like "The entryXmlCustomizationCallback set in ODataMessageReaderSettings.EnableWcfDataServicesClientBehavior can never return the same XmlReader instance that was provided in its parameter." A string like "Found a value with type name ''. Type name cannot be an empty string." A string like "The root element of the collection cannot contain the {http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}:type attribute or the {http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}:null attribute." A string like "Only collection properties that contain primitive types or complex types are supported." A string like "The element {http://www.w3.org/2005/Atom}:content has non-empty content, and it has an attribute with name 'src'. When the {http://www.w3.org/2005/Atom}:content element has the 'src' attribute, it cannot also have content." A string like "Multiple {http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}:inline elements were found in a {http://www.w3.org/2005/Atom}:link element. Each {http://www.w3.org/2005/Atom}:link element can contain no more than one {http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}:inline child element." A string like "Found a stream property link with empty name. In OData, a stream property must have a non-empty name." A string like "Encountered an 'annotation' element inside a nested feed. Annotations are not currently supported for nested feeds." A string like "Encountered a 'Delta Link' element inside a nested feed. Delta Links are not supported for nested feeds." A string like "The service document is missing the 'workspace' element. A service document must contain a single {http://www.w3.org/2007/app}:workspace element." A string like "Multiple 'workspace' elements were found inside the service document. A service document must contain a single {http://www.w3.org/2007/app}:workspace element." A string like "Multiple 'accept' elements were found inside a 'collection' element. A 'collection' element can only contain a single {http://www.w3.org/2007/app}:accept element." A string like "The ODataMessageReaderSettings used to read a JSON Light payload do not specify a metadata document URI. For reading JSON Light payloads a metadata document URI is required." A string like "ODataMessageReader.DetectPayloadKind was called for a request payload. Payload kind detection is only supported for responses in JSON Light." A string like "Parsing JSON Light feeds or entries in requests without entity set is not supported. Pass in the entity set as a parameter to ODataMessageReader.CreateODataEntryReader or ODataMessageReader.CreateODataFeedReader method." A string like "An attempt to read a collection request payload without specifying a producing function import or collection item type was detected. When reading collection payloads in requests, a producing function import or expected item type has to be provided." A string like "An attempt to read an entity reference link in a request without specifying a navigation property was detected. When reading entity reference link payloads in requests, a navigation property has to be provided." A string like "Parsing JSON Light payloads without a model is only supported for error payloads." A string like "The 'BaseUri' on the 'ODataMessageReaderSettings' must be set to a non-null absolute URI to read JSON Light format." A string like "An attempt to read a collection request payload without specifying a collection item type was detected. When reading collection payloads in requests, an expected item type has to be provided." A string like "In JSON the item type must be specified when creating a collection writer." A string like "The required instance annotation 'odata.metadata' was not found at the beginning of a response payload." A string like "An attempt to write an entity reference link inside a navigation link after a feed has been written inside the same navigation link in a request was detected. In JSON Light requests, all entity reference links inside a navigation link have to be written before all feeds inside the same navigation link." A string like "The ODataFeed.InstanceAnnotations collection must be empty for expanded feeds. Custom instance annotations are not supported on expanded feeds." A string like "The ODataMessageWriterSettings used to write a JSON Light payload do not specify a metadata document URI. For writing JSON Light payloads a metadata document URI is required." A string like "Neither an expected type nor a type name in the OData object model was provided for a complex value. When writing a request payload, either an expected type or a type name has to be specified." A string like "Neither an expected type nor a type name in the OData object model was provided for a collection property. When writing a request payload, either an expected type or a type name has to be specified." A string like "Found a resource collection without a name. When writing a service document in JSON Light, the Name property of a resource collection must not be null or empty." A string like "When writing a JSON response, a user model must be specified and the entity set and entity type must be passed to the ODataMessageWriter.CreateEntryWriter method or the ODataFeedAndEntrySerializationInfo must be set on the ODataEntry or ODataFeed that is being writen." A string like "When writing a JSON response in full metadata mode with ODataMessageWriterSettings.AutoComputePayloadMetadataInJson set to true, a user model must be specified and the entity set and entity type must be passed to the ODataMessageWriter.CreateEntryWriter method or the ODataEntry.TypeName must be set." A string like "The collection type name for the top level collection is unknown. When writing a JSON response, the item type must be passed to the ODataMessageWriter.CreateCollectionWriter method or the ODataCollectionStartSerializationInfo must be set on the ODataCollectionStart." A string like "The entity set name or navigation property name for the top level entity reference link is unknown. When writing a JSON response, the entity set and navigation property must be passed to the ODataMessageWriter.WriteEntityReferenceLink method or the ODataEntityReferenceLinkSerializationInfo must be set on the ODataEntityReferenceLink." A string like "The entity set name or navigation property name for the top level entity reference link collection is unknown. When writing a JSON response, the entity set and navigation property must be passed to the ODataMessageWriter.WriteEntityReferenceLinks method or the ODataEntityReferenceLinksSerializationInfo must be set on the ODataEntityReferenceLinks." A string like "No top-level properties were found. A top-level property or collection in JSON Light must be represented as a JSON object with exactly one property which is not an annotation." A string like "The 'odata.type' instance annotation in a complex object is not the first property of the object. In OData, the 'odata.type' instance annotation must be the first property of the complex object." A string like "The value specified for the spatial property was not valid. You must specify a valid spatial value." A string like "A null metadata URI was found in the payload. Metadata URIs must not be null." A string like "No model was specified for the ODataMessageReader. A message reader requires a model for JSON Light payload to be specified in the ODataMessageReader constructor." A string like "The IODataJsonLightModelResolver or IODataJsonLightModelResolverAsync returned a null or a core model. The model resolver must return a valid user model." A string like "The 'odata.type' instance annotation in an entry object is preceded by an invalid property. In OData, the 'odata.type' instance annotation must be either the first property in the JSON object or the second if the 'odata.metadata' instance annotation is present." A string like "A property annotation was found for a top-level feed; however, top-level feeds only support instance annotations." A string like "A stream property was found in a JSON Light request payload. Stream properties are only supported in responses." A string like "A 'PrimitiveValue' node with non-null value was found when trying to read the value of a navigation property; however, a 'StartArray' node, a 'StartObject' node, or a 'PrimitiveValue' node with null value was expected." A string like "An annotation group with a null or empty name was found for an entry. In OData, annotation groups must have a non-null, non-empty name that is unique across the whole payload." A string like "A JSON Light annotation group was detected when writing a request payload. In OData, JSON Light annotation groups are only supported in responses." A string like "A metadata reference property was found in a JSON Light request payload. Metadata reference properties are only supported in responses." A string like "An annotation group was found at an unexpected position in the payload. Annotation groups must be the first property of the object they are annotating and may not be nested." A string like "Encountered an entry with a type defined in an annotation group and in the entry body. The type of an entry may only be specified once." A string like "A property annotation was found for entity reference links; however, entity reference links only support instance annotations." A string like "An OData property annotation was found for a parameter payload; however, parameter payloads do not support OData property annotations." A string like "When parsing a select clause a '*' segment was found before last segment of a property path. In OData, a '*' segment can only appear as last segment of a property path." A string like "When parsing a select clause a '*' segment was found immediately after a type segment in a property path. In OData, a '*' segment cannot appear following a type segment." A string like "Encountered an annotation group declaration for which there was no 'name' property. All annotation group declarations must specify a non-empty name in the 'name' property." A string like "Encountered multiple 'name' properties within a single annotation group declaration. An annotation group must contain exactly one 'name' property." A string like "Cannot create an ODataPrimitiveValue from null; use ODataNullValue instead." A string like "An InstanceAnnotationCollection was set on an object other than ODataError. Currently, instance annotations are only supported on ODataError." A string like "The value of an instance annotation cannot be of type ODataStreamReferenceValue." A string like "A type name was not provided for an instance of ODataComplexValue." A string like "A type name was not provided for an instance of ODataCollectionValue." A string like "Encountered an 'annotation' element without a 'term' attribute. All 'annotation' elements must have a 'term' attribute." A string like "Encountered an 'annotation' element with more than one attribute from following set: 'int', 'string', 'decimal', 'float', and 'bool'. Only one such attribute may appear on an 'annotation' element." A string like "If ODataMessageWriterSettings.AutoComputePayloadMetadataInJson is set to true, the entity set must be specified when writing JSON with full metadata." A string like "Setting a metadata annotation on a primitive type is not supported." A string like "The maximum depth setting must be a number greater than zero." A string like "Recursion depth exceeded allowed limit." A string like "Invalid to redefine visitor in nested Any/All queries." A string like "Bad Request: there was an error in the query syntax." A string like "Too many segments in URI." A string like "Inner or start path segments must be navigation properties in $select." A string like "Found a non-path property in a select token." A string like "Cannot construct an ExpandItem from a navigation property whose type is not an entity." A string like "An unsupported extension query token was found." A string like "The $filter expression must evaluate to a single boolean value." A string like "The $orderby expression must evaluate to a single value of primitive type." A string like "A PropertyAccessQueryToken without a parent was encountered outside of $filter or $orderby expression. The PropertyAccessQueryToken without a parent token is only allowed inside $filter or $orderby expressions." A string like "Found a Built in function without a Function Signature." A string like "Encountered Root segment in non-root location." A string like "A segment without an associated type was given as input." A string like "Any/All may only be used following a collection." A string like "The navigation property must not be null." A string like "A navigation property can only follow single entity nodes." A string like "The Any/All query expression must evaluate to a single boolean value." A string like "Cast or IsOf Function must have a type in its arguments." A string like "The Cast and IsOf functions do not support collection arguments or types." A string like "The geo.length function was called with a non-single-value operand." A string like "The geo.length function was called with a non-LineString operand." A string like "The geo.intersects function was called with a non-single-value operand." A string like "The geo.intersects function was called with invalid arg types." A string like "Type argument with an invalid type name." A string like "Collection open properties are not supported in this release." A string like "Parameter names must be unique. There is most likely an error in the model." A string like "Found a property token that isn't a path in the select syntactic tree." A string like "Any selection that is expanded must have the same type qualifier on both selection and expansion." A string like "Cannot delete selection items from an AllSelection, please create the SelectExpandClause with a Partial Selection instead." A string like "Links segments must always be followed by a navigation property." A string like "Trying to traverse a non-normalized expand tree." A string like "Found a path within a select or expand query option that isn't ended by a non-type segment." A string like "Trying to parse a type segment path that is too long." A string like "The navigation property must have a target multiplicity of 'One' or 'ZeroOrOne' to create a SingleNavigationNode." A string like "The navigation property must have a target multiplicity of 'Many' to create a CollectionNavigationNode." A string like "Only static Entity Set reference expressions are supported currently." A string like "An instance of CollectionFunctionCallNode can only be created with a primitive or complex collection type. For functions returning a collection of entities, use EntityCollectionFunctionCallNode instead." A string like "An instance of EntityCollectionFunctionCallNode can only be created with an entity collection type. For functions returning a collection of primitive or complex values, use CollectionFunctionCallNode instead." A string like "Only call AddTerms on ExpandTermTokens that have already been expanded by ExpandTerm." A string like "Found a segment that isn't a path while parsing the path within a select or expand query option." A string like "A service root URI must be provided to the ODataUriParser in order to use this method." A string like "The limit must be greater than or equal to zero" A string like "Functions are not supported in this version. Only Actions and Service Operations are supported." A string like "$value cannot be applied to a collection." A string like "A feed may contain a next page link, a delta link or neither, but must not contain both." A string like "The last segment, and only the last segment, must be a navigation property in $expand." A string like "The last segment in a $select cannot be a TypeSegment." A string like "An operation can only be the last segment in $select." A string like "A navigation property can only be the last segment in $select." A string like "No type could be computed for this Segment since there were multiple possible operations with varying return types." A string like "The return type from the operation is not possible with the given entity set." A string like "Please construct this SingleValueFunctionCallNode using the IEnumerable<IEdmFunctionImport> overload before accessing FunctionImports." A string like "Please construct this SingleEntityFunctionCallNode using the IEnumerable<IEdmFunctionImport> overload before accessing FunctionImports." A string like "Calling the wrong overload to convert named values to type." A string like "Cannot use a non-primitive type as a parameter." A string like "Calling the wrong overload to convert positional values to type." A string like "Empty segment encountered in request URL. Please make sure that a valid request URL is specified." A string like "Bad Request - Error in query syntax." A string like "The request URI is not valid, the segment $count cannot be applied to the root of the service." A string like "$value must not be specified for spatial values." A string like "Error processing request stream. In batch mode, a resource can be cross-referenced only for bind/unbind operations. " A string like "Segments with multiple key values must specify them in 'name=value' form." A string like "Forbidden" A string like "Found an operation bound to a non-entity type." A string like "Value cannot be null or empty." A string like "Found an unbalanced bracket expression." A string like "Invalid JSON. More than one value was found at the root of the JSON content. JSON content can only have one value at the root level, which is an array, an object or a primitive value." A string like "Invalid JSON. Unexpected end of input was found in JSON content. Not all object and array scopes were closed." A string like "Invalid JSON. A token was not recognized in the JSON content." A string like "Invalid JSON. Unexpected end of input reached while processing a JSON string value." Strongly-typed and parameterized exception factory. The exception that is thrown when a null reference (Nothing in Visual Basic) is passed to a method that does not accept it as a valid argument. The exception that is thrown when the value of an argument is outside the allowable range of values as defined by the invoked method. The exception that is thrown when the author has yet to implement the logic at this point in the program. This can act as an exception based TODO tag. The exception that is thrown when an invoked method is not supported, or when there is an attempt to read, seek, or write to a stream that does not support the invoked functionality.