public static SwaggerRouteBuilder AddCustomSwaggerRoute(this HttpConfiguration httpConfig, ODataRoute oDataRoute, string routeTemplate)
        {
            Contract.Requires(httpConfig != null);
            Contract.Requires(oDataRoute != null);
            Contract.Requires(httpConfig.Properties != null);
            Contract.Ensures(Contract.Result<SwaggerRouteBuilder>() != null);

            oDataRoute.SetHttpConfiguration(httpConfig);

            var urlDecodedTemplate = HttpUtility.UrlDecode(routeTemplate);
            Contract.Assume(!string.IsNullOrWhiteSpace(urlDecodedTemplate));

            var swaggerRoute = new SwaggerRoute(urlDecodedTemplate, oDataRoute);

            var swaggerRouteBuilder = new SwaggerRouteBuilder(swaggerRoute);

            httpConfig.Properties.AddOrUpdate(oDataRoute, 
                key => new List<SwaggerRoute> { swaggerRoute }, 
                (key, value) =>
                {
                    var swaggerRoutes = value as List<SwaggerRoute>;
                    swaggerRoutes.Add(swaggerRoute);
                    return swaggerRoutes;
                });

            return swaggerRouteBuilder;
        }
 internal OperationBuilder(Operation operation, SwaggerRouteBuilder swaggerRouteBuilder)
 {
     _operation           = operation;
     _swaggerRouteBuilder = swaggerRouteBuilder;
 }
 public OperationBuilder(Operation operation, SwaggerRouteBuilder swaggerRouteBuilder)
 {
     _operation           = operation;
     _swaggerRouteBuilder = swaggerRouteBuilder;
 }