protected List<Parameter> getParameters(Type type, List<Annotation> annotations, Set<Type> typesToSkip) {
        if (!hasValidAnnotations(annotations) || isApiParamHidden(annotations)) {
            return Collections.emptyList();
        }

        Iterator<SwaggerExtension> chain = SwaggerExtensions.chain();
        List<Parameter> parameters = new ArrayList<>();
        Class<?> cls = TypeUtils.getRawType(type, type);
        LOG.debug("Looking for path/query/header/form/cookie params in " + cls);

        if (chain.hasNext()) {
            SwaggerExtension extension = chain.next();
            LOG.debug("trying extension " + extension);
            parameters = extension.extractParameters(annotations, type, typesToSkip, chain);
        }

        if (!parameters.isEmpty()) {
            for (Parameter parameter : parameters) {
                ParameterProcessor.applyAnnotations(swagger, parameter, type, annotations);
            }
        } else {
            LOG.debug("Looking for body params in " + cls);
            // parameters is guaranteed to be empty at this point, replace it with a mutable collection
            parameters = Lists.newArrayList();
            if (!typesToSkip.contains(type)) {
                Parameter param = ParameterProcessor.applyAnnotations(swagger, null, type, annotations);
                if (param != null) {
                    parameters.add(param);
                }
            }
        }
        return parameters;
    }
protected List < Parameter > getParameters ( Type type , List < Annotation > annotations , Set < Type > typesToSkip ) { if ( ! hasValidAnnotations ( annotations ) || isApiParamHidden ( annotations ) ) { return Collections . emptyList ( ) ; } Iterator < SwaggerExtension > chain = SwaggerExtensions . chain ( ) ; List < Parameter > parameters = new ArrayList < > ( ) ; Class < ? > cls = TypeUtils . getRawType ( type , type ) ; LOG . debug ( "Looking for path/query/header/form/cookie params in " + cls ) ; if ( chain . hasNext ( ) ) { SwaggerExtension extension = chain . next ( ) ; LOG . debug ( "trying extension " + extension ) ; parameters = extension . extractParameters ( annotations , type , typesToSkip , chain ) ; } if ( ! parameters . isEmpty ( ) ) { for ( Parameter parameter : parameters ) { ParameterProcessor . applyAnnotations ( swagger , parameter , type , annotations ) ; } } else { LOG . debug ( "Looking for body params in " + cls ) ; parameters = Lists . newArrayList ( ) ; if ( ! typesToSkip . contains ( type ) ) { Parameter param = ParameterProcessor . applyAnnotations ( swagger , null , type , annotations ) ; if ( param != null ) { parameters . add ( param ) ; } } } return parameters ; }
this method exists so that outside callers can choose their own custom types to skip