class ArchetypeServiceImpl implements ArchetypeService {

    Repository createArchetypeRepository(final GAV templateGav,
                                         final String repositoryUri) {
        final OrganizationalUnit archetypesOU = resolveOU();

        if (archetypesOU != null) {
            final Repository repository = repositoryService.createRepository(archetypesOU,
                                                                             GitRepository.SCHEME.toString(),
                                                                             makeRepositoryAlias(templateGav.toString()),
                                                                             createRepositoryConfig(repositoryUri));

            cleanUpOrigin(repository);

            return repository;
        } else {
            throw new IllegalStateException("Cannot create an archetype when there is no archetype space available.");
        }
    }

    public  ArchetypeServiceImpl();
    @Inject public  ArchetypeServiceImpl(final @Named("ioStrategy") IOService ioService,
                                final RepositoryService repositoryService,
                                final OrganizationalUnitService ouService,
                                final Event<ArchetypeListUpdatedEvent> archetypeListUpdatedEvent,
                                final ArchetypeConfigStorage archetypeConfigStorage,
                                final PathUtil pathUtil,
                                final ArchetypePreferencesManager archetypePreferencesManager,
                                final KieModuleService moduleService,
                                final POMService pomService);

}