HttpHeaders applyHeaderMappings()

in sdk/core/azure-core-rest/src/main/java/com/azure/android/core/rest/HttpRequestMapper.java [268:297]


    HttpHeaders applyHeaderMappings(Object[] swaggerMethodArgs, HttpHeaders httpHeaders) {
        for (HttpHeader header : this.headers) {
            httpHeaders.put(header.getName(), header.getValue());
        }
        if (swaggerMethodArgs != null) {
            for (MethodParameterMapping headerParameterMapping : this.headerMappings) {
                if (headerParameterMapping.argIndex < swaggerMethodArgs.length) {
                    final Object methodArg = swaggerMethodArgs[headerParameterMapping.argIndex];
                    if (methodArg instanceof Map) {
                        @SuppressWarnings("unchecked")
                        final Map<String, ?> headerCollection = (Map<String, ?>) methodArg;
                        final String headerCollectionPrefix = headerParameterMapping.mapToName;
                        for (final Map.Entry<String, ?> headerCollectionEntry : headerCollection.entrySet()) {
                            final String headerName = headerCollectionPrefix + headerCollectionEntry.getKey();
                            final String headerValue = this.serialize(headerCollectionEntry.getValue());
                            if (headerValue != null) {
                                httpHeaders.put(headerName, headerValue);
                            }
                        }
                    } else {
                        final String headerValue = this.serialize(methodArg);
                        if (headerValue != null) {
                            httpHeaders.put(headerParameterMapping.mapToName, headerValue);
                        }
                    }
                }
            }
        }
        return httpHeaders;
    }