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