@Override
    public boolean filter(final AttributeMap attributeMap) {
        final ReceiveDataConfig receiveDataConfig = receiveDataConfigProvider.get();
        // Get the type name from the header arguments if supplied.
        final String type = NullSafe.trim(attributeMap.get(StandardHeaderArguments.TYPE));
        if (!type.isEmpty() && !getValidStreamTypes(receiveDataConfig).contains(type)) {
            throw new StroomStreamException(StroomStatusCode.INVALID_TYPE, attributeMap);
        }

        String feedName = NullSafe.trim(attributeMap.get(StandardHeaderArguments.FEED));
        if (receiveDataConfig.isFeedNameGenerationEnabled()) {
            LOGGER.debug("feedNameGenerationEnabled");
            // If they supply a feed then go with that
            if (feedName.isEmpty()) {
                LOGGER.debug("No feed name supplied");
                final Set<String> mandatoryHeaders = receiveDataConfig.getFeedNameGenerationMandatoryHeaders();
                if (NullSafe.hasItems(mandatoryHeaders)) {
                    for (final String mandatoryHeader : mandatoryHeaders) {
                        final String mandatoryHeaderValue = attributeMap.get(mandatoryHeader);
                        if (NullSafe.isBlankString(mandatoryHeaderValue)) {
                            throw new StroomStreamException(
                                    StroomStatusCode.MISSING_MANDATORY_HEADER,
                                    attributeMap,
                                    "Mandatory header '" + mandatoryHeader + "' must be provided");
                        }
                    }
                }
                feedName = cachedFeedNameGenerator.getValue()
                        .generateName(attributeMap);
                // Add the derived feed name as everything else depends on the feed name
                attributeMap.put(StandardHeaderArguments.FEED, feedName);
            }
        } else {
            if (feedName.isEmpty()) {
                throw new StroomStreamException(StroomStatusCode.FEED_MUST_BE_SPECIFIED, attributeMap);
            }
        }

        return true;
    }
Checks the Feed and Type attributes are supplied. If auto content creation is enabled
then the Feed can be derived from AccountId|Format|SchemaName|Type.
stroom-receive/stroom-receive-common/src/main/java/stroom/receive/common/FeedNameCheckAttributeMapFilter.java