/**
  * Registers a new {@link CustomRepositoryFactory} instance.
  *
  * @param factory the new {@link CustomRepositoryFactory} instance
  * @throws RepositoryException thrown if a factory for the {@link Repository} class or XML tag is
  *     already registered
  * @since 6.5
  */
 public void register(CustomRepositoryFactory factory) throws RepositoryException {
   synchronized (factories) {
     if (getClasses().contains(factory.getRepositoryClass())) {
       throw new RepositoryException(
           String.format(
               "Factory for custom repository class %s already registered!",
               factory.getRepositoryClass().getSimpleName()));
     } else if (getFactory(factory.getXMLTag()) != null) {
       throw new RepositoryException(
           String.format("Factory for XML tag %s already registered!", factory.getXMLTag()));
     }
     factories.add(factory);
   }
 }
 /**
  * @return a set with all registered custom repository classes
  * @since 6.5
  */
 public Set<Class<? extends Repository>> getClasses() {
   Set<Class<? extends Repository>> repositoryClasses = new HashSet<>();
   for (CustomRepositoryFactory factory : getFactories()) {
     repositoryClasses.add(factory.getRepositoryClass());
   }
   return repositoryClasses;
 }