private boolean hasValidName()

in src/main/java/org/apache/sling/graphql/core/engine/SlingTypeResolverSelector.java [79:104]


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