James Moger
2014-09-17 ad3d2ca074cd3cf9c554f57c53b22f0de6abede9
src/main/java/com/gitblit/manager/GitblitManager.java
@@ -76,9 +76,11 @@
import com.gitblit.transport.ssh.IPublicKeyManager;
import com.gitblit.transport.ssh.SshKey;
import com.gitblit.utils.ArrayUtils;
import com.gitblit.utils.HttpUtils;
import com.gitblit.utils.JsonUtils;
import com.gitblit.utils.ObjectCache;
import com.gitblit.utils.StringUtils;
import com.gitblit.utils.XssFilter;
import com.google.gson.Gson;
import com.google.gson.JsonIOException;
import com.google.gson.JsonSyntaxException;
@@ -109,6 +111,8 @@
   protected final Provider<IPublicKeyManager> publicKeyManagerProvider;
   protected final Provider<ITicketService> ticketServiceProvider;
   protected final IStoredSettings settings;
   protected final IRuntimeManager runtimeManager;
@@ -130,6 +134,7 @@
   @Inject
   public GitblitManager(
         Provider<IPublicKeyManager> publicKeyManagerProvider,
         Provider<ITicketService> ticketServiceProvider,
         IRuntimeManager runtimeManager,
         IPluginManager pluginManager,
         INotificationManager notificationManager,
@@ -140,6 +145,7 @@
         IFederationManager federationManager) {
      this.publicKeyManagerProvider = publicKeyManagerProvider;
      this.ticketServiceProvider = ticketServiceProvider;
      this.settings = runtimeManager.getSettings();
      this.runtimeManager = runtimeManager;
@@ -219,6 +225,13 @@
      RepositoryModel cloneModel = repository.cloneAs(cloneName);
      // owner has REWIND/RW+ permissions
      cloneModel.addOwner(user.username);
      // ensure initial access restriction of the fork
      // is not lower than the source repository  (issue-495/ticket-167)
      if (repository.accessRestriction.exceeds(cloneModel.accessRestriction)) {
         cloneModel.accessRestriction = repository.accessRestriction;
      }
      repositoryManager.updateRepositoryModel(cloneName, cloneModel, false);
      // add the owner of the source repository to the clone's access list
@@ -478,13 +491,9 @@
      }
   }
   /**
    * Throws an exception if trying to get a ticket service.
    *
    */
   @Override
   public ITicketService getTicketService() {
      throw new RuntimeException("This class does not have a ticket service!");
      return ticketServiceProvider.get();
   }
   @Override
@@ -582,6 +591,11 @@
   @Override
   public Injector getInjector() {
      return runtimeManager.getInjector();
   }
   @Override
   public XssFilter getXssFilter() {
      return runtimeManager.getXssFilter();
   }
   /*
@@ -906,6 +920,11 @@
   }
   @Override
   public List<RepositoryModel> getRepositoryModels() {
      return repositoryManager.getRepositoryModels();
   }
   @Override
   public List<RepositoryModel> getRepositoryModels(UserModel user) {
      return repositoryManager.getRepositoryModels(user);
   }
@@ -960,10 +979,23 @@
      return repositoryManager.getRepositoryDefaultMetrics(model, repository);
   }
   /**
    * Detect renames and reindex as appropriate.
    */
   @Override
   public void updateRepositoryModel(String repositoryName, RepositoryModel repository,
         boolean isCreate) throws GitBlitException {
      RepositoryModel oldModel = null;
      boolean isRename = !isCreate && !repositoryName.equalsIgnoreCase(repository.name);
      if (isRename) {
         oldModel = repositoryManager.getRepositoryModel(repositoryName);
      }
      repositoryManager.updateRepositoryModel(repositoryName, repository, isCreate);
      if (isRename && ticketServiceProvider.get() != null) {
         ticketServiceProvider.get().rename(oldModel, repository);
      }
   }
   @Override
@@ -976,14 +1008,23 @@
      return repositoryManager.canDelete(model);
   }
   /**
    * Delete the repository and all associated tickets.
    */
   @Override
   public boolean deleteRepositoryModel(RepositoryModel model) {
      return repositoryManager.deleteRepositoryModel(model);
      boolean success = repositoryManager.deleteRepositoryModel(model);
      if (success && ticketServiceProvider.get() != null) {
         ticketServiceProvider.get().deleteAll(model);
      }
      return success;
   }
   @Override
   public boolean deleteRepository(String repositoryName) {
      return repositoryManager.deleteRepository(repositoryName);
      // delegate to deleteRepositoryModel() to destroy indexed tickets
      RepositoryModel repository = repositoryManager.getRepositoryModel(repositoryName);
      return deleteRepositoryModel(repository);
   }
   @Override