private Set<String> getRpcServiceIds(Gadget gadget) {
GadgetContext context = gadget.getContext();
Set<String> rpcEndpoints = Sets.newHashSet(gadgetAdminStore.getAdditionalRpcServiceIds(gadget));
List<Feature> modulePrefFeatures = gadget.getSpec().getModulePrefs().getAllFeatures();
List<String> featureNames = Lists.newArrayList();
for(Feature feature : modulePrefFeatures) {
if(gadgetAdminStore.isAllowedFeature(feature, gadget)) {
featureNames.add(feature.getName());
}
}
try {
FeatureRegistry featureRegistry = featureRegistryProvider.get(context.getRepository());
LookupResult result = featureRegistry.getFeatureResources(context,
featureRegistry.getFeatures(featureNames), null);
List<FeatureBundle> bundles = result.getBundles();
for (FeatureBundle bundle : bundles) {
rpcEndpoints.addAll(bundle.getApis(ApiDirective.Type.RPC, false));
}
} catch (GadgetException e) {
LOG.log(Level.WARNING, "Error getting features from feature registry", e);
}
return rpcEndpoints;
}