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