public List<InfoElement> getServerInfosFor(InfoRequest request) throws ServiceDiscoveryRequestException {
if (adhocCommandSupporters.size() == 0) return null; // do not announce when no command available
if (StringUtils.isEmpty(request.getNode())) {
return Arrays.asList((InfoElement)new Feature(NamespaceURIs.XEP0050_ADHOC_COMMANDS));
}
// info for specific node has been asked
List<CommandInfo> allCommandInfos = new ArrayList<CommandInfo>();
for (AdhocCommandSupport adhocCommandSupporter : adhocCommandSupporters) {
final Collection<CommandInfo> commandInfos = adhocCommandSupporter.getCommandInfosForInfoRequest(request, false);
if (commandInfos != null) allCommandInfos.addAll(commandInfos);
}
if (allCommandInfos.size() == 0) return null; // do not announce when no command available
final CommandInfo commandInfo = allCommandInfos.get(0);
final ArrayList<InfoElement> infoElements = new ArrayList<InfoElement>();
infoElements.add(new Identity("automation", "command-node", commandInfo.getName()));
infoElements.add(new Feature(NamespaceURIs.XEP0050_ADHOC_COMMANDS));
infoElements.add(new Feature(NamespaceURIs.JABBER_X_DATA));
return infoElements;
}