James Moger
2012-10-23 2d48e28bf1068b20129b2e3d5b96ecaff48f9f2f
src/com/gitblit/Constants.java
@@ -15,6 +15,11 @@
 */
package com.gitblit;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
 * Constant values used by Gitblit.
 * 
@@ -29,19 +34,25 @@
   // The build script extracts this exact line so be careful editing it
   // and only use A-Z a-z 0-9 .-_ in the string.
   public static final String VERSION = "0.7.0";
   public static final String VERSION = "1.2.0-SNAPSHOT";
   // The build script extracts this exact line so be careful editing it
   // and only use A-Z a-z 0-9 .-_ in the string.
   public static final String VERSION_DATE = "2011-11-11";
   public static final String VERSION_DATE = "PENDING";
   // The build script extracts this exact line so be careful editing it
   // and only use A-Z a-z 0-9 .-_ in the string.
   public static final String JGIT_VERSION = "JGit 1.1.0 (201109151100-r)";
   public static final String JGIT_VERSION = "JGit 2.1.0 (201209190230-r)";
   public static final String ADMIN_ROLE = "#admin";
   public static final String FORK_ROLE = "#fork";
   public static final String CREATE_ROLE = "#create";
   public static final String NOT_FEDERATED_ROLE = "#notfederated";
   public static final String NO_ROLE = "#none";
   public static final String PROPERTIES_FILE = "gitblit.properties";
@@ -54,13 +65,27 @@
   public static final String FEDERATION_PATH = "/federation/";
   public static final String RPC_PATH = "/rpc/";
   public static final String PAGES= "/pages/";
   public static final String BORDER = "***********************************************************";
   public static final String FEDERATION_USER = "$gitblit";
   public static final String PROPOSAL_EXT = ".json";
   public static final String ENCODING = "UTF-8";
   public static final int LEN_SHORTLOG = 80;
   public static final int LEN_SHORTLOG_REFS = 60;
   public static final String DEFAULT_BRANCH = "default";
   public static final String CONFIG_GITBLIT = "gitblit";
   public static final String CONFIG_CUSTOM_FIELDS = "customFields";
   public static String getGitBlitVersion() {
      return NAME + " v" + VERSION;
   }
@@ -92,6 +117,28 @@
         return name();
      }
   }
   /**
    * Enumeration representing the types of authorization control for an
    * access restricted resource.
    */
   public static enum AuthorizationControl {
      AUTHENTICATED, NAMED;
      public static AuthorizationControl fromName(String name) {
         for (AuthorizationControl type : values()) {
            if (type.name().equalsIgnoreCase(name)) {
               return type;
            }
         }
         return NAMED;
      }
      public String toString() {
         return name();
      }
   }
   /**
    * Enumeration representing the types of federation tokens.
@@ -117,7 +164,7 @@
    * Enumeration representing the types of federation requests.
    */
   public static enum FederationRequest {
      POKE, PROPOSAL, PULL_REPOSITORIES, PULL_USERS, PULL_SETTINGS, STATUS;
      POKE, PROPOSAL, PULL_REPOSITORIES, PULL_USERS, PULL_TEAMS, PULL_SETTINGS, PULL_SCRIPTS, STATUS;
      public static FederationRequest fromName(String name) {
         for (FederationRequest type : values()) {
@@ -203,10 +250,13 @@
   public static enum RpcRequest {
      // Order is important here.  anything above LIST_SETTINGS requires
      // administrator privileges and web.allowRpcManagement.
      LIST_REPOSITORIES, LIST_BRANCHES, LIST_SETTINGS, CREATE_REPOSITORY, EDIT_REPOSITORY,
      DELETE_REPOSITORY, LIST_USERS, CREATE_USER, EDIT_USER, DELETE_USER,
      LIST_REPOSITORY_MEMBERS, SET_REPOSITORY_MEMBERS, LIST_FEDERATION_REGISTRATIONS,
      LIST_FEDERATION_RESULTS, LIST_FEDERATION_PROPOSALS, LIST_FEDERATION_SETS,
      CLEAR_REPOSITORY_CACHE, GET_PROTOCOL, LIST_REPOSITORIES, LIST_BRANCHES, LIST_SETTINGS,
      CREATE_REPOSITORY, EDIT_REPOSITORY, DELETE_REPOSITORY,
      LIST_USERS, CREATE_USER, EDIT_USER, DELETE_USER,
      LIST_TEAMS, CREATE_TEAM, EDIT_TEAM, DELETE_TEAM,
      LIST_REPOSITORY_MEMBERS, SET_REPOSITORY_MEMBERS, LIST_REPOSITORY_TEAMS, SET_REPOSITORY_TEAMS,
      LIST_REPOSITORY_MEMBER_PERMISSIONS, SET_REPOSITORY_MEMBER_PERMISSIONS, LIST_REPOSITORY_TEAM_PERMISSIONS, SET_REPOSITORY_TEAM_PERMISSIONS,
      LIST_FEDERATION_REGISTRATIONS, LIST_FEDERATION_RESULTS, LIST_FEDERATION_PROPOSALS, LIST_FEDERATION_SETS,
      EDIT_SETTINGS, LIST_STATUS;
      public static RpcRequest fromName(String name) {
@@ -248,4 +298,94 @@
         return name().toLowerCase();
      }
   }
   /**
    * The types of objects that can be indexed and queried.
    */
   public static enum SearchObjectType {
      commit, blob, issue;
      static SearchObjectType fromName(String name) {
         for (SearchObjectType value : values()) {
            if (value.name().equals(name)) {
               return value;
            }
         }
         return null;
      }
   }
   /**
    * The access permissions available for a repository.
    */
   public static enum AccessPermission {
      NONE("N"), EXCLUDE("X"), VIEW("V"), CLONE("R"), PUSH("RW"), CREATE("RWC"), DELETE("RWD"), REWIND("RW+");
      public static final AccessPermission [] NEWPERMISSIONS = { EXCLUDE, VIEW, CLONE, PUSH, CREATE, DELETE, REWIND };
      public static AccessPermission LEGACY = REWIND;
      public final String code;
      private AccessPermission(String code) {
         this.code = code;
      }
      public boolean atLeast(AccessPermission perm) {
         return ordinal() >= perm.ordinal();
      }
      public boolean exceeds(AccessPermission perm) {
         return ordinal() > perm.ordinal();
      }
      public String asRole(String repository) {
         return code + ":" + repository;
      }
      @Override
      public String toString() {
         return code;
      }
      public static AccessPermission permissionFromRole(String role) {
         String [] fields = role.split(":", 2);
         if (fields.length == 1) {
            // legacy/undefined assume full permissions
            return AccessPermission.LEGACY;
         } else {
            // code:repository
            return AccessPermission.fromCode(fields[0]);
         }
      }
      public static String repositoryFromRole(String role) {
         String [] fields = role.split(":", 2);
         if (fields.length == 1) {
            // legacy/undefined assume full permissions
            return role;
         } else {
            // code:repository
            return fields[1];
         }
      }
      public static AccessPermission fromCode(String code) {
         for (AccessPermission perm : values()) {
            if (perm.code.equalsIgnoreCase(code)) {
               return perm;
            }
         }
         return AccessPermission.NONE;
      }
   }
   public static enum RegistrantType {
      REPOSITORY, USER, TEAM;
   }
   @Documented
   @Retention(RetentionPolicy.RUNTIME)
   public @interface Unused {
   }
}