public static SwaggerPathsFactory CreateSwaggerPathsFactory(SwaggerDocumentContext swaggerDocumentContext)
        {
            if (swaggerDocumentContext.IsProfileContext)
            {
                var profileStrategy = new SwaggerPathsFactoryProfileStrategy(swaggerDocumentContext);

                //Profile strategy implements each of the interfaces in the signature of the paths factory constructor
                //Hence the odd parameter repetition.
                return(new SwaggerPathsFactory(profileStrategy, profileStrategy, profileStrategy));
            }

            ISwaggerPathsFactorySelectorStrategy selectorStrategy       = null;
            ISwaggerPathsFactoryNamingStrategy   resourceNamingStrategy = null;

            if (swaggerDocumentContext.RenderType == RenderType.ExtensionArtifactsOnly)
            {
                selectorStrategy = new SwaggerPathsFactorySchemaSelectorStrategy(swaggerDocumentContext);
            }

            if (swaggerDocumentContext.IsCompositeContext)
            {
                selectorStrategy       = new SwaggerCompositePathsFactoryStrategy(swaggerDocumentContext);
                resourceNamingStrategy = new SwaggerPathsFactoryCompositeStrategy();
            }

            var defaultStrategy = new DefaultSwaggerPathsFactoryStrategy();
            var defaultResourceDefinitionNamingStrategy = new SwaggerPathsFactoryDefaultStrategy();

            ISwaggerPathsFactoryContentTypeStrategy contentTypeStrategy = defaultStrategy;

            selectorStrategy       = selectorStrategy ?? defaultStrategy;
            resourceNamingStrategy = resourceNamingStrategy ?? defaultResourceDefinitionNamingStrategy;

            return(new SwaggerPathsFactory(selectorStrategy, contentTypeStrategy, resourceNamingStrategy));
        }
 public SwaggerPathsFactory(
     ISwaggerPathsFactorySelectorStrategy swaggerPathsFactorySelectorStrategy,
     ISwaggerPathsFactoryContentTypeStrategy contentTypeStrategy,
     ISwaggerPathsFactoryNamingStrategy pathsFactoryNamingStrategy)
 {
     _swaggerPathsFactorySelectorStrategy = swaggerPathsFactorySelectorStrategy;
     _contentTypeStrategy        = contentTypeStrategy;
     _pathsFactoryNamingStrategy = pathsFactoryNamingStrategy;
 }