code: protected String getComponentModules(List<String> componentIds) {
  
          Set<String> comps = new HashSet<String>();
          List<CmsSetupComponent> components = CmsCollectionsGenericWrapper.list(m_components.elementList());
          for (CmsSetupComponent comp : components) {
              if (componentIds.contains(comp.getId())) {
                  comps.addAll(getComponentModules(comp));
              }
  
          }
  
          StringBuffer buf = new StringBuffer();
          List<String> moduleNames = sortModules(getAvailableModules().values());
          boolean first = true;
          for (String moduleName : moduleNames) {
              if (!first) {
                  buf.append("|");
              }
              if (comps.contains(moduleName)) {
                  buf.append(moduleName);
              }
              first = false;
          }
  
          return buf.toString();
      }
docs: Returns a pipe separated list of module names for the given list of components.<p>
  
  @param componentIds the list of component IDs to get the modules for
  
  @return a pipe separated list of module names for the given list of components