@Override public List<Link> links(T resource, ResourceContext resourceContext) { LinksBuilder linksBuilder = resourceContext.links(); for (LinkDefinition<T> linkDefinition : linkDefinitions.get()) { if (linkDefinition.getCheckFn().test(resource, resourceContext)) { linksBuilder = linkDefinition.addLink(linksBuilder, resource, resourceContext); } } return linksBuilder.build(); }
public static <T extends ProjectEntity, P extends ProjectFunction> BiPredicate<T, ResourceContext> withProjectFn(Class<P> projectFn) { return (T e, ResourceContext resourceContext) -> resourceContext.isProjectFunctionGranted(e, projectFn); }
public static <T extends ProjectEntity, G extends GlobalFunction> BiPredicate<T, ResourceContext> withGlobalFn(Class<G> globalFn) { return (T e, ResourceContext resourceContext) -> resourceContext.isGlobalFunctionGranted(globalFn); }
@Override public List<Link> links(LDAPMapping resource, ResourceContext resourceContext) { return resourceContext.links() // Update .link(Link.UPDATE, MvcUriComponentsBuilder.on(LDAPController.class).getMappingUpdateForm(resource.getId())) // Delete .link(Link.DELETE, MvcUriComponentsBuilder.on(LDAPController.class).deleteMapping(resource.getId())) // OK .build(); } }
/** * Checks if the <code>fn</code> function is granted for the current user * for the <code>projectEntity</code>'s project. */ default boolean isProjectFunctionGranted(ProjectEntity projectEntity, Class<? extends ProjectFunction> fn) { return isProjectFunctionGranted(projectEntity.projectId(), fn); }
@Override public List<Link> links(ArtifactoryConfiguration configuration, ResourceContext resourceContext) { return resourceContext.links() .self(on(ArtifactoryController.class).getConfiguration(configuration.getName())) .link(Link.UPDATE, on(ArtifactoryController.class).updateConfigurationForm(configuration.getName())) .link(Link.DELETE, on(ArtifactoryController.class).deleteConfiguration(configuration.getName())) .build(); } }
@Override public List<LinkDefinition<Branch>> getLinkDefinitions() { return Collections.singletonList( LinkDefinitions.link( "_download", branch -> MvcUriComponentsBuilder.on(SVNController.class).download( branch.getId(), "" ), (branch, rc) -> rc.isProjectFunctionGranted(branch, ProjectConfig.class) && svnService.getSVNRepository(branch).isPresent() ) ); }
@Override public List<Link> links(CombinedIssueServiceConfiguration configuration, ResourceContext resourceContext) { return resourceContext.links() .self(on(CombinedIssueServiceController.class).getConfiguration(configuration.getName())) .link(Link.UPDATE, on(CombinedIssueServiceController.class).updateConfigurationForm(configuration.getName()), GlobalSettings.class) .link(Link.DELETE, on(CombinedIssueServiceController.class).deleteConfiguration(configuration.getName()), GlobalSettings.class) .build(); } }
@Override public List<LinkDefinition<Build>> getLinkDefinitions() { return Arrays.asList( LinkDefinitions.link( "_changeLog", build -> { BuildDiffRequest request = new BuildDiffRequest(); request.setFrom(build.getId()); return MvcUriComponentsBuilder.on(SVNController.class).changeLog(request); }, (build, rc) -> rc.isProjectFunctionGranted(build, ProjectView.class) && svnService.getSVNRepository(build.getBranch()).isPresent() ), LinkDefinitions.page( "_changeLogPage", (build, resourceContext) -> resourceContext.isProjectFunctionGranted(build, ProjectView.class) && svnService.getSVNRepository(build.getBranch()).isPresent(), "extension/svn/changelog" ) ); }
@Override public List<Link> links(JIRAConfiguration configuration, ResourceContext resourceContext) { return resourceContext.links() .self(on(JIRAController.class).getConfiguration(configuration.getName())) .link(Link.UPDATE, on(JIRAController.class).updateConfigurationForm(configuration.getName())) .link(Link.DELETE, on(JIRAController.class).deleteConfiguration(configuration.getName())) .build(); } }
@Override public List<Link> links(JenkinsConfiguration configuration, ResourceContext resourceContext) { return resourceContext.links() .self(on(JenkinsController.class).getConfiguration(configuration.getName())) .link(Link.UPDATE, on(JenkinsController.class).updateConfigurationForm(configuration.getName())) .link(Link.DELETE, on(JenkinsController.class).deleteConfiguration(configuration.getName())) .build(); } }
@Override public List<Link> links(GitLabConfiguration configuration, ResourceContext resourceContext) { boolean globalSettingsGranted = securityService.isGlobalFunctionGranted(GlobalSettings.class); return resourceContext.links() .self(on(GitLabController.class).getConfiguration(configuration.getName())) .link(Link.UPDATE, on(GitLabController.class).updateConfigurationForm(configuration.getName()), globalSettingsGranted) .link(Link.DELETE, on(GitLabController.class).deleteConfiguration(configuration.getName()), globalSettingsGranted) // OK .build(); } }
@Override public List<Link> links(StashConfiguration configuration, ResourceContext resourceContext) { boolean globalSettingsGranted = securityService.isGlobalFunctionGranted(GlobalSettings.class); return resourceContext.links() .self(on(StashController.class).getConfiguration(configuration.getName())) .link(Link.UPDATE, on(StashController.class).updateConfigurationForm(configuration.getName()), globalSettingsGranted) .link(Link.DELETE, on(StashController.class).deleteConfiguration(configuration.getName()), globalSettingsGranted) // OK .build(); } }
@Override public List<Link> links(GitHubEngineConfiguration configuration, ResourceContext resourceContext) { boolean globalSettingsGranted = securityService.isGlobalFunctionGranted(GlobalSettings.class); return resourceContext.links() .self(on(GitHubController.class).getConfiguration(configuration.getName())) .link(Link.UPDATE, on(GitHubController.class).updateConfigurationForm(configuration.getName()), globalSettingsGranted) .link(Link.DELETE, on(GitHubController.class).deleteConfiguration(configuration.getName()), globalSettingsGranted) // OK .build(); } }
@Override public List<Link> links(SVNConfiguration configuration, ResourceContext resourceContext) { boolean globalSettingsGranted = securityService.isGlobalFunctionGranted(GlobalSettings.class); return resourceContext.links() .self(on(SVNController.class).getConfiguration(configuration.getName())) .link(Link.UPDATE, on(SVNController.class).updateConfigurationForm(configuration.getName())) .link(Link.DELETE, on(SVNController.class).deleteConfiguration(configuration.getName())) // Indexation .link("_indexation", on(SVNController.class).getLastRevisionInfo(configuration.getName()), globalSettingsGranted) .link("_indexationFromLatest", on(SVNController.class).indexFromLatest(configuration.getName()), globalSettingsGranted) .link("_indexationFull", on(SVNController.class).full(configuration.getName()), globalSettingsGranted) // OK .build(); } }
@Override public List<Link> links(SVNChangeLog changeLog, ResourceContext resourceContext) { return resourceContext.links() .link("_revisions", on(SVNController.class).changeLogRevisions(changeLog.getUuid())) .link("_issues", on(SVNController.class).changeLogIssues(changeLog.getUuid()), changeLog.getRepository().getConfiguredIssueService() != null) .link("_files", on(SVNController.class).changeLogFiles(changeLog.getUuid())) .link("_changeLogFileFilters", on(SCMController.class).getChangeLogFileFilters(changeLog.getProject().getId())) .link("_diff", on(SVNController.class).diff(null)) .link("_exportFormats", on(SVNController.class).changeLogExportFormats(changeLog.getBranch().getId())) .link("_exportIssues", on(SVNController.class).changeLog(new IssueChangeLogExportRequest())) .page( "_page", "extension/svn/changelog?from=%d&to=%d", changeLog.getFrom().getBuild().id(), changeLog.getTo().getBuild().id() ) .build(); }