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;
}