コード例 #1
0
        private string GetAtom(ODataOperation operation)
        {
            StringBuilder sb = new StringBuilder();
            if (operation is ODataAction)
            {
                sb.Append("<action");
            }
            else if (operation is ODataFunction)
            {
                sb.Append("<function");
            }
            else { throw new ArgumentException(); }

            sb.Append(" metadata=\"");
            sb.Append(TestUriUtils.ToEscapedUriString(operation.Metadata));
            sb.Append("\" title=\"");
            sb.Append(operation.Title);
            sb.Append("\" target=\"");
            sb.Append(operation.Target.OriginalString);
            sb.Append("\" xmlns=\"");
            sb.Append(TestAtomConstants.ODataMetadataNamespace);
            sb.Append("\" />");
            return sb.ToString();
        }
コード例 #2
0
        /// <summary>
        /// Validates an <see cref="ODataOperation"/> to ensure its target is specified and valid.
        /// </summary>
        /// <param name="operation">The operation to validate.</param>
        internal static void ValidateOperationTargetNotNull(ODataOperation operation)
        {
            Debug.Assert(operation != null, "operation != null");

            // ODataOperation must have a Target property.
            if (operation.Target == null)
            {
                throw new ODataException(Strings.ValidationUtils_ActionsAndFunctionsMustSpecifyTarget(operation.GetType().Name));
            }
        }
コード例 #3
0
        private void MakeOperationTargetRelativeFromMetadataUriIfJsonLight(ODataOperation operation)
        {
            Debug.Assert(operation != null, "operation != null");

            Uri targetLink = operation.Target;
            if (this.format == ODataFormat.Json && targetLink != null && targetLink.IsAbsoluteUri && this.metadataUri.IsBaseOf(targetLink))
            {
                operation.Target = this.metadataUri.MakeRelativeUri(targetLink);
            }
        }
コード例 #4
0
        private static void AssertEqual(ODataOperation expected, ODataOperation actual)
        {
            if (expected == null)
            {
                Assert.Null(actual);
                return;
            }

            Assert.NotNull(actual);
            AssertEqual(expected.Metadata, actual.Metadata);
            AssertEqual(expected.Target, actual.Target);
            Assert.Equal(expected.Title, actual.Title);
        }
コード例 #5
0
 /// <summary>
 /// Validates an <see cref="ODataOperation"/> to ensure it's not null.
 /// </summary>
 /// <param name="operation">The operation to ensure it's not null.</param>
 /// <param name="isAction">Whether <paramref name="operation"/> is an <see cref="ODataAction"/>.</param>
 internal static void ValidateOperationNotNull(ODataOperation operation, bool isAction)
 {
     // null action/function can not appear in the enumeration
     if (operation == null)
     {
         string enumerableName = isAction ? "ODataEntry.Actions" : "ODataEntry.Functions";
         throw new ODataException(Strings.ValidationUtils_EnumerableContainsANullItem(enumerableName));
     }
 }
コード例 #6
0
 internal static void EmitTitle(IEdmModel model, IEdmOperation operation, ODataOperation odataAction)
 {
     // The title should only be emitted in full metadata.
     OperationTitleAnnotation titleAnnotation = model.GetOperationTitleAnnotation(operation);
     if (titleAnnotation != null)
     {
         odataAction.Title = titleAnnotation.Title;
     }
     else
     {
         odataAction.Title = operation.Name;
     }
 }
 public void ShouldWriteOneActionWithTitleAndTarget()
 {
     var operations = new ODataOperation[] { new ODataAction { Metadata = new Uri("#foo", UriKind.Relative), Title = "foo", Target = new Uri("http://www.example.com/foo") } };
     const string expectedPayload = "{\"#foo\":{\"title\":\"foo\",\"target\":\"http://www.example.com/foo\"}}";
     this.WriteOperationsAndValidatePayload(operations, expectedPayload);
 }
 public void ShouldWriteAbsoluteActionTargetOnWireWhenMetadataDocumentUriIsSetButMetadataAnnotationIsNotWritten()
 {
     var operations = new ODataOperation[] { new ODataAction { Metadata = new Uri("#foo", UriKind.Relative), Target = new Uri("foo", UriKind.Relative) } };
     const string expectedPayload = "{\"#foo\":{\"target\":\"http://odata.org/test/foo\"}}";
     this.WriteOperationsAndValidatePayload(operations, expectedPayload, /*isAction*/ true, true /*setMetadataDocumentUri*/, false /*writeMetadataAnnotation*/);
 }
 public void ShouldWriteOneActionWithNoTitleNoTarget()
 {
     var operations = new ODataOperation[] { new ODataAction { Metadata = new Uri("#foo", UriKind.Relative) } };
     const string expectedPayload = "{\"#foo\":{}}";
     this.WriteOperationsAndValidatePayload(operations, expectedPayload);
 }
 public void ShouldWriteTwoActionsWithTwoBindingTargetsEach()
 {
     var operations = new ODataOperation[] { new ODataAction { Metadata = new Uri("#foo", UriKind.Relative), Title = "foo", Target = new Uri("http://www.example.com/1/foo") }, new ODataAction { Metadata = new Uri("#foo", UriKind.Relative), Target = new Uri("http://www.example.com/2/foo") }, new ODataAction { Metadata = new Uri("#baz", UriKind.Relative), Title = "baz", Target = new Uri("http://www.example.com/1/baz") }, new ODataAction { Metadata = new Uri("#baz", UriKind.Relative), Target = new Uri("http://www.example.com/2/baz") } };
     const string expectedPayload = "{\"#foo\":[{\"title\":\"foo\",\"target\":\"http://www.example.com/1/foo\"},{\"target\":\"http://www.example.com/2/foo\"}],\"#baz\":[{\"title\":\"baz\",\"target\":\"http://www.example.com/1/baz\"},{\"target\":\"http://www.example.com/2/baz\"}]}";
     this.WriteOperationsAndValidatePayload(operations, expectedPayload);
 }
 public void ShouldThrowWhenWritingRelativeActionsTargetWhenMetadataDocumentUriIsNotSet()
 {
     IEnumerable<ODataOperation> operations = new ODataOperation[] { new ODataAction { Metadata = new Uri("#foo", UriKind.Relative), Target = new Uri("foo", UriKind.Relative) } };
     Action test = () => this.WriteOperationsAndValidatePayload(operations, null, true, false /*setMetadataDocumentUri*/);
     test.ShouldThrow<ODataException>().WithMessage(ErrorStrings.ODataOutputContext_MetadataDocumentUriMissing);
 }
 public void ShouldWriteOneActionWithTwoBindingTargets()
 {
     var operations = new ODataOperation[] { new ODataAction { Metadata = new Uri("#foo", UriKind.Relative), Target = new Uri("http://www.example.com/foo") }, new ODataAction { Metadata = new Uri("#foo", UriKind.Relative), Target = new Uri("http://www.example.com/baz/foo") } };
     const string expectedPayload = "{\"#foo\":[{\"target\":\"http://www.example.com/foo\"},{\"target\":\"http://www.example.com/baz/foo\"}]}";
     this.WriteOperationsAndValidatePayload(operations, expectedPayload);
 }
 public void ShouldThrowWhenWritingTwoActionsWithSameMetadataAndSameTargets()
 {
     var operations = new ODataOperation[] { new ODataAction { Metadata = new Uri("#foo", UriKind.Relative), Target = new Uri("http://www.example.com/foo") }, new ODataAction { Metadata = new Uri("#foo", UriKind.Relative), Target = new Uri("http://www.example.com/foo") } };
     Action test = () => this.WriteOperationsAndValidatePayload(operations, null);
     test.ShouldThrow<ODataException>().WithMessage(ErrorStrings.ODataJsonLightEntryAndFeedSerializer_ActionsAndFunctionsGroupMustNotHaveDuplicateTarget("#foo", "http://www.example.com/foo"));
 }
 public void ShouldThrowWhenWritingTwoActionsWithSameMetadataAndTwoNullTargets()
 {
     var operations = new ODataOperation[] { new ODataAction { Metadata = new Uri("#foo", UriKind.Relative) }, new ODataAction { Metadata = new Uri("#foo", UriKind.Relative) } };
     Action test = () => this.WriteOperationsAndValidatePayload(operations, null);
     test.ShouldThrow<ODataException>().WithMessage(ErrorStrings.ODataJsonLightEntryAndFeedSerializer_ActionsAndFunctionsGroupMustSpecifyTarget("#foo"));
 }
コード例 #15
0
 /// <summary>
 /// Visits an ODataOperation.
 /// </summary>
 /// <param name="operation">The operation to visit.</param>
 protected override void VisitODataOperation(ODataOperation operation)
 {
     this.ValidateUri(operation.Target);
     base.VisitODataOperation(operation);
 }
コード例 #16
0
 /// <summary>
 /// Visits an ODataOperation.
 /// </summary>
 /// <param name="operation">The operation to visit.</param>
 protected virtual void VisitODataOperation(ODataOperation operation)
 {
 }
コード例 #17
0
        /// <summary>
        /// Validates that an <see cref="ODataOperation"/> can be written.
        /// </summary>
        /// <param name="operation">The operation (an action or a function) to validate.</param>
        /// <param name="writingResponse">true if writing a response; otherwise false.</param>
        internal static void ValidateCanWriteOperation(ODataOperation operation, bool writingResponse)
        {
            Debug.Assert(operation != null, "operation != null");

            // Operations are only valid in responses; we fail on them in requests
            if (!writingResponse)
            {
                throw new ODataException(Strings.WriterValidationUtils_OperationInRequest(operation.Metadata));
            }
        }
コード例 #18
0
 /// <summary>
 /// Validates that an <see cref="ODataOperation"/> can be written.
 /// </summary>
 /// <param name="operation">The operation (an action or a function) to validate.</param>
 /// <param name="writingResponse">true if writing a response; otherwise false.</param>
 public void ValidateCanWriteOperation(ODataOperation operation, bool writingResponse)
 {
 }
コード例 #19
0
 /// <summary>
 /// Validates that an <see cref="ODataOperation"/> can be written.
 /// </summary>
 /// <param name="operation">The operation (an action or a function) to validate.</param>
 /// <param name="writingResponse">true if writing a response; otherwise false.</param>
 public void ValidateCanWriteOperation(ODataOperation operation, bool writingResponse)
 {
 }
コード例 #20
0
 /// <summary>
 /// Validates that an <see cref="ODataOperation"/> can be written.
 /// </summary>
 /// <param name="operation">The operation (an action or a function) to validate.</param>
 /// <param name="writingResponse">true if writing a response; otherwise false.</param>
 public void ValidateCanWriteOperation(ODataOperation operation, bool writingResponse)
 {
     WriterValidationUtils.ValidateCanWriteOperation(operation, writingResponse);
 }