private boolean hasValidName()

in src/main/java/org/apache/sling/graphql/core/engine/SlingDataFetcherSelector.java [84:107]


    private boolean hasValidName(@NotNull ServiceReference<SlingDataFetcher<Object>> serviceReference, @NotNull SlingDataFetcher<Object> fetcher) {
        String name = PropertiesUtil.toString(serviceReference.getProperty(SlingDataFetcher.NAME_SERVICE_PROPERTY), null);
        if (StringUtils.isNotEmpty(name)) {
            if (!nameMatchesPattern(name)) {
                LOGGER.error("Invalid SlingDataFetcher {}: fetcher name is not namespaced (e.g. ns/myFetcher)",
                        fetcher.getClass().getName());
                return false;
            }
            if (name.startsWith(RESERVED_NAME_PREFIX)) {
                final String className = fetcher.getClass().getName();
                if (!fetcher.getClass().getName().startsWith(RESERVED_PACKAGE_PREFIX)) {
                    LOGGER.error(
                            "Invalid SlingDataFetcher {}: fetcher names starting with '{}' are reserved for Apache Sling Java packages",
                            className, RESERVED_NAME_PREFIX);
                    return false;
                }
            }
        } else {
            LOGGER.error("Invalid {} implementation: fetcher {} is missing the mandatory value for its {} service property.",
                    SlingDataFetcher.class.getName(), fetcher.getClass().getName(), SlingDataFetcher.NAME_SERVICE_PROPERTY);
            return false;
        }
        return true;
    }