diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/GitServlet.java b/gitop.core/src/main/java/com/pmease/gitop/core/GitServlet.java index e52c11d595..f6e7f65ace 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/GitServlet.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/GitServlet.java @@ -16,8 +16,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.pmease.commons.git.Git; -import com.pmease.gitop.core.manager.RepositoryManager; -import com.pmease.gitop.core.model.Repository; +import com.pmease.gitop.core.manager.ProjectManager; +import com.pmease.gitop.core.model.Project; @Singleton @SuppressWarnings("serial") @@ -27,39 +27,39 @@ public class GitServlet extends HttpServlet { private static final String INFO_REFS = "info/refs"; - private final RepositoryManager repositoryManager; + private final ProjectManager projectManager; @Inject - public GitServlet(RepositoryManager repositoryManager) { - this.repositoryManager = repositoryManager; + public GitServlet(ProjectManager projectManager) { + this.projectManager = projectManager; } - private Repository getRepository(HttpServletRequest request, HttpServletResponse response, String repoInfo) + private Project getProject(HttpServletRequest request, HttpServletResponse response, String repoInfo) throws IOException { repoInfo = StringUtils.stripStart(StringUtils.stripEnd(repoInfo, "/"), "/"); String ownerName = StringUtils.substringBefore(repoInfo, "/"); - String repositoryName = StringUtils.substringAfter(repoInfo, "/"); + String projectName = StringUtils.substringAfter(repoInfo, "/"); - if (StringUtils.isBlank(ownerName) || StringUtils.isBlank(repositoryName)) { + if (StringUtils.isBlank(ownerName) || StringUtils.isBlank(projectName)) { String url = request.getRequestURL().toString(); String urlRoot = url.substring(0, url.length()-request.getPathInfo().length()); - String message = "Expecting url of format " + urlRoot + "//"; + String message = "Expecting url of format " + urlRoot + "//"; logger.error("Error serving git request: " + message); response.sendError(HttpServletResponse.SC_BAD_REQUEST, message); return null; } - Repository repository = repositoryManager.find(ownerName, repositoryName); - if (repository == null) { - String message = "Unable to find repository '" + repositoryName + "' owned by '" + ownerName + "'."; + Project project = projectManager.find(ownerName, projectName); + if (project == null) { + String message = "Unable to find project '" + projectName + "' owned by '" + ownerName + "'."; logger.error("Error serving git request: " + message); response.sendError(HttpServletResponse.SC_BAD_REQUEST, message); return null; } - return repository; + return project; } private void doNotCache(HttpServletResponse response) { @@ -74,13 +74,13 @@ public class GitServlet extends HttpServlet { String service = StringUtils.substringAfterLast(pathInfo, "/"); String repoInfo = StringUtils.substringBeforeLast(pathInfo, "/"); - Repository repository = getRepository(req, resp, repoInfo); + Project project = getProject(req, resp, repoInfo); - if (repository != null) { + if (project != null) { doNotCache(resp); resp.setHeader("Content-Type", "application/x-" + service + "-result"); - Git git = new Git(repositoryManager.locateStorage(repository).ofCode()); + Git git = new Git(projectManager.locateStorage(project).ofCode()); try { if (service.contains("upload")) { @@ -111,8 +111,8 @@ public class GitServlet extends HttpServlet { } String repoInfo = pathInfo.substring(0, pathInfo.length() - INFO_REFS.length()); - Repository repository = getRepository(req, resp, repoInfo); - if (repository != null) { + Project project = getProject(req, resp, repoInfo); + if (project != null) { doNotCache(resp); String service = req.getParameter("service"); resp.setHeader("Content-Type", "application/x-" + service + "-advertisement"); @@ -122,7 +122,7 @@ public class GitServlet extends HttpServlet { pack.writeString("# service=" + service + "\n"); pack.end(); - Git git = new Git(repositoryManager.locateStorage(repository).ofCode()); + Git git = new Git(projectManager.locateStorage(project).ofCode()); try { if (service.contains("upload")) { diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/ApprovedByAuthorizedUsers.java b/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/ApprovedByAuthorizedUsers.java index a3ef63d235..70379424f4 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/ApprovedByAuthorizedUsers.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/ApprovedByAuthorizedUsers.java @@ -5,7 +5,7 @@ import java.util.Collection; import com.pmease.commons.editable.annotation.Editable; import com.pmease.gitop.core.model.MergeRequest; import com.pmease.gitop.core.model.User; -import com.pmease.gitop.core.permission.operation.RepositoryOperation; +import com.pmease.gitop.core.permission.operation.GeneralOperation; @SuppressWarnings("serial") @Editable @@ -13,7 +13,7 @@ public class ApprovedByAuthorizedUsers extends AbstractGateKeeper { @Override public CheckResult check(MergeRequest request) { - Collection authorizedUsers = request.getDestination().getRepository().findAuthorizedUsers(RepositoryOperation.WRITE); + Collection authorizedUsers = request.getDestination().getProject().findAuthorizedUsers(GeneralOperation.WRITE); OrGateKeeper or = new OrGateKeeper(); for (User user: authorizedUsers) { ApprovedBySpecifiedUser entry = new ApprovedBySpecifiedUser(); diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/ApprovedByProjectOwner.java b/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/ApprovedByProjectOwner.java new file mode 100644 index 0000000000..1ceb3370a9 --- /dev/null +++ b/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/ApprovedByProjectOwner.java @@ -0,0 +1,29 @@ +package com.pmease.gitop.core.gatekeeper; + +import com.google.common.collect.Sets; +import com.pmease.commons.editable.annotation.Editable; +import com.pmease.gitop.core.model.MergeRequest; +import com.pmease.gitop.core.model.User; +import com.pmease.gitop.core.model.Vote; + +@SuppressWarnings("serial") +@Editable +public class ApprovedByProjectOwner extends AbstractGateKeeper { + + @Override + public CheckResult check(MergeRequest request) { + User projectOwner = request.getDestination().getProject().getOwner(); + + Vote.Result result = projectOwner.checkVoteSince(request.getBaseUpdate()); + + if (result == null) { + request.inviteToVote(Sets.newHashSet(projectOwner), 1); + return pending("To be approved by user '" + projectOwner.getName() + "'."); + } else if (result.isAccept()) { + return accept("Approved by user '" + projectOwner.getName() + "'."); + } else { + return reject("Rejected by user '" + projectOwner.getName() + "'."); + } + } + +} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/ApprovedByRepositoryOwner.java b/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/ApprovedByRepositoryOwner.java deleted file mode 100644 index 175e6a5cee..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/ApprovedByRepositoryOwner.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.pmease.gitop.core.gatekeeper; - -import com.google.common.collect.Sets; -import com.pmease.commons.editable.annotation.Editable; -import com.pmease.gitop.core.model.MergeRequest; -import com.pmease.gitop.core.model.User; -import com.pmease.gitop.core.model.Vote; - -@SuppressWarnings("serial") -@Editable -public class ApprovedByRepositoryOwner extends AbstractGateKeeper { - - @Override - public CheckResult check(MergeRequest request) { - User repositoryOwner = request.getDestination().getRepository().getOwner(); - - Vote.Result result = repositoryOwner.checkVoteSince(request.getBaseUpdate()); - - if (result == null) { - request.inviteToVote(Sets.newHashSet(repositoryOwner), 1); - return pending("To be approved by user '" + repositoryOwner.getName() + "'."); - } else if (result.isAccept()) { - return accept("Approved by user '" + repositoryOwner.getName() + "'."); - } else { - return reject("Rejected by user '" + repositoryOwner.getName() + "'."); - } - } - -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/ApprovedBySpecifiedTeam.java b/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/ApprovedBySpecifiedTeam.java index 50d0b60470..f8ccb9bd0c 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/ApprovedBySpecifiedTeam.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/ApprovedBySpecifiedTeam.java @@ -7,7 +7,7 @@ import javax.validation.constraints.Min; import com.pmease.commons.editable.annotation.Editable; import com.pmease.gitop.core.model.MergeRequest; -import com.pmease.gitop.core.model.TeamMembership; +import com.pmease.gitop.core.model.Membership; import com.pmease.gitop.core.model.User; import com.pmease.gitop.core.model.Vote; @@ -30,7 +30,7 @@ public class ApprovedBySpecifiedTeam extends TeamAwareGateKeeper { @Override public CheckResult check(MergeRequest request) { Collection members = new HashSet(); - for (TeamMembership membership: getTeam().getMemberships()) + for (Membership membership: getTeam().getMemberships()) members.add(membership.getUser()); int approvals = 0; diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/GetMinScoreFromSpecifiedTeam.java b/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/GetMinScoreFromSpecifiedTeam.java index 09c90d1acd..292d23bbf3 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/GetMinScoreFromSpecifiedTeam.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/GetMinScoreFromSpecifiedTeam.java @@ -7,7 +7,7 @@ import javax.validation.constraints.Min; import com.pmease.commons.editable.annotation.Editable; import com.pmease.gitop.core.model.MergeRequest; -import com.pmease.gitop.core.model.TeamMembership; +import com.pmease.gitop.core.model.Membership; import com.pmease.gitop.core.model.User; import com.pmease.gitop.core.model.Vote; @@ -40,7 +40,7 @@ public class GetMinScoreFromSpecifiedTeam extends TeamAwareGateKeeper { @Override public CheckResult check(MergeRequest request) { Collection members = new HashSet(); - for (TeamMembership membership: getTeam().getMemberships()) + for (Membership membership: getTeam().getMemberships()) members.add(membership.getUser()); int score = 0; diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/NoRejectionBySpecifiedTeam.java b/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/NoRejectionBySpecifiedTeam.java index 6d55c4748d..f1ace19d2d 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/NoRejectionBySpecifiedTeam.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/NoRejectionBySpecifiedTeam.java @@ -2,7 +2,7 @@ package com.pmease.gitop.core.gatekeeper; import com.pmease.commons.editable.annotation.Editable; import com.pmease.gitop.core.model.MergeRequest; -import com.pmease.gitop.core.model.TeamMembership; +import com.pmease.gitop.core.model.Membership; import com.pmease.gitop.core.model.Vote; @SuppressWarnings("serial") @@ -12,7 +12,7 @@ public class NoRejectionBySpecifiedTeam extends TeamAwareGateKeeper { @Override public CheckResult check(MergeRequest request) { - for (TeamMembership membership: getTeam().getMemberships()) { + for (Membership membership: getTeam().getMemberships()) { Vote.Result result = membership.getUser().checkVoteSince(request.getBaseUpdate()); if (result.isReject()) { return reject("Rejected by user '" + membership.getUser().getName() + "'."); diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/SubmittedToSpecifiedBranch.java b/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/SubmittedToSpecifiedBranch.java index 94cd6bff90..695d7c4d18 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/SubmittedToSpecifiedBranch.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/SubmittedToSpecifiedBranch.java @@ -12,7 +12,7 @@ import com.pmease.commons.util.pattern.PatternSetMatcher; import com.pmease.commons.util.pattern.WildcardPathMatcher; import com.pmease.gitop.core.manager.BranchManager; import com.pmease.gitop.core.model.MergeRequest; -import com.pmease.gitop.core.model.Repository; +import com.pmease.gitop.core.model.Project; @SuppressWarnings("serial") @Editable @@ -32,9 +32,9 @@ public class SubmittedToSpecifiedBranch extends AbstractGateKeeper { @Override public CheckResult check(MergeRequest request) { - Repository repository = request.getDestination().getRepository(); + Project project = request.getDestination().getProject(); BranchManager branchManager = AppLoader.getInstance(BranchManager.class); - EntityLoader entityLoader = branchManager.asEntityLoader(repository); + EntityLoader entityLoader = branchManager.asEntityLoader(project); EntityMatcher entityMatcher = new EntityMatcher(entityLoader, new WildcardPathMatcher()); PatternSetMatcher patternSetMatcher = new PatternSetMatcher(entityMatcher); @@ -48,13 +48,13 @@ public class SubmittedToSpecifiedBranch extends AbstractGateKeeper { @Override public Object trim(Object context) { - Preconditions.checkArgument(context instanceof Repository); + Preconditions.checkArgument(context instanceof Project); - Repository repository = (Repository) context; + Project project = (Project) context; BranchManager branchManager = AppLoader.getInstance(BranchManager.class); - EntityLoader entityLoader = branchManager.asEntityLoader(repository); + EntityLoader entityLoader = branchManager.asEntityLoader(project); EntityPatternSet patternSet = EntityPatternSet.fromStored(getBranchPatterns(), entityLoader); - patternSet.trim(repository); + patternSet.trim(project); if (patternSet.getStored().isEmpty()) { return null; diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/TouchSpecifiedFiles.java b/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/TouchSpecifiedFiles.java index 7f33069e95..4dfb391b2f 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/TouchSpecifiedFiles.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/gatekeeper/TouchSpecifiedFiles.java @@ -10,7 +10,7 @@ import com.pmease.commons.git.FindChangedFilesCommand; import com.pmease.commons.git.Git; import com.pmease.commons.loader.AppLoader; import com.pmease.commons.util.pattern.WildcardUtils; -import com.pmease.gitop.core.manager.RepositoryManager; +import com.pmease.gitop.core.manager.ProjectManager; import com.pmease.gitop.core.model.MergeRequest; import com.pmease.gitop.core.model.MergeRequestUpdate; @@ -32,8 +32,8 @@ public class TouchSpecifiedFiles extends AbstractGateKeeper { @Override public CheckResult check(MergeRequest request) { - RepositoryManager repositoryManager = AppLoader.getInstance(RepositoryManager.class); - File repoDir = repositoryManager.locateStorage(request.getDestination().getRepository()).ofCode(); + ProjectManager projectManager = AppLoader.getInstance(ProjectManager.class); + File repoDir = projectManager.locateStorage(request.getDestination().getProject()).ofCode(); FindChangedFilesCommand command = new Git(repoDir).findChangedFiles(); diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/manager/AuthorizationManager.java b/gitop.core/src/main/java/com/pmease/gitop/core/manager/AuthorizationManager.java new file mode 100644 index 0000000000..810f315cef --- /dev/null +++ b/gitop.core/src/main/java/com/pmease/gitop/core/manager/AuthorizationManager.java @@ -0,0 +1,11 @@ +package com.pmease.gitop.core.manager; + +import com.google.inject.ImplementedBy; +import com.pmease.commons.hibernate.dao.GenericDao; +import com.pmease.gitop.core.manager.impl.DefaultAuthorizationManager; +import com.pmease.gitop.core.model.Authorization; + +@ImplementedBy(DefaultAuthorizationManager.class) +public interface AuthorizationManager extends GenericDao { + +} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/manager/BranchManager.java b/gitop.core/src/main/java/com/pmease/gitop/core/manager/BranchManager.java index 40dde3ab91..6cab4bd67d 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/manager/BranchManager.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/manager/BranchManager.java @@ -5,13 +5,13 @@ import com.pmease.commons.hibernate.dao.GenericDao; import com.pmease.commons.util.namedentity.EntityLoader; import com.pmease.gitop.core.manager.impl.DefaultBranchManager; import com.pmease.gitop.core.model.Branch; -import com.pmease.gitop.core.model.Repository; +import com.pmease.gitop.core.model.Project; @ImplementedBy(DefaultBranchManager.class) public interface BranchManager extends GenericDao { - public Branch find(Repository repository, String branchName); + public Branch find(Project project, String branchName); - public EntityLoader asEntityLoader(Repository repository); + public EntityLoader asEntityLoader(Project project); } diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/manager/ProjectManager.java b/gitop.core/src/main/java/com/pmease/gitop/core/manager/ProjectManager.java new file mode 100644 index 0000000000..7ed94af095 --- /dev/null +++ b/gitop.core/src/main/java/com/pmease/gitop/core/manager/ProjectManager.java @@ -0,0 +1,19 @@ +package com.pmease.gitop.core.manager; + +import java.util.Collection; + +import com.google.inject.ImplementedBy; +import com.pmease.commons.hibernate.dao.GenericDao; +import com.pmease.gitop.core.manager.impl.DefaultProjectManager; +import com.pmease.gitop.core.model.Project; +import com.pmease.gitop.core.storage.ProjectStorage; + +@ImplementedBy(DefaultProjectManager.class) +public interface ProjectManager extends GenericDao { + + ProjectStorage locateStorage(Project project); + + Project find(String ownerName, String projectName); + + Collection findPublic(); +} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/manager/RepositoryAuthorizationByIndividualManager.java b/gitop.core/src/main/java/com/pmease/gitop/core/manager/RepositoryAuthorizationByIndividualManager.java deleted file mode 100644 index 0b90d1a10d..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/manager/RepositoryAuthorizationByIndividualManager.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.pmease.gitop.core.manager; - -import com.google.inject.ImplementedBy; -import com.pmease.commons.hibernate.dao.GenericDao; -import com.pmease.gitop.core.manager.impl.DefaultRepositoryAuthorizationByTeamManager; -import com.pmease.gitop.core.model.RepositoryAuthorizationByIndividual; - -@ImplementedBy(DefaultRepositoryAuthorizationByTeamManager.class) -public interface RepositoryAuthorizationByIndividualManager extends GenericDao { - -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/manager/RepositoryAuthorizationByTeamManager.java b/gitop.core/src/main/java/com/pmease/gitop/core/manager/RepositoryAuthorizationByTeamManager.java deleted file mode 100644 index 3f79c7926c..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/manager/RepositoryAuthorizationByTeamManager.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.pmease.gitop.core.manager; - -import com.google.inject.ImplementedBy; -import com.pmease.commons.hibernate.dao.GenericDao; -import com.pmease.gitop.core.manager.impl.DefaultRepositoryAuthorizationByTeamManager; -import com.pmease.gitop.core.model.RepositoryAuthorizationByTeam; - -@ImplementedBy(DefaultRepositoryAuthorizationByTeamManager.class) -public interface RepositoryAuthorizationByTeamManager extends GenericDao { - -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/manager/RepositoryManager.java b/gitop.core/src/main/java/com/pmease/gitop/core/manager/RepositoryManager.java deleted file mode 100644 index 64b9d53e57..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/manager/RepositoryManager.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.pmease.gitop.core.manager; - -import java.util.Collection; - -import com.google.inject.ImplementedBy; -import com.pmease.commons.hibernate.dao.GenericDao; -import com.pmease.gitop.core.manager.impl.DefaultRepositoryManager; -import com.pmease.gitop.core.model.Repository; -import com.pmease.gitop.core.storage.RepositoryStorage; - -@ImplementedBy(DefaultRepositoryManager.class) -public interface RepositoryManager extends GenericDao { - - RepositoryStorage locateStorage(Repository repository); - - Repository find(String ownerName, String repositoryName); - - Collection findPublic(); -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/manager/RoleManager.java b/gitop.core/src/main/java/com/pmease/gitop/core/manager/RoleManager.java deleted file mode 100644 index f6c5b6a907..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/manager/RoleManager.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.pmease.gitop.core.manager; - -import com.google.inject.ImplementedBy; -import com.pmease.commons.hibernate.dao.GenericDao; -import com.pmease.gitop.core.manager.impl.DefaultRoleManager; -import com.pmease.gitop.core.model.Role; - -@ImplementedBy(DefaultRoleManager.class) -public interface RoleManager extends GenericDao { - -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/manager/UserAuthorizationByIndividualManager.java b/gitop.core/src/main/java/com/pmease/gitop/core/manager/UserAuthorizationByIndividualManager.java deleted file mode 100644 index 6d7b44c530..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/manager/UserAuthorizationByIndividualManager.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.pmease.gitop.core.manager; - -import com.google.inject.ImplementedBy; -import com.pmease.commons.hibernate.dao.GenericDao; -import com.pmease.gitop.core.manager.impl.DefaultRepositoryAuthorizationByTeamManager; -import com.pmease.gitop.core.model.UserAuthorizationByIndividual; - -@ImplementedBy(DefaultRepositoryAuthorizationByTeamManager.class) -public interface UserAuthorizationByIndividualManager extends GenericDao { - -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultAuthorizationManager.java b/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultAuthorizationManager.java new file mode 100644 index 0000000000..bfbd05c287 --- /dev/null +++ b/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultAuthorizationManager.java @@ -0,0 +1,20 @@ +package com.pmease.gitop.core.manager.impl; + +import javax.inject.Inject; +import javax.inject.Singleton; + +import com.pmease.commons.hibernate.dao.AbstractGenericDao; +import com.pmease.commons.hibernate.dao.GeneralDao; +import com.pmease.gitop.core.manager.AuthorizationManager; +import com.pmease.gitop.core.model.Authorization; + +@Singleton +public class DefaultAuthorizationManager extends AbstractGenericDao + implements AuthorizationManager { + + @Inject + public DefaultAuthorizationManager(GeneralDao generalDao) { + super(generalDao); + } + +} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultBranchManager.java b/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultBranchManager.java index 3d50cad1e7..54bbfef85c 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultBranchManager.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultBranchManager.java @@ -13,7 +13,7 @@ import com.pmease.commons.util.namedentity.EntityLoader; import com.pmease.commons.util.namedentity.NamedEntity; import com.pmease.gitop.core.manager.BranchManager; import com.pmease.gitop.core.model.Branch; -import com.pmease.gitop.core.model.Repository; +import com.pmease.gitop.core.model.Project; @Singleton public class DefaultBranchManager extends AbstractGenericDao implements BranchManager { @@ -26,12 +26,12 @@ public class DefaultBranchManager extends AbstractGenericDao implements @Sessional @Override - public Branch find(Repository repository, String name) { - return find(new Criterion[]{Restrictions.eq("repository", repository), Restrictions.eq("name", name)}); + public Branch find(Project project, String name) { + return find(new Criterion[]{Restrictions.eq("project", project), Restrictions.eq("name", name)}); } @Override - public EntityLoader asEntityLoader(final Repository repository) { + public EntityLoader asEntityLoader(final Project project) { return new EntityLoader() { @Override @@ -58,7 +58,7 @@ public class DefaultBranchManager extends AbstractGenericDao implements @Override public NamedEntity get(String name) { - final Branch branch = find(repository, name); + final Branch branch = find(project, name); if (branch != null) { return new NamedEntity() { diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultRepositoryManager.java b/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultProjectManager.java similarity index 58% rename from gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultRepositoryManager.java rename to gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultProjectManager.java index a31de5410c..0fdb3b3a45 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultRepositoryManager.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultProjectManager.java @@ -15,17 +15,17 @@ import com.pmease.commons.hibernate.Transactional; import com.pmease.commons.hibernate.dao.AbstractGenericDao; import com.pmease.commons.hibernate.dao.GeneralDao; import com.pmease.gitop.core.manager.ConfigManager; -import com.pmease.gitop.core.manager.RepositoryManager; -import com.pmease.gitop.core.model.Repository; -import com.pmease.gitop.core.storage.RepositoryStorage; +import com.pmease.gitop.core.manager.ProjectManager; +import com.pmease.gitop.core.model.Project; +import com.pmease.gitop.core.storage.ProjectStorage; @Singleton -public class DefaultRepositoryManager extends AbstractGenericDao implements RepositoryManager { +public class DefaultProjectManager extends AbstractGenericDao implements ProjectManager { private ConfigManager configManager; @Inject - public DefaultRepositoryManager(GeneralDao generalDao, ConfigManager configManager) { + public DefaultProjectManager(GeneralDao generalDao, ConfigManager configManager) { super(generalDao); this.configManager = configManager; @@ -33,11 +33,11 @@ public class DefaultRepositoryManager extends AbstractGenericDao imp @Transactional @Override - public void save(Repository entity) { + public void save(Project entity) { if (entity.isNew()) { super.save(entity); - RepositoryStorage storage = locateStorage(entity); + ProjectStorage storage = locateStorage(entity); storage.clean(); new Git(storage.ofCode()).init().bare(true).call(); @@ -48,31 +48,31 @@ public class DefaultRepositoryManager extends AbstractGenericDao imp @Transactional @Override - public void delete(Repository entity) { + public void delete(Project entity) { super.delete(entity); locateStorage(entity).delete(); } @Override - public RepositoryStorage locateStorage(Repository repository) { - return new RepositoryStorage(new File(configManager.getStorageSetting().getRepoStorageDir(), repository.getId().toString())); + public ProjectStorage locateStorage(Project project) { + return new ProjectStorage(new File(configManager.getStorageSetting().getStorageDir(), project.getId().toString())); } @Override - public Collection findPublic() { + public Collection findPublic() { return query(new Criterion[]{Restrictions.eq("publiclyAccessible", true)}); } @Override - public Repository find(String ownerName, String repositoryName) { + public Project find(String ownerName, String projectName) { Criteria criteria = createCriteria(); - criteria.add(Restrictions.eq("name", repositoryName)); + criteria.add(Restrictions.eq("name", projectName)); criteria.createAlias("owner", "owner"); criteria.add(Restrictions.eq("owner.name", ownerName)); criteria.setMaxResults(1); - return (Repository) criteria.uniqueResult(); + return (Project) criteria.uniqueResult(); } } diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultRepositoryAuthorizationByIndividualManager.java b/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultRepositoryAuthorizationByIndividualManager.java deleted file mode 100644 index 04d7cfe0ce..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultRepositoryAuthorizationByIndividualManager.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.pmease.gitop.core.manager.impl; - -import javax.inject.Inject; -import javax.inject.Singleton; - -import com.pmease.commons.hibernate.dao.AbstractGenericDao; -import com.pmease.commons.hibernate.dao.GeneralDao; -import com.pmease.gitop.core.manager.RepositoryAuthorizationByIndividualManager; -import com.pmease.gitop.core.model.RepositoryAuthorizationByIndividual; - -@Singleton -public class DefaultRepositoryAuthorizationByIndividualManager - extends AbstractGenericDao - implements RepositoryAuthorizationByIndividualManager { - - @Inject - public DefaultRepositoryAuthorizationByIndividualManager(GeneralDao generalDao) { - super(generalDao); - } - -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultRepositoryAuthorizationByTeamManager.java b/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultRepositoryAuthorizationByTeamManager.java deleted file mode 100644 index 10e40d7533..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultRepositoryAuthorizationByTeamManager.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.pmease.gitop.core.manager.impl; - -import javax.inject.Inject; -import javax.inject.Singleton; - -import com.pmease.commons.hibernate.dao.AbstractGenericDao; -import com.pmease.commons.hibernate.dao.GeneralDao; -import com.pmease.gitop.core.manager.RepositoryAuthorizationByTeamManager; -import com.pmease.gitop.core.model.RepositoryAuthorizationByTeam; - -@Singleton -public class DefaultRepositoryAuthorizationByTeamManager extends AbstractGenericDao - implements RepositoryAuthorizationByTeamManager { - - @Inject - public DefaultRepositoryAuthorizationByTeamManager(GeneralDao generalDao) { - super(generalDao); - } - -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultRoleManager.java b/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultRoleManager.java deleted file mode 100644 index f2482bd9af..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultRoleManager.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.pmease.gitop.core.manager.impl; - -import javax.inject.Inject; -import javax.inject.Provider; -import javax.inject.Singleton; - -import org.hibernate.Session; - -import com.pmease.commons.hibernate.dao.AbstractGenericDao; -import com.pmease.commons.hibernate.dao.GeneralDao; -import com.pmease.gitop.core.manager.RoleManager; -import com.pmease.gitop.core.model.Role; - -@Singleton -public class DefaultRoleManager extends AbstractGenericDao implements RoleManager { - - @Inject - public DefaultRoleManager(GeneralDao generalDao, Provider sessionProvider) { - super(generalDao); - } - -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultUserAuthorizationByIndividualManager.java b/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultUserAuthorizationByIndividualManager.java deleted file mode 100644 index 6b74242516..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/manager/impl/DefaultUserAuthorizationByIndividualManager.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.pmease.gitop.core.manager.impl; - -import javax.inject.Inject; -import javax.inject.Singleton; - -import com.pmease.commons.hibernate.dao.AbstractGenericDao; -import com.pmease.commons.hibernate.dao.GeneralDao; -import com.pmease.gitop.core.manager.UserAuthorizationByIndividualManager; -import com.pmease.gitop.core.model.UserAuthorizationByIndividual; - -@Singleton -public class DefaultUserAuthorizationByIndividualManager - extends AbstractGenericDao - implements UserAuthorizationByIndividualManager { - - @Inject - public DefaultUserAuthorizationByIndividualManager(GeneralDao generalDao) { - super(generalDao); - } - -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/model/RepositoryAuthorizationByTeam.java b/gitop.core/src/main/java/com/pmease/gitop/core/model/Authorization.java similarity index 52% rename from gitop.core/src/main/java/com/pmease/gitop/core/model/RepositoryAuthorizationByTeam.java rename to gitop.core/src/main/java/com/pmease/gitop/core/model/Authorization.java index a344e213de..eb9137ae70 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/model/RepositoryAuthorizationByTeam.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/model/Authorization.java @@ -7,14 +7,14 @@ import javax.persistence.Table; import javax.persistence.UniqueConstraint; import com.pmease.commons.hibernate.AbstractEntity; -import com.pmease.gitop.core.permission.operation.RepositoryOperation; +import com.pmease.gitop.core.permission.operation.GeneralOperation; @SuppressWarnings("serial") @Entity @Table(uniqueConstraints={ - @UniqueConstraint(columnNames={"team", "repository"}) + @UniqueConstraint(columnNames={"team", "project"}) }) -public class RepositoryAuthorizationByTeam extends AbstractEntity { +public class Authorization extends AbstractEntity { @ManyToOne @JoinColumn(nullable=false) @@ -22,15 +22,15 @@ public class RepositoryAuthorizationByTeam extends AbstractEntity { @ManyToOne @JoinColumn(nullable=false) - private Repository repository; + private Project project; - private RepositoryOperation authorizedOperation = RepositoryOperation.READ; + private GeneralOperation authorizedOperation = GeneralOperation.READ; - public RepositoryOperation getAuthorizedOperation() { + public GeneralOperation getAuthorizedOperation() { return authorizedOperation; } - public void setAuthorizedOperation(RepositoryOperation authorizedOperation) { + public void setAuthorizedOperation(GeneralOperation authorizedOperation) { this.authorizedOperation = authorizedOperation; } @@ -42,12 +42,12 @@ public class RepositoryAuthorizationByTeam extends AbstractEntity { this.team = team; } - public Repository getRepository() { - return repository; + public Project getProject() { + return project; } - public void setRepository(Repository repository) { - this.repository = repository; + public void setProject(Project project) { + this.project = project; } } diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/model/Branch.java b/gitop.core/src/main/java/com/pmease/gitop/core/model/Branch.java index 20b147a12e..294e150bab 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/model/Branch.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/model/Branch.java @@ -12,23 +12,23 @@ import com.pmease.commons.hibernate.AbstractEntity; @SuppressWarnings("serial") @Entity @Table(uniqueConstraints={ - @UniqueConstraint(columnNames={"repository", "name"}) + @UniqueConstraint(columnNames={"project", "name"}) }) public class Branch extends AbstractEntity { @ManyToOne @JoinColumn(nullable=false) - private Repository repository; + private Project project; @Column(nullable=false) private String name; - public Repository getRepository() { - return repository; + public Project getProject() { + return project; } - public void setRepository(Repository repository) { - this.repository = repository; + public void setProject(Project project) { + this.project = project; } public String getName() { diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/model/TeamMembership.java b/gitop.core/src/main/java/com/pmease/gitop/core/model/Membership.java similarity index 93% rename from gitop.core/src/main/java/com/pmease/gitop/core/model/TeamMembership.java rename to gitop.core/src/main/java/com/pmease/gitop/core/model/Membership.java index 7b65896703..d70e597d2f 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/model/TeamMembership.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/model/Membership.java @@ -13,7 +13,7 @@ import com.pmease.commons.hibernate.AbstractEntity; @Table(uniqueConstraints={ @UniqueConstraint(columnNames={"user", "team"}) }) -public class TeamMembership extends AbstractEntity { +public class Membership extends AbstractEntity { @ManyToOne @JoinColumn(nullable=false) diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/model/MergeRequest.java b/gitop.core/src/main/java/com/pmease/gitop/core/model/MergeRequest.java index d683b9963a..d5c7f668b3 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/model/MergeRequest.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/model/MergeRequest.java @@ -26,7 +26,7 @@ import com.pmease.commons.hibernate.AbstractEntity; import com.pmease.gitop.core.Gitop; import com.pmease.gitop.core.gatekeeper.CheckResult; import com.pmease.gitop.core.gatekeeper.GateKeeper; -import com.pmease.gitop.core.manager.RepositoryManager; +import com.pmease.gitop.core.manager.ProjectManager; import com.pmease.gitop.core.manager.VoteInvitationManager; @SuppressWarnings("serial") @@ -172,7 +172,7 @@ public class MergeRequest extends AbstractEntity { if (effectiveUpdates == null) { effectiveUpdates = new ArrayList(); - File repoDir = Gitop.getInstance(RepositoryManager.class).locateStorage(getDestination().getRepository()).ofCode(); + File repoDir = Gitop.getInstance(ProjectManager.class).locateStorage(getDestination().getProject()).ofCode(); Git git = new Git(repoDir); CheckAncestorCommand command = git.checkAncestor(); command.ancestor(getMergeBase()); @@ -195,7 +195,7 @@ public class MergeRequest extends AbstractEntity { } public boolean isFastForward() { - File repoDir = Gitop.getInstance(RepositoryManager.class).locateStorage(getDestination().getRepository()).ofCode(); + File repoDir = Gitop.getInstance(ProjectManager.class).locateStorage(getDestination().getProject()).ofCode(); CheckAncestorCommand command = new Git(repoDir).checkAncestor(); command.ancestor(getDestination().getName()); command.descendant(getLatestUpdate().getRefName()); @@ -203,8 +203,8 @@ public class MergeRequest extends AbstractEntity { } public Collection findTouchedFiles() { - RepositoryManager repositoryManager = Gitop.getInstance(RepositoryManager.class); - File repoDir = repositoryManager.locateStorage(getDestination().getRepository()).ofCode(); + ProjectManager projectManager = Gitop.getInstance(ProjectManager.class); + File repoDir = projectManager.locateStorage(getDestination().getProject()).ofCode(); MergeRequestUpdate update = getLatestUpdate(); if (update != null) { FindChangedFilesCommand command = new Git(repoDir).findChangedFiles(); @@ -218,8 +218,8 @@ public class MergeRequest extends AbstractEntity { public boolean isMerged() { if (merged == null) { - RepositoryManager repositoryManager = Gitop.getInstance(RepositoryManager.class); - File repoDir = repositoryManager.locateStorage(getDestination().getRepository()).ofCode(); + ProjectManager projectManager = Gitop.getInstance(ProjectManager.class); + File repoDir = projectManager.locateStorage(getDestination().getProject()).ofCode(); CheckAncestorCommand command = new Git(repoDir).checkAncestor(); command.ancestor(getLatestUpdate().getRefName()); command.descendant(getDestination().getName()); @@ -230,8 +230,8 @@ public class MergeRequest extends AbstractEntity { public String getMergeBase() { if (mergeBase == null) { - RepositoryManager repositoryManager = Gitop.getInstance(RepositoryManager.class); - File repoDir = repositoryManager.locateStorage(getDestination().getRepository()).ofCode(); + ProjectManager projectManager = Gitop.getInstance(ProjectManager.class); + File repoDir = projectManager.locateStorage(getDestination().getProject()).ofCode(); CalcMergeBaseCommand command = new Git(repoDir).calcMergeBase(); command.rev1(getLatestUpdate().getRefName()); command.rev2(getDestination().getName()); @@ -315,7 +315,7 @@ public class MergeRequest extends AbstractEntity { } /** - * Check this request with gate keeper of target repository. + * Check this request with gate keeper of target project. *

* @param force * whether or not to force the check. Since the check might be time-consuming, Gitop @@ -326,7 +326,7 @@ public class MergeRequest extends AbstractEntity { */ public Optional check(boolean force) { if (checkResult == null || force) { - GateKeeper gateKeeper = getDestination().getRepository().getGateKeeper(); + GateKeeper gateKeeper = getDestination().getProject().getGateKeeper(); if (gateKeeper != null) { checkResult = Optional.of(gateKeeper.check(this)); diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/model/Repository.java b/gitop.core/src/main/java/com/pmease/gitop/core/model/Project.java similarity index 61% rename from gitop.core/src/main/java/com/pmease/gitop/core/model/Repository.java rename to gitop.core/src/main/java/com/pmease/gitop/core/model/Project.java index df5fb40547..c34bc1f03b 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/model/Repository.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/model/Project.java @@ -23,7 +23,7 @@ import com.pmease.gitop.core.manager.UserManager; import com.pmease.gitop.core.permission.ObjectPermission; import com.pmease.gitop.core.permission.object.ProtectedObject; import com.pmease.gitop.core.permission.object.UserBelonging; -import com.pmease.gitop.core.permission.operation.RepositoryOperation; +import com.pmease.gitop.core.permission.operation.GeneralOperation; @Entity @Table(uniqueConstraints={ @@ -31,7 +31,7 @@ import com.pmease.gitop.core.permission.operation.RepositoryOperation; }) @SuppressWarnings("serial") @Editable -public class Repository extends AbstractEntity implements UserBelonging { +public class Project extends AbstractEntity implements UserBelonging { @ManyToOne @JoinColumn(nullable=false) @@ -44,17 +44,13 @@ public class Repository extends AbstractEntity implements UserBelonging { private boolean publiclyAccessible; - private RepositoryOperation defaultAuthorizedOperation; + @Column(nullable=false) + private GeneralOperation defaultAuthorizedOperation = GeneralOperation.NO_ACCESS; private GateKeeper gateKeeper; - @OneToMany(mappedBy="repository") - private Collection authorizationsByTeam = - new ArrayList(); - - @OneToMany(mappedBy="repository") - private Collection authorizationsByIndividual = - new ArrayList(); + @OneToMany(mappedBy="project") + private Collection authorizations = new ArrayList(); public User getOwner() { return owner; @@ -65,7 +61,7 @@ public class Repository extends AbstractEntity implements UserBelonging { } @Editable(description= - "Specify name of the repository. It will be used to identify the repository when accessing via Git.") + "Specify name of the project. It will be used to identify the project when accessing via Git.") @NotEmpty public String getName() { return name; @@ -75,7 +71,7 @@ public class Repository extends AbstractEntity implements UserBelonging { this.name = name; } - @Editable(description="Specify description of the repository.") + @Editable(description="Specify description of the project.") public String getDescription() { return description; } @@ -85,7 +81,7 @@ public class Repository extends AbstractEntity implements UserBelonging { } @Editable(name="Public", description= - "If a repository is made public, it will be able to be browsed/pulled by anonymous users.") + "If a project is made public, it will be able to be browsed/pulled by anonymous users.") public boolean isPubliclyAccessible() { return publiclyAccessible; } @@ -94,12 +90,12 @@ public class Repository extends AbstractEntity implements UserBelonging { this.publiclyAccessible = publiclyAccessible; } - public RepositoryOperation getDefaultAuthorizedOperation() { + public GeneralOperation getDefaultAuthorizedOperation() { return defaultAuthorizedOperation; } public void setDefaultAuthorizedOperation( - RepositoryOperation defaultAuthorizedOperation) { + GeneralOperation defaultAuthorizedOperation) { this.defaultAuthorizedOperation = defaultAuthorizedOperation; } @@ -119,35 +115,25 @@ public class Repository extends AbstractEntity implements UserBelonging { return getOwner(); } - public Collection getAuthorizationsByTeam() { - return authorizationsByTeam; + public Collection getAuthorizations() { + return authorizations; } - public void setAuthorizationsByTeam( - Collection authorizationsByTeam) { - this.authorizationsByTeam = authorizationsByTeam; - } - - public Collection getAuthorizationsByIndividual() { - return authorizationsByIndividual; - } - - public void setAuthorizationsByIndividual( - Collection authorizationsByIndividual) { - this.authorizationsByIndividual = authorizationsByIndividual; + public void setAuthorizations(Collection authorizations) { + this.authorizations = authorizations; } @Override public boolean has(ProtectedObject object) { - if (object instanceof Repository) { - Repository repository = (Repository) object; - return repository.getId().equals(getId()); + if (object instanceof Project) { + Project project = (Project) object; + return project.getId().equals(getId()); } else { return false; } } - public Collection findAuthorizedUsers(RepositoryOperation operation) { + public Collection findAuthorizedUsers(GeneralOperation operation) { Set authorizedUsers = new HashSet(); for (User user: Gitop.getInstance(UserManager.class).query(null)) { if (user.asSubject().isPermitted(new ObjectPermission(this, operation))) diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/model/RepositoryAuthorizationByIndividual.java b/gitop.core/src/main/java/com/pmease/gitop/core/model/RepositoryAuthorizationByIndividual.java deleted file mode 100644 index b3cd5642ce..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/model/RepositoryAuthorizationByIndividual.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.pmease.gitop.core.model; - -import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Table; -import javax.persistence.UniqueConstraint; - -import com.pmease.commons.hibernate.AbstractEntity; -import com.pmease.gitop.core.permission.operation.RepositoryOperation; - -@SuppressWarnings("serial") -@Entity -@Table(uniqueConstraints={ - @UniqueConstraint(columnNames={"individual", "repository"}) -}) -public class RepositoryAuthorizationByIndividual extends AbstractEntity { - - @ManyToOne - @JoinColumn(nullable=false) - private User individual; - - @ManyToOne - @JoinColumn(nullable=false) - private Repository repository; - - private RepositoryOperation authorizedOperation = RepositoryOperation.READ; - - public RepositoryOperation getAuthorizedOperation() { - return authorizedOperation; - } - - public void setAuthorizedOperation(RepositoryOperation authorizedOperation) { - this.authorizedOperation = authorizedOperation; - } - - public User getIndividual() { - return individual; - } - - public void setIndividual(User individual) { - this.individual = individual; - } - - public Repository getRepository() { - return repository; - } - - public void setRepository(Repository repository) { - this.repository = repository; - } - -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/model/Role.java b/gitop.core/src/main/java/com/pmease/gitop/core/model/Role.java deleted file mode 100644 index 575971b2a2..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/model/Role.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.pmease.gitop.core.model; - -import java.util.ArrayList; -import java.util.Collection; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.OneToMany; - -import org.apache.shiro.authz.Permission; - -import com.pmease.commons.hibernate.AbstractEntity; -import com.pmease.gitop.core.permission.ObjectPermission; -import com.pmease.gitop.core.permission.operation.PrivilegedOperation; - -@Entity -@SuppressWarnings("serial") -public class Role extends AbstractEntity implements Permission { - - @Column(nullable=false, unique=true) - private String name; - - private String description; - - @Column(nullable=false) - private ArrayList operations = new ArrayList(); - - @OneToMany(mappedBy="role") - private Collection memberships = new ArrayList(); - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public Collection getMemberships() { - return memberships; - } - - public void setMemberships(Collection memberships) { - this.memberships = memberships; - } - - public ArrayList getOperations() { - return operations; - } - - public void setOperations(ArrayList operations) { - this.operations = operations; - } - - @Override - public boolean implies(Permission permission) { - if (permission instanceof ObjectPermission) { - ObjectPermission objectPermission = (ObjectPermission) permission; - for (PrivilegedOperation each: getOperations()) { - if (each.can(objectPermission.getOperation())) - return true; - } - } - return false; - } - -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/model/RoleMembership.java b/gitop.core/src/main/java/com/pmease/gitop/core/model/RoleMembership.java deleted file mode 100644 index a93d57ea45..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/model/RoleMembership.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.pmease.gitop.core.model; - -import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Table; -import javax.persistence.UniqueConstraint; - -import com.pmease.commons.hibernate.AbstractEntity; - -@SuppressWarnings("serial") -@Entity -@Table(uniqueConstraints={ - @UniqueConstraint(columnNames={"user", "role"}) -}) -public class RoleMembership extends AbstractEntity { - - @ManyToOne - @JoinColumn(nullable=false) - private User user; - - @ManyToOne - @JoinColumn(nullable=false) - private Role role; - - public User getUser() { - return user; - } - - public void setUser(User user) { - this.user = user; - } - - public Role getRole() { - return role; - } - - public void setRole(Role role) { - this.role = role; - } - -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/model/Team.java b/gitop.core/src/main/java/com/pmease/gitop/core/model/Team.java index d6e4f51fa7..bfe252136f 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/model/Team.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/model/Team.java @@ -15,7 +15,7 @@ import org.apache.shiro.authz.Permission; import com.pmease.commons.hibernate.AbstractEntity; import com.pmease.gitop.core.permission.ObjectPermission; -import com.pmease.gitop.core.permission.operation.UserOperation; +import com.pmease.gitop.core.permission.operation.GeneralOperation; @Entity @Table(uniqueConstraints={ @@ -33,18 +33,14 @@ public class Team extends AbstractEntity implements Permission { private String description; - private boolean anonymous; - - private boolean register; - @Column(nullable=false) - private UserOperation authorizedOperation = UserOperation.READ; + private GeneralOperation authorizedOperation = GeneralOperation.READ; @OneToMany(mappedBy="team") - private Collection memberships = new ArrayList(); + private Collection memberships = new ArrayList(); @OneToMany(mappedBy="team") - private Collection repositoryAuthorizations = new ArrayList(); + private Collection authorizations = new ArrayList(); public User getOwner() { return owner; @@ -70,44 +66,28 @@ public class Team extends AbstractEntity implements Permission { this.description = description; } - public boolean isAnonymous() { - return anonymous; - } - - public void setAnonymous(boolean anonymous) { - this.anonymous = anonymous; - } - - public boolean isRegister() { - return register; - } - - public void setRegister(boolean register) { - this.register = register; - } - - public UserOperation getAuthorizedOperation() { + public GeneralOperation getAuthorizedOperation() { return authorizedOperation; } - public void setAuthorizedOperation(UserOperation authorizedOeration) { + public void setAuthorizedOperation(GeneralOperation authorizedOeration) { this.authorizedOperation = authorizedOeration; } - public Collection getMemberships() { + public Collection getMemberships() { return memberships; } - public void setMemberships(Collection memberships) { + public void setMemberships(Collection memberships) { this.memberships = memberships; } - public Collection getRepositoryAuthorizations() { - return repositoryAuthorizations; + public Collection getAuthorizations() { + return authorizations; } - public void setRepositoryAuthorizations(Collection repositoryAuthorizations) { - this.repositoryAuthorizations = repositoryAuthorizations; + public void setAuthorizations(Collection authorizations) { + this.authorizations = authorizations; } @Override @@ -118,10 +98,10 @@ public class Team extends AbstractEntity implements Permission { if (userPermission.implies(objectPermission)) return true; - for (RepositoryAuthorizationByTeam authorization: getRepositoryAuthorizations()) { - Permission repositoryPermission = new ObjectPermission( - authorization.getRepository(), authorization.getAuthorizedOperation()); - if (repositoryPermission.implies(objectPermission)) + for (Authorization authorization: getAuthorizations()) { + Permission projectPermission = new ObjectPermission( + authorization.getProject(), authorization.getAuthorizedOperation()); + if (projectPermission.implies(objectPermission)) return true; } } diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/model/User.java b/gitop.core/src/main/java/com/pmease/gitop/core/model/User.java index e39a3e97a4..0fcbd7ed58 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/model/User.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/model/User.java @@ -16,19 +16,19 @@ import com.pmease.commons.editable.annotation.Password; import com.pmease.commons.loader.AppLoader; import com.pmease.commons.shiro.AbstractUser; import com.pmease.gitop.core.Gitop; -import com.pmease.gitop.core.manager.RepositoryManager; +import com.pmease.gitop.core.manager.ProjectManager; import com.pmease.gitop.core.manager.UserManager; import com.pmease.gitop.core.permission.ObjectPermission; import com.pmease.gitop.core.permission.object.ProtectedObject; import com.pmease.gitop.core.permission.object.UserBelonging; -import com.pmease.gitop.core.permission.operation.RepositoryOperation; +import com.pmease.gitop.core.permission.operation.GeneralOperation; /** * This class represents either a project or an user in the system. *

* In Gitop, users and projects are the same thing. * If necessary, you can always treat an user account as a project account. - * {@link Repository} and {@link Team} are always created under a specific account. + * {@link Project} and {@link Team} are always created under a specific account. * * @author robin * @@ -43,17 +43,16 @@ public class User extends AbstractUser implements ProtectedObject { private String fullName; - @OneToMany(mappedBy="user") - private Collection teamMemberships = new ArrayList(); + private boolean admin; @OneToMany(mappedBy="user") - private Collection roleMemberships = new ArrayList(); + private Collection memberships = new ArrayList(); @OneToMany(mappedBy="submitter") private Collection mergeRequests = new ArrayList(); @OneToMany(mappedBy="owner") - private Collection repositories = new ArrayList(); + private Collection repositories = new ArrayList(); @OneToMany(mappedBy="owner") private Collection teams = new ArrayList(); @@ -64,18 +63,6 @@ public class User extends AbstractUser implements ProtectedObject { @OneToMany(mappedBy="voter") private Collection voteVitations = new ArrayList(); - @OneToMany(mappedBy="individual") - private Collection repositoryAuthorizations = - new ArrayList(); - - @OneToMany(mappedBy="individual") - private Collection userAuthorizations = - new ArrayList(); - - @OneToMany(mappedBy="user") - private Collection authorizationsByIndividual = - new ArrayList(); - @Editable(order=100) @NotEmpty @Override @@ -111,27 +98,27 @@ public class User extends AbstractUser implements ProtectedObject { return super.getPasswordHash(); } - public Collection getTeamMemberships() { - return teamMemberships; + public boolean isAdmin() { + return admin; } - public void setTeamMemberships(Collection teamMemberships) { - this.teamMemberships = teamMemberships; + public void setAdmin(boolean admin) { + this.admin = admin; } - public Collection getRoleMemberships() { - return roleMemberships; + public Collection getMemberships() { + return memberships; } - public void setRoleMemberships(Collection roleMemberships) { - this.roleMemberships = roleMemberships; + public void setMemberships(Collection memberships) { + this.memberships = memberships; } - public Collection getRepositories() { + public Collection getRepositories() { return repositories; } - public void setRepositories(Collection repositories) { + public void setRepositories(Collection repositories) { this.repositories = repositories; } @@ -175,33 +162,6 @@ public class User extends AbstractUser implements ProtectedObject { this.voteVitations = voteVitations; } - public Collection getRepositoryAuthorizations() { - return repositoryAuthorizations; - } - - public void setRepositoryAuthorizations( - Collection repositoryAuthorizations) { - this.repositoryAuthorizations = repositoryAuthorizations; - } - - public Collection getUserAuthorizations() { - return userAuthorizations; - } - - public void setUserAuthorizations( - Collection userAuthorizations) { - this.userAuthorizations = userAuthorizations; - } - - public Collection getAuthorizationsByIndividual() { - return authorizationsByIndividual; - } - - public void setAuthorizationsByIndividual( - Collection authorizationsByIndividual) { - this.authorizationsByIndividual = authorizationsByIndividual; - } - @Override public boolean has(ProtectedObject object) { if (object instanceof User) { @@ -233,17 +193,21 @@ public class User extends AbstractUser implements ProtectedObject { if (userId != 0L) { return AppLoader.getInstance(UserManager.class).load(userId); } else { - User user = new User(); - user.setId(userId); - user.setName("Anonymous"); - return user; + return anonymous(); } } + + public static User anonymous() { + User user = new User(); + user.setId(0L); + user.setName("Guest"); + return user; + } @Override public boolean implies(Permission permission) { - // Root user can do anything - if (isRoot()) + // Administrator can do anything + if (isRoot() || isAdmin()) return true; if (permission instanceof ObjectPermission) { @@ -253,40 +217,22 @@ public class User extends AbstractUser implements ProtectedObject { if (has(objectPermission.getObject())) return true; - for (RepositoryAuthorizationByIndividual authorization: getRepositoryAuthorizations()) { - ObjectPermission repositoryPermission = new ObjectPermission( - authorization.getRepository(), authorization.getAuthorizedOperation()); - if (repositoryPermission.implies(objectPermission)) - return true; - } - - for (UserAuthorizationByIndividual each: getUserAuthorizations()) { - ObjectPermission userPermission = new ObjectPermission(each.getUser(), each.getAuthorizedOperation()); - if (userPermission.implies(objectPermission)) - return true; - } - for (Team team: getTeams()) { if (team.implies(objectPermission)) return true; } - for (RoleMembership each: getRoleMemberships()) { - if (each.getRole().implies(objectPermission)) - return true; - } - - for (Repository each: Gitop.getInstance(RepositoryManager.class).query(null)) { - ObjectPermission repositoryPermission = new ObjectPermission(each, each.getDefaultAuthorizedOperation()); - if (repositoryPermission.implies(objectPermission)) + for (Project each: Gitop.getInstance(ProjectManager.class).query(null)) { + ObjectPermission projectPermission = new ObjectPermission(each, each.getDefaultAuthorizedOperation()); + if (projectPermission.implies(objectPermission)) return true; } } // check if is public access - for (Repository each: Gitop.getInstance(RepositoryManager.class).findPublic()) { - ObjectPermission repositoryPermission = new ObjectPermission(each, RepositoryOperation.READ); - if (repositoryPermission.implies(objectPermission)) + for (Project each: Gitop.getInstance(ProjectManager.class).findPublic()) { + ObjectPermission projectPermission = new ObjectPermission(each, GeneralOperation.READ); + if (projectPermission.implies(objectPermission)) return true; } } @@ -301,4 +247,11 @@ public class User extends AbstractUser implements ProtectedObject { return getId() == 0L; } + public String getDisplayName() { + if (getFullName() == null) + return getName(); + else + return getFullName(); + } + } diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/model/UserAuthorizationByIndividual.java b/gitop.core/src/main/java/com/pmease/gitop/core/model/UserAuthorizationByIndividual.java deleted file mode 100644 index 729563343c..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/model/UserAuthorizationByIndividual.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.pmease.gitop.core.model; - -import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Table; -import javax.persistence.UniqueConstraint; - -import com.pmease.commons.hibernate.AbstractEntity; -import com.pmease.gitop.core.permission.operation.UserOperation; - -@SuppressWarnings("serial") -@Entity -@Table(uniqueConstraints={ - @UniqueConstraint(columnNames={"individual", "user"}) -}) -public class UserAuthorizationByIndividual extends AbstractEntity { - - @ManyToOne - @JoinColumn(nullable=false) - private User individual; - - @ManyToOne - @JoinColumn(nullable=false) - private User user; - - private UserOperation authorizedOperation = UserOperation.READ; - - public UserOperation getAuthorizedOperation() { - return authorizedOperation; - } - - public void setAuthorizedOperation(UserOperation authorizedOperation) { - this.authorizedOperation = authorizedOperation; - } - - public User getIndividual() { - return individual; - } - - public void setIndividual(User individual) { - this.individual = individual; - } - - public User getUser() { - return user; - } - - public void setUser(User user) { - this.user = user; - } - -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/permission/BranchPermission.java b/gitop.core/src/main/java/com/pmease/gitop/core/permission/BranchPermission.java deleted file mode 100644 index 8f5e1618c2..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/permission/BranchPermission.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.pmease.gitop.core.permission; - -import com.pmease.gitop.core.permission.operation.PrivilegedOperation; - -public class BranchPermission { - - private final String branchNames; - - private final PrivilegedOperation branchOperation; - - public BranchPermission(String branchNames, PrivilegedOperation branchOperation) { - this.branchNames = branchNames; - this.branchOperation = branchOperation; - } - - public String getBranchNames() { - return branchNames; - } - - public PrivilegedOperation getBranchOperation() { - return branchOperation; - } - -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/permission/ObjectPermission.java b/gitop.core/src/main/java/com/pmease/gitop/core/permission/ObjectPermission.java index f1d3b95996..8200f8f221 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/permission/ObjectPermission.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/permission/ObjectPermission.java @@ -2,14 +2,11 @@ package com.pmease.gitop.core.permission; import org.apache.shiro.authz.Permission; -import com.pmease.gitop.core.model.Repository; +import com.pmease.gitop.core.model.Project; import com.pmease.gitop.core.model.User; import com.pmease.gitop.core.permission.object.ProtectedObject; -import com.pmease.gitop.core.permission.object.SystemObject; +import com.pmease.gitop.core.permission.operation.GeneralOperation; import com.pmease.gitop.core.permission.operation.PrivilegedOperation; -import com.pmease.gitop.core.permission.operation.RepositoryOperation; -import com.pmease.gitop.core.permission.operation.SystemOperation; -import com.pmease.gitop.core.permission.operation.UserOperation; /** * This class represents permissions to operate an account and its belongings. @@ -56,31 +53,27 @@ public class ObjectPermission implements Permission { } public static ObjectPermission ofUserAdmin(User user) { - return new ObjectPermission(user, UserOperation.ADMINISTRATION); + return new ObjectPermission(user, GeneralOperation.ADMINISTRATION); } public static ObjectPermission ofUserRead(User user) { - return new ObjectPermission(user, UserOperation.READ); + return new ObjectPermission(user, GeneralOperation.READ); } public static ObjectPermission ofUserWrite(User user) { - return new ObjectPermission(user, UserOperation.WRITE); + return new ObjectPermission(user, GeneralOperation.WRITE); } - public static ObjectPermission ofRepositoryAdmin(Repository repository) { - return new ObjectPermission(repository, RepositoryOperation.ADMINISTRATION); + public static ObjectPermission ofProjectAdmin(Project project) { + return new ObjectPermission(project, GeneralOperation.ADMINISTRATION); } - public static ObjectPermission ofRepositoryRead(Repository repository) { - return new ObjectPermission(repository, RepositoryOperation.READ); + public static ObjectPermission ofProjectRead(Project project) { + return new ObjectPermission(project, GeneralOperation.READ); } - public static ObjectPermission ofRepositoryWrite(Repository repository) { - return new ObjectPermission(repository, RepositoryOperation.WRITE); + public static ObjectPermission ofProjectWrite(Project project) { + return new ObjectPermission(project, GeneralOperation.WRITE); } - public static ObjectPermission ofSystem(SystemOperation operation) { - return new ObjectPermission(new SystemObject(), operation); - } - } diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/permission/UserRealm.java b/gitop.core/src/main/java/com/pmease/gitop/core/permission/UserRealm.java index 08d2eaa7d8..0b6b49c654 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/permission/UserRealm.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/permission/UserRealm.java @@ -8,7 +8,6 @@ import org.apache.shiro.authc.credential.CredentialsMatcher; import com.pmease.commons.hibernate.dao.GeneralDao; import com.pmease.commons.shiro.AbstractRealm; import com.pmease.commons.shiro.AbstractUser; -import com.pmease.gitop.core.manager.RoleManager; import com.pmease.gitop.core.manager.TeamManager; import com.pmease.gitop.core.manager.UserManager; import com.pmease.gitop.core.model.User; @@ -20,7 +19,7 @@ public class UserRealm extends AbstractRealm { @Inject public UserRealm(GeneralDao generalDao, CredentialsMatcher credentialsMatcher, - UserManager userManager, RoleManager roleManager, TeamManager teamManager) { + UserManager userManager, TeamManager teamManager) { super(credentialsMatcher); this.userManager = userManager; @@ -31,9 +30,7 @@ public class UserRealm extends AbstractRealm { if (userId != 0L) { return userManager.load(userId); } else { - User user = new User(); - user.setId(0L); - return user; + return User.anonymous(); } } diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/permission/object/SystemObject.java b/gitop.core/src/main/java/com/pmease/gitop/core/permission/object/SystemObject.java deleted file mode 100644 index e0a3246587..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/permission/object/SystemObject.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.pmease.gitop.core.permission.object; - -public class SystemObject implements ProtectedObject { - - @Override - public boolean has(ProtectedObject object) { - return true; - } - -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/permission/operation/GeneralOperation.java b/gitop.core/src/main/java/com/pmease/gitop/core/permission/operation/GeneralOperation.java new file mode 100644 index 0000000000..f327cd0aaa --- /dev/null +++ b/gitop.core/src/main/java/com/pmease/gitop/core/permission/operation/GeneralOperation.java @@ -0,0 +1,49 @@ +package com.pmease.gitop.core.permission.operation; + +public enum GeneralOperation implements PrivilegedOperation { + + NO_ACCESS("No Access") { + + @Override + public boolean can(PrivilegedOperation operation) { + return false; + } + + }, + READ("Read") { + + @Override + public boolean can(PrivilegedOperation operation) { + return operation == READ; + } + + }, + WRITE("Write") { + + @Override + public boolean can(PrivilegedOperation operation) { + return operation == WRITE || READ.can(operation); + } + + }, + ADMINISTRATION("Administration") { + + @Override + public boolean can(PrivilegedOperation operation) { + return true; + } + + }; + + private final String displayName; + + GeneralOperation(String displayName) { + this.displayName = displayName; + } + + @Override + public String toString() { + return displayName; + } + +} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/permission/operation/RepositoryOperation.java b/gitop.core/src/main/java/com/pmease/gitop/core/permission/operation/RepositoryOperation.java deleted file mode 100644 index 6b690e7005..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/permission/operation/RepositoryOperation.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.pmease.gitop.core.permission.operation; - -public enum RepositoryOperation implements PrivilegedOperation { - READ { - - @Override - public boolean can(PrivilegedOperation operation) { - return operation == READ; - } - - }, - WRITE { - - @Override - public boolean can(PrivilegedOperation operation) { - return operation == WRITE || READ.can(operation); - } - - }, - ADMINISTRATION { - - @Override - public boolean can(PrivilegedOperation operation) { - return true; - } - - } -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/permission/operation/SystemOperation.java b/gitop.core/src/main/java/com/pmease/gitop/core/permission/operation/SystemOperation.java index f794c12c1a..079c708f99 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/permission/operation/SystemOperation.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/permission/operation/SystemOperation.java @@ -8,14 +8,6 @@ public enum SystemOperation implements PrivilegedOperation { return true; } - }, - VOTE { - - @Override - public boolean can(PrivilegedOperation operation) { - return operation == VOTE; - } - }, ADD_COMMENT { @@ -24,6 +16,14 @@ public enum SystemOperation implements PrivilegedOperation { return operation == ADD_COMMENT; } + }, + CREATE_PROJECT { + + @Override + public boolean can(PrivilegedOperation operation) { + return operation == CREATE_PROJECT; + } + }, CREATE_MERGE_REQUEST { @@ -32,31 +32,5 @@ public enum SystemOperation implements PrivilegedOperation { return operation == CREATE_MERGE_REQUEST; } - }, - CREATE_REPOSITORY { - - @Override - public boolean can(PrivilegedOperation operation) { - return operation == CREATE_REPOSITORY; - } - - }, - READ_ALL_REPOSITORIES { - - @Override - public boolean can(PrivilegedOperation operation) { - return operation == READ_ALL_REPOSITORIES || RepositoryOperation.READ.can(operation); - } - - }, - WRITE_ALL_REPOSITORIES { - - @Override - public boolean can(PrivilegedOperation operation) { - return operation == WRITE_ALL_REPOSITORIES - || READ_ALL_REPOSITORIES.can(operation) - || RepositoryOperation.WRITE.can(operation); - } - } } diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/permission/operation/UserOperation.java b/gitop.core/src/main/java/com/pmease/gitop/core/permission/operation/UserOperation.java deleted file mode 100644 index 59d8ea927f..0000000000 --- a/gitop.core/src/main/java/com/pmease/gitop/core/permission/operation/UserOperation.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.pmease.gitop.core.permission.operation; - -public enum UserOperation implements PrivilegedOperation { - READ { - - @Override - public boolean can(PrivilegedOperation operation) { - return operation == READ || RepositoryOperation.READ.can(operation); - } - - }, - WRITE { - - @Override - public boolean can(PrivilegedOperation operation) { - return operation == WRITE || READ.can(operation) || RepositoryOperation.WRITE.can(operation); - } - - }, - ADMINISTRATION { - - @Override - public boolean can(PrivilegedOperation operation) { - return true; - } - - } -} diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/setting/StorageSetting.java b/gitop.core/src/main/java/com/pmease/gitop/core/setting/StorageSetting.java index 38a2a4a9af..7730eb2ed4 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/setting/StorageSetting.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/setting/StorageSetting.java @@ -10,16 +10,16 @@ import com.pmease.commons.editable.annotation.Editable; @Editable public class StorageSetting implements Serializable { - private String repoStorageDir; + private String storageDir; @Editable @NotEmpty - public String getRepoStorageDir() { - return repoStorageDir; + public String getStorageDir() { + return storageDir; } - public void setRepoStorageDir(String repoStorageDir) { - this.repoStorageDir = repoStorageDir; + public void setStorageDir(String storageDir) { + this.storageDir = storageDir; } } diff --git a/gitop.core/src/main/java/com/pmease/gitop/core/storage/RepositoryStorage.java b/gitop.core/src/main/java/com/pmease/gitop/core/storage/ProjectStorage.java similarity index 84% rename from gitop.core/src/main/java/com/pmease/gitop/core/storage/RepositoryStorage.java rename to gitop.core/src/main/java/com/pmease/gitop/core/storage/ProjectStorage.java index c348cf2450..2083b81a50 100644 --- a/gitop.core/src/main/java/com/pmease/gitop/core/storage/RepositoryStorage.java +++ b/gitop.core/src/main/java/com/pmease/gitop/core/storage/ProjectStorage.java @@ -4,11 +4,11 @@ import java.io.File; import com.pmease.commons.util.FileUtils; -public class RepositoryStorage { +public class ProjectStorage { private final File storageDir; - public RepositoryStorage(File storageDir) { + public ProjectStorage(File storageDir) { this.storageDir = storageDir; } diff --git a/gitop.web/src/main/java/com/pmease/gitop/web/TestPage.java b/gitop.web/src/main/java/com/pmease/gitop/web/TestPage.java index a327f3cefc..5472c7ea40 100644 --- a/gitop.web/src/main/java/com/pmease/gitop/web/TestPage.java +++ b/gitop.web/src/main/java/com/pmease/gitop/web/TestPage.java @@ -5,9 +5,9 @@ import org.apache.wicket.markup.html.form.Form; import com.pmease.commons.editable.EditContext; import com.pmease.commons.wicket.editable.EditHelper; import com.pmease.gitop.core.Gitop; -import com.pmease.gitop.core.manager.RepositoryManager; +import com.pmease.gitop.core.manager.ProjectManager; import com.pmease.gitop.core.manager.UserManager; -import com.pmease.gitop.core.model.Repository; +import com.pmease.gitop.core.model.Project; @SuppressWarnings("serial") public class TestPage extends BasePage { @@ -16,7 +16,7 @@ public class TestPage extends BasePage { protected void onInitialize() { super.onInitialize(); - final EditContext editContext = EditHelper.getContext(new Repository()); + final EditContext editContext = EditHelper.getContext(new Project()); Form form = new Form("form") { @@ -25,9 +25,9 @@ public class TestPage extends BasePage { super.onSubmit(); editContext.validate(); if (!editContext.hasValidationError(true)) { - Repository repository = (Repository) editContext.getBean(); - repository.setOwner(Gitop.getInstance(UserManager.class).getRootUser()); - Gitop.getInstance(RepositoryManager.class).save(repository); + Project project = (Project) editContext.getBean(); + project.setOwner(Gitop.getInstance(UserManager.class).getRootUser()); + Gitop.getInstance(ProjectManager.class).save(project); } }