private void validateElementProperties() {
        if (NullSafe.isBlankString(forwardUrl)) {
            fatal("Property forwardUrl has no value.");
        }

        if (NullSafe.isEmptyString(requestMethod)) {
            fatal(LogUtil.message(
                    "Property requestMethod has no value. You must set a destination URL for {} to forward to.",
                    getElementId()));
        } else if (!VALID_REQUEST_METHODS.contains(requestMethod)) {
            fatal(LogUtil.message("Property requestMethod has an invalid value '{}'. " +
                                  "Valid values are [{}]",
                    requestMethod, setToSortedCsvStr(VALID_REQUEST_METHODS)));
        }

        final String sslProtocol = sslConfigBuilder.getSslProtocol();
        if (NullSafe.isNonEmptyString(sslProtocol)) {
            final Set<String> activeSSLProtocols = getActiveSSLProtocols();
            if (!NullSafe.isEmptyCollection(activeSSLProtocols)
                && !activeSSLProtocols.contains(sslProtocol)) {
                fatal(LogUtil.message("Property sslProtocol has an invalid value '{}'. Valid values are [{}]",
                        sslProtocol, setToSortedCsvStr(activeSSLProtocols)));
            }
        }

        if (httpHeadersIncludeStreamMetaData) {
            if (NullSafe.isNonBlankString(httpHeadersStreamMetaDataAllowList)
                && NullSafe.isNonBlankString(httpHeadersStreamMetaDataDenyList)) {
                warn("Properties httpHeadersStreamMetaDataAllowList and httpHeadersStreamMetaDataDenyList both " +
                     "have a value. The value of httpHeadersStreamMetaDataDenyList will be ignored.");
            }
        } else {
            if (NullSafe.isNonBlankString(httpHeadersStreamMetaDataAllowList)) {
                warn(LogUtil.message(
                        "Property httpHeadersStreamMetaDataAllowList has value '{}' but this will be ignored " +
                        "because httpHeadersIncludeStreamMetaData is false.",
                        httpHeadersStreamMetaDataAllowList));
            }
            if (NullSafe.isNonBlankString(httpHeadersStreamMetaDataDenyList)) {
                warn(LogUtil.message(
                        "Property httpHeadersStreamMetaDataDenyList has value '{}' but this will be ignored " +
                        "because httpHeadersIncludeStreamMetaData is false.",
                        httpHeadersStreamMetaDataDenyList));
            }
        }
    }
Handler class that forwards the request to a URL.
stroom-pipeline/src/main/java/stroom/pipeline/writer/HTTPAppender.java