diff --git a/alpine/alpine-infra/src/main/java/alpine/persistence/AlpineQueryManager.java b/alpine/alpine-infra/src/main/java/alpine/persistence/AlpineQueryManager.java index 840fef2b37..eee19833be 100644 --- a/alpine/alpine-infra/src/main/java/alpine/persistence/AlpineQueryManager.java +++ b/alpine/alpine-infra/src/main/java/alpine/persistence/AlpineQueryManager.java @@ -50,6 +50,8 @@ import java.util.Map; import java.util.Set; +import org.datanucleus.store.rdbms.query.JDOQLQuery; + /** * This QueryManager provides a concrete extension of {@link AbstractAlpineQueryManager} by * providing methods that operate on the default Alpine models such as ManagedUser and Team. @@ -537,8 +539,11 @@ public List getManagedUsers() { * @since 1.0.0 */ public User getUser(String username) { - final Query query = pm.newQuery(User.class, "username == :username"); - query.setParameters(username); + final Query query = pm.newQuery(User.class) + .filter("username == :username") + .setNamedParameters(Map.of("username", username)) + .extension(JDOQLQuery.EXTENSION_CANDIDATE_DONT_RESTRICT_DISCRIMINATOR, true); + return executeAndCloseUnique(query); } diff --git a/apiserver/src/main/java/org/dependencytrack/model/Role.java b/apiserver/src/main/java/org/dependencytrack/model/Role.java new file mode 100644 index 0000000000..90efc9c4c6 --- /dev/null +++ b/apiserver/src/main/java/org/dependencytrack/model/Role.java @@ -0,0 +1,154 @@ +/* + * This file is part of Dependency-Track. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright (c) OWASP Foundation. All Rights Reserved. + */ +package org.dependencytrack.model; + +import alpine.common.validation.RegexSequence; +import alpine.model.Permission; +import alpine.server.json.TrimmedStringDeserializer; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; + +import java.io.Serializable; +import java.util.Comparator; +import java.util.LinkedHashSet; +import java.util.Objects; +import java.util.Set; +import java.util.UUID; +import java.util.function.Function; + +import javax.jdo.annotations.Column; +import javax.jdo.annotations.Element; +import javax.jdo.annotations.FetchGroup; +import javax.jdo.annotations.IdGeneratorStrategy; +import javax.jdo.annotations.Join; +import javax.jdo.annotations.PersistenceCapable; +import javax.jdo.annotations.Persistent; +import javax.jdo.annotations.PrimaryKey; +import javax.jdo.annotations.Unique; + +/** + * Model for tracking roles. Roles define static sets of permissions + * that can be applied to a user with the scope of a project. + * + * @author Allen Shearin + * @since 5.6.0 + */ +@PersistenceCapable +@FetchGroup(name = "ALL", members = { + @Persistent(name = "name"), + @Persistent(name = "permissions"), + @Persistent(name = "uuid"), +}) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class Role implements Serializable { + + private static final long serialVersionUID = -427858073810766917L; + + /** + * Defines JDO fetch groups for this class. + */ + public enum FetchGroup { + ALL + } + + @PrimaryKey + @Persistent(valueStrategy = IdGeneratorStrategy.NATIVE) + @JsonIgnore + private long id; + + @Persistent + @Unique(name = "ROLE_NAME_IDX", deferred = "true") + @Column(name = "NAME", jdbcType = "VARCHAR", allowsNull = "false") + @NotBlank + @Size(min = 1, max = 255) + @JsonDeserialize(using = TrimmedStringDeserializer.class) + @Pattern(regexp = RegexSequence.Definition.PRINTABLE_CHARS, message = "The name may only contain printable characters") + private String name; + + @Persistent(table = "ROLES_PERMISSIONS", defaultFetchGroup = "true") + @Join(column = "ROLE_ID") + @Element(column = "PERMISSION_ID") + private Set permissions = new LinkedHashSet<>(); + + @Persistent(customValueStrategy = "uuid") + @Unique(name = "ROLE_UUID_IDX") + @Column(name = "UUID", sqlType = "UUID", allowsNull = "false") + @NotNull + private UUID uuid; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Set getPermissions() { + return permissions; + } + + public void setPermissions(Set permissions) { + this.permissions = permissions; + } + + public boolean addPermissions(Permission... permissions) { + this.permissions = Objects.requireNonNullElse(this.permissions, new LinkedHashSet<>()); + + return this.permissions.addAll(Set.of(permissions)); + } + + public UUID getUuid() { + return uuid; + } + + public void setUuid(UUID uuid) { + this.uuid = uuid; + } + + @Override + public String toString() { + var permissionStrings = permissions.stream() + .map(Permission::getName) + .sorted(Comparator.comparing(Function.identity(), String.CASE_INSENSITIVE_ORDER)) + .toList(); + + return "%s{uuid='%s', name='%s', permissions=%s}".formatted( + getClass().getSimpleName(), + uuid, + name, + permissionStrings); + } + +} diff --git a/apiserver/src/main/java/org/dependencytrack/model/UserProjectRole.java b/apiserver/src/main/java/org/dependencytrack/model/UserProjectRole.java new file mode 100644 index 0000000000..88c1ccd356 --- /dev/null +++ b/apiserver/src/main/java/org/dependencytrack/model/UserProjectRole.java @@ -0,0 +1,109 @@ +/* + * This file is part of Dependency-Track. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright (c) OWASP Foundation. All Rights Reserved. + */ +package org.dependencytrack.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; + +import alpine.model.User; + +import java.io.Serializable; + +import javax.jdo.annotations.Column; +import javax.jdo.annotations.IdGeneratorStrategy; +import javax.jdo.annotations.Index; +import javax.jdo.annotations.PersistenceCapable; +import javax.jdo.annotations.Persistent; +import javax.jdo.annotations.PrimaryKey; + +/** + * Base class for user-project-role mapping. + * + * @author Jonathan Howard + * @since 5.6.0 + */ +@PersistenceCapable(table = "USER_PROJECT_ROLES") +@JsonInclude(JsonInclude.Include.NON_NULL) +@Index(name = "USER_PROJECT_ROLES_IDX", unique = "true", members = { "user", "project" }) +public class UserProjectRole implements Serializable { + + @PrimaryKey + @Persistent(valueStrategy = IdGeneratorStrategy.NATIVE) + @JsonIgnore + private long id; + + @Persistent(defaultFetchGroup = "true") + @Column(name = "USER_ID") + private User user; + + @Persistent(defaultFetchGroup = "true") + @Column(name = "PROJECT_ID") + private Project project; + + @Persistent(defaultFetchGroup = "true") + @Column(name = "ROLE_ID") + private Role role; + + public UserProjectRole() {} + + public UserProjectRole(final User user, final Project project, final Role role) { + this.user = user; + this.project = project; + this.role = role; + } + + public long getId() { + return id; + } + + public void setId(final long id) { + this.id = id; + } + + public User getUser() { + return user; + } + + public void setUser(final User user) { + this.user = user; + } + + public Project getProject() { + return project; + } + + public void setProject(final Project project) { + this.project = project; + } + + public Role getRole() { + return role; + } + + public void setRole(final Role role) { + this.role = role; + } + + @Override + public String toString() { + return "%s{user='%s', project='%s', role='%s'}".formatted( + getClass().getSimpleName(), user.getUsername(), project.getName(), role.getName()); + } + +} diff --git a/apiserver/src/main/java/org/dependencytrack/persistence/DefaultObjectGenerator.java b/apiserver/src/main/java/org/dependencytrack/persistence/DefaultObjectGenerator.java index e1a480005a..3c513c2c1b 100644 --- a/apiserver/src/main/java/org/dependencytrack/persistence/DefaultObjectGenerator.java +++ b/apiserver/src/main/java/org/dependencytrack/persistence/DefaultObjectGenerator.java @@ -24,8 +24,10 @@ import alpine.model.ManagedUser; import alpine.model.Permission; import alpine.server.auth.PasswordService; + import jakarta.servlet.ServletContextEvent; import jakarta.servlet.ServletContextListener; + import org.dependencytrack.auth.Permissions; import org.dependencytrack.common.ConfigKey; import org.dependencytrack.model.ConfigPropertyConstants; @@ -38,9 +40,11 @@ import org.dependencytrack.util.WaitingLockConfiguration; import java.io.IOException; + import java.time.Duration; import java.time.Instant; import java.time.LocalDate; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -61,7 +65,56 @@ public class DefaultObjectGenerator implements ServletContextListener { private static final Logger LOGGER = Logger.getLogger(DefaultObjectGenerator.class); - private final Map permissionsMap = new HashMap<>(); + private static final Map PERMISSIONS_MAP = new HashMap<>(); + + private static final Map> DEFAULT_TEAM_PERMISSIONS = Map.of( + "Administrators", Stream.of(Permissions.values()) + .map(Permissions::name) + .toList(), + "Portfolio Managers", List.of( + Permissions.Constants.VIEW_PORTFOLIO, + Permissions.Constants.PORTFOLIO_MANAGEMENT, + Permissions.Constants.PORTFOLIO_MANAGEMENT_CREATE, + Permissions.Constants.PORTFOLIO_MANAGEMENT_READ, + Permissions.Constants.PORTFOLIO_MANAGEMENT_UPDATE, + Permissions.Constants.PORTFOLIO_MANAGEMENT_DELETE), + "Automation", List.of( + Permissions.Constants.VIEW_PORTFOLIO, + Permissions.Constants.BOM_UPLOAD), + "Badge Viewers", List.of( + Permissions.Constants.VIEW_BADGES)); + + private static final Map> DEFAULT_ROLE_PERMISSIONS = Map.of( + "Project Admin", List.of( + Permissions.Constants.PORTFOLIO_MANAGEMENT_CREATE, + Permissions.Constants.PORTFOLIO_MANAGEMENT_READ, + Permissions.Constants.PORTFOLIO_MANAGEMENT_UPDATE, + Permissions.Constants.PORTFOLIO_MANAGEMENT_DELETE, + Permissions.Constants.VULNERABILITY_ANALYSIS, + Permissions.Constants.VULNERABILITY_ANALYSIS_CREATE, + Permissions.Constants.VULNERABILITY_ANALYSIS_READ, + Permissions.Constants.VULNERABILITY_ANALYSIS_UPDATE, + Permissions.Constants.POLICY_MANAGEMENT, + Permissions.Constants.POLICY_MANAGEMENT_CREATE, + Permissions.Constants.POLICY_MANAGEMENT_READ, + Permissions.Constants.POLICY_MANAGEMENT_UPDATE, + Permissions.Constants.POLICY_MANAGEMENT_DELETE), + "Project Auditor", List.of( + Permissions.Constants.VIEW_PORTFOLIO, + Permissions.Constants.VIEW_VULNERABILITY, + Permissions.Constants.VIEW_POLICY_VIOLATION, + Permissions.Constants.VULNERABILITY_ANALYSIS_READ), + "Project Editor", List.of( + Permissions.Constants.BOM_UPLOAD, + Permissions.Constants.VIEW_PORTFOLIO, + Permissions.Constants.PORTFOLIO_MANAGEMENT_READ, + Permissions.Constants.VIEW_VULNERABILITY, + Permissions.Constants.VULNERABILITY_ANALYSIS_READ, + Permissions.Constants.PROJECT_CREATION_UPLOAD), + "Project Viewer", List.of( + Permissions.Constants.VIEW_PORTFOLIO, + Permissions.Constants.VIEW_VULNERABILITY, + Permissions.Constants.VIEW_BADGES)); /** * {@inheritDoc} @@ -123,6 +176,7 @@ private void executeLocked() { loadDefaultLicenses(qm); loadDefaultLicenseGroups(qm); loadDefaultRepositories(qm); + loadDefaultRoles(qm); loadDefaultConfigProperties(qm); loadDefaultNotificationPublishers(qm); recordDefaultObjectsVersion(qm); @@ -216,23 +270,16 @@ public void loadDefaultPermissions() { private void loadDefaultPermissions(final QueryManager qm) { LOGGER.info("Synchronizing permissions to datastore"); - for (final Permissions permission : Permissions.values()) { - if (qm.getPermission(permission.name()) == null) { - LOGGER.debug("Creating permission: " + permission.name()); - permissionsMap.put(permission.name(), - qm.createPermission(permission.name(), permission.getDescription())); - } - } - } - - private void createTeam(final QueryManager qm, final String name, final List permissions) { - LOGGER.debug("Creating team: " + name); - var team = qm.createTeam(name); - - LOGGER.debug("Assigning default permissions for team: " + name); - team.setPermissions(permissions); + List existing = Objects.requireNonNullElse(qm.getPermissions(), Collections.emptyList()) + .stream() + .map(Permission::getName) + .toList(); - qm.persist(team); + for (final Permissions value : Permissions.values()) + if (!existing.contains(value.name())) { + LOGGER.debug("Creating permission: " + value.name()); + PERMISSIONS_MAP.put(value.name(), qm.createPermission(value.name(), value.getDescription())); + } } @SuppressWarnings("unused") @@ -250,14 +297,20 @@ private void loadDefaultPersonas(final QueryManager qm) { return; LOGGER.info("Adding default users and teams to datastore"); + LOGGER.debug("Creating user: admin"); ManagedUser admin = qm.createManagedUser("admin", "Administrator", "admin@localhost", new String(PasswordService.createHash("admin".toCharArray())), true, true, false); - createTeam(qm, "Administrators", List.copyOf(permissionsMap.values())); - createTeam(qm, "Portfolio Managers", getPortfolioManagersPermissions()); - createTeam(qm, "Automation", getAutomationPermissions()); - createTeam(qm, "Badge Viewers", getBadgesPermissions()); + for (var name : DEFAULT_TEAM_PERMISSIONS.keySet()) { + LOGGER.debug("Creating team: " + name); + var team = qm.createTeam(name); + + LOGGER.debug("Assigning default permissions for team: " + name); + team.setPermissions(getPermissionsByName(DEFAULT_TEAM_PERMISSIONS.get(name))); + + qm.persist(team); + } LOGGER.debug("Adding admin user to System Administrators"); qm.addUserToTeam(admin, qm.getTeam("Administrators")); @@ -267,35 +320,35 @@ private void loadDefaultPersonas(final QueryManager qm) { qm.persist(admin); } - private List getPortfolioManagersPermissions() { - return getPermissionsByName(Permissions.Constants.VIEW_PORTFOLIO, - Permissions.Constants.PORTFOLIO_MANAGEMENT, - Permissions.Constants.PORTFOLIO_MANAGEMENT_CREATE, - Permissions.Constants.PORTFOLIO_MANAGEMENT_READ, - Permissions.Constants.PORTFOLIO_MANAGEMENT_UPDATE, - Permissions.Constants.PORTFOLIO_MANAGEMENT_DELETE); - } - - private List getAutomationPermissions() { - return getPermissionsByName(Permissions.Constants.VIEW_PORTFOLIO, - Permissions.Constants.BOM_UPLOAD); - } - - private List getBadgesPermissions() { - return getPermissionsByName(Permissions.Constants.VIEW_BADGES); - } - /** * Perform a lookup of {@link Permission}s for specified name(s). * * @param names permission names * @return list of {@link Permission}s */ - private List getPermissionsByName(String... names) { - return Stream.of(names) - .map(permissionsMap::get) - .filter(Objects::nonNull) - .toList(); + private List getPermissionsByName(List names) { + return names.stream().map(PERMISSIONS_MAP::get).filter(Objects::nonNull).toList(); + } + + public void loadDefaultRoles() { + try (final var qm = new QueryManager()) { + loadDefaultRoles(qm); + } + } + + /** + * Loads the default Roles + */ + private void loadDefaultRoles(final QueryManager qm) { + if (!qm.getRoles().isEmpty()) + return; + + LOGGER.info("Adding default roles to datastore"); + + for (var name : DEFAULT_ROLE_PERMISSIONS.keySet()) { + LOGGER.debug("Creating role: " + name); + qm.createRole(name, getPermissionsByName(DEFAULT_ROLE_PERMISSIONS.get(name))); + } } public void loadDefaultRepositories() { diff --git a/apiserver/src/main/java/org/dependencytrack/persistence/QueryManager.java b/apiserver/src/main/java/org/dependencytrack/persistence/QueryManager.java index a2beac63d9..9fff08269a 100644 --- a/apiserver/src/main/java/org/dependencytrack/persistence/QueryManager.java +++ b/apiserver/src/main/java/org/dependencytrack/persistence/QueryManager.java @@ -68,8 +68,10 @@ import org.dependencytrack.model.Repository; import org.dependencytrack.model.RepositoryMetaComponent; import org.dependencytrack.model.RepositoryType; +import org.dependencytrack.model.Role; import org.dependencytrack.model.ServiceComponent; import org.dependencytrack.model.Tag; +import org.dependencytrack.model.UserProjectRole; import org.dependencytrack.model.Vex; import org.dependencytrack.model.ViolationAnalysis; import org.dependencytrack.model.ViolationAnalysisComment; @@ -105,7 +107,6 @@ import java.util.Collections; import java.util.Date; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -137,6 +138,7 @@ public class QueryManager extends AlpineQueryManager { private PolicyQueryManager policyQueryManager; private ProjectQueryManager projectQueryManager; private RepositoryQueryManager repositoryQueryManager; + private RoleQueryManager roleQueryManager; private ServiceComponentQueryManager serviceComponentQueryManager; private VexQueryManager vexQueryManager; private VulnerabilityQueryManager vulnerabilityQueryManager; @@ -415,6 +417,13 @@ private RepositoryQueryManager getRepositoryQueryManager() { return repositoryQueryManager; } + private RoleQueryManager getRoleQueryManager(){ + if (roleQueryManager == null) { + roleQueryManager = (request ==null) ? new RoleQueryManager(getPersistenceManager()) : new RoleQueryManager(getPersistenceManager(), request); + } + return roleQueryManager; + } + /** * Lazy instantiation of NotificationQueryManager. * @@ -474,19 +483,13 @@ public QueryManager withL2CacheDisabled() { * @return A {@link Set} of {@link Team} IDs */ protected Set getTeamIds(final Principal principal) { - final var principalTeamIds = new HashSet(); - if (principal instanceof final User user - && user.getTeams() != null) { - for (final Team userInTeam : user.getTeams()) { - principalTeamIds.add(userInTeam.getId()); - } - } else if (principal instanceof final ApiKey apiKey - && apiKey.getTeams() != null) { - for (final Team userInTeam : apiKey.getTeams()) { - principalTeamIds.add(userInTeam.getId()); - } - } - return principalTeamIds; + List teams = switch (principal) { + case User user when user != null -> user.getTeams(); + case ApiKey apiKey when apiKey != null -> apiKey.getTeams(); + default -> Collections.emptyList(); + }; + + return Set.copyOf(teams.stream().map(Team::getId).toList()); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -835,6 +838,30 @@ public void deletePolicyCondition(PolicyCondition policyCondition) { getPolicyQueryManager().deletePolicyCondition(policyCondition); } + public Role createRole(final String name, final List permissions) { + return getRoleQueryManager().createRole(name, permissions); + } + + public boolean addPermissionToRole(final Role role, final Permission permission) { + return getRoleQueryManager().addPermissionToRole(role, permission); + } + + public List getRoles() { + return getRoleQueryManager().getRoles(); + } + + public Role getRoleByName(String name) { + return getRoleQueryManager().getRoleByName(name); + } + + public Role getRole(String uuid) { + return getRoleQueryManager().getRole(uuid); + } + + public Role updateRole(Role transientRole) { + return getRoleQueryManager().updateRole(transientRole); + } + public Vulnerability createVulnerability(Vulnerability vulnerability, boolean commitIndex) { return getVulnerabilityQueryManager().createVulnerability(vulnerability, commitIndex); } @@ -1078,6 +1105,30 @@ public synchronized RepositoryMetaComponent synchronizeRepositoryMetaComponent(f return getRepositoryQueryManager().synchronizeRepositoryMetaComponent(transientRepositoryMetaComponent); } + public boolean addRoleToUser(User user, Role role, Project project){ + return getRoleQueryManager().addRoleToUser(user, role, project); + } + + public List getUnassignedProjects(final String username) { + return getRoleQueryManager().getUnassignedProjects(username); + } + + public List getUnassignedRolePermissions(final Role role) { + return getRoleQueryManager().getUnassignedRolePermissions(role); + } + + public List getUserRoles(final String username) { + return getRoleQueryManager().getUserRoles(username); + } + + public boolean removeRoleFromUser(final User user, final Role role, final Project project) { + return getRoleQueryManager().removeRoleFromUser(user, role, project); + } + + public boolean userProjectRoleExists(final User user, final Role role, final Project project) { + return getRoleQueryManager().userProjectRoleExists(user, role, project); + } + public NotificationRule createNotificationRule(String name, NotificationScope scope, NotificationLevel level, NotificationPublisher publisher) { return getNotificationQueryManager().createNotificationRule(name, scope, level, publisher); } diff --git a/apiserver/src/main/java/org/dependencytrack/persistence/RoleQueryManager.java b/apiserver/src/main/java/org/dependencytrack/persistence/RoleQueryManager.java new file mode 100644 index 0000000000..39d096976c --- /dev/null +++ b/apiserver/src/main/java/org/dependencytrack/persistence/RoleQueryManager.java @@ -0,0 +1,209 @@ +/* + * This file is part of Dependency-Track. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright (c) OWASP Foundation. All Rights Reserved. + */ +package org.dependencytrack.persistence; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import javax.jdo.PersistenceManager; +import javax.jdo.Query; + +import org.dependencytrack.model.Project; +import org.dependencytrack.model.Role; +import org.dependencytrack.model.UserProjectRole; + +import org.apache.commons.lang3.StringUtils; + +import alpine.common.logging.Logger; +import alpine.model.Permission; +import alpine.model.User; +import alpine.resources.AlpineRequest; + +final class RoleQueryManager extends QueryManager implements IQueryManager { + + private static final Logger LOGGER = Logger.getLogger(RoleQueryManager.class); + + RoleQueryManager(final PersistenceManager pm) { + super(pm); + } + + RoleQueryManager(final PersistenceManager pm, final AlpineRequest request) { + super(pm, request); + } + + @Override + public Role createRole(final String name, final List permissions) { + final Role role = new Role(); + role.setName(name); + role.setPermissions(Set.copyOf(permissions)); + + LOGGER.debug("%s role created with permissions: %s".formatted( + name, permissions.stream().map(Permission::getName).collect(Collectors.joining(", ")))); + + return persist(role); + } + + @Override + public boolean addPermissionToRole(final Role role, final Permission permission) { + final Query query = pm.newQuery(Permission.class) + .variables("org.dependencytrack.model.Role role") + .filter("role.id == :roleId && role.permissions.contains(this) && this.id == :permissionId") + .setParameters(role.getId(), permission.getId()) + .result("count(this) > 0"); + + if (executeAndCloseResultUnique(query, Boolean.class)) + return false; + + role.addPermissions(permission); + persist(role); + + LOGGER.debug("Permission '%s' added to role '%s'".formatted(permission.getName(), role.getName())); + + return true; + } + + @Override + public List getRoles() { + final Query query = pm.newQuery(Role.class); + if (orderBy == null) + query.setOrdering("name asc"); + + decorate(query); + + return query.executeList(); + } + + @Override + public Role getRoleByName(final String name) { + final String role = StringUtils.lowerCase(StringUtils.trimToNull(name)); + final Query query = pm.newQuery(Role.class) + .filter("name.toLowerCase().trim() == :name") + .setParameters(role) + .range(0, 1); + + return executeAndCloseUnique(query); + } + + @Override + public Role getRole(final String uuid) { + return getObjectByUuid(Role.class, uuid, Role.FetchGroup.ALL.name()); + } + + @Override + public List getUserRoles(final String username) { + final Query query = pm.newQuery(UserProjectRole.class) + .filter("user.username == :username") + .setParameters(username); + + return executeAndCloseList(query); + } + + public List getUnassignedProjects(final String username) { + final Query query = pm.newQuery(Query.SQL, /* language=sql */ """ + SELECT p."ID", p."NAME", p."VERSION", p."UUID" + FROM "PROJECT" p + WHERE NOT EXISTS ( + SELECT 1 + FROM "USER_PROJECT_ROLES" upr + INNER JOIN "USER" u + ON u."ID" = upr."USER_ID" + WHERE upr."PROJECT_ID" = p."ID" + AND u."USERNAME" = ? + ) + """) + .setParameters(username); + + return executeAndCloseResultList(query, Project.class); + } + + public List getUnassignedRolePermissions(final Role role) { + final Query query = pm.newQuery(Permission.class) + .filter("role.id == :roleId && !role.permissions.contains(this)") + .variables("org.dependencytrack.model.Role role") + .setParameters(role.getId()); + + return executeAndCloseList(query); + } + + @Override + public Role updateRole(final Role transientRole) { + final Role role = getObjectByUuid(Role.class, transientRole.getUuid()); + if (role == null) + return null; + + role.setName(transientRole.getName()); + + return persist(role); + } + + @Override + public boolean addRoleToUser(final User user, final Role role, final Project project) { + final Query query = pm.newQuery(UserProjectRole.class) + .filter("user.id == :userId && project.id == :projectId") + .setParameters(user.getId(), project.getId()); + + final UserProjectRole existingRole = executeAndCloseUnique(query); + + if (existingRole != null) { + return handleExistingRole(user, role, project, existingRole); + } + + persist(new UserProjectRole(user, project, role)); + return true; + } + + private boolean handleExistingRole(final User user, final Role role, final Project project, final UserProjectRole existingRole) { + if (existingRole.getRole().getId() == role.getId()) { + LOGGER.debug("User '%s' already has role '%s' on project '%s', no action taken.".formatted( + user.getUsername(), role.getName(), project.getName())); + return false; + } + existingRole.setRole(role); + persist(existingRole); + return true; + } + + @Override + public boolean removeRoleFromUser(final User user, final Role role, final Project project) { + final Query query = pm.newQuery(UserProjectRole.class) + .filter("user.id == :userId && project.id == :projectId && role.id == :roleId") + .setParameters(user.getId(), project.getId(), role.getId()); + + final UserProjectRole projectRole = executeAndCloseUnique(query); + + if (projectRole == null) + return false; + + delete(projectRole); + + return true; + } + + @Override + public boolean userProjectRoleExists(final User user, final Role role, final Project project) { + final Query query = pm.newQuery(UserProjectRole.class) + .filter("user.id == :userId && project.id == :projectId && role.id == :roleId") + .setParameters(user.getId(), project.getId(), role.getId()) + .result("count(this) > 0"); + + return executeAndCloseResultUnique(query, Boolean.class); + } + +} diff --git a/apiserver/src/main/java/org/dependencytrack/resources/v1/AccessControlResource.java b/apiserver/src/main/java/org/dependencytrack/resources/v1/AccessControlResource.java index 3cac61d67e..37076219e7 100644 --- a/apiserver/src/main/java/org/dependencytrack/resources/v1/AccessControlResource.java +++ b/apiserver/src/main/java/org/dependencytrack/resources/v1/AccessControlResource.java @@ -20,6 +20,7 @@ import alpine.common.logging.Logger; import alpine.model.Team; +import alpine.model.User; import alpine.persistence.PaginatedResult; import alpine.server.auth.PermissionRequired; import alpine.server.resources.AlpineResource; @@ -53,6 +54,8 @@ import jakarta.ws.rs.QueryParam; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; + +import java.util.List; import java.util.NoSuchElementException; /** @@ -107,6 +110,43 @@ public Response retrieveProjects(@Parameter(description = "The UUID of the team } } + @GET + @Path("/user/{username}") + @Produces(MediaType.APPLICATION_JSON) + @Operation( + summary = "Returns the projects accessible by the specified user", + description = "

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_READ

") + @PaginatedApi + @ApiResponses(value = { + @ApiResponse( + responseCode = "200", + description = "Projects accessible by the specified user", + headers = @Header(name = TOTAL_COUNT_HEADER, description = "The total number of projects", + schema = @Schema(format = "integer")), + content = @Content(array = @ArraySchema(schema = @Schema(implementation = Project.class)))), + @ApiResponse(responseCode = "204", description = "No unassigned projects for specified user."), + @ApiResponse(responseCode = "401", description = "Unauthorized"), + @ApiResponse(responseCode = "404", description = "User not found"), + }) + @PermissionRequired({ Permissions.Constants.ACCESS_MANAGEMENT, Permissions.Constants.ACCESS_MANAGEMENT_READ }) + public Response retrieveUserProjects( + @Parameter(description = "The username to retrieve projects for", required = true) @PathParam("username") String username) { + + try (QueryManager qm = new QueryManager()) { + User user = qm.getUser(username); + + if (user == null) + return Response.status(Response.Status.NOT_FOUND).build(); + + List projects = qm.getUnassignedProjects(username); + + if (projects == null || projects.isEmpty()) + return Response.ok("[]").header(TOTAL_COUNT_HEADER, 0).build(); + + return Response.ok(projects).header(TOTAL_COUNT_HEADER, projects.size()).build(); + } + } + @PUT @Path("/mapping") @Produces(MediaType.APPLICATION_JSON) diff --git a/apiserver/src/main/java/org/dependencytrack/resources/v1/PermissionResource.java b/apiserver/src/main/java/org/dependencytrack/resources/v1/PermissionResource.java index d2d6b3337b..e2d9cde396 100644 --- a/apiserver/src/main/java/org/dependencytrack/resources/v1/PermissionResource.java +++ b/apiserver/src/main/java/org/dependencytrack/resources/v1/PermissionResource.java @@ -34,6 +34,7 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirements; import io.swagger.v3.oas.annotations.tags.Tag; import org.dependencytrack.auth.Permissions; +import org.dependencytrack.model.Role; import org.dependencytrack.model.validation.ValidUuid; import org.dependencytrack.persistence.QueryManager; import org.dependencytrack.resources.v1.vo.TeamPermissionsSetRequest; @@ -54,6 +55,7 @@ import javax.jdo.Query; import java.util.List; import java.util.Map; +import java.util.Set; /** * JAX-RS resources for processing permissions. @@ -227,6 +229,82 @@ public Response addPermissionToTeam( } } + @DELETE + @Path("/{permission}/role/{uuid}") + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + @Operation(description = "

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_DELETE

") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "The updated role", content = @Content(schema = @Schema(implementation = Role.class))), + @ApiResponse(responseCode = "304", description = "The role already has the specified permission assigned"), + @ApiResponse(responseCode = "401", description = "Unauthorized"), + @ApiResponse(responseCode = "404", description = "The role could not be found") + }) + @PermissionRequired({ Permissions.Constants.ACCESS_MANAGEMENT, Permissions.Constants.ACCESS_MANAGEMENT_DELETE }) + public Response removePermissionFromRole( + @Parameter(description = "A valid role uuid", schema = @Schema(type = "string", format = "uuid"), required = true) + @PathParam("uuid") @ValidUuid String uuid, + @Parameter(description = "A valid permission", required = true) + @PathParam("permission") String permissionName) { + try (QueryManager qm = new QueryManager()) { + Role role = qm.getObjectByUuid(Role.class, uuid); + if (role == null) + return Response.status(Response.Status.NOT_FOUND).entity("The role could not be found.").build(); + + final Permission permission = qm.getPermission(permissionName); + if (permission == null) + return Response.status(Response.Status.NOT_FOUND).entity("The permission could not be found.").build(); + + final Set permissions = role.getPermissions(); + if (permissions != null && permissions.contains(permission)) { + permissions.remove(permission); + role.setPermissions(permissions); + role = qm.persist(role); + super.logSecurityEvent(LOGGER, SecurityMarkers.SECURITY_AUDIT, "Removed permission for role: " + role.getName() + " / permission: " + permission.getName()); + return Response.ok(role).build(); + } + + return Response.notModified().build(); + } + } + + @POST + @Path("/{permission}/role/{uuid}") + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + @Operation(description = "

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "The updated role", content = @Content(schema = @Schema(implementation = Role.class)) + ), + @ApiResponse(responseCode = "304", description = "The role already has the specified permission assigned"), + @ApiResponse(responseCode = "401", description = "Unauthorized"), + @ApiResponse(responseCode = "404", description = "The role could not be found") + }) + @PermissionRequired({ Permissions.Constants.ACCESS_MANAGEMENT, Permissions.Constants.ACCESS_MANAGEMENT_UPDATE }) + public Response addPermissionToRole( + @Parameter(description = "A valid role uuid", schema = @Schema(type = "string", format = "uuid"), required = true) + @PathParam("uuid") @ValidUuid String uuid, + @Parameter(description = "A valid permission", required = true) + @PathParam("permission") String permissionName) { + try (QueryManager qm = new QueryManager()) { + Role role = qm.getObjectByUuid(Role.class, uuid); + if (role == null) + return Response.status(Response.Status.NOT_FOUND).entity("The role could not be found.").build(); + + final Permission permission = qm.getPermission(permissionName); + if (permission == null) + return Response.status(Response.Status.NOT_FOUND).entity("The permission could not be found.").build(); + + if (!qm.addPermissionToRole(role, permission)) + return Response.notModified().build(); + + super.logSecurityEvent(LOGGER, SecurityMarkers.SECURITY_AUDIT, + "Added permission for role: " + role.getName() + " / permission: " + permission.getName()); + + return Response.ok(role).build(); + } + } + @DELETE @Path("/{permission}/team/{uuid}") @Consumes(MediaType.APPLICATION_JSON) @@ -251,7 +329,7 @@ public Response removePermissionFromTeam( @Parameter(description = "A valid permission", required = true) @PathParam("permission") String permissionName) { try (QueryManager qm = new QueryManager()) { - Team team = qm.getObjectByUuid(Team.class, uuid); + Team team = qm.getObjectByUuid(Team.class, uuid, Team.FetchGroup.ALL.name()); if (team == null) { return Response.status(Response.Status.NOT_FOUND).entity("The team could not be found.").build(); } @@ -275,7 +353,10 @@ public Response removePermissionFromTeam( @Path("/user") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - @Operation(description = "

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

") + @Operation( + summary = "Replaces a users's permissions with the specified list", + description = "

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

" + ) @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "The updated user", content = @Content(schema = @Schema(implementation = User.class))), @ApiResponse(responseCode = "304", description = "The user is already has the specified permission(s)"), @@ -284,7 +365,8 @@ public Response removePermissionFromTeam( @ApiResponse(responseCode = "404", description = "The user could not be found") }) @PermissionRequired({ Permissions.Constants.ACCESS_MANAGEMENT, Permissions.Constants.ACCESS_MANAGEMENT_UPDATE }) - public Response setUserPermissions(@Parameter(description = "A username and valid list permission") @Valid UserPermissionsSetRequest request) { + public Response setUserPermissions( + @Parameter(description = "A username and valid list permission") @Valid UserPermissionsSetRequest request) { try (QueryManager qm = new QueryManager()) { User user = qm.getUser(request.username()); if (user == null) @@ -316,7 +398,7 @@ public Response setUserPermissions(@Parameter(description = "A username and vali user = qm.persist(user); super.logSecurityEvent(LOGGER, SecurityMarkers.SECURITY_AUDIT, "Set permissions for user: %s / permissions: %s" - .formatted(user.getName(), permissionNames)); + .formatted(user.getUsername(), permissionNames)); return Response.ok(user).build(); } @@ -326,7 +408,10 @@ public Response setUserPermissions(@Parameter(description = "A username and vali @Path("/team") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - @Operation(description = "

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

") + @Operation( + summary = "Replaces a team's permissions with the specified list", + description = "

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

" + ) @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "The updated team", content = @Content(schema = @Schema(implementation = Team.class))), @ApiResponse(responseCode = "304", description = "The team already has the specified permission(s)"), @@ -337,7 +422,7 @@ public Response setUserPermissions(@Parameter(description = "A username and vali @PermissionRequired({ Permissions.Constants.ACCESS_MANAGEMENT, Permissions.Constants.ACCESS_MANAGEMENT_UPDATE }) public Response setTeamPermissions(@Parameter(description = "Team UUID and requested permissions") @Valid TeamPermissionsSetRequest request) { try (QueryManager qm = new QueryManager()) { - Team team = qm.getObjectByUuid(Team.class, request.team()); + Team team = qm.getObjectByUuid(Team.class, request.team(), Team.FetchGroup.ALL.name()); if (team == null) return Response.status(Response.Status.NOT_FOUND).entity("The team could not be found.").build(); @@ -362,7 +447,7 @@ public Response setTeamPermissions(@Parameter(description = "Team UUID and reque return Response.notModified().entity("Team already has selected permission(s).").build(); team.setPermissions(requestedPermissions); - qm.persist(team); + team = qm.persist(team); super.logSecurityEvent(LOGGER, SecurityMarkers.SECURITY_AUDIT, "Set permissions for team: %s / permissions: %s" diff --git a/apiserver/src/main/java/org/dependencytrack/resources/v1/RoleResource.java b/apiserver/src/main/java/org/dependencytrack/resources/v1/RoleResource.java new file mode 100644 index 0000000000..b8133d2267 --- /dev/null +++ b/apiserver/src/main/java/org/dependencytrack/resources/v1/RoleResource.java @@ -0,0 +1,242 @@ +/* + * This file is part of Dependency-Track. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright (c) OWASP Foundation. All Rights Reserved. + */ +package org.dependencytrack.resources.v1; + +import alpine.common.logging.Logger; +import alpine.server.auth.PermissionRequired; +import alpine.server.resources.AlpineResource; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.headers.Header; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.security.SecurityRequirements; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; + +import org.dependencytrack.auth.Permissions; +import org.dependencytrack.model.Role; +import org.dependencytrack.model.UserProjectRole; +import org.dependencytrack.model.validation.ValidUuid; +import org.dependencytrack.persistence.QueryManager; +import org.dependencytrack.resources.v1.vo.CreateRoleRequest; + +import org.owasp.security.logging.SecurityMarkers; + +import java.util.List; + +/** + * JAX-RS resources for processing roles. + * + * @author Johnny Mayer + * @since 5.6.0 + */ +@Path("/v1/role") +@Tag(name = "role") +@SecurityRequirements({ + @SecurityRequirement(name = "ApiKeyAuth"), + @SecurityRequirement(name = "BearerAuth") +}) +public class RoleResource extends AlpineResource { + + private static final Logger LOGGER = Logger.getLogger(RoleResource.class); + + @GET + @Produces(MediaType.APPLICATION_JSON) + @Operation( + summary = "Returns a list of all roles", + description = "

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_READ

") + @ApiResponses(value = { + @ApiResponse( + responseCode = "200", + description = "A list of all roles", + headers = @Header( + name = TOTAL_COUNT_HEADER, + description = "The total number of roles", + schema = @Schema(format = "integer")), + content = @Content(array = @ArraySchema(schema = @Schema(implementation = Role.class)))), + @ApiResponse(responseCode = "401", description = "Unauthorized") + }) + @PermissionRequired({ Permissions.Constants.ACCESS_MANAGEMENT, Permissions.Constants.ACCESS_MANAGEMENT_READ }) + public Response getRoles() { + try (QueryManager qm = new QueryManager()) { + return Response.ok(qm.getRoles()).header(TOTAL_COUNT_HEADER, qm.getCount(Role.class)).build(); + } + } + + @GET + @Path("/{uuid}") + @Produces(MediaType.APPLICATION_JSON) + @Operation( + summary = "Returns a specific role", + description = "

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_READ

") + @ApiResponses(value = { + @ApiResponse( + responseCode = "200", + description = "A specific role", + content = @Content(schema = @Schema(implementation = Role.class))), + @ApiResponse(responseCode = "401", description = "Unauthorized"), + @ApiResponse(responseCode = "404", description = "The role could not be found") + }) + @PermissionRequired({ Permissions.Constants.ACCESS_MANAGEMENT, Permissions.Constants.ACCESS_MANAGEMENT_READ }) + public Response getRole( + @Parameter( + description = "The UUID of the role to retrieve", + schema = @Schema(type = "string", format = "uuid"), + required = true) @PathParam("uuid") @ValidUuid String uuid) { + try (QueryManager qm = new QueryManager()) { + Role role = qm.getObjectByUuid(Role.class, uuid); + if (role == null) + return Response.status(Response.Status.NOT_FOUND).entity("The role could not be found.").build(); + + return Response.ok(role).build(); + } + } + + @PUT + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + @Operation( + summary = "Creates a new role", + description = "

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_CREATE

") + @ApiResponses(value = { + @ApiResponse(responseCode = "201", description = "The created role", content = @Content(schema = @Schema(implementation = Role.class))), + @ApiResponse(responseCode = "401", description = "Unauthorized"), + @ApiResponse(responseCode = "409", description = "The role already exists"), + }) + @PermissionRequired({ Permissions.Constants.ACCESS_MANAGEMENT, Permissions.Constants.ACCESS_MANAGEMENT_CREATE }) + public Response createRole(@Valid CreateRoleRequest request) { + try (QueryManager qm = new QueryManager()) { + if (qm.getRoleByName(request.name()) != null) + return Response.status(Response.Status.CONFLICT) + .entity(String.format("Role '%s' already exists", request.name())) + .build(); + + final Role role = qm.createRole(request.name(), + qm.getPermissionsByName(request.permissions() + .stream() + .map(Permissions::name) + .toList())); + + super.logSecurityEvent(LOGGER, SecurityMarkers.SECURITY_AUDIT, "Role created: " + role.getName()); + + return Response.status(Response.Status.CREATED).entity(role).build(); + } + } + + @POST + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + @Operation( + summary = "Updates a role's fields", + description = "

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "The updated role", content = @Content(schema = @Schema(implementation = Role.class))), + @ApiResponse(responseCode = "401", description = "Unauthorized"), + @ApiResponse(responseCode = "404", description = "The role could not be found") + }) + @PermissionRequired({ Permissions.Constants.ACCESS_MANAGEMENT, Permissions.Constants.ACCESS_MANAGEMENT_UPDATE }) + public Response updateRole(Role jsonRole) { + failOnValidationError(super.getValidator().validateProperty(jsonRole, "name")); + + try (QueryManager qm = new QueryManager()) { + Role role = qm.updateRole(jsonRole); + if (role == null) + return Response.status(Response.Status.NOT_FOUND).entity("The role could not be found.").build(); + + super.logSecurityEvent(LOGGER, SecurityMarkers.SECURITY_AUDIT, "Role updated: " + role.getName()); + + return Response.ok(role).build(); + } + } + + @DELETE + @Path("/{uuid}") + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + @Operation( + summary = "Deletes a role", + description = "

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_DELETE

") + @ApiResponses(value = { + @ApiResponse(responseCode = "204", description = "Role removed successfully"), + @ApiResponse(responseCode = "401", description = "Unauthorized"), + @ApiResponse(responseCode = "404", description = "The role could not be found") + }) + @PermissionRequired({ Permissions.Constants.ACCESS_MANAGEMENT, Permissions.Constants.ACCESS_MANAGEMENT_DELETE }) + public Response deleteRole( + @Parameter( + description = "The UUID of the role to retrieve", + schema = @Schema(type = "string", format = "uuid"), + required = true) @PathParam("uuid") @ValidUuid String uuid) { + try (QueryManager qm = new QueryManager()) { + final Role role = qm.getObjectByUuid(Role.class, uuid, Role.FetchGroup.ALL.name()); + if (role == null) + return Response.status(Response.Status.NOT_FOUND).entity("The role could not be found.").build(); + + qm.delete(role); + + super.logSecurityEvent(LOGGER, SecurityMarkers.SECURITY_AUDIT, "Role deleted: " + role.getName()); + + return Response.noContent().build(); + } + } + + @GET + @Path("/{username}/role") + @Produces(MediaType.APPLICATION_JSON) + @Operation( + summary = "Returns a list of roles assigned to the specified user", + description = "

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_READ

") + @ApiResponses(value = { + @ApiResponse( + responseCode = "200", + description = "A list of roles assigned to the user", + content = @Content(array = @ArraySchema(schema = @Schema(implementation = UserProjectRole.class)))), + @ApiResponse(responseCode = "401", description = "Unauthorized"), + @ApiResponse(responseCode = "404", description = "The user could not be found") + }) + @PermissionRequired({ Permissions.Constants.ACCESS_MANAGEMENT, Permissions.Constants.ACCESS_MANAGEMENT_READ }) + public Response getUserRoles( + @Parameter(description = "A valid username", required = true) @PathParam("username") String username) { + try (QueryManager qm = new QueryManager()) { + List roles = qm.getUserRoles(username); + if (roles == null || roles.isEmpty()) { + LOGGER.debug("No roles found for user: " + username); + return Response.ok(List.of()).build(); + } + + return Response.ok(roles).build(); + } + } +} diff --git a/apiserver/src/main/java/org/dependencytrack/resources/v1/TeamResource.java b/apiserver/src/main/java/org/dependencytrack/resources/v1/TeamResource.java index d262f682be..3215200c1a 100644 --- a/apiserver/src/main/java/org/dependencytrack/resources/v1/TeamResource.java +++ b/apiserver/src/main/java/org/dependencytrack/resources/v1/TeamResource.java @@ -125,7 +125,7 @@ public Response getTeam( @Parameter(description = "The UUID of the team to retrieve", schema = @Schema(type = "string", format = "uuid"), required = true) @PathParam("uuid") @ValidUuid String uuid) { try (QueryManager qm = new QueryManager()) { - final Team team = qm.getObjectByUuid(Team.class, uuid); + final Team team = qm.getObjectByUuid(Team.class, uuid, Team.FetchGroup.ALL.name()); if (team != null) { return Response.ok(team).build(); } else { diff --git a/apiserver/src/main/java/org/dependencytrack/resources/v1/UserResource.java b/apiserver/src/main/java/org/dependencytrack/resources/v1/UserResource.java index 0c346259b8..6df7948461 100644 --- a/apiserver/src/main/java/org/dependencytrack/resources/v1/UserResource.java +++ b/apiserver/src/main/java/org/dependencytrack/resources/v1/UserResource.java @@ -52,6 +52,8 @@ import org.dependencytrack.auth.Permissions; import org.dependencytrack.event.kafka.KafkaEventDispatcher; import org.dependencytrack.model.IdentifiableObject; +import org.dependencytrack.model.Project; +import org.dependencytrack.model.Role; import org.dependencytrack.notification.NotificationConstants; import org.dependencytrack.notification.NotificationGroup; import org.dependencytrack.notification.NotificationScope; @@ -59,6 +61,7 @@ import org.dependencytrack.proto.notification.v1.UserSubject; import org.dependencytrack.resources.v1.problems.AccessManagementProblemDetails; import org.dependencytrack.resources.v1.problems.ProblemDetails; +import org.dependencytrack.resources.v1.vo.ModifyUserProjectRoleRequest; import org.dependencytrack.resources.v1.vo.TeamsSetRequest; import org.owasp.security.logging.SecurityMarkers; @@ -846,4 +849,97 @@ private UserSubject buildUserSubject(final String username, final String email) Optional.ofNullable(email).ifPresent(userBuilder::setEmail); return userBuilder.build(); } + + @SuppressWarnings("null") + @PUT + @Path("/role") + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + @Operation( + summary = "Assigns or updates a user's role for a project.", + description = "

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

" + ) + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "User with the specified role assigned or updated", content = @Content(schema = @Schema(implementation = User.class))), + @ApiResponse(responseCode = "304", description = "The user already has this role for the project."), + @ApiResponse(responseCode = "401", description = "Unauthorized"), + @ApiResponse(responseCode = "404", description = "The user, role, or project could not be found", content = @Content(schema = @Schema(implementation = AccessManagementProblemDetails.class))) + }) + @PermissionRequired({ Permissions.Constants.ACCESS_MANAGEMENT, Permissions.Constants.ACCESS_MANAGEMENT_UPDATE }) + public Response assignProjectRoleToUser( + @Parameter(description = "User, Role and Project information", required = true) @Valid ModifyUserProjectRoleRequest request) { + try (QueryManager qm = new QueryManager()) { + final Role role = qm.getObjectByUuid(Role.class, request.role()); + final User user = qm.getUser(request.username()); + final Project project = qm.getProject(request.project()); + + List problems = new ArrayList<>(); + if (role == null) problems.add("role"); + if (user == null) problems.add("user"); + if (project == null) problems.add("project"); + + if (!problems.isEmpty()) + return new AccessManagementProblemDetails( + Response.Status.NOT_FOUND.getStatusCode(), + "Invalid role, user or project", + "One or more variables could not be found", + problems).toResponse(); + + if (!qm.addRoleToUser(user, role, project)) + return Response.notModified().build(); + + super.logSecurityEvent(LOGGER, SecurityMarkers.SECURITY_AUDIT, + "Granted project role: user='%s', role='%s', project='%s'" + .formatted(user.getUsername(), role.getName(), project.getName())); + + return Response.ok(user).build(); + } + } + + @SuppressWarnings("null") + @DELETE + @Path("/role") + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + @Operation( + summary = "Removes a specific role for a user from a project.", + description = "

Requires permission ACCESS_MANAGEMENT or ACCESS_MANAGEMENT_UPDATE

" + ) + @ApiResponses(value = { + @ApiResponse(responseCode = "204", description = "The specified role was successfully removed from the user"), + @ApiResponse(responseCode = "304", description = "The user is not a member of the specified role for the project"), + @ApiResponse(responseCode = "401", description = "Unauthorized"), + @ApiResponse(responseCode = "404",description = "The user, role, or project could not be found",content = @Content(schema = @Schema(implementation = AccessManagementProblemDetails.class))) + }) + @PermissionRequired({ Permissions.Constants.ACCESS_MANAGEMENT, Permissions.Constants.ACCESS_MANAGEMENT_UPDATE }) + public Response removeProjectRoleFromUser( + @Parameter(description = "User, Role and Project information", required = true) @Valid ModifyUserProjectRoleRequest request) { + try (QueryManager qm = new QueryManager()) { + final Role role = qm.getObjectByUuid(Role.class, request.role()); + final User user = qm.getUser(request.username()); + final Project project = qm.getProject(request.project()); + + final List problems = new ArrayList<>(); + if (role == null) problems.add("role"); + if (user == null) problems.add("user"); + if (project == null) problems.add("project"); + + if (!problems.isEmpty()) + return new AccessManagementProblemDetails( + Response.Status.NOT_FOUND.getStatusCode(), + "Invalid role, user or project", + "One or more variables could not be found", + problems).toResponse(); + + boolean removed = qm.removeRoleFromUser(user, role, project); + if (!removed) return Response.notModified().build(); + + super.logSecurityEvent(LOGGER, SecurityMarkers.SECURITY_AUDIT, + "Revoked project role: user='%s', role='%s', project='%s'" + .formatted(user.getUsername(), role.getName(), project.getName())); + + return Response.noContent().build(); + } + } + } diff --git a/apiserver/src/main/java/org/dependencytrack/resources/v1/vo/CreateRoleRequest.java b/apiserver/src/main/java/org/dependencytrack/resources/v1/vo/CreateRoleRequest.java new file mode 100644 index 0000000000..fb8c89f981 --- /dev/null +++ b/apiserver/src/main/java/org/dependencytrack/resources/v1/vo/CreateRoleRequest.java @@ -0,0 +1,47 @@ +/* + * This file is part of Dependency-Track. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright (c) OWASP Foundation. All Rights Reserved. + */ + +package org.dependencytrack.resources.v1.vo; + +import java.util.Set; + +import org.dependencytrack.auth.Permissions; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +import alpine.common.validation.RegexSequence; +import alpine.server.json.TrimmedStringDeserializer; + +import io.swagger.v3.oas.annotations.media.Schema; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; + +public record CreateRoleRequest( + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank + @JsonDeserialize(using = TrimmedStringDeserializer.class) + @Pattern(regexp = RegexSequence.Definition.PRINTABLE_CHARS_PLUS, message = "The username may only contain printable characters") + String name, + + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull + Set permissions) { +} diff --git a/apiserver/src/main/java/org/dependencytrack/resources/v1/vo/ModifyUserProjectRoleRequest.java b/apiserver/src/main/java/org/dependencytrack/resources/v1/vo/ModifyUserProjectRoleRequest.java new file mode 100644 index 0000000000..2165bc730d --- /dev/null +++ b/apiserver/src/main/java/org/dependencytrack/resources/v1/vo/ModifyUserProjectRoleRequest.java @@ -0,0 +1,47 @@ +/* + * This file is part of Dependency-Track. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright (c) OWASP Foundation. All Rights Reserved. + */ +package org.dependencytrack.resources.v1.vo; + +import org.dependencytrack.model.validation.ValidUuid; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +import alpine.common.validation.RegexSequence; +import alpine.server.json.TrimmedStringDeserializer; + +import io.swagger.v3.oas.annotations.media.Schema; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; + +public record ModifyUserProjectRoleRequest( + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) + @JsonDeserialize(using = TrimmedStringDeserializer.class) + @Pattern(regexp = RegexSequence.Definition.PRINTABLE_CHARS_PLUS, message = "The username may only contain printable characters") + @NotBlank + String username, + + @ValidUuid + @NotBlank + String role, + + @ValidUuid + @NotBlank + String project) { +} diff --git a/apiserver/src/main/resources/META-INF/persistence.xml b/apiserver/src/main/resources/META-INF/persistence.xml index 718c00f915..1e1e712a05 100644 --- a/apiserver/src/main/resources/META-INF/persistence.xml +++ b/apiserver/src/main/resources/META-INF/persistence.xml @@ -40,9 +40,10 @@ org.dependencytrack.model.Component org.dependencytrack.model.ComponentOccurrence org.dependencytrack.model.ComponentProperty - org.dependencytrack.model.IntegrityMetaComponent org.dependencytrack.model.Epss org.dependencytrack.model.FindingAttribution + org.dependencytrack.model.IntegrityAnalysis + org.dependencytrack.model.IntegrityMetaComponent org.dependencytrack.model.License org.dependencytrack.model.LicenseGroup org.dependencytrack.model.NotificationPublisher @@ -55,8 +56,10 @@ org.dependencytrack.model.ProjectProperty org.dependencytrack.model.Repository org.dependencytrack.model.RepositoryMetaComponent + org.dependencytrack.model.Role org.dependencytrack.model.ServiceComponent org.dependencytrack.model.Tag + org.dependencytrack.model.UserProjectRole org.dependencytrack.model.Vex org.dependencytrack.model.ViolationAnalysis org.dependencytrack.model.ViolationAnalysisComment @@ -64,11 +67,10 @@ org.dependencytrack.model.Vulnerability org.dependencytrack.model.VulnerabilityAlias org.dependencytrack.model.VulnerabilityMetrics + org.dependencytrack.model.VulnerabilityPolicyBundle org.dependencytrack.model.VulnerabilityScan org.dependencytrack.model.VulnerableSoftware org.dependencytrack.model.WorkflowState - org.dependencytrack.model.IntegrityAnalysis - org.dependencytrack.model.VulnerabilityPolicyBundle true NONE diff --git a/apiserver/src/test/java/org/dependencytrack/PersistenceCapableTest.java b/apiserver/src/test/java/org/dependencytrack/PersistenceCapableTest.java index 49fc363dd5..421a53cd20 100644 --- a/apiserver/src/test/java/org/dependencytrack/PersistenceCapableTest.java +++ b/apiserver/src/test/java/org/dependencytrack/PersistenceCapableTest.java @@ -19,6 +19,7 @@ package org.dependencytrack; import alpine.Config; +import alpine.server.auth.PasswordService; import alpine.server.persistence.PersistenceManagerFactory; import org.apache.kafka.clients.producer.MockProducer; import org.datanucleus.PropertyNames; @@ -43,6 +44,9 @@ public abstract class PersistenceCapableTest { protected MockProducer kafkaMockProducer; protected QueryManager qm; + protected static final String TEST_PASSWORD_HASH = new String( + PasswordService.createHash("testuser".toCharArray())); + @BeforeClass public static void init() { Config.enableUnitTests(); diff --git a/apiserver/src/test/java/org/dependencytrack/ResourceTest.java b/apiserver/src/test/java/org/dependencytrack/ResourceTest.java index 204af31684..147e4a5b43 100644 --- a/apiserver/src/test/java/org/dependencytrack/ResourceTest.java +++ b/apiserver/src/test/java/org/dependencytrack/ResourceTest.java @@ -73,6 +73,7 @@ public abstract class ResourceTest { protected final String V1_PROJECT = "/v1/project"; protected final String V1_PROJECT_LATEST = "/v1/project/latest/"; protected final String V1_REPOSITORY = "/v1/repository"; + protected final String V1_ROLE = "/v1/role"; protected final String V1_SCAN = "/v1/scan"; protected final String V1_SEARCH = "/v1/search"; protected final String V1_TEAM = "/v1/team"; diff --git a/apiserver/src/test/java/org/dependencytrack/model/RoleTest.java b/apiserver/src/test/java/org/dependencytrack/model/RoleTest.java new file mode 100644 index 0000000000..93782f66f1 --- /dev/null +++ b/apiserver/src/test/java/org/dependencytrack/model/RoleTest.java @@ -0,0 +1,125 @@ +/* + * This file is part of Dependency-Track. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright (c) OWASP Foundation. All Rights Reserved. + */ + +package org.dependencytrack.model; + +import alpine.model.Permission; + +import java.util.LinkedHashSet; +import java.util.Set; +import java.util.UUID; + +import org.junit.Assert; +import org.junit.Test; + +public class RoleTest { + + @Test + public void testGetAndSetId() { + Role role = new Role(); + role.setId(123L); + Assert.assertEquals(123L, role.getId()); + } + + @Test + public void testGetAndSetName() { + Role role = new Role(); + role.setName("Test Role"); + Assert.assertEquals("Test Role", role.getName()); + } + + @Test + public void testGetAndSetPermissions() { + Role role = new Role(); + Permission permission1 = new Permission(); + permission1.setName("Permission1"); + + Permission permission2 = new Permission(); + permission2.setName("Permission2"); + + Set permissions = new LinkedHashSet<>(); + permissions.add(permission1); + permissions.add(permission2); + + role.setPermissions(permissions); + Assert.assertEquals(2, role.getPermissions().size()); + Assert.assertTrue(role.getPermissions().contains(permission1)); + Assert.assertTrue(role.getPermissions().contains(permission2)); + } + + @Test + public void testAddPermissions() { + Role role = new Role(); + Permission permission1 = new Permission(); + permission1.setName("Permission1"); + + Permission permission2 = new Permission(); + permission2.setName("Permission2"); + + boolean added = role.addPermissions(permission1, permission2); + Assert.assertTrue(added); + Assert.assertEquals(2, role.getPermissions().size()); + Assert.assertTrue(role.getPermissions().contains(permission1)); + Assert.assertTrue(role.getPermissions().contains(permission2)); + } + + @Test + public void testAddPermissionsWithExistingPermissions() { + Role role = new Role(); + Permission permission1 = new Permission(); + permission1.setName("Permission1"); + + role.addPermissions(permission1); + + Permission permission2 = new Permission(); + permission2.setName("Permission2"); + + boolean added = role.addPermissions(permission2); + Assert.assertTrue(added); + Assert.assertEquals(2, role.getPermissions().size()); + Assert.assertTrue(role.getPermissions().contains(permission1)); + Assert.assertTrue(role.getPermissions().contains(permission2)); + } + + @Test + public void testGetAndSetUuid() { + Role role = new Role(); + UUID uuid = UUID.randomUUID(); + role.setUuid(uuid); + Assert.assertEquals(uuid, role.getUuid()); + } + + @Test + public void testToString() { + Role role = new Role(); + role.setName("Test Role"); + role.setUuid(UUID.fromString("123e4567-e89b-12d3-a456-426614174000")); + + Permission permission1 = new Permission(); + permission1.setName("Permission1"); + + Permission permission2 = new Permission(); + permission2.setName("Permission2"); + + role.addPermissions(permission1, permission2); + + String expected = "Role{uuid='123e4567-e89b-12d3-a456-426614174000', name='Test Role', permissions=[Permission1, Permission2]}"; + Assert.assertEquals(expected, role.toString()); + } +} diff --git a/apiserver/src/test/java/org/dependencytrack/model/UserProjectRoleTest.java b/apiserver/src/test/java/org/dependencytrack/model/UserProjectRoleTest.java new file mode 100644 index 0000000000..00274528a9 --- /dev/null +++ b/apiserver/src/test/java/org/dependencytrack/model/UserProjectRoleTest.java @@ -0,0 +1,112 @@ +/* + * This file is part of Dependency-Track. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright (c) OWASP Foundation. All Rights Reserved. + */ + +package org.dependencytrack.model; + +import java.util.ArrayList; + +import org.dependencytrack.PersistenceCapableTest; +import org.junit.Assert; +import org.junit.Test; + +import alpine.model.ManagedUser; +import alpine.model.Permission; + +public class UserProjectRoleTest extends PersistenceCapableTest { + + @Test + public void testDefaultConstructor() { + UserProjectRole userProjectRole = new UserProjectRole(); + Assert.assertNull(userProjectRole.getUser()); + Assert.assertNull(userProjectRole.getProject()); + Assert.assertNull(userProjectRole.getRole()); + Assert.assertEquals(0, userProjectRole.getId()); + } + + @Test + public void testParameterizedConstructor() { + final ManagedUser user = qm.createManagedUser("test-user", TEST_PASSWORD_HASH); + final Role role = qm.createRole("maintainer", new ArrayList()); + + final Project project = qm.createProject("test-project-1", "Test Description 1", "1.0.0", null, null, + null, + null, false, false); + + UserProjectRole userProjectRole = new UserProjectRole(user, project, role); + + Assert.assertEquals(user, userProjectRole.getUser()); + Assert.assertEquals(project, userProjectRole.getProject()); + Assert.assertEquals(role, userProjectRole.getRole()); + } + + @Test + public void testGetAndSetId() { + UserProjectRole userProjectRole = new UserProjectRole(); + userProjectRole.setId(123L); + Assert.assertEquals(123L, userProjectRole.getId()); + } + + @Test + public void testGetAndSetUser() { + final ManagedUser user = qm.createManagedUser("test-user", TEST_PASSWORD_HASH); + + UserProjectRole userProjectRole = new UserProjectRole(); + userProjectRole.setUser(user); + + Assert.assertEquals(user, userProjectRole.getUser()); + } + + @Test + public void testGetAndSetProject() { + Project project = new Project(); + project.setName("test-project"); + + UserProjectRole userProjectRole = new UserProjectRole(); + userProjectRole.setProject(project); + + Assert.assertEquals(project, userProjectRole.getProject()); + } + + @Test + public void testGetAndSetRole() { + Role role = new Role(); + role.setName("test-role"); + + UserProjectRole userProjectRole = new UserProjectRole(); + userProjectRole.setRole(role); + + Assert.assertEquals(role, userProjectRole.getRole()); + } + + @Test + public void testToString() { + final ManagedUser user = qm.createManagedUser("test-user", TEST_PASSWORD_HASH); + + Project project = new Project(); + project.setName("test-project"); + + Role role = new Role(); + role.setName("test-role"); + + UserProjectRole userProjectRole = new UserProjectRole(user, project, role); + + String expected = "UserProjectRole{user='test-user', project='test-project', role='test-role'}"; + Assert.assertEquals(expected, userProjectRole.toString()); + } +} diff --git a/apiserver/src/test/java/org/dependencytrack/persistence/QueryManagerTest.java b/apiserver/src/test/java/org/dependencytrack/persistence/QueryManagerTest.java index 0c7a17780d..e5ff2fed00 100644 --- a/apiserver/src/test/java/org/dependencytrack/persistence/QueryManagerTest.java +++ b/apiserver/src/test/java/org/dependencytrack/persistence/QueryManagerTest.java @@ -21,7 +21,6 @@ import alpine.model.Permission; import alpine.model.Team; import alpine.model.User; -import alpine.server.auth.PasswordService; import org.dependencytrack.PersistenceCapableTest; import org.dependencytrack.auth.Permissions; import org.dependencytrack.model.Project; @@ -100,7 +99,7 @@ public void tryAcquireAdvisoryLockShouldThrowWhenNoActiveTransaction() { public void testGetEffectivePermissions() { var ldapUser = qm.createLdapUser("ldapuser"); var mgdUser = qm.createManagedUser("mgduser", "mgduser", "mgduser@localhost", - new String(PasswordService.createHash("mgduser".toCharArray())), true, false, false); + TEST_PASSWORD_HASH, true, false, false); var oidcUser = qm.createOidcUser("oidcuser"); BiFunction, Team> teamCreator = (name, permissions) -> { diff --git a/apiserver/src/test/java/org/dependencytrack/persistence/RoleQueryManagerTest.java b/apiserver/src/test/java/org/dependencytrack/persistence/RoleQueryManagerTest.java new file mode 100644 index 0000000000..b536150fea --- /dev/null +++ b/apiserver/src/test/java/org/dependencytrack/persistence/RoleQueryManagerTest.java @@ -0,0 +1,217 @@ +/* + * This file is part of Dependency-Track. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright (c) OWASP Foundation. All Rights Reserved. + */ +package org.dependencytrack.persistence; + +import org.dependencytrack.model.Project; +import org.dependencytrack.model.Role; +import org.dependencytrack.model.UserProjectRole; + +import alpine.model.ManagedUser; +import alpine.model.Permission; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import org.dependencytrack.PersistenceCapableTest; +import org.junit.Assert; +import org.junit.Test; + +public class RoleQueryManagerTest extends PersistenceCapableTest { + + @Test + public void testCreateRoleWithEmptyPermissions() { + Role role = qm.createRole("empty-role", new ArrayList<>()); + Assert.assertNotNull(role); + Assert.assertEquals("empty-role", role.getName()); + Assert.assertTrue(role.getPermissions().isEmpty()); + } + + @Test + public void testCreateRoleWithPermissions() { + Permission readPermission = qm.createPermission("read", "permission to read"); + Permission writePermission = qm.createPermission("write", "permission to write"); + + List permissions = Arrays.asList(readPermission, writePermission); + Role role = qm.createRole("role-with-permissions", permissions); + + Assert.assertNotNull(role); + Assert.assertEquals("role-with-permissions", role.getName()); + Assert.assertEquals(2, role.getPermissions().size()); + Assert.assertTrue(role.getPermissions().contains(readPermission)); + Assert.assertTrue(role.getPermissions().contains(writePermission)); + } + + @Test + public void testGetRoles() { + final Role maintainerRole = qm.createRole("maintainer", new ArrayList()); + final Role ownerRole = qm.createRole("owner", new ArrayList()); + + List expectedRoles = Arrays.asList( + maintainerRole, + ownerRole); + + List actualRoles = qm.getRoles(); + + Assert.assertNotNull(actualRoles); + Assert.assertFalse(actualRoles.isEmpty()); + Assert.assertEquals(expectedRoles, actualRoles); + } + + @Test + public void testGetRolesReturnsEmptyList() { + List roles = qm.getRoles(); + Assert.assertNotNull(roles); + Assert.assertTrue(roles.isEmpty()); + } + + @Test + public void testGetRoleByUuid() { + Role role = qm.createRole("test-role", new ArrayList<>()); + String uuid = role.getUuid().toString(); + + Role fetchedRole = qm.getRole(uuid); + Assert.assertNotNull(fetchedRole); + Assert.assertEquals(role, fetchedRole); + } + + @Test + public void testGetRoleByUuidNotFound() { + UUID nonExistentUuid = UUID.randomUUID(); + Role fetchedRole = qm.getRole(nonExistentUuid.toString()); + Assert.assertNull(fetchedRole); + } + + @Test + public void testAddRoleToUser() throws ParseException { + final Project testProject = qm.createProject("test-project", "Test Description", "1.0.0", null, null, null, + null, false, false); + final ManagedUser testUser = qm.createManagedUser("test-user", TEST_PASSWORD_HASH); + final Role maintainerRole = qm.createRole("maintainer", new ArrayList()); + + qm.addRoleToUser(testUser, maintainerRole, testProject); + + Assert.assertEquals( + qm.getRoles().size(), + 1); + Assert.assertEquals( + qm.getRoles().get(0).getName(), + maintainerRole.getName()); + } + + @Test + public void testRemoveRoleFromUser() throws ParseException { + final Project testProject = qm.createProject("test-project", "Test Description", "1.0.0", null, null, null, + null, false, false); + final ManagedUser testUser = qm.createManagedUser("test-user", TEST_PASSWORD_HASH); + final Role maintainerRole = qm.createRole("maintainer", new ArrayList()); + + qm.addRoleToUser(testUser, maintainerRole, testProject); + Assert.assertTrue(qm.removeRoleFromUser(testUser, maintainerRole, testProject)); + } + + @Test + public void testGetUserRoles() throws ParseException { + final Project testProject = qm.createProject("test-project", "Test Description", "1.0.0", null, null, null, + null, false, false); + final ManagedUser testUser = qm.createManagedUser("test-user", TEST_PASSWORD_HASH); + final Role expectedRole = qm.createRole("maintainer", new ArrayList()); + + qm.addRoleToUser(testUser, expectedRole, testProject); + + List actualRoles = qm.getUserRoles(testUser.getUsername()); + + Assert.assertEquals(actualRoles.size(), 1); + Assert.assertEquals(expectedRole.toString(), actualRoles.get(0).getRole().toString()); + } + + @Test + public void testGetUnassignedProjects() throws ParseException { + final ManagedUser testUser = qm.createManagedUser("test-user", TEST_PASSWORD_HASH); + final Role maintainerRole = qm.createRole("maintainer", new ArrayList()); + + final Project unassignedProject1 = qm.createProject("test-project-1", "Test Description 1", "1.0.0", null, null, + null, + null, false, false); + + final Project unassignedProject2 = qm.createProject("test-project-2", "Test Description 3", "1.0.0", null, null, + null, + null, false, false); + + final Project assignedProject = qm.createProject("test-project-3", "Test Description 2", "1.0.0", null, null, + null, + null, false, false); + + qm.addRoleToUser(testUser, maintainerRole, assignedProject); + + List expectedProjects = Arrays.asList(unassignedProject1, unassignedProject2); + List actualProjects = qm.getUnassignedProjects(testUser.getUsername()); + + // Sort both lists by project name before asserting equivalence + expectedProjects.sort((p1, p2) -> p1.getName().compareTo(p2.getName())); + actualProjects.sort((p1, p2) -> p1.getName().compareTo(p2.getName())); + + Assert.assertEquals(expectedProjects.size(), actualProjects.size()); + for (int i = 0; i < expectedProjects.size(); i++) { + Assert.assertEquals(expectedProjects.get(i).getName(), actualProjects.get(i).getName()); + } + } + + @Test + public void testUpdateRole() { + + final Role maintainerRole = qm.createRole("maintainer", new ArrayList()); + + Role actualRole = qm.updateRole(maintainerRole); + + Assert.assertEquals(maintainerRole, actualRole); + } + + @Test + public void testGetUnassignedRolePermissions() throws ParseException { + final Permission readPermission = qm.createPermission("read", "permission to read"); + final Permission writePermission = qm.createPermission("write", "permission to write"); + final Permission partyPermission = qm.createPermission("party", "permission to party"); + + List expectedPermissionsList = Arrays.asList( + readPermission, + writePermission); + + Set allPermissions = new HashSet<>(Arrays.asList( + writePermission, + writePermission, + partyPermission)); + + final Role assistantRegionalManagerRole = qm.createRole("maintainer", allPermissions.stream().toList()); + + final ManagedUser testUser = qm.createManagedUser("test-user", TEST_PASSWORD_HASH); + testUser.setPermissions(expectedPermissionsList); + qm.persist(testUser); + + List actualPermissions = qm.getUnassignedRolePermissions(assistantRegionalManagerRole); + + Assert.assertEquals(actualPermissions.size(), 1); + Assert.assertEquals(expectedPermissionsList.get(0), actualPermissions.get(0)); + } + +} diff --git a/apiserver/src/test/java/org/dependencytrack/resources/v1/AccessControlResourceTest.java b/apiserver/src/test/java/org/dependencytrack/resources/v1/AccessControlResourceTest.java index 54dfefd3ae..9cc6678d64 100644 --- a/apiserver/src/test/java/org/dependencytrack/resources/v1/AccessControlResourceTest.java +++ b/apiserver/src/test/java/org/dependencytrack/resources/v1/AccessControlResourceTest.java @@ -18,7 +18,9 @@ */ package org.dependencytrack.resources.v1; +import alpine.model.ManagedUser; import alpine.model.Team; +import alpine.server.auth.PasswordService; import alpine.server.filters.ApiFilter; import alpine.server.filters.AuthenticationFilter; import alpine.server.filters.AuthorizationFilter; @@ -38,6 +40,9 @@ public class AccessControlResourceTest extends ResourceTest { + protected static final String TEST_PASSWORD_HASH = new String( + PasswordService.createHash("testuser".toCharArray())); + @ClassRule public static JerseyTestRule jersey = new JerseyTestRule( new ResourceConfig(AccessControlResource.class) @@ -162,7 +167,8 @@ public void deleteMappingTest() { project.addAccessTeam(otherTeam); qm.persist(project); - final Response response = jersey.target(V1_ACL + "/mapping/team/" + otherTeam.getUuid() + "/project/" + project.getUuid()) + final Response response = jersey + .target(V1_ACL + "/mapping/team/" + otherTeam.getUuid() + "/project/" + project.getUuid()) .request() .header(X_API_KEY, apiKey) .delete(); @@ -170,7 +176,8 @@ public void deleteMappingTest() { qm.getPersistenceManager().evictAll(); - assertThat(project.getAccessTeams()).satisfiesExactly(team -> assertThat(team.getId()).isEqualTo(super.team.getId())); + assertThat(project.getAccessTeams()) + .satisfiesExactly(team -> assertThat(team.getId()).isEqualTo(super.team.getId())); } @Test @@ -182,7 +189,8 @@ public void deleteMappingTeamNotFoundTest() { project.addAccessTeam(super.team); qm.persist(project); - final Response response = jersey.target(V1_ACL + "/mapping/team/c4e2c34b-38c5-4b47-991f-b207ff71bfeb/project/" + project.getUuid()) + final Response response = jersey + .target(V1_ACL + "/mapping/team/c4e2c34b-38c5-4b47-991f-b207ff71bfeb/project/" + project.getUuid()) .request() .header(X_API_KEY, apiKey) .delete(); @@ -205,7 +213,9 @@ public void deleteMappingProjectNotFoundTest() { project.addAccessTeam(super.team); qm.persist(project); - final Response response = jersey.target(V1_ACL + "/mapping/team/" + super.team.getUuid() + "/project/c4e2c34b-38c5-4b47-991f-b207ff71bfeb") + final Response response = jersey + .target(V1_ACL + "/mapping/team/" + super.team.getUuid() + + "/project/c4e2c34b-38c5-4b47-991f-b207ff71bfeb") .request() .header(X_API_KEY, apiKey) .delete(); @@ -219,4 +229,46 @@ public void deleteMappingProjectNotFoundTest() { """); } -} \ No newline at end of file + @Test + public void retrieveUserProjectsTest() { + initializeWithPermissions(Permissions.ACCESS_MANAGEMENT_READ); + + final var project1 = new Project(); + project1.setName("Project 1"); + qm.persist(project1); + + final var project2 = new Project(); + project2.setName("Project 2"); + qm.persist(project2); + + final ManagedUser user = qm.createManagedUser("user", TEST_PASSWORD_HASH); + + final Response response = jersey.target(V1_ACL + "/user/" + user.getUsername()) + .request() + .header(X_API_KEY, apiKey) + .get(); + + assertThat(response.getStatus()).isEqualTo(200); + assertThat(response.getHeaders().get(TOTAL_COUNT_HEADER)).isNotNull(); + assertThat(response.getHeaders().get(TOTAL_COUNT_HEADER).get(0)).isEqualTo("2"); + assertThatJson(getPlainTextBody(response)).isArray().extracting("name").containsExactly("Project 1", + "Project 2"); + } + + @Test + public void retrieveUserProjectsNoContentTest() { + initializeWithPermissions(Permissions.ACCESS_MANAGEMENT_READ); + + final ManagedUser user = qm.createManagedUser("user", TEST_PASSWORD_HASH); + + final Response response = jersey.target(V1_ACL + "/user/" + user.getUsername()) + .request() + .header(X_API_KEY, apiKey) + .get(); + + assertThat(response.getStatus()).isEqualTo(200); + assertThat(response.getHeaders().get(TOTAL_COUNT_HEADER)).isNotNull(); + assertThat(response.getHeaders().get(TOTAL_COUNT_HEADER).get(0)).isEqualTo("0"); + } + +} diff --git a/apiserver/src/test/java/org/dependencytrack/resources/v1/PermissionResourceTest.java b/apiserver/src/test/java/org/dependencytrack/resources/v1/PermissionResourceTest.java index 9677001edb..adcafe3621 100644 --- a/apiserver/src/test/java/org/dependencytrack/resources/v1/PermissionResourceTest.java +++ b/apiserver/src/test/java/org/dependencytrack/resources/v1/PermissionResourceTest.java @@ -26,6 +26,7 @@ import org.dependencytrack.JerseyTestRule; import org.dependencytrack.ResourceTest; import org.dependencytrack.auth.Permissions; +import org.dependencytrack.model.Role; import org.dependencytrack.persistence.DefaultObjectGenerator; import org.glassfish.jersey.server.ResourceConfig; import org.junit.Assert; @@ -39,6 +40,8 @@ import jakarta.ws.rs.client.Entity; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; + +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.UUID; @@ -447,6 +450,117 @@ public void setTeamPermissionsTest() { Collections.disjoint(userPermissions, permissionSet1)); Assert.assertTrue("User should have all new permissions assigned: " + userPermissions, userPermissions.containsAll(permissionSet2)); + } + + @Test + public void addPermissionToRoleTest() { + Role role = qm.createRole("Test Role", new ArrayList()); + + Response response = jersey.target(V1_PERMISSION + "/PORTFOLIO_MANAGEMENT/role/" + role.getUuid()).request() + .header(X_API_KEY, apiKey) + .post(Entity.entity(null, MediaType.APPLICATION_JSON)); + + Assert.assertEquals(200, response.getStatus(), 0); + JsonObject json = parseJsonObject(response); + Assert.assertNotNull(json); + Assert.assertEquals("Test Role", json.getString("name")); + Assert.assertEquals(1, json.getJsonArray("permissions").size()); + Assert.assertEquals("PORTFOLIO_MANAGEMENT", + json.getJsonArray("permissions").getJsonObject(0).getString("name")); + } + + @Test + public void addPermissionToRoleInvalidRoleTest() { + Response response = jersey.target(V1_PERMISSION + "/PORTFOLIO_MANAGEMENT/role/" + UUID.randomUUID()).request() + .header(X_API_KEY, apiKey) + .post(Entity.entity(null, MediaType.APPLICATION_JSON)); + + Assert.assertEquals(404, response.getStatus(), 0); + Assert.assertNull(response.getHeaderString(TOTAL_COUNT_HEADER)); + String body = getPlainTextBody(response); + Assert.assertEquals("The role could not be found.", body); + } + + @Test + public void addPermissionToRoleInvalidPermissionTest() { + Role role = qm.createRole("Test Role", new ArrayList()); + + Response response = jersey.target(V1_PERMISSION + "/BLAH/role/" + role.getUuid()).request() + .header(X_API_KEY, apiKey) + .post(Entity.entity(null, MediaType.APPLICATION_JSON)); + + Assert.assertEquals(404, response.getStatus(), 0); + Assert.assertNull(response.getHeaderString(TOTAL_COUNT_HEADER)); + String body = getPlainTextBody(response); + Assert.assertEquals("The permission could not be found.", body); + } + + @Test + public void addPermissionToRoleDuplicateTest() { + List permissionSet1 = List.of( + qm.getPermission("PORTFOLIO_MANAGEMENT")); + Role role = qm.createRole("Test Role", permissionSet1); + + Response response = jersey.target(V1_PERMISSION + "/PORTFOLIO_MANAGEMENT/role/" + role.getUuid()).request() + .header(X_API_KEY, apiKey) + .post(Entity.entity(null, MediaType.APPLICATION_JSON)); + + Assert.assertEquals(304, response.getStatus(), 0); + Assert.assertNull(response.getHeaderString(TOTAL_COUNT_HEADER)); + } + + @Test + public void removePermissionFromRoleTest() { + List permissionSet1 = List.of( + qm.getPermission("PORTFOLIO_MANAGEMENT")); + Role role = qm.createRole("Test Role", permissionSet1); + Response response = jersey.target(V1_PERMISSION + "/PORTFOLIO_MANAGEMENT/role/" + role.getUuid()).request() + .header(X_API_KEY, apiKey) + .delete(); + + Assert.assertEquals(200, response.getStatus(), 0); + JsonObject json = parseJsonObject(response); + Assert.assertNotNull(json); + Assert.assertEquals("Test Role", json.getString("name")); + Assert.assertEquals(0, json.getJsonArray("permissions").size()); + } + + @Test + public void removePermissionFromRoleInvalidRoleTest() { + Response response = jersey.target(V1_PERMISSION + "/PORTFOLIO_MANAGEMENT/role/" + UUID.randomUUID()).request() + .header(X_API_KEY, apiKey) + .delete(); + + Assert.assertEquals(404, response.getStatus(), 0); + Assert.assertNull(response.getHeaderString(TOTAL_COUNT_HEADER)); + String body = getPlainTextBody(response); + Assert.assertEquals("The role could not be found.", body); + } + + @Test + public void removePermissionFromRoleInvalidPermissionTest() { + Role role = qm.createRole("Test Role", new ArrayList()); + + Response response = jersey.target(V1_PERMISSION + "/BLAH/role/" + role.getUuid()).request() + .header(X_API_KEY, apiKey) + .delete(); + + Assert.assertEquals(404, response.getStatus(), 0); + Assert.assertNull(response.getHeaderString(TOTAL_COUNT_HEADER)); + String body = getPlainTextBody(response); + Assert.assertEquals("The permission could not be found.", body); + } + + @Test + public void removePermissionFromRoleNoChangesTest() { + Role role = qm.createRole("Test Role", new ArrayList()); + + Response response = jersey.target(V1_PERMISSION + "/PORTFOLIO_MANAGEMENT/role/" + role.getUuid()).request() + .header(X_API_KEY, apiKey) + .delete(); + + Assert.assertEquals(304, response.getStatus(), 0); + Assert.assertNull(response.getHeaderString(TOTAL_COUNT_HEADER)); } } diff --git a/apiserver/src/test/java/org/dependencytrack/resources/v1/RoleResourceTest.java b/apiserver/src/test/java/org/dependencytrack/resources/v1/RoleResourceTest.java new file mode 100644 index 0000000000..6ace35c6d4 --- /dev/null +++ b/apiserver/src/test/java/org/dependencytrack/resources/v1/RoleResourceTest.java @@ -0,0 +1,227 @@ +/* + * This file is part of Dependency-Track. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright (c) OWASP Foundation. All Rights Reserved. + */ +package org.dependencytrack.resources.v1; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import org.dependencytrack.JerseyTestRule; +import org.dependencytrack.ResourceTest; +import org.dependencytrack.auth.Permissions; +import org.dependencytrack.model.Project; +import org.dependencytrack.model.Role; +import org.dependencytrack.persistence.DefaultObjectGenerator; +import org.glassfish.jersey.server.ResourceConfig; +import org.junit.Assert; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Test; + +import alpine.common.util.UuidUtil; +import alpine.model.ManagedUser; +import alpine.model.Permission; +import alpine.server.filters.ApiFilter; +import alpine.server.filters.AuthenticationFilter; +import jakarta.json.JsonArray; +import jakarta.json.JsonObject; +import jakarta.ws.rs.client.Entity; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; + +public class RoleResourceTest extends ResourceTest { + + @ClassRule + public static JerseyTestRule jersey = new JerseyTestRule( + new ResourceConfig(RoleResource.class) + .register(ApiFilter.class) + .register(AuthenticationFilter.class)); + + @Before + @Override + public void before() throws Exception { + super.before(); + final var generator = new DefaultObjectGenerator(); + generator.loadDefaultRoles(); + } + + @Test + public void getRolesTest() { + Response response = jersey.target(V1_ROLE).request() + .header(X_API_KEY, apiKey) + .get(Response.class); + Assert.assertEquals(200, response.getStatus(), 0); + JsonArray json = parseJsonArray(response); + Assert.assertNotNull(json); + Assert.assertEquals(4, json.size()); + for (int i = 0; i < json.size(); i++) { + Assert.assertNotNull(json.getJsonObject(i).getString("name")); + Assert.assertNotNull(json.getJsonObject(i).getString("uuid")); + } + } + + @Test + public void getRoleTest() { + List rolePermissions = new ArrayList(); + Role role = qm.createRole("ABC", rolePermissions); + Response response = jersey.target(V1_ROLE + "/" + role.getUuid()).request() + .header(X_API_KEY, apiKey) + .get(Response.class); + Assert.assertEquals(200, response.getStatus(), 0); + JsonObject json = parseJsonObject(response); + Assert.assertNotNull(json); + Assert.assertEquals("ABC", json.getString("name")); + } + + @Test + public void getRoleByInvalidUuidTest() { + Response response = jersey.target(V1_ROLE + "/" + UUID.randomUUID()) + .request().header(X_API_KEY, apiKey).get(Response.class); + Assert.assertEquals(404, response.getStatus(), 0); + Assert.assertNull(response.getHeaderString(TOTAL_COUNT_HEADER)); + String body = getPlainTextBody(response); + Assert.assertEquals("The role could not be found.", body); + } + + @Test + public void createRoleTest() { + initializeWithPermissions(Permissions.ACCESS_MANAGEMENT_CREATE); + + Response response = jersey.target(V1_ROLE).request() + .header(X_API_KEY, apiKey) + .put(Entity.json(/* language=JSON */ """ + { + "name": "ABC", + "permissions": [] + } + """)); + Assert.assertEquals(201, response.getStatus()); + JsonObject json = parseJsonObject(response); + Assert.assertNotNull(json); + Assert.assertEquals("ABC", json.getString("name")); + Assert.assertTrue(UuidUtil.isValidUUID(json.getString("uuid"))); + } + + @Test + public void testCreateRoleAlreadyExists() { + initializeWithPermissions(Permissions.ACCESS_MANAGEMENT_CREATE); + + Response response = jersey.target(V1_ROLE).request() + .header(X_API_KEY, apiKey) + .put(Entity.json(/* language=JSON */ """ + { + "name": "ABC", + "permissions": [] + } + """)); + Assert.assertEquals(201, response.getStatus()); + + Response secondResponse = jersey.target(V1_ROLE).request() + .header(X_API_KEY, apiKey) + .put(Entity.json(/* language=JSON */ """ + { + "name": "ABC", + "permissions": [] + } + """)); + Assert.assertEquals(409, secondResponse.getStatus()); + } + + @Test + public void updateRoleTest() { + Role role = qm.createRole("My Role", new ArrayList()); + role.setName("My New Role Name"); + Response response = jersey.target(V1_ROLE).request() + .header(X_API_KEY, apiKey) + .post(Entity.entity(role, MediaType.APPLICATION_JSON)); + Assert.assertEquals(200, response.getStatus(), 0); + JsonObject json = parseJsonObject(response); + Assert.assertNotNull(json); + Assert.assertEquals("My New Role Name", json.getString("name")); + } + + @Test + public void testUpdateRoleNotFound() { + Role role = new Role(); + role.setName("My New Role Name"); + Response response = jersey.target(V1_ROLE).request() + .header(X_API_KEY, apiKey) + .post(Entity.entity(role, MediaType.APPLICATION_JSON)); + Assert.assertEquals(404, response.getStatus(), 0); + } + + @Test + public void deleteRoleTest() { + Role role = qm.createRole("My Role", new ArrayList()); + Response response = jersey.target(V1_ROLE + "/" + role.getUuid()).request() + .header(X_API_KEY, apiKey) + .method("DELETE"); + // Hack: Workaround to https://github.com/eclipse-ee4j/jersey/issues/3798 + Assert.assertEquals(204, response.getStatus(), 0); + } + + @Test + public void testDeleteRoleNotFound() { + UUID uuid = UUID.randomUUID(); + Response response = jersey.target(V1_ROLE + "/" + uuid).request() + .header(X_API_KEY, apiKey) + .method("DELETE"); + // Hack: Workaround to https://github.com/eclipse-ee4j/jersey/issues/3798 + Assert.assertEquals(404, response.getStatus(), 0); + } + + @Test + public void getUserRolesTest() throws ParseException { + final Project testProject = qm.createProject("Test Project", "Test Description", "1.0.0", null, null, null, + null, false, false); + ManagedUser user = qm.createManagedUser("roleuser3", TEST_USER_PASSWORD_HASH); + + final Role expectedRole = qm.createRole("maintainer", new ArrayList()); + + qm.addRoleToUser(user, expectedRole, testProject); + + Response response = jersey.target(V1_ROLE + "/roleuser3/role").request() + .header(X_API_KEY, apiKey) + .get(Response.class); + + Assert.assertEquals(200, response.getStatus(), 0); + + JsonArray json = parseJsonArray(response); + Assert.assertNotNull(json); + Assert.assertEquals(1, json.size()); + Assert.assertEquals("maintainer", json.getJsonObject(0).getJsonObject("role").getString("name")); + } + + @Test + public void testGetUserRolesNoRolesFound() { + ManagedUser user = qm.createManagedUser("roleuser3", TEST_USER_PASSWORD_HASH); + + Response response = jersey.target(V1_ROLE + "/" + user.getUsername() + "/role").request() + .header(X_API_KEY, apiKey) + .get(Response.class); + + Assert.assertEquals(200, response.getStatus(), 0); + + JsonArray json = parseJsonArray(response); + Assert.assertNotNull(json); + Assert.assertEquals(0, json.size()); + } + +} diff --git a/apiserver/src/test/java/org/dependencytrack/resources/v1/UserResourceAuthenticatedTest.java b/apiserver/src/test/java/org/dependencytrack/resources/v1/UserResourceAuthenticatedTest.java index 810f1393ac..de48f7a22c 100644 --- a/apiserver/src/test/java/org/dependencytrack/resources/v1/UserResourceAuthenticatedTest.java +++ b/apiserver/src/test/java/org/dependencytrack/resources/v1/UserResourceAuthenticatedTest.java @@ -30,7 +30,10 @@ import org.dependencytrack.ResourceTest; import org.dependencytrack.event.kafka.KafkaTopics; import org.dependencytrack.model.IdentifiableObject; +import org.dependencytrack.model.Project; +import org.dependencytrack.model.Role; import org.dependencytrack.notification.NotificationConstants; +import org.dependencytrack.resources.v1.vo.ModifyUserProjectRoleRequest; import org.glassfish.jersey.client.ClientProperties; import org.glassfish.jersey.server.ResourceConfig; import org.junit.Assert; @@ -749,4 +752,104 @@ public void setUserTeamsInvalidTest() { Assert.assertEquals(404, response.getStatus()); } + + @Test + public void assignProjectRoleToUserTest() { + // Arrange + ManagedUser user = qm.createManagedUser("roleuser", TEST_USER_PASSWORD_HASH); + Project project = qm.createProject( + "Test Project", "null", + "null", Collections.emptyList(), + null, null, null, false); + + Role role = qm.createRole("Test Role", Collections.emptyList()); + + ModifyUserProjectRoleRequest request = new ModifyUserProjectRoleRequest( + user.getUsername(), + role.getUuid().toString(), + project.getUuid().toString()); + + // Act + Response response = jersey.target(V1_USER + "/role").request() + .header(X_API_KEY, apiKey) + .put(Entity.entity(request, MediaType.APPLICATION_JSON)); + + // Assert + Assert.assertEquals(200, response.getStatus()); + JsonObject json = parseJsonObject(response); + Assert.assertNotNull(json); + Assert.assertEquals("roleuser", json.getString("username")); + // Optionally, check if the user has the role for the project in the DB + } + + @Test + public void assignProjectRoleToUserAlreadyAssignedTest() { + ManagedUser user = qm.createManagedUser("roleuser2", TEST_USER_PASSWORD_HASH); + Project project = qm.createProject( + "Test Project 2","null", + "null",Collections.emptyList(), + null,null,null,false); + Role role = qm.createRole("Test Role 2", Collections.emptyList()); + qm.addRoleToUser(user, role, project); + + + ModifyUserProjectRoleRequest request = new ModifyUserProjectRoleRequest( + user.getUsername(), + role.getUuid().toString(), + project.getUuid().toString() + ); + + Response response = jersey.target(V1_USER + "/role").request() + .header(X_API_KEY, apiKey) + .put(Entity.entity(request, MediaType.APPLICATION_JSON)); + + Assert.assertEquals(304, response.getStatus()); + } + + @Test + public void removeProjectRoleFromUserTest() { + ManagedUser user = qm.createManagedUser("roleuser3", TEST_USER_PASSWORD_HASH); + Project project = qm.createProject( + "Test Project 3","null", + "null",Collections.emptyList(), + null,null,null,false); + Role role = qm.createRole("Test Role 3", Collections.emptyList()); + qm.addRoleToUser(user, role, project); + + ModifyUserProjectRoleRequest request = new ModifyUserProjectRoleRequest( + user.getUsername(), + role.getUuid().toString(), + project.getUuid().toString() + ); + + Response response = jersey.target(V1_USER + "/role").request() + .header(X_API_KEY, apiKey) + .property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true) + .method("DELETE", Entity.entity(request, MediaType.APPLICATION_JSON)); + + Assert.assertEquals(204, response.getStatus()); + } + + @Test + public void removeProjectRoleFromUserNotAssignedTest() { + ManagedUser user = qm.createManagedUser("roleuser4", TEST_USER_PASSWORD_HASH); + Project project = qm.createProject( + "Test Project 4","null", + "null",Collections.emptyList(), + null,null,null,false); + Role role = qm.createRole("Test Role 4", Collections.emptyList()); + + ModifyUserProjectRoleRequest request = new ModifyUserProjectRoleRequest( + user.getUsername(), + role.getUuid().toString(), + project.getUuid().toString() + ); + + Response response = jersey.target(V1_USER + "/role").request() + .header(X_API_KEY, apiKey) + .property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true) + .method("DELETE", Entity.entity(request, MediaType.APPLICATION_JSON)); + + Assert.assertEquals(304, response.getStatus()); + } } diff --git a/persistence-jooq/pom.xml b/persistence-jooq/pom.xml index b657ad7a4a..8b830a97ba 100644 --- a/persistence-jooq/pom.xml +++ b/persistence-jooq/pom.xml @@ -24,8 +24,8 @@ | IDENTITY | IMPACT | INCLUDING | INFO | INSTALLED | IS | KEYS? | LAST | LDAP | LIBRE | LICENSE | LIKELIHOOD | MANAGED | MAPPED | METRICS | NAME | NOTIFICATION | OCCURRENCE | OIDC | OPERATIONAL | OSI | OWASP | PARENT | PATCHED | PERMISSIONS? | POLICY - | PORTFOLIO | PROJECTS? | PROPERTY | PUBLISHER | PURL | REQUIRED | RISK | RR | RULE - | SCAN | SCHEMA | SCORE | SECURITY | SEE | SERVICE | SOFTWARE | START | STATE + | PORTFOLIO | PROJECTS? | PROPERTY | PUBLISHER | PURL | REQUIRED | RISK | ROLES? | RR + | RULE | SCAN | SCHEMA | SCORE | SECURITY | SEE | SERVICE | SOFTWARE | START | STATE | SUBSCRIBER | SW | SWID | TAGS? | TARGET | TEAMS? | TECHNICAL | TOTAL | TYPE | UNAUDITED | UPGRADES | USER(?!NAME)S? | V2 | V3 | VALUE | VECTOR | VERSIONS? | VIOLATIONS? | VULN | VULNERABILITIES | VULNERABILITY | VULNERABLE | WARN | WEIGHT diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/DefaultSchema.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/DefaultSchema.java index 75bb623056..a8e945e899 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/DefaultSchema.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/DefaultSchema.java @@ -52,6 +52,8 @@ import org.dependencytrack.persistence.jooq.generated.tables.ProjectsTags; import org.dependencytrack.persistence.jooq.generated.tables.Repository; import org.dependencytrack.persistence.jooq.generated.tables.RepositoryMetaComponent; +import org.dependencytrack.persistence.jooq.generated.tables.Role; +import org.dependencytrack.persistence.jooq.generated.tables.RolesPermissions; import org.dependencytrack.persistence.jooq.generated.tables.ServiceComponent; import org.dependencytrack.persistence.jooq.generated.tables.ServiceComponentsVulnerabilities; import org.dependencytrack.persistence.jooq.generated.tables.Tag; @@ -59,6 +61,7 @@ import org.dependencytrack.persistence.jooq.generated.tables.TeamsPermissions; import org.dependencytrack.persistence.jooq.generated.tables.User; import org.dependencytrack.persistence.jooq.generated.tables.UserProjectEffectivePermissions; +import org.dependencytrack.persistence.jooq.generated.tables.UserProjectRoles; import org.dependencytrack.persistence.jooq.generated.tables.UsersPermissions; import org.dependencytrack.persistence.jooq.generated.tables.UsersTeams; import org.dependencytrack.persistence.jooq.generated.tables.Vex; @@ -87,14 +90,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class DefaultSchema extends SchemaImpl { - private static final long serialVersionUID = -158270209; + private static final long serialVersionUID = 1027843848; /** * The reference instance of DEFAULT_SCHEMA @@ -316,6 +319,16 @@ public class DefaultSchema extends SchemaImpl { */ public final RepositoryMetaComponent REPOSITORY_META_COMPONENT = RepositoryMetaComponent.REPOSITORY_META_COMPONENT; + /** + * The table ROLE. + */ + public final Role ROLE = Role.ROLE; + + /** + * The table ROLES_PERMISSIONS. + */ + public final RolesPermissions ROLES_PERMISSIONS = RolesPermissions.ROLES_PERMISSIONS; + /** * The table SERVICECOMPONENT. */ @@ -351,6 +364,11 @@ public class DefaultSchema extends SchemaImpl { */ public final UserProjectEffectivePermissions USER_PROJECT_EFFECTIVE_PERMISSIONS = UserProjectEffectivePermissions.USER_PROJECT_EFFECTIVE_PERMISSIONS; + /** + * The table USER_PROJECT_ROLES. + */ + public final UserProjectRoles USER_PROJECT_ROLES = UserProjectRoles.USER_PROJECT_ROLES; + /** * The table USERS_PERMISSIONS. */ @@ -485,6 +503,8 @@ public final List> getTables() { ProjectsTags.PROJECTS_TAGS, Repository.REPOSITORY, RepositoryMetaComponent.REPOSITORY_META_COMPONENT, + Role.ROLE, + RolesPermissions.ROLES_PERMISSIONS, ServiceComponent.SERVICECOMPONENT, ServiceComponentsVulnerabilities.SERVICECOMPONENTS_VULNERABILITIES, Tag.TAG, @@ -492,6 +512,7 @@ public final List> getTables() { TeamsPermissions.TEAMS_PERMISSIONS, User.USER, UserProjectEffectivePermissions.USER_PROJECT_EFFECTIVE_PERMISSIONS, + UserProjectRoles.USER_PROJECT_ROLES, UsersPermissions.USERS_PERMISSIONS, UsersTeams.USERS_TEAMS, Vex.VEX, diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/Indexes.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/Indexes.java index daa724832f..8afb6bdad1 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/Indexes.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/Indexes.java @@ -60,7 +60,7 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/Keys.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/Keys.java index bb3fdc4e36..39d68a31df 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/Keys.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/Keys.java @@ -49,6 +49,8 @@ import org.dependencytrack.persistence.jooq.generated.tables.ProjectsTags; import org.dependencytrack.persistence.jooq.generated.tables.Repository; import org.dependencytrack.persistence.jooq.generated.tables.RepositoryMetaComponent; +import org.dependencytrack.persistence.jooq.generated.tables.Role; +import org.dependencytrack.persistence.jooq.generated.tables.RolesPermissions; import org.dependencytrack.persistence.jooq.generated.tables.ServiceComponent; import org.dependencytrack.persistence.jooq.generated.tables.ServiceComponentsVulnerabilities; import org.dependencytrack.persistence.jooq.generated.tables.Tag; @@ -56,6 +58,7 @@ import org.dependencytrack.persistence.jooq.generated.tables.TeamsPermissions; import org.dependencytrack.persistence.jooq.generated.tables.User; import org.dependencytrack.persistence.jooq.generated.tables.UserProjectEffectivePermissions; +import org.dependencytrack.persistence.jooq.generated.tables.UserProjectRoles; import org.dependencytrack.persistence.jooq.generated.tables.UsersPermissions; import org.dependencytrack.persistence.jooq.generated.tables.UsersTeams; import org.dependencytrack.persistence.jooq.generated.tables.Vex; @@ -114,12 +117,15 @@ import org.dependencytrack.persistence.jooq.generated.tables.records.ProjectsTagsRecord; import org.dependencytrack.persistence.jooq.generated.tables.records.RepositoryMetaComponentRecord; import org.dependencytrack.persistence.jooq.generated.tables.records.RepositoryRecord; +import org.dependencytrack.persistence.jooq.generated.tables.records.RoleRecord; +import org.dependencytrack.persistence.jooq.generated.tables.records.RolesPermissionsRecord; import org.dependencytrack.persistence.jooq.generated.tables.records.ServiceComponentRecord; import org.dependencytrack.persistence.jooq.generated.tables.records.ServiceComponentsVulnerabilitiesRecord; import org.dependencytrack.persistence.jooq.generated.tables.records.TagRecord; import org.dependencytrack.persistence.jooq.generated.tables.records.TeamRecord; import org.dependencytrack.persistence.jooq.generated.tables.records.TeamsPermissionsRecord; import org.dependencytrack.persistence.jooq.generated.tables.records.UserProjectEffectivePermissionsRecord; +import org.dependencytrack.persistence.jooq.generated.tables.records.UserProjectRolesRecord; import org.dependencytrack.persistence.jooq.generated.tables.records.UserRecord; import org.dependencytrack.persistence.jooq.generated.tables.records.UsersPermissionsRecord; import org.dependencytrack.persistence.jooq.generated.tables.records.UsersTeamsRecord; @@ -152,7 +158,7 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @@ -178,7 +184,7 @@ public class Keys { public static final UniqueKey COMPONENT_PROPERTY_PK = Internal.createUniqueKey(ComponentProperty.COMPONENT_PROPERTY, DSL.name("COMPONENT_PROPERTY_PK"), new TableField[] { ComponentProperty.COMPONENT_PROPERTY.id }, true); public static final UniqueKey CONFIGPROPERTY_PK = Internal.createUniqueKey(ConfigProperty.CONFIGPROPERTY, DSL.name("CONFIGPROPERTY_PK"), new TableField[] { ConfigProperty.CONFIGPROPERTY.id }, true); public static final UniqueKey CONFIGPROPERTY_U1 = Internal.createUniqueKey(ConfigProperty.CONFIGPROPERTY, DSL.name("CONFIGPROPERTY_U1"), new TableField[] { ConfigProperty.CONFIGPROPERTY.groupName, ConfigProperty.CONFIGPROPERTY.propertyName }, true); - public static final UniqueKey DEPENDENCYMETRICS_PK = Internal.createUniqueKey(DependencyMetrics.DEPENDENCYMETRICS, DSL.name("DEPENDENCYMETRICS_PK"), new TableField[] { DependencyMetrics.DEPENDENCYMETRICS.projectId, DependencyMetrics.DEPENDENCYMETRICS.componentId, DependencyMetrics.DEPENDENCYMETRICS.lastOccurrence }, true); + public static final UniqueKey DEPENDENCYMETRICS_PK = Internal.createUniqueKey(DependencyMetrics.DEPENDENCYMETRICS, DSL.name("DEPENDENCYMETRICS_PK"), new TableField[] { DependencyMetrics.DEPENDENCYMETRICS.componentId, DependencyMetrics.DEPENDENCYMETRICS.lastOccurrence }, true); public static final UniqueKey EPSS_CVE_KEY = Internal.createUniqueKey(Epss.EPSS, DSL.name("EPSS_CVE_key"), new TableField[] { Epss.EPSS.cve }, true); public static final UniqueKey EPSS_CVE_PK = Internal.createUniqueKey(Epss.EPSS, DSL.name("EPSS_CVE_PK"), new TableField[] { Epss.EPSS.id }, true); public static final UniqueKey FINDINGATTRIBUTION_PK = Internal.createUniqueKey(FindingAttribution.FINDINGATTRIBUTION, DSL.name("FINDINGATTRIBUTION_PK"), new TableField[] { FindingAttribution.FINDINGATTRIBUTION.id }, true); @@ -225,6 +231,10 @@ public class Keys { public static final UniqueKey REPOSITORY_COMPOUND_IDX = Internal.createUniqueKey(Repository.REPOSITORY, DSL.name("REPOSITORY_COMPOUND_IDX"), new TableField[] { Repository.REPOSITORY.type, Repository.REPOSITORY.identifier }, true); public static final UniqueKey REPOSITORY_PK = Internal.createUniqueKey(Repository.REPOSITORY, DSL.name("REPOSITORY_PK"), new TableField[] { Repository.REPOSITORY.id }, true); public static final UniqueKey REPOSITORY_META_COMPONENT_PK = Internal.createUniqueKey(RepositoryMetaComponent.REPOSITORY_META_COMPONENT, DSL.name("REPOSITORY_META_COMPONENT_PK"), new TableField[] { RepositoryMetaComponent.REPOSITORY_META_COMPONENT.id }, true); + public static final UniqueKey ROLE_NAME_IDX = Internal.createUniqueKey(Role.ROLE, DSL.name("ROLE_NAME_IDX"), new TableField[] { Role.ROLE.name }, true); + public static final UniqueKey ROLE_PK = Internal.createUniqueKey(Role.ROLE, DSL.name("ROLE_PK"), new TableField[] { Role.ROLE.id }, true); + public static final UniqueKey ROLE_UUID_IDX = Internal.createUniqueKey(Role.ROLE, DSL.name("ROLE_UUID_IDX"), new TableField[] { Role.ROLE.uuid }, true); + public static final UniqueKey ROLES_PERMISSIONS_PK = Internal.createUniqueKey(RolesPermissions.ROLES_PERMISSIONS, DSL.name("ROLES_PERMISSIONS_PK"), new TableField[] { RolesPermissions.ROLES_PERMISSIONS.roleId, RolesPermissions.ROLES_PERMISSIONS.permissionId }, true); public static final UniqueKey SERVICECOMPONENT_PK = Internal.createUniqueKey(ServiceComponent.SERVICECOMPONENT, DSL.name("SERVICECOMPONENT_PK"), new TableField[] { ServiceComponent.SERVICECOMPONENT.id }, true); public static final UniqueKey SERVICECOMPONENT_UUID_IDX = Internal.createUniqueKey(ServiceComponent.SERVICECOMPONENT, DSL.name("SERVICECOMPONENT_UUID_IDX"), new TableField[] { ServiceComponent.SERVICECOMPONENT.uuid }, true); public static final UniqueKey TAG_PK = Internal.createUniqueKey(Tag.TAG, DSL.name("TAG_PK"), new TableField[] { Tag.TAG.id }, true); @@ -234,6 +244,7 @@ public class Keys { public static final UniqueKey TEAMS_PERMISSIONS_PK = Internal.createUniqueKey(TeamsPermissions.TEAMS_PERMISSIONS, DSL.name("TEAMS_PERMISSIONS_PK"), new TableField[] { TeamsPermissions.TEAMS_PERMISSIONS.teamId, TeamsPermissions.TEAMS_PERMISSIONS.permissionId }, true); public static final UniqueKey USER_PK = Internal.createUniqueKey(User.USER, DSL.name("USER_PK"), new TableField[] { User.USER.id }, true); public static final UniqueKey USER_PROJECT_EFFECTIVE_PERMISSIONS_PK = Internal.createUniqueKey(UserProjectEffectivePermissions.USER_PROJECT_EFFECTIVE_PERMISSIONS, DSL.name("USER_PROJECT_EFFECTIVE_PERMISSIONS_PK"), new TableField[] { UserProjectEffectivePermissions.USER_PROJECT_EFFECTIVE_PERMISSIONS.projectId, UserProjectEffectivePermissions.USER_PROJECT_EFFECTIVE_PERMISSIONS.userId, UserProjectEffectivePermissions.USER_PROJECT_EFFECTIVE_PERMISSIONS.permissionId }, true); + public static final UniqueKey USER_PROJECT_ROLES_PK = Internal.createUniqueKey(UserProjectRoles.USER_PROJECT_ROLES, DSL.name("USER_PROJECT_ROLES_PK"), new TableField[] { UserProjectRoles.USER_PROJECT_ROLES.userId, UserProjectRoles.USER_PROJECT_ROLES.projectId, UserProjectRoles.USER_PROJECT_ROLES.roleId }, true); public static final UniqueKey USERS_PERMISSIONS_PK = Internal.createUniqueKey(UsersPermissions.USERS_PERMISSIONS, DSL.name("USERS_PERMISSIONS_PK"), new TableField[] { UsersPermissions.USERS_PERMISSIONS.userId, UsersPermissions.USERS_PERMISSIONS.permissionId }, true); public static final UniqueKey USERS_TEAMS_PK = Internal.createUniqueKey(UsersTeams.USERS_TEAMS, DSL.name("USERS_TEAMS_PK"), new TableField[] { UsersTeams.USERS_TEAMS.userId, UsersTeams.USERS_TEAMS.teamId }, true); public static final UniqueKey VEX_PK = Internal.createUniqueKey(Vex.VEX, DSL.name("VEX_PK"), new TableField[] { Vex.VEX.id }, true); @@ -314,6 +325,8 @@ public class Keys { public static final ForeignKey PROJECTMETRICS_PROJECT_FK = Internal.createForeignKey(ProjectMetrics.PROJECTMETRICS, DSL.name("PROJECTMETRICS_PROJECT_FK"), new TableField[] { ProjectMetrics.PROJECTMETRICS.projectId }, Keys.PROJECT_PK, new TableField[] { Project.PROJECT.id }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); public static final ForeignKey PROJECTS_TAGS_PROJECT_FK = Internal.createForeignKey(ProjectsTags.PROJECTS_TAGS, DSL.name("PROJECTS_TAGS_PROJECT_FK"), new TableField[] { ProjectsTags.PROJECTS_TAGS.projectId }, Keys.PROJECT_PK, new TableField[] { Project.PROJECT.id }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); public static final ForeignKey PROJECTS_TAGS_TAG_FK = Internal.createForeignKey(ProjectsTags.PROJECTS_TAGS, DSL.name("PROJECTS_TAGS_TAG_FK"), new TableField[] { ProjectsTags.PROJECTS_TAGS.tagId }, Keys.TAG_PK, new TableField[] { Tag.TAG.id }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); + public static final ForeignKey ROLES_PERMISSIONS_PERMISSION_FK = Internal.createForeignKey(RolesPermissions.ROLES_PERMISSIONS, DSL.name("ROLES_PERMISSIONS_PERMISSION_FK"), new TableField[] { RolesPermissions.ROLES_PERMISSIONS.permissionId }, Keys.PERMISSION_PK, new TableField[] { Permission.PERMISSION.id }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); + public static final ForeignKey ROLES_PERMISSIONS_ROLE_FK = Internal.createForeignKey(RolesPermissions.ROLES_PERMISSIONS, DSL.name("ROLES_PERMISSIONS_ROLE_FK"), new TableField[] { RolesPermissions.ROLES_PERMISSIONS.roleId }, Keys.ROLE_PK, new TableField[] { Role.ROLE.id }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); public static final ForeignKey SERVICECOMPONENT_PROJECT_FK = Internal.createForeignKey(ServiceComponent.SERVICECOMPONENT, DSL.name("SERVICECOMPONENT_PROJECT_FK"), new TableField[] { ServiceComponent.SERVICECOMPONENT.projectId }, Keys.PROJECT_PK, new TableField[] { Project.PROJECT.id }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); public static final ForeignKey SERVICECOMPONENT_SERVICECOMPONENT_FK = Internal.createForeignKey(ServiceComponent.SERVICECOMPONENT, DSL.name("SERVICECOMPONENT_SERVICECOMPONENT_FK"), new TableField[] { ServiceComponent.SERVICECOMPONENT.parentServiceComponentId }, Keys.SERVICECOMPONENT_PK, new TableField[] { ServiceComponent.SERVICECOMPONENT.id }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); public static final ForeignKey SERVICECOMPONENTS_VULNERABILITIES_SERVICECOMPONENT_FK = Internal.createForeignKey(ServiceComponentsVulnerabilities.SERVICECOMPONENTS_VULNERABILITIES, DSL.name("SERVICECOMPONENTS_VULNERABILITIES_SERVICECOMPONENT_FK"), new TableField[] { ServiceComponentsVulnerabilities.SERVICECOMPONENTS_VULNERABILITIES.serviceComponentId }, Keys.SERVICECOMPONENT_PK, new TableField[] { ServiceComponent.SERVICECOMPONENT.id }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); @@ -324,6 +337,9 @@ public class Keys { public static final ForeignKey USER_PROJECT_EFFECTIVE_PERMISSIONS_PERMISSION_NAME_FK = Internal.createForeignKey(UserProjectEffectivePermissions.USER_PROJECT_EFFECTIVE_PERMISSIONS, DSL.name("USER_PROJECT_EFFECTIVE_PERMISSIONS_PERMISSION_NAME_FK"), new TableField[] { UserProjectEffectivePermissions.USER_PROJECT_EFFECTIVE_PERMISSIONS.permissionName }, Keys.PERMISSION_IDX, new TableField[] { Permission.PERMISSION.name }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); public static final ForeignKey USER_PROJECT_EFFECTIVE_PERMISSIONS_PROJECT_FK = Internal.createForeignKey(UserProjectEffectivePermissions.USER_PROJECT_EFFECTIVE_PERMISSIONS, DSL.name("USER_PROJECT_EFFECTIVE_PERMISSIONS_PROJECT_FK"), new TableField[] { UserProjectEffectivePermissions.USER_PROJECT_EFFECTIVE_PERMISSIONS.projectId }, Keys.PROJECT_PK, new TableField[] { Project.PROJECT.id }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); public static final ForeignKey USER_PROJECT_EFFECTIVE_PERMISSIONS_USER_FK = Internal.createForeignKey(UserProjectEffectivePermissions.USER_PROJECT_EFFECTIVE_PERMISSIONS, DSL.name("USER_PROJECT_EFFECTIVE_PERMISSIONS_USER_FK"), new TableField[] { UserProjectEffectivePermissions.USER_PROJECT_EFFECTIVE_PERMISSIONS.userId }, Keys.USER_PK, new TableField[] { User.USER.id }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); + public static final ForeignKey USER_PROJECT_ROLES_PROJECT_FK = Internal.createForeignKey(UserProjectRoles.USER_PROJECT_ROLES, DSL.name("USER_PROJECT_ROLES_PROJECT_FK"), new TableField[] { UserProjectRoles.USER_PROJECT_ROLES.projectId }, Keys.PROJECT_PK, new TableField[] { Project.PROJECT.id }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); + public static final ForeignKey USER_PROJECT_ROLES_ROLE_FK = Internal.createForeignKey(UserProjectRoles.USER_PROJECT_ROLES, DSL.name("USER_PROJECT_ROLES_ROLE_FK"), new TableField[] { UserProjectRoles.USER_PROJECT_ROLES.roleId }, Keys.ROLE_PK, new TableField[] { Role.ROLE.id }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); + public static final ForeignKey USER_PROJECT_ROLES_USER_FK = Internal.createForeignKey(UserProjectRoles.USER_PROJECT_ROLES, DSL.name("USER_PROJECT_ROLES_USER_FK"), new TableField[] { UserProjectRoles.USER_PROJECT_ROLES.userId }, Keys.USER_PK, new TableField[] { User.USER.id }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); public static final ForeignKey USERS_PERMISSIONS_PERMISSION_FK = Internal.createForeignKey(UsersPermissions.USERS_PERMISSIONS, DSL.name("USERS_PERMISSIONS_PERMISSION_FK"), new TableField[] { UsersPermissions.USERS_PERMISSIONS.permissionId }, Keys.PERMISSION_PK, new TableField[] { Permission.PERMISSION.id }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); public static final ForeignKey USERS_PERMISSIONS_USER_FK = Internal.createForeignKey(UsersPermissions.USERS_PERMISSIONS, DSL.name("USERS_PERMISSIONS_USER_FK"), new TableField[] { UsersPermissions.USERS_PERMISSIONS.userId }, Keys.USER_PK, new TableField[] { User.USER.id }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); public static final ForeignKey USERS_TEAMS_TEAM_FK = Internal.createForeignKey(UsersTeams.USERS_TEAMS, DSL.name("USERS_TEAMS_TEAM_FK"), new TableField[] { UsersTeams.USERS_TEAMS.teamId }, Keys.TEAM_PK, new TableField[] { Team.TEAM.id }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/Routines.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/Routines.java index b2d71758d9..de08fda773 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/Routines.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/Routines.java @@ -13,6 +13,7 @@ import org.dependencytrack.persistence.jooq.generated.routines.HasProjectAccess; import org.dependencytrack.persistence.jooq.generated.routines.JsonbVulnAliases; import org.dependencytrack.persistence.jooq.generated.routines.RecalcUserProjectEffectivePermissions; +import org.dependencytrack.persistence.jooq.generated.routines.RecalcUserProjectRoleEffectivePermissions; import org.dependencytrack.persistence.jooq.generated.routines.UpdateComponentMetrics; import org.dependencytrack.persistence.jooq.generated.routines.UpdatePortfolioMetrics; import org.dependencytrack.persistence.jooq.generated.routines.UpdateProjectMetrics; @@ -29,7 +30,7 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @@ -199,6 +200,19 @@ public static void recalcUserProjectEffectivePermissions( p.execute(configuration); } + /** + * Call recalc_user_project_role_effective_permissions + */ + public static void recalcUserProjectRoleEffectivePermissions( + Configuration configuration + , Long[] projectIds + ) { + RecalcUserProjectRoleEffectivePermissions p = new RecalcUserProjectRoleEffectivePermissions(); + p.setProjectIds(projectIds); + + p.execute(configuration); + } + /** * Call UPDATE_COMPONENT_METRICS */ diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/Tables.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/Tables.java index ca998f2e3c..3a75cfeb52 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/Tables.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/Tables.java @@ -49,6 +49,8 @@ import org.dependencytrack.persistence.jooq.generated.tables.ProjectsTags; import org.dependencytrack.persistence.jooq.generated.tables.Repository; import org.dependencytrack.persistence.jooq.generated.tables.RepositoryMetaComponent; +import org.dependencytrack.persistence.jooq.generated.tables.Role; +import org.dependencytrack.persistence.jooq.generated.tables.RolesPermissions; import org.dependencytrack.persistence.jooq.generated.tables.ServiceComponent; import org.dependencytrack.persistence.jooq.generated.tables.ServiceComponentsVulnerabilities; import org.dependencytrack.persistence.jooq.generated.tables.Tag; @@ -56,6 +58,7 @@ import org.dependencytrack.persistence.jooq.generated.tables.TeamsPermissions; import org.dependencytrack.persistence.jooq.generated.tables.User; import org.dependencytrack.persistence.jooq.generated.tables.UserProjectEffectivePermissions; +import org.dependencytrack.persistence.jooq.generated.tables.UserProjectRoles; import org.dependencytrack.persistence.jooq.generated.tables.UsersPermissions; import org.dependencytrack.persistence.jooq.generated.tables.UsersTeams; import org.dependencytrack.persistence.jooq.generated.tables.Vex; @@ -80,7 +83,7 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @@ -302,6 +305,16 @@ public class Tables { */ public static final RepositoryMetaComponent REPOSITORY_META_COMPONENT = RepositoryMetaComponent.REPOSITORY_META_COMPONENT; + /** + * The table ROLE. + */ + public static final Role ROLE = Role.ROLE; + + /** + * The table ROLES_PERMISSIONS. + */ + public static final RolesPermissions ROLES_PERMISSIONS = RolesPermissions.ROLES_PERMISSIONS; + /** * The table SERVICECOMPONENT. */ @@ -337,6 +350,11 @@ public class Tables { */ public static final UserProjectEffectivePermissions USER_PROJECT_EFFECTIVE_PERMISSIONS = UserProjectEffectivePermissions.USER_PROJECT_EFFECTIVE_PERMISSIONS; + /** + * The table USER_PROJECT_ROLES. + */ + public static final UserProjectRoles USER_PROJECT_ROLES = UserProjectRoles.USER_PROJECT_ROLES; + /** * The table USERS_PERMISSIONS. */ diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/enums/Severity.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/enums/Severity.java index 54444a2170..4d5f209920 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/enums/Severity.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/enums/Severity.java @@ -19,7 +19,7 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/CalcRiskScore.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/CalcRiskScore.java index 28539daa08..c1fe920e0c 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/CalcRiskScore.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/CalcRiskScore.java @@ -24,14 +24,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class CalcRiskScore extends AbstractRoutine { - private static final long serialVersionUID = -234719986; + private static final long serialVersionUID = 246055824; /** * The parameter CALC_RISK_SCORE.RETURN_VALUE. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/HasProjectAccess.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/HasProjectAccess.java index 2ce6fa15c5..17ede8d193 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/HasProjectAccess.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/HasProjectAccess.java @@ -22,14 +22,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class HasProjectAccess extends AbstractRoutine { - private static final long serialVersionUID = 493440600; + private static final long serialVersionUID = -2056259366; /** * The parameter has_project_access.RETURN_VALUE. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/JsonbVulnAliases.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/JsonbVulnAliases.java index dfc350f35b..c59f12320a 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/JsonbVulnAliases.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/JsonbVulnAliases.java @@ -23,14 +23,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class JsonbVulnAliases extends AbstractRoutine { - private static final long serialVersionUID = 676127199; + private static final long serialVersionUID = -211077151; /** * The parameter jsonb_vuln_aliases.RETURN_VALUE. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/RecalcUserProjectEffectivePermissions.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/RecalcUserProjectEffectivePermissions.java index c9be554f12..0041aacb3e 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/RecalcUserProjectEffectivePermissions.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/RecalcUserProjectEffectivePermissions.java @@ -21,14 +21,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class RecalcUserProjectEffectivePermissions extends AbstractRoutine { - private static final long serialVersionUID = -199375943; + private static final long serialVersionUID = 209537979; /** * The parameter diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/RecalcUserProjectRoleEffectivePermissions.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/RecalcUserProjectRoleEffectivePermissions.java new file mode 100644 index 0000000000..f891661119 --- /dev/null +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/RecalcUserProjectRoleEffectivePermissions.java @@ -0,0 +1,54 @@ +/* + * This file is generated by jOOQ. + */ +package org.dependencytrack.persistence.jooq.generated.routines; + + +import javax.annotation.processing.Generated; + +import org.dependencytrack.persistence.jooq.generated.DefaultSchema; +import org.jooq.Parameter; +import org.jooq.impl.AbstractRoutine; +import org.jooq.impl.DSL; +import org.jooq.impl.Internal; +import org.jooq.impl.SQLDataType; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "https://www.jooq.org", + "jOOQ version:3.20.4", + "schema version:v5.6.0-28" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class RecalcUserProjectRoleEffectivePermissions extends AbstractRoutine { + + private static final long serialVersionUID = 981866517; + + /** + * The parameter + * recalc_user_project_role_effective_permissions.project_ids. + */ + public static final Parameter PROJECT_IDS = Internal.createParameter("project_ids", SQLDataType.BIGINT.array(), false, false); + + /** + * Create a new routine call instance + */ + public RecalcUserProjectRoleEffectivePermissions() { + super("recalc_user_project_role_effective_permissions", DefaultSchema.DEFAULT_SCHEMA, DSL.comment("")); + + addInParameter(PROJECT_IDS); + } + + /** + * Set the project_ids parameter IN value to the routine + */ + public void setProjectIds(Long[] value) { + setValue(PROJECT_IDS, value); + } +} diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/UpdateComponentMetrics.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/UpdateComponentMetrics.java index dc63b9da7c..28ccd9ac54 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/UpdateComponentMetrics.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/UpdateComponentMetrics.java @@ -23,14 +23,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class UpdateComponentMetrics extends AbstractRoutine { - private static final long serialVersionUID = 196404148; + private static final long serialVersionUID = 693412594; /** * The parameter UPDATE_COMPONENT_METRICS.component_uuid. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/UpdatePortfolioMetrics.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/UpdatePortfolioMetrics.java index 2d1eaa197b..9dde900264 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/UpdatePortfolioMetrics.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/UpdatePortfolioMetrics.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class UpdatePortfolioMetrics extends AbstractRoutine { - private static final long serialVersionUID = -1769165488; + private static final long serialVersionUID = 362726158; /** * Create a new routine call instance diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/UpdateProjectMetrics.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/UpdateProjectMetrics.java index af7331d12b..2642dea513 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/UpdateProjectMetrics.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/routines/UpdateProjectMetrics.java @@ -23,14 +23,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class UpdateProjectMetrics extends AbstractRoutine { - private static final long serialVersionUID = -887799344; + private static final long serialVersionUID = -337902706; /** * The parameter UPDATE_PROJECT_METRICS.project_uuid. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/AffectedVersionAttribution.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/AffectedVersionAttribution.java index cf4070d9d0..1eeb7693ac 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/AffectedVersionAttribution.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/AffectedVersionAttribution.java @@ -49,14 +49,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class AffectedVersionAttribution extends TableImpl { - private static final long serialVersionUID = 1249866150; + private static final long serialVersionUID = 1168662434; /** * The reference instance of AFFECTEDVERSIONATTRIBUTION @@ -146,13 +146,13 @@ public AffectedVersionAttribution(Table path, ForeignKey { - private static final long serialVersionUID = 1249866150; + private static final long serialVersionUID = 1168662434; public AffectedVersionAttributionPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Analysis.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Analysis.java index 1937033f4c..890d48fd65 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Analysis.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Analysis.java @@ -52,14 +52,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Analysis extends TableImpl { - private static final long serialVersionUID = -1637442219; + private static final long serialVersionUID = 283558549; /** * The reference instance of ANALYSIS @@ -199,13 +199,13 @@ public Analysis(Table path, ForeignKey value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) public static class AnalysisPath extends Analysis implements Path { - private static final long serialVersionUID = -1637442219; + private static final long serialVersionUID = 283558549; public AnalysisPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/AnalysisComment.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/AnalysisComment.java index 47151c5398..2e941fa556 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/AnalysisComment.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/AnalysisComment.java @@ -47,14 +47,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class AnalysisComment extends TableImpl { - private static final long serialVersionUID = 614853088; + private static final long serialVersionUID = -479012260; /** * The reference instance of ANALYSISCOMMENT @@ -134,13 +134,13 @@ public AnalysisComment(Table path, ForeignKey { - private static final long serialVersionUID = 614853088; + private static final long serialVersionUID = -479012260; public AnalysisCommentPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ApiKey.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ApiKey.java index 77546139fd..1da4f275f0 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ApiKey.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ApiKey.java @@ -48,14 +48,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ApiKey extends TableImpl { - private static final long serialVersionUID = 1411726765; + private static final long serialVersionUID = 1460309801; /** * The reference instance of APIKEY @@ -145,13 +145,13 @@ public ApiKey(Table path, ForeignKey chil value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) public static class ApiKeyPath extends ApiKey implements Path { - private static final long serialVersionUID = 1411726765; + private static final long serialVersionUID = 1460309801; public ApiKeyPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ApiKeysTeams.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ApiKeysTeams.java index bdab8a96fe..06da8c393b 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ApiKeysTeams.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ApiKeysTeams.java @@ -44,14 +44,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ApiKeysTeams extends TableImpl { - private static final long serialVersionUID = -1676545580; + private static final long serialVersionUID = -1464979308; /** * The reference instance of APIKEYS_TEAMS @@ -116,13 +116,13 @@ public ApiKeysTeams(Table path, ForeignKey { - private static final long serialVersionUID = -1676545580; + private static final long serialVersionUID = -1464979308; public ApiKeysTeamsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Bom.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Bom.java index e86fc81632..4663dcacdb 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Bom.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Bom.java @@ -48,14 +48,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Bom extends TableImpl { - private static final long serialVersionUID = -781209064; + private static final long serialVersionUID = -1177800744; /** * The reference instance of BOM @@ -155,13 +155,13 @@ public Bom(Table path, ForeignKey childPath, value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) public static class BomPath extends Bom implements Path { - private static final long serialVersionUID = -781209064; + private static final long serialVersionUID = -1177800744; public BomPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Component.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Component.java index 5b83253f7d..6f11ee23aa 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Component.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Component.java @@ -61,14 +61,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Component extends TableImpl { - private static final long serialVersionUID = -117754819; + private static final long serialVersionUID = 950250689; /** * The reference instance of COMPONENT @@ -323,13 +323,13 @@ public Component(Table path, ForeignKey { - private static final long serialVersionUID = -117754819; + private static final long serialVersionUID = 950250689; public ComponentPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ComponentOccurrence.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ComponentOccurrence.java index 831e3085ed..3f376b34ea 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ComponentOccurrence.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ComponentOccurrence.java @@ -47,14 +47,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ComponentOccurrence extends TableImpl { - private static final long serialVersionUID = 1203110904; + private static final long serialVersionUID = 812694584; /** * The reference instance of COMPONENT_OCCURRENCE @@ -144,13 +144,13 @@ public ComponentOccurrence(Table path, ForeignKey { - private static final long serialVersionUID = 1203110904; + private static final long serialVersionUID = 812694584; public ComponentOccurrencePath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ComponentProperty.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ComponentProperty.java index b1f4b4ed2b..0c4cbec0b4 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ComponentProperty.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ComponentProperty.java @@ -49,14 +49,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ComponentProperty extends TableImpl { - private static final long serialVersionUID = 2092165140; + private static final long serialVersionUID = -2102938216; /** * The reference instance of COMPONENT_PROPERTY @@ -151,13 +151,13 @@ public ComponentProperty(Table path, ForeignKey { - private static final long serialVersionUID = 2092165140; + private static final long serialVersionUID = -2102938216; public ComponentPropertyPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ComponentsVulnerabilities.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ComponentsVulnerabilities.java index 44cea692e2..47c5551fac 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ComponentsVulnerabilities.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ComponentsVulnerabilities.java @@ -45,14 +45,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ComponentsVulnerabilities extends TableImpl { - private static final long serialVersionUID = 2102850516; + private static final long serialVersionUID = -2031297584; /** * The reference instance of COMPONENTS_VULNERABILITIES @@ -117,13 +117,13 @@ public ComponentsVulnerabilities(Table path, ForeignKey { - private static final long serialVersionUID = 2102850516; + private static final long serialVersionUID = -2031297584; public ComponentsVulnerabilitiesPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ConfigProperty.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ConfigProperty.java index 4150e0daea..df15172d93 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ConfigProperty.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ConfigProperty.java @@ -39,14 +39,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ConfigProperty extends TableImpl { - private static final long serialVersionUID = -914264675; + private static final long serialVersionUID = 1282853723; /** * The reference instance of CONFIGPROPERTY diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/DependencyMetrics.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/DependencyMetrics.java index f50cb63bd1..d9f4926e31 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/DependencyMetrics.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/DependencyMetrics.java @@ -45,14 +45,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class DependencyMetrics extends TableImpl { - private static final long serialVersionUID = -302376119; + private static final long serialVersionUID = -876525619; /** * The reference instance of DEPENDENCYMETRICS @@ -265,13 +265,13 @@ public DependencyMetrics(Table path, ForeignKey { - private static final long serialVersionUID = -302376119; + private static final long serialVersionUID = -876525619; public DependencyMetricsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Epss.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Epss.java index 808b243b07..d81bd12fdb 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Epss.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Epss.java @@ -42,14 +42,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Epss extends TableImpl { - private static final long serialVersionUID = 430616880; + private static final long serialVersionUID = -1112588946; /** * The reference instance of EPSS diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/FindingAttribution.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/FindingAttribution.java index cd261fa117..7278bb00b7 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/FindingAttribution.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/FindingAttribution.java @@ -50,14 +50,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class FindingAttribution extends TableImpl { - private static final long serialVersionUID = 739551873; + private static final long serialVersionUID = -109488251; /** * The reference instance of FINDINGATTRIBUTION @@ -157,13 +157,13 @@ public FindingAttribution(Table path, ForeignKey { - private static final long serialVersionUID = 739551873; + private static final long serialVersionUID = -109488251; public FindingAttributionPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/IntegrityAnalysis.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/IntegrityAnalysis.java index 03386bb11a..8ee08c8b96 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/IntegrityAnalysis.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/IntegrityAnalysis.java @@ -47,14 +47,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class IntegrityAnalysis extends TableImpl { - private static final long serialVersionUID = 1603200635; + private static final long serialVersionUID = -1084259209; /** * The reference instance of INTEGRITY_ANALYSIS @@ -149,13 +149,13 @@ public IntegrityAnalysis(Table path, ForeignKey { - private static final long serialVersionUID = 1603200635; + private static final long serialVersionUID = -1084259209; public IntegrityAnalysisPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/IntegrityMetaComponent.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/IntegrityMetaComponent.java index f2c5e41c91..ce41b9607f 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/IntegrityMetaComponent.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/IntegrityMetaComponent.java @@ -44,14 +44,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class IntegrityMetaComponent extends TableImpl { - private static final long serialVersionUID = -461523102; + private static final long serialVersionUID = 2122102304; /** * The reference instance of INTEGRITY_META_COMPONENT diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/License.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/License.java index 35c572cd0a..35dab58473 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/License.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/License.java @@ -48,14 +48,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class License extends TableImpl { - private static final long serialVersionUID = -386899321; + private static final long serialVersionUID = 1708455947; /** * The reference instance of LICENSE @@ -175,13 +175,13 @@ public License(Table path, ForeignKey ch value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) public static class LicensePath extends License implements Path { - private static final long serialVersionUID = -386899321; + private static final long serialVersionUID = 1708455947; public LicensePath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/LicenseGroup.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/LicenseGroup.java index fdf9df330a..0a839cf6ac 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/LicenseGroup.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/LicenseGroup.java @@ -47,14 +47,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class LicenseGroup extends TableImpl { - private static final long serialVersionUID = 1380687068; + private static final long serialVersionUID = 1916655004; /** * The reference instance of LICENSEGROUP @@ -129,13 +129,13 @@ public LicenseGroup(Table path, ForeignKey { - private static final long serialVersionUID = 1380687068; + private static final long serialVersionUID = 1916655004; public LicenseGroupPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/LicenseGroupLicense.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/LicenseGroupLicense.java index 68cdf4d699..f6a6ae0d0b 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/LicenseGroupLicense.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/LicenseGroupLicense.java @@ -45,14 +45,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class LicenseGroupLicense extends TableImpl { - private static final long serialVersionUID = -249804984; + private static final long serialVersionUID = 699105800; /** * The reference instance of LICENSEGROUP_LICENSE @@ -117,13 +117,13 @@ public LicenseGroupLicense(Table path, ForeignKey { - private static final long serialVersionUID = -249804984; + private static final long serialVersionUID = 699105800; public LicenseGroupLicensePath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/MappedLdapGroup.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/MappedLdapGroup.java index 705a0b9000..5537aca3f8 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/MappedLdapGroup.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/MappedLdapGroup.java @@ -44,14 +44,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class MappedLdapGroup extends TableImpl { - private static final long serialVersionUID = 109596849; + private static final long serialVersionUID = -852102219; /** * The reference instance of MAPPEDLDAPGROUP @@ -126,13 +126,13 @@ public MappedLdapGroup(Table path, ForeignKey { - private static final long serialVersionUID = 109596849; + private static final long serialVersionUID = -852102219; public MappedLdapGroupPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/MappedOidcGroup.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/MappedOidcGroup.java index 6dca2d263f..e85ecd66ac 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/MappedOidcGroup.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/MappedOidcGroup.java @@ -47,14 +47,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class MappedOidcGroup extends TableImpl { - private static final long serialVersionUID = 682827561; + private static final long serialVersionUID = 538043813; /** * The reference instance of MAPPEDOIDCGROUP @@ -129,13 +129,13 @@ public MappedOidcGroup(Table path, ForeignKey { - private static final long serialVersionUID = 682827561; + private static final long serialVersionUID = 538043813; public MappedOidcGroupPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationPublisher.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationPublisher.java index 6a7ae469a4..065645101a 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationPublisher.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationPublisher.java @@ -45,14 +45,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class NotificationPublisher extends TableImpl { - private static final long serialVersionUID = 1027440007; + private static final long serialVersionUID = 1114137099; /** * The reference instance of NOTIFICATIONPUBLISHER @@ -147,13 +147,13 @@ public NotificationPublisher(Table path, ForeignKey { - private static final long serialVersionUID = 1027440007; + private static final long serialVersionUID = 1114137099; public NotificationPublisherPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationRule.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationRule.java index 8240fa98f8..91e52d0dd9 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationRule.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationRule.java @@ -52,14 +52,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class NotificationRule extends TableImpl { - private static final long serialVersionUID = -829707404; + private static final long serialVersionUID = -1237866188; /** * The reference instance of NOTIFICATIONRULE @@ -174,13 +174,13 @@ public NotificationRule(Table path, ForeignKey { - private static final long serialVersionUID = -829707404; + private static final long serialVersionUID = -1237866188; public NotificationRulePath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationRuleProjects.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationRuleProjects.java index af764a67bb..30e5a82f34 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationRuleProjects.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationRuleProjects.java @@ -45,14 +45,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class NotificationRuleProjects extends TableImpl { - private static final long serialVersionUID = 133247742; + private static final long serialVersionUID = 1487178754; /** * The reference instance of NOTIFICATIONRULE_PROJECTS @@ -117,13 +117,13 @@ public NotificationRuleProjects(Table path, ForeignKey { - private static final long serialVersionUID = 133247742; + private static final long serialVersionUID = 1487178754; public NotificationRuleProjectsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationRuleTags.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationRuleTags.java index 3f3a5ec9b2..4644867d84 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationRuleTags.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationRuleTags.java @@ -44,14 +44,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class NotificationRuleTags extends TableImpl { - private static final long serialVersionUID = 1910248840; + private static final long serialVersionUID = 2086958220; /** * The reference instance of NOTIFICATIONRULE_TAGS @@ -116,13 +116,13 @@ public NotificationRuleTags(Table path, ForeignKey { - private static final long serialVersionUID = 1910248840; + private static final long serialVersionUID = 2086958220; public NotificationRuleTagsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationRuleTeams.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationRuleTeams.java index 7a95f81469..4a6dfbb012 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationRuleTeams.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/NotificationRuleTeams.java @@ -44,14 +44,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class NotificationRuleTeams extends TableImpl { - private static final long serialVersionUID = -1962593340; + private static final long serialVersionUID = -727005120; /** * The reference instance of NOTIFICATIONRULE_TEAMS @@ -116,13 +116,13 @@ public NotificationRuleTeams(Table path, ForeignKey { - private static final long serialVersionUID = -1962593340; + private static final long serialVersionUID = -727005120; public NotificationRuleTeamsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/OidcGroup.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/OidcGroup.java index b4435efac6..b39479aeb5 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/OidcGroup.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/OidcGroup.java @@ -46,14 +46,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class OidcGroup extends TableImpl { - private static final long serialVersionUID = 306753486; + private static final long serialVersionUID = -1429900146; /** * The reference instance of OIDCGROUP @@ -123,13 +123,13 @@ public OidcGroup(Table path, ForeignKey { - private static final long serialVersionUID = 306753486; + private static final long serialVersionUID = -1429900146; public OidcGroupPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Permission.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Permission.java index c93f60634c..46821e6c69 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Permission.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Permission.java @@ -12,6 +12,8 @@ import org.dependencytrack.persistence.jooq.generated.DefaultSchema; import org.dependencytrack.persistence.jooq.generated.Keys; +import org.dependencytrack.persistence.jooq.generated.tables.Role.RolePath; +import org.dependencytrack.persistence.jooq.generated.tables.RolesPermissions.RolesPermissionsPath; import org.dependencytrack.persistence.jooq.generated.tables.Team.TeamPath; import org.dependencytrack.persistence.jooq.generated.tables.TeamsPermissions.TeamsPermissionsPath; import org.dependencytrack.persistence.jooq.generated.tables.User.UserPath; @@ -48,14 +50,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Permission extends TableImpl { - private static final long serialVersionUID = -710656376; + private static final long serialVersionUID = 1887509984; /** * The reference instance of PERMISSION @@ -125,13 +127,13 @@ public Permission(Table path, ForeignKey { - private static final long serialVersionUID = -710656376; + private static final long serialVersionUID = 1887509984; public PermissionPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } @@ -175,6 +177,19 @@ public List> getUniqueKeys() { return Arrays.asList(Keys.PERMISSION_IDX); } + private transient RolesPermissionsPath _rolesPermissions; + + /** + * Get the implicit to-many join path to the ROLES_PERMISSIONS + * table + */ + public RolesPermissionsPath rolesPermissions() { + if (_rolesPermissions == null) + _rolesPermissions = new RolesPermissionsPath(this, null, Keys.ROLES_PERMISSIONS_PERMISSION_FK.getInverseKey()); + + return _rolesPermissions; + } + private transient TeamsPermissionsPath _teamsPermissions; /** @@ -229,6 +244,13 @@ public UsersPermissionsPath usersPermissions() { return _usersPermissions; } + /** + * Get the implicit many-to-many join path to the ROLE table + */ + public RolePath role() { + return rolesPermissions().role(); + } + /** * Get the implicit many-to-many join path to the TEAM table */ diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Policy.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Policy.java index 12a5b9298f..40f20de7bb 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Policy.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Policy.java @@ -50,14 +50,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Policy extends TableImpl { - private static final long serialVersionUID = 413951221; + private static final long serialVersionUID = -1941017999; /** * The reference instance of POLICY @@ -147,13 +147,13 @@ public Policy(Table path, ForeignKey chil value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) public static class PolicyPath extends Policy implements Path { - private static final long serialVersionUID = 413951221; + private static final long serialVersionUID = -1941017999; public PolicyPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PolicyCondition.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PolicyCondition.java index 373a933875..62418ff076 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PolicyCondition.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PolicyCondition.java @@ -48,14 +48,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class PolicyCondition extends TableImpl { - private static final long serialVersionUID = 1698155959; + private static final long serialVersionUID = 1066216251; /** * The reference instance of POLICYCONDITION @@ -145,13 +145,13 @@ public PolicyCondition(Table path, ForeignKey { - private static final long serialVersionUID = 1698155959; + private static final long serialVersionUID = 1066216251; public PolicyConditionPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PolicyProjects.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PolicyProjects.java index fd47c2e4b4..f5e0a57f7d 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PolicyProjects.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PolicyProjects.java @@ -45,14 +45,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class PolicyProjects extends TableImpl { - private static final long serialVersionUID = -1682094743; + private static final long serialVersionUID = 482510445; /** * The reference instance of POLICY_PROJECTS @@ -117,13 +117,13 @@ public PolicyProjects(Table path, ForeignKey { - private static final long serialVersionUID = -1682094743; + private static final long serialVersionUID = 482510445; public PolicyProjectsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PolicyTags.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PolicyTags.java index ad47948116..2700106ee6 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PolicyTags.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PolicyTags.java @@ -44,14 +44,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class PolicyTags extends TableImpl { - private static final long serialVersionUID = -2032947896; + private static final long serialVersionUID = 90177356; /** * The reference instance of POLICY_TAGS @@ -116,13 +116,13 @@ public PolicyTags(Table path, ForeignKey { - private static final long serialVersionUID = -2032947896; + private static final long serialVersionUID = 90177356; public PolicyTagsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PolicyViolation.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PolicyViolation.java index 4c7f7f24e7..bc09a0714c 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PolicyViolation.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PolicyViolation.java @@ -51,14 +51,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class PolicyViolation extends TableImpl { - private static final long serialVersionUID = 1539537451; + private static final long serialVersionUID = 1829081903; /** * The reference instance of POLICYVIOLATION @@ -153,13 +153,13 @@ public PolicyViolation(Table path, ForeignKey { - private static final long serialVersionUID = 1539537451; + private static final long serialVersionUID = 1829081903; public PolicyViolationPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PortfolioMetrics.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PortfolioMetrics.java index 7fea10fb76..fdfa3670b4 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PortfolioMetrics.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/PortfolioMetrics.java @@ -37,14 +37,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class PortfolioMetrics extends TableImpl { - private static final long serialVersionUID = 2016571758; + private static final long serialVersionUID = 1191794800; /** * The reference instance of PORTFOLIOMETRICS diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Project.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Project.java index e42b56db1e..81818ef80d 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Project.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Project.java @@ -34,6 +34,7 @@ import org.dependencytrack.persistence.jooq.generated.tables.Tag.TagPath; import org.dependencytrack.persistence.jooq.generated.tables.Team.TeamPath; import org.dependencytrack.persistence.jooq.generated.tables.UserProjectEffectivePermissions.UserProjectEffectivePermissionsPath; +import org.dependencytrack.persistence.jooq.generated.tables.UserProjectRoles.UserProjectRolesPath; import org.dependencytrack.persistence.jooq.generated.tables.Vex.VexPath; import org.dependencytrack.persistence.jooq.generated.tables.ViolationAnalysis.ViolationAnalysisPath; import org.dependencytrack.persistence.jooq.generated.tables.records.ProjectRecord; @@ -71,14 +72,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Project extends TableImpl { - private static final long serialVersionUID = -266564691; + private static final long serialVersionUID = -1788679128; /** * The reference instance of PROJECT @@ -243,13 +244,13 @@ public Project(Table path, ForeignKey ch value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) public static class ProjectPath extends Project implements Path { - private static final long serialVersionUID = -266564691; + private static final long serialVersionUID = -1788679128; public ProjectPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } @@ -533,6 +534,19 @@ public UserProjectEffectivePermissionsPath userProjectEffectivePermissions() { return _userProjectEffectivePermissions; } + private transient UserProjectRolesPath _userProjectRoles; + + /** + * Get the implicit to-many join path to the USER_PROJECT_ROLES + * table + */ + public UserProjectRolesPath userProjectRoles() { + if (_userProjectRoles == null) + _userProjectRoles = new UserProjectRolesPath(this, null, Keys.USER_PROJECT_ROLES_PROJECT_FK.getInverseKey()); + + return _userProjectRoles; + } + private transient VexPath _vex; /** diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectAccessTeams.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectAccessTeams.java index 9ba46b6ca5..ca371817f9 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectAccessTeams.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectAccessTeams.java @@ -44,14 +44,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ProjectAccessTeams extends TableImpl { - private static final long serialVersionUID = 1439520474; + private static final long serialVersionUID = 308377242; /** * The reference instance of PROJECT_ACCESS_TEAMS @@ -116,13 +116,13 @@ public ProjectAccessTeams(Table path, ForeignKey { - private static final long serialVersionUID = 1439520474; + private static final long serialVersionUID = 308377242; public ProjectAccessTeamsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectHierarchy.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectHierarchy.java index 27c365f081..72efbfad8a 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectHierarchy.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectHierarchy.java @@ -43,14 +43,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ProjectHierarchy extends TableImpl { - private static final long serialVersionUID = 573413810; + private static final long serialVersionUID = -421841490; /** * The reference instance of PROJECT_HIERARCHY @@ -120,13 +120,13 @@ public ProjectHierarchy(Table path, ForeignKey { - private static final long serialVersionUID = 573413810; + private static final long serialVersionUID = -421841490; public ProjectHierarchyPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectMetadata.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectMetadata.java index 676b6fd87e..6ead589780 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectMetadata.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectMetadata.java @@ -46,14 +46,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ProjectMetadata extends TableImpl { - private static final long serialVersionUID = 1057573236; + private static final long serialVersionUID = -599705872; /** * The reference instance of PROJECT_METADATA @@ -133,13 +133,13 @@ public ProjectMetadata(Table path, ForeignKey { - private static final long serialVersionUID = 1057573236; + private static final long serialVersionUID = -599705872; public ProjectMetadataPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectMetrics.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectMetrics.java index 624d2f10e8..89c741e0a8 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectMetrics.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectMetrics.java @@ -44,14 +44,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ProjectMetrics extends TableImpl { - private static final long serialVersionUID = -1819192256; + private static final long serialVersionUID = -946369084; /** * The reference instance of PROJECTMETRICS @@ -266,13 +266,13 @@ public ProjectMetrics(Table path, ForeignKey { - private static final long serialVersionUID = -1819192256; + private static final long serialVersionUID = -946369084; public ProjectMetricsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectProperty.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectProperty.java index 7c2df580ba..8825b278fd 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectProperty.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectProperty.java @@ -44,14 +44,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ProjectProperty extends TableImpl { - private static final long serialVersionUID = -1953659189; + private static final long serialVersionUID = 2042495951; /** * The reference instance of PROJECT_PROPERTY @@ -141,13 +141,13 @@ public ProjectProperty(Table path, ForeignKey { - private static final long serialVersionUID = -1953659189; + private static final long serialVersionUID = 2042495951; public ProjectPropertyPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectsTags.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectsTags.java index 3a32da735a..28af923b47 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectsTags.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ProjectsTags.java @@ -44,14 +44,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ProjectsTags extends TableImpl { - private static final long serialVersionUID = -269722386; + private static final long serialVersionUID = -58156114; /** * The reference instance of PROJECTS_TAGS @@ -116,13 +116,13 @@ public ProjectsTags(Table path, ForeignKey { - private static final long serialVersionUID = -269722386; + private static final long serialVersionUID = -58156114; public ProjectsTagsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Repository.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Repository.java index 49cb3f2297..864df9c936 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Repository.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Repository.java @@ -42,14 +42,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Repository extends TableImpl { - private static final long serialVersionUID = -307753654; + private static final long serialVersionUID = -1708907256; /** * The reference instance of REPOSITORY diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/RepositoryMetaComponent.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/RepositoryMetaComponent.java index a4ae28f46e..9c18403541 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/RepositoryMetaComponent.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/RepositoryMetaComponent.java @@ -42,14 +42,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class RepositoryMetaComponent extends TableImpl { - private static final long serialVersionUID = -567367334; + private static final long serialVersionUID = -1352376868; /** * The reference instance of REPOSITORY_META_COMPONENT diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Role.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Role.java new file mode 100644 index 0000000000..0e39043e55 --- /dev/null +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Role.java @@ -0,0 +1,333 @@ +/* + * This file is generated by jOOQ. + */ +package org.dependencytrack.persistence.jooq.generated.tables; + + +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import javax.annotation.processing.Generated; + +import org.dependencytrack.persistence.jooq.generated.DefaultSchema; +import org.dependencytrack.persistence.jooq.generated.Keys; +import org.dependencytrack.persistence.jooq.generated.tables.Permission.PermissionPath; +import org.dependencytrack.persistence.jooq.generated.tables.RolesPermissions.RolesPermissionsPath; +import org.dependencytrack.persistence.jooq.generated.tables.UserProjectRoles.UserProjectRolesPath; +import org.dependencytrack.persistence.jooq.generated.tables.records.RoleRecord; +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "https://www.jooq.org", + "jOOQ version:3.20.4", + "schema version:v5.6.0-28" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class Role extends TableImpl { + + private static final long serialVersionUID = -30181175; + + /** + * The reference instance of ROLE + */ + public static final Role ROLE = new Role(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return RoleRecord.class; + } + + /** + * The column ROLE.ID. + */ + public final TableField id = createField(DSL.name("ID"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column ROLE.NAME. + */ + public final TableField name = createField(DSL.name("NAME"), SQLDataType.VARCHAR(255).nullable(false), this, ""); + + /** + * The column ROLE.UUID. + */ + public final TableField uuid = createField(DSL.name("UUID"), SQLDataType.UUID.nullable(false), this, ""); + + private Role(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Role(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased ROLE table reference + */ + public Role(String alias) { + this(DSL.name(alias), ROLE); + } + + /** + * Create an aliased ROLE table reference + */ + public Role(Name alias) { + this(alias, ROLE); + } + + /** + * Create a ROLE table reference + */ + public Role() { + this(DSL.name("ROLE"), null); + } + + public Role(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, ROLE); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + @Generated( + value = { + "https://www.jooq.org", + "jOOQ version:3.20.4", + "schema version:v5.6.0-28" + }, + comments = "This class is generated by jOOQ" + ) + public static class RolePath extends Role implements Path { + + private static final long serialVersionUID = -30181175; + public RolePath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private RolePath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public RolePath as(String alias) { + return new RolePath(DSL.name(alias), this); + } + + @Override + public RolePath as(Name alias) { + return new RolePath(alias, this); + } + + @Override + public RolePath as(Table alias) { + return new RolePath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : DefaultSchema.DEFAULT_SCHEMA; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.ROLE_PK; + } + + @Override + public List> getUniqueKeys() { + return Arrays.asList(Keys.ROLE_NAME_IDX, Keys.ROLE_UUID_IDX); + } + + private transient RolesPermissionsPath _rolesPermissions; + + /** + * Get the implicit to-many join path to the ROLES_PERMISSIONS + * table + */ + public RolesPermissionsPath rolesPermissions() { + if (_rolesPermissions == null) + _rolesPermissions = new RolesPermissionsPath(this, null, Keys.ROLES_PERMISSIONS_ROLE_FK.getInverseKey()); + + return _rolesPermissions; + } + + private transient UserProjectRolesPath _userProjectRoles; + + /** + * Get the implicit to-many join path to the USER_PROJECT_ROLES + * table + */ + public UserProjectRolesPath userProjectRoles() { + if (_userProjectRoles == null) + _userProjectRoles = new UserProjectRolesPath(this, null, Keys.USER_PROJECT_ROLES_ROLE_FK.getInverseKey()); + + return _userProjectRoles; + } + + /** + * Get the implicit many-to-many join path to the PERMISSION + * table + */ + public PermissionPath permission() { + return rolesPermissions().permission(); + } + + @Override + public Role as(String alias) { + return new Role(DSL.name(alias), this); + } + + @Override + public Role as(Name alias) { + return new Role(alias, this); + } + + @Override + public Role as(Table alias) { + return new Role(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Role rename(String name) { + return new Role(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Role rename(Name name) { + return new Role(name, null); + } + + /** + * Rename this table + */ + @Override + public Role rename(Table name) { + return new Role(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Role where(Condition condition) { + return new Role(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Role where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Role where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Role where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Role where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Role where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Role where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Role where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Role whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Role whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/RolesPermissions.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/RolesPermissions.java new file mode 100644 index 0000000000..73caad62fe --- /dev/null +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/RolesPermissions.java @@ -0,0 +1,310 @@ +/* + * This file is generated by jOOQ. + */ +package org.dependencytrack.persistence.jooq.generated.tables; + + +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import javax.annotation.processing.Generated; + +import org.dependencytrack.persistence.jooq.generated.DefaultSchema; +import org.dependencytrack.persistence.jooq.generated.Keys; +import org.dependencytrack.persistence.jooq.generated.tables.Permission.PermissionPath; +import org.dependencytrack.persistence.jooq.generated.tables.Role.RolePath; +import org.dependencytrack.persistence.jooq.generated.tables.records.RolesPermissionsRecord; +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "https://www.jooq.org", + "jOOQ version:3.20.4", + "schema version:v5.6.0-28" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class RolesPermissions extends TableImpl { + + private static final long serialVersionUID = -1187218808; + + /** + * The reference instance of ROLES_PERMISSIONS + */ + public static final RolesPermissions ROLES_PERMISSIONS = new RolesPermissions(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return RolesPermissionsRecord.class; + } + + /** + * The column ROLES_PERMISSIONS.ROLE_ID. + */ + public final TableField roleId = createField(DSL.name("ROLE_ID"), SQLDataType.BIGINT.nullable(false), this, ""); + + /** + * The column ROLES_PERMISSIONS.PERMISSION_ID. + */ + public final TableField permissionId = createField(DSL.name("PERMISSION_ID"), SQLDataType.BIGINT.nullable(false), this, ""); + + private RolesPermissions(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private RolesPermissions(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased ROLES_PERMISSIONS table reference + */ + public RolesPermissions(String alias) { + this(DSL.name(alias), ROLES_PERMISSIONS); + } + + /** + * Create an aliased ROLES_PERMISSIONS table reference + */ + public RolesPermissions(Name alias) { + this(alias, ROLES_PERMISSIONS); + } + + /** + * Create a ROLES_PERMISSIONS table reference + */ + public RolesPermissions() { + this(DSL.name("ROLES_PERMISSIONS"), null); + } + + public RolesPermissions(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, ROLES_PERMISSIONS); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + @Generated( + value = { + "https://www.jooq.org", + "jOOQ version:3.20.4", + "schema version:v5.6.0-28" + }, + comments = "This class is generated by jOOQ" + ) + public static class RolesPermissionsPath extends RolesPermissions implements Path { + + private static final long serialVersionUID = -1187218808; + public RolesPermissionsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private RolesPermissionsPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public RolesPermissionsPath as(String alias) { + return new RolesPermissionsPath(DSL.name(alias), this); + } + + @Override + public RolesPermissionsPath as(Name alias) { + return new RolesPermissionsPath(alias, this); + } + + @Override + public RolesPermissionsPath as(Table alias) { + return new RolesPermissionsPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : DefaultSchema.DEFAULT_SCHEMA; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.ROLES_PERMISSIONS_PK; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.ROLES_PERMISSIONS_PERMISSION_FK, Keys.ROLES_PERMISSIONS_ROLE_FK); + } + + private transient PermissionPath _permission; + + /** + * Get the implicit join path to the PERMISSION table. + */ + public PermissionPath permission() { + if (_permission == null) + _permission = new PermissionPath(this, Keys.ROLES_PERMISSIONS_PERMISSION_FK, null); + + return _permission; + } + + private transient RolePath _role; + + /** + * Get the implicit join path to the ROLE table. + */ + public RolePath role() { + if (_role == null) + _role = new RolePath(this, Keys.ROLES_PERMISSIONS_ROLE_FK, null); + + return _role; + } + + @Override + public RolesPermissions as(String alias) { + return new RolesPermissions(DSL.name(alias), this); + } + + @Override + public RolesPermissions as(Name alias) { + return new RolesPermissions(alias, this); + } + + @Override + public RolesPermissions as(Table alias) { + return new RolesPermissions(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public RolesPermissions rename(String name) { + return new RolesPermissions(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public RolesPermissions rename(Name name) { + return new RolesPermissions(name, null); + } + + /** + * Rename this table + */ + @Override + public RolesPermissions rename(Table name) { + return new RolesPermissions(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RolesPermissions where(Condition condition) { + return new RolesPermissions(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RolesPermissions where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RolesPermissions where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RolesPermissions where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public RolesPermissions where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public RolesPermissions where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public RolesPermissions where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public RolesPermissions where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RolesPermissions whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RolesPermissions whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ServiceComponent.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ServiceComponent.java index 3bb19a88e7..c80246e7da 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ServiceComponent.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ServiceComponent.java @@ -49,14 +49,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ServiceComponent extends TableImpl { - private static final long serialVersionUID = 1358781429; + private static final long serialVersionUID = 203170229; /** * The reference instance of SERVICECOMPONENT @@ -191,13 +191,13 @@ public ServiceComponent(Table path, ForeignKey { - private static final long serialVersionUID = 1358781429; + private static final long serialVersionUID = 203170229; public ServiceComponentPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ServiceComponentsVulnerabilities.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ServiceComponentsVulnerabilities.java index 83d4113913..47ce162f41 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ServiceComponentsVulnerabilities.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ServiceComponentsVulnerabilities.java @@ -45,14 +45,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ServiceComponentsVulnerabilities extends TableImpl { - private static final long serialVersionUID = -1937052999; + private static final long serialVersionUID = -45138371; /** * The reference instance of SERVICECOMPONENTS_VULNERABILITIES @@ -121,13 +121,13 @@ public ServiceComponentsVulnerabilities(Table path, Foreig value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) public static class ServiceComponentsVulnerabilitiesPath extends ServiceComponentsVulnerabilities implements Path { - private static final long serialVersionUID = -1937052999; + private static final long serialVersionUID = -45138371; public ServiceComponentsVulnerabilitiesPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Tag.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Tag.java index 79fbec2022..c820ae49db 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Tag.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Tag.java @@ -52,14 +52,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Tag extends TableImpl { - private static final long serialVersionUID = -488236356; + private static final long serialVersionUID = 368852536; /** * The reference instance of TAG @@ -124,13 +124,13 @@ public Tag(Table path, ForeignKey childPath, value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) public static class TagPath extends Tag implements Path { - private static final long serialVersionUID = -488236356; + private static final long serialVersionUID = 368852536; public TagPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Team.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Team.java index a5ee2c0451..91135427d6 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Team.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Team.java @@ -53,14 +53,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Team extends TableImpl { - private static final long serialVersionUID = 1459546599; + private static final long serialVersionUID = -183282137; /** * The reference instance of TEAM @@ -130,13 +130,13 @@ public Team(Table path, ForeignKey childPat value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) public static class TeamPath extends Team implements Path { - private static final long serialVersionUID = 1459546599; + private static final long serialVersionUID = -183282137; public TeamPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/TeamsPermissions.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/TeamsPermissions.java index c5612c6e7a..450e8d1683 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/TeamsPermissions.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/TeamsPermissions.java @@ -44,14 +44,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class TeamsPermissions extends TableImpl { - private static final long serialVersionUID = 1337517628; + private static final long serialVersionUID = -230464260; /** * The reference instance of TEAMS_PERMISSIONS @@ -116,13 +116,13 @@ public TeamsPermissions(Table path, ForeignKey { - private static final long serialVersionUID = 1337517628; + private static final long serialVersionUID = -230464260; public TeamsPermissionsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/User.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/User.java index 80bcdf21c5..ce459e3825 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/User.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/User.java @@ -17,6 +17,7 @@ import org.dependencytrack.persistence.jooq.generated.tables.Permission.PermissionPath; import org.dependencytrack.persistence.jooq.generated.tables.Team.TeamPath; import org.dependencytrack.persistence.jooq.generated.tables.UserProjectEffectivePermissions.UserProjectEffectivePermissionsPath; +import org.dependencytrack.persistence.jooq.generated.tables.UserProjectRoles.UserProjectRolesPath; import org.dependencytrack.persistence.jooq.generated.tables.UsersPermissions.UsersPermissionsPath; import org.dependencytrack.persistence.jooq.generated.tables.UsersTeams.UsersTeamsPath; import org.dependencytrack.persistence.jooq.generated.tables.records.UserRecord; @@ -53,14 +54,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class User extends TableImpl { - private static final long serialVersionUID = 885897955; + private static final long serialVersionUID = -1214186122; /** * The reference instance of USER @@ -175,13 +176,13 @@ public User(Table path, ForeignKey childPat value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) public static class UserPath extends User implements Path { - private static final long serialVersionUID = 885897955; + private static final long serialVersionUID = -1214186122; public UserPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } @@ -238,6 +239,19 @@ public UserProjectEffectivePermissionsPath userProjectEffectivePermissions() { return _userProjectEffectivePermissions; } + private transient UserProjectRolesPath _userProjectRoles; + + /** + * Get the implicit to-many join path to the USER_PROJECT_ROLES + * table + */ + public UserProjectRolesPath userProjectRoles() { + if (_userProjectRoles == null) + _userProjectRoles = new UserProjectRolesPath(this, null, Keys.USER_PROJECT_ROLES_USER_FK.getInverseKey()); + + return _userProjectRoles; + } + private transient UsersPermissionsPath _usersPermissions; /** diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/UserProjectEffectivePermissions.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/UserProjectEffectivePermissions.java index dee608c2a8..338c97897e 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/UserProjectEffectivePermissions.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/UserProjectEffectivePermissions.java @@ -45,14 +45,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class UserProjectEffectivePermissions extends TableImpl { - private static final long serialVersionUID = -391019753; + private static final long serialVersionUID = 166918427; /** * The reference instance of USER_PROJECT_EFFECTIVE_PERMISSIONS @@ -130,13 +130,13 @@ public UserProjectEffectivePermissions(Table path, Foreign value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) public static class UserProjectEffectivePermissionsPath extends UserProjectEffectivePermissions implements Path { - private static final long serialVersionUID = -391019753; + private static final long serialVersionUID = 166918427; public UserProjectEffectivePermissionsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/UserProjectRoles.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/UserProjectRoles.java new file mode 100644 index 0000000000..95e44ed801 --- /dev/null +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/UserProjectRoles.java @@ -0,0 +1,328 @@ +/* + * This file is generated by jOOQ. + */ +package org.dependencytrack.persistence.jooq.generated.tables; + + +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import javax.annotation.processing.Generated; + +import org.dependencytrack.persistence.jooq.generated.DefaultSchema; +import org.dependencytrack.persistence.jooq.generated.Keys; +import org.dependencytrack.persistence.jooq.generated.tables.Project.ProjectPath; +import org.dependencytrack.persistence.jooq.generated.tables.Role.RolePath; +import org.dependencytrack.persistence.jooq.generated.tables.User.UserPath; +import org.dependencytrack.persistence.jooq.generated.tables.records.UserProjectRolesRecord; +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "https://www.jooq.org", + "jOOQ version:3.20.4", + "schema version:v5.6.0-28" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class UserProjectRoles extends TableImpl { + + private static final long serialVersionUID = 1709797821; + + /** + * The reference instance of USER_PROJECT_ROLES + */ + public static final UserProjectRoles USER_PROJECT_ROLES = new UserProjectRoles(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return UserProjectRolesRecord.class; + } + + /** + * The column USER_PROJECT_ROLES.USER_ID. + */ + public final TableField userId = createField(DSL.name("USER_ID"), SQLDataType.BIGINT.nullable(false), this, ""); + + /** + * The column USER_PROJECT_ROLES.PROJECT_ID. + */ + public final TableField projectId = createField(DSL.name("PROJECT_ID"), SQLDataType.BIGINT.nullable(false), this, ""); + + /** + * The column USER_PROJECT_ROLES.ROLE_ID. + */ + public final TableField roleId = createField(DSL.name("ROLE_ID"), SQLDataType.BIGINT.nullable(false), this, ""); + + private UserProjectRoles(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private UserProjectRoles(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased USER_PROJECT_ROLES table reference + */ + public UserProjectRoles(String alias) { + this(DSL.name(alias), USER_PROJECT_ROLES); + } + + /** + * Create an aliased USER_PROJECT_ROLES table reference + */ + public UserProjectRoles(Name alias) { + this(alias, USER_PROJECT_ROLES); + } + + /** + * Create a USER_PROJECT_ROLES table reference + */ + public UserProjectRoles() { + this(DSL.name("USER_PROJECT_ROLES"), null); + } + + public UserProjectRoles(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, USER_PROJECT_ROLES); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + @Generated( + value = { + "https://www.jooq.org", + "jOOQ version:3.20.4", + "schema version:v5.6.0-28" + }, + comments = "This class is generated by jOOQ" + ) + public static class UserProjectRolesPath extends UserProjectRoles implements Path { + + private static final long serialVersionUID = 1709797821; + public UserProjectRolesPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private UserProjectRolesPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public UserProjectRolesPath as(String alias) { + return new UserProjectRolesPath(DSL.name(alias), this); + } + + @Override + public UserProjectRolesPath as(Name alias) { + return new UserProjectRolesPath(alias, this); + } + + @Override + public UserProjectRolesPath as(Table alias) { + return new UserProjectRolesPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : DefaultSchema.DEFAULT_SCHEMA; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.USER_PROJECT_ROLES_PK; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.USER_PROJECT_ROLES_PROJECT_FK, Keys.USER_PROJECT_ROLES_ROLE_FK, Keys.USER_PROJECT_ROLES_USER_FK); + } + + private transient ProjectPath _project; + + /** + * Get the implicit join path to the PROJECT table. + */ + public ProjectPath project() { + if (_project == null) + _project = new ProjectPath(this, Keys.USER_PROJECT_ROLES_PROJECT_FK, null); + + return _project; + } + + private transient RolePath _role; + + /** + * Get the implicit join path to the ROLE table. + */ + public RolePath role() { + if (_role == null) + _role = new RolePath(this, Keys.USER_PROJECT_ROLES_ROLE_FK, null); + + return _role; + } + + private transient UserPath _user; + + /** + * Get the implicit join path to the USER table. + */ + public UserPath user() { + if (_user == null) + _user = new UserPath(this, Keys.USER_PROJECT_ROLES_USER_FK, null); + + return _user; + } + + @Override + public UserProjectRoles as(String alias) { + return new UserProjectRoles(DSL.name(alias), this); + } + + @Override + public UserProjectRoles as(Name alias) { + return new UserProjectRoles(alias, this); + } + + @Override + public UserProjectRoles as(Table alias) { + return new UserProjectRoles(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public UserProjectRoles rename(String name) { + return new UserProjectRoles(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public UserProjectRoles rename(Name name) { + return new UserProjectRoles(name, null); + } + + /** + * Rename this table + */ + @Override + public UserProjectRoles rename(Table name) { + return new UserProjectRoles(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserProjectRoles where(Condition condition) { + return new UserProjectRoles(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserProjectRoles where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserProjectRoles where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserProjectRoles where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserProjectRoles where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserProjectRoles where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserProjectRoles where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserProjectRoles where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserProjectRoles whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserProjectRoles whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/UsersPermissions.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/UsersPermissions.java index 723572239d..6e838b30e1 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/UsersPermissions.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/UsersPermissions.java @@ -44,14 +44,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class UsersPermissions extends TableImpl { - private static final long serialVersionUID = 1724545700; + private static final long serialVersionUID = 156563812; /** * The reference instance of USERS_PERMISSIONS @@ -116,13 +116,13 @@ public UsersPermissions(Table path, ForeignKey { - private static final long serialVersionUID = 1724545700; + private static final long serialVersionUID = 156563812; public UsersPermissionsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/UsersTeams.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/UsersTeams.java index 9841c2aec4..5607d7efe6 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/UsersTeams.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/UsersTeams.java @@ -44,14 +44,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class UsersTeams extends TableImpl { - private static final long serialVersionUID = 666645532; + private static final long serialVersionUID = -118009124; /** * The reference instance of USERS_TEAMS @@ -116,13 +116,13 @@ public UsersTeams(Table path, ForeignKey { - private static final long serialVersionUID = 666645532; + private static final long serialVersionUID = -118009124; public UsersTeamsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Vex.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Vex.java index 5052c1de8e..dfc5f98678 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Vex.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Vex.java @@ -48,14 +48,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Vex extends TableImpl { - private static final long serialVersionUID = 1983143598; + private static final long serialVersionUID = 580983278; /** * The reference instance of VEX @@ -150,13 +150,13 @@ public Vex(Table path, ForeignKey childPath, value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) public static class VexPath extends Vex implements Path { - private static final long serialVersionUID = 1983143598; + private static final long serialVersionUID = 580983278; public VexPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ViolationAnalysis.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ViolationAnalysis.java index 67eb58b714..1241dc1036 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ViolationAnalysis.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ViolationAnalysis.java @@ -49,14 +49,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ViolationAnalysis extends TableImpl { - private static final long serialVersionUID = -423138649; + private static final long serialVersionUID = -1691829725; /** * The reference instance of VIOLATIONANALYSIS @@ -141,13 +141,13 @@ public ViolationAnalysis(Table path, ForeignKey { - private static final long serialVersionUID = -423138649; + private static final long serialVersionUID = -1691829725; public ViolationAnalysisPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ViolationAnalysisComment.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ViolationAnalysisComment.java index 39e8632b8a..e30181aa8d 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ViolationAnalysisComment.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/ViolationAnalysisComment.java @@ -47,14 +47,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ViolationAnalysisComment extends TableImpl { - private static final long serialVersionUID = 312755086; + private static final long serialVersionUID = 1354024210; /** * The reference instance of VIOLATIONANALYSISCOMMENT @@ -134,13 +134,13 @@ public ViolationAnalysisComment(Table path, ForeignKey { - private static final long serialVersionUID = 312755086; + private static final long serialVersionUID = 1354024210; public ViolationAnalysisCommentPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilitiesTags.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilitiesTags.java index 4ef908ecb2..895c32489f 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilitiesTags.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilitiesTags.java @@ -44,14 +44,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerabilitiesTags extends TableImpl { - private static final long serialVersionUID = -28182264; + private static final long serialVersionUID = -1012932092; /** * The reference instance of VULNERABILITIES_TAGS @@ -116,13 +116,13 @@ public VulnerabilitiesTags(Table path, ForeignKey { - private static final long serialVersionUID = -28182264; + private static final long serialVersionUID = -1012932092; public VulnerabilitiesTagsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Vulnerability.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Vulnerability.java index 5b351d5b03..5a0dae0a74 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Vulnerability.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/Vulnerability.java @@ -57,14 +57,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Vulnerability extends TableImpl { - private static final long serialVersionUID = 917592549; + private static final long serialVersionUID = -528883931; /** * The reference instance of VULNERABILITY @@ -274,13 +274,13 @@ public Vulnerability(Table path, ForeignKey { - private static final long serialVersionUID = 917592549; + private static final long serialVersionUID = -528883931; public VulnerabilityPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityAlias.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityAlias.java index 7c2c54f1af..2de0065eaa 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityAlias.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityAlias.java @@ -42,14 +42,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerabilityAlias extends TableImpl { - private static final long serialVersionUID = -1336625644; + private static final long serialVersionUID = 1062762774; /** * The reference instance of VULNERABILITYALIAS diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityMetrics.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityMetrics.java index f801f19636..85a3b5b1ab 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityMetrics.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityMetrics.java @@ -38,14 +38,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerabilityMetrics extends TableImpl { - private static final long serialVersionUID = 2050311223; + private static final long serialVersionUID = -1051268935; /** * The reference instance of VULNERABILITYMETRICS diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityPolicy.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityPolicy.java index 7437c2e904..4594919db9 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityPolicy.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityPolicy.java @@ -48,14 +48,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerabilityPolicy extends TableImpl { - private static final long serialVersionUID = -1825956886; + private static final long serialVersionUID = 322144298; /** * The reference instance of VULNERABILITY_POLICY @@ -170,13 +170,13 @@ public VulnerabilityPolicy(Table path, ForeignKey { - private static final long serialVersionUID = -1825956886; + private static final long serialVersionUID = 322144298; public VulnerabilityPolicyPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityPolicyBundle.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityPolicyBundle.java index 76682410b3..4cf6730d8b 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityPolicyBundle.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityPolicyBundle.java @@ -38,14 +38,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerabilityPolicyBundle extends TableImpl { - private static final long serialVersionUID = 901187422; + private static final long serialVersionUID = 2085813276; /** * The reference instance of VULNERABILITY_POLICY_BUNDLE diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityScan.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityScan.java index 820c1e2538..e0758d651e 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityScan.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerabilityScan.java @@ -41,14 +41,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerabilityScan extends TableImpl { - private static final long serialVersionUID = 1049459592; + private static final long serialVersionUID = 823724870; /** * The reference instance of VULNERABILITYSCAN diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerableSoftware.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerableSoftware.java index 61af3c45fe..ef226ac50c 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerableSoftware.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerableSoftware.java @@ -48,14 +48,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerableSoftware extends TableImpl { - private static final long serialVersionUID = 1920414480; + private static final long serialVersionUID = 478732812; /** * The reference instance of VULNERABLESOFTWARE @@ -245,13 +245,13 @@ public VulnerableSoftware(Table path, ForeignKey { - private static final long serialVersionUID = 1920414480; + private static final long serialVersionUID = 478732812; public VulnerableSoftwarePath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerableSoftwareVulnerabilities.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerableSoftwareVulnerabilities.java index f1cfc22a25..527da9d6a8 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerableSoftwareVulnerabilities.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/VulnerableSoftwareVulnerabilities.java @@ -45,14 +45,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerableSoftwareVulnerabilities extends TableImpl { - private static final long serialVersionUID = -1138822448; + private static final long serialVersionUID = -36111600; /** * The reference instance of VULNERABLESOFTWARE_VULNERABILITIES @@ -121,13 +121,13 @@ public VulnerableSoftwareVulnerabilities(Table path, Forei value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) public static class VulnerableSoftwareVulnerabilitiesPath extends VulnerableSoftwareVulnerabilities implements Path { - private static final long serialVersionUID = -1138822448; + private static final long serialVersionUID = -36111600; public VulnerableSoftwareVulnerabilitiesPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/WorkflowState.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/WorkflowState.java index 370ea2b4a1..2625ee20ef 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/WorkflowState.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/WorkflowState.java @@ -50,14 +50,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class WorkflowState extends TableImpl { - private static final long serialVersionUID = -89590387; + private static final long serialVersionUID = 363010637; /** * The reference instance of WORKFLOW_STATE @@ -152,13 +152,13 @@ public WorkflowState(Table path, ForeignKey { - private static final long serialVersionUID = -89590387; + private static final long serialVersionUID = 363010637; public WorkflowStatePath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { super(path, childPath, parentPath); } diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/AffectedVersionAttributionRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/AffectedVersionAttributionRecord.java index b8b4a6e354..2d06679d99 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/AffectedVersionAttributionRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/AffectedVersionAttributionRecord.java @@ -21,14 +21,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class AffectedVersionAttributionRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 1126582934; + private static final long serialVersionUID = 533796436; /** * Setter for AFFECTEDVERSIONATTRIBUTION.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/AnalysisCommentRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/AnalysisCommentRecord.java index 7a822d980b..e5cbe92e23 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/AnalysisCommentRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/AnalysisCommentRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class AnalysisCommentRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -197720386; + private static final long serialVersionUID = 1564864124; /** * Setter for ANALYSISCOMMENT.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/AnalysisRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/AnalysisRecord.java index 9590189381..b2038d827d 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/AnalysisRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/AnalysisRecord.java @@ -21,14 +21,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class AnalysisRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 374390912; + private static final long serialVersionUID = 1771339838; /** * Setter for ANALYSIS.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ApiKeyRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ApiKeyRecord.java index 0b228ed09c..a6efa5d822 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ApiKeyRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ApiKeyRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ApiKeyRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1351723053; + private static final long serialVersionUID = 780881553; /** * Setter for APIKEY.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ApiKeysTeamsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ApiKeysTeamsRecord.java index 26a1b25d02..113a5957e1 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ApiKeysTeamsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ApiKeysTeamsRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ApiKeysTeamsRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 1341969992; + private static final long serialVersionUID = -1229569274; /** * Setter for APIKEYS_TEAMS.TEAM_ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/BomRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/BomRecord.java index 8b9b9d68bd..21d028fbc7 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/BomRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/BomRecord.java @@ -21,14 +21,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class BomRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 2085004136; + private static final long serialVersionUID = -106213910; /** * Setter for BOM.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ComponentOccurrenceRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ComponentOccurrenceRecord.java index 6a3e829afe..7f7d80cbd9 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ComponentOccurrenceRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ComponentOccurrenceRecord.java @@ -21,14 +21,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ComponentOccurrenceRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1231563309; + private static final long serialVersionUID = 69875541; /** * Setter for COMPONENT_OCCURRENCE.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ComponentPropertyRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ComponentPropertyRecord.java index feb67be319..40aa410c2d 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ComponentPropertyRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ComponentPropertyRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ComponentPropertyRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1838061987; + private static final long serialVersionUID = 1332589723; /** * Setter for COMPONENT_PROPERTY.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ComponentRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ComponentRecord.java index f4c2cceee0..d56778a000 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ComponentRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ComponentRecord.java @@ -21,14 +21,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ComponentRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 646377599; + private static final long serialVersionUID = 20605313; /** * Setter for COMPONENT.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ComponentsVulnerabilitiesRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ComponentsVulnerabilitiesRecord.java index c455b6709c..b92b1c1831 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ComponentsVulnerabilitiesRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ComponentsVulnerabilitiesRecord.java @@ -17,14 +17,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ComponentsVulnerabilitiesRecord extends TableRecordImpl { - private static final long serialVersionUID = 1820783384; + private static final long serialVersionUID = 1744858838; /** * Setter for COMPONENTS_VULNERABILITIES.COMPONENT_ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ConfigPropertyRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ConfigPropertyRecord.java index 568a5ff348..c0d92ebd16 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ConfigPropertyRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ConfigPropertyRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ConfigPropertyRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -64011058; + private static final long serialVersionUID = 1295311696; /** * Setter for CONFIGPROPERTY.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/DependencyMetricsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/DependencyMetricsRecord.java index 7a55a926e3..0c30e5acde 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/DependencyMetricsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/DependencyMetricsRecord.java @@ -9,7 +9,7 @@ import javax.annotation.processing.Generated; import org.dependencytrack.persistence.jooq.generated.tables.DependencyMetrics; -import org.jooq.Record3; +import org.jooq.Record2; import org.jooq.impl.UpdatableRecordImpl; @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class DependencyMetricsRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -80477003; + private static final long serialVersionUID = 64997608; /** * Setter for DEPENDENCYMETRICS.COMPONENT_ID. @@ -500,8 +500,8 @@ public Integer getVulnerabilities() { // ------------------------------------------------------------------------- @Override - public Record3 key() { - return (Record3) super.key(); + public Record2 key() { + return (Record2) super.key(); } // ------------------------------------------------------------------------- diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/EpssRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/EpssRecord.java index dff2fdd06e..61a61f19a1 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/EpssRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/EpssRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class EpssRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 1886755905; + private static final long serialVersionUID = 1875280511; /** * Setter for EPSS.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/FindingAttributionRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/FindingAttributionRecord.java index 9e6b707bd4..68d1234085 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/FindingAttributionRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/FindingAttributionRecord.java @@ -21,14 +21,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class FindingAttributionRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 2086301322; + private static final long serialVersionUID = -986843320; /** * Setter for FINDINGATTRIBUTION.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/IntegrityAnalysisRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/IntegrityAnalysisRecord.java index 18841bb392..7ebca876b1 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/IntegrityAnalysisRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/IntegrityAnalysisRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class IntegrityAnalysisRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1337559277; + private static final long serialVersionUID = 814859541; /** * Setter for INTEGRITY_ANALYSIS.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/IntegrityMetaComponentRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/IntegrityMetaComponentRecord.java index 938b5f76d5..116c9d45e9 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/IntegrityMetaComponentRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/IntegrityMetaComponentRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class IntegrityMetaComponentRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 527104531; + private static final long serialVersionUID = -521695023; /** * Setter for INTEGRITY_META_COMPONENT.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/LicenseGroupLicenseRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/LicenseGroupLicenseRecord.java index bb0550f09e..51b737af88 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/LicenseGroupLicenseRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/LicenseGroupLicenseRecord.java @@ -17,14 +17,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class LicenseGroupLicenseRecord extends TableRecordImpl { - private static final long serialVersionUID = -1265959473; + private static final long serialVersionUID = 366575441; /** * Setter for LICENSEGROUP_LICENSE.LICENSEGROUP_ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/LicenseGroupRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/LicenseGroupRecord.java index fdb63bf30f..0a4c696800 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/LicenseGroupRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/LicenseGroupRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class LicenseGroupRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 1789324508; + private static final long serialVersionUID = -1523022310; /** * Setter for LICENSEGROUP.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/LicenseRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/LicenseRecord.java index 294fe56469..a2fde611d0 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/LicenseRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/LicenseRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class LicenseRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1355749591; + private static final long serialVersionUID = 1138644071; /** * Setter for LICENSE.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/MappedLdapGroupRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/MappedLdapGroupRecord.java index 4a6cc5d677..64a489c52b 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/MappedLdapGroupRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/MappedLdapGroupRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class MappedLdapGroupRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 749583562; + private static final long serialVersionUID = 1360638856; /** * Setter for MAPPEDLDAPGROUP.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/MappedOidcGroupRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/MappedOidcGroupRecord.java index a2baf9b6da..d4858da750 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/MappedOidcGroupRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/MappedOidcGroupRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class MappedOidcGroupRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1346971408; + private static final long serialVersionUID = 876479218; /** * Setter for MAPPEDOIDCGROUP.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationPublisherRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationPublisherRecord.java index 36b0322cfa..dc0722b62b 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationPublisherRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationPublisherRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class NotificationPublisherRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 421461737; + private static final long serialVersionUID = -701592341; /** * Setter for NOTIFICATIONPUBLISHER.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationRuleProjectsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationRuleProjectsRecord.java index ed9162de8d..28000f38b7 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationRuleProjectsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationRuleProjectsRecord.java @@ -17,14 +17,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class NotificationRuleProjectsRecord extends TableRecordImpl { - private static final long serialVersionUID = -777335568; + private static final long serialVersionUID = -139885710; /** * Setter for NOTIFICATIONRULE_PROJECTS.NOTIFICATIONRULE_ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationRuleRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationRuleRecord.java index cf29438383..a474e1083a 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationRuleRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationRuleRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class NotificationRuleRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1476520370; + private static final long serialVersionUID = -1505180020; /** * Setter for NOTIFICATIONRULE.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationRuleTagsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationRuleTagsRecord.java index 25ed443f5c..82da06991c 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationRuleTagsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationRuleTagsRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class NotificationRuleTagsRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1533227447; + private static final long serialVersionUID = 1496097227; /** * Setter for NOTIFICATIONRULE_TAGS.NOTIFICATIONRULE_ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationRuleTeamsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationRuleTeamsRecord.java index 9e69cb31ec..e6d2d70d7c 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationRuleTeamsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/NotificationRuleTeamsRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class NotificationRuleTeamsRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 932661529; + private static final long serialVersionUID = 330605399; /** * Setter for NOTIFICATIONRULE_TEAMS.NOTIFICATIONRULE_ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/OidcGroupRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/OidcGroupRecord.java index 41fbd7e904..a79262a52e 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/OidcGroupRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/OidcGroupRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class OidcGroupRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 669539251; + private static final long serialVersionUID = 863674293; /** * Setter for OIDCGROUP.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PermissionRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PermissionRecord.java index 4295af365b..b88512005f 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PermissionRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PermissionRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class PermissionRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -421305018; + private static final long serialVersionUID = -701052856; /** * Setter for PERMISSION.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyConditionRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyConditionRecord.java index 3d66ca8fe0..ed09f5ae98 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyConditionRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyConditionRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class PolicyConditionRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1810267312; + private static final long serialVersionUID = 1226736654; /** * Setter for POLICYCONDITION.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyProjectsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyProjectsRecord.java index c71df47a21..19d275ee45 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyProjectsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyProjectsRecord.java @@ -17,14 +17,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class PolicyProjectsRecord extends TableRecordImpl { - private static final long serialVersionUID = 1024547152; + private static final long serialVersionUID = 1554469202; /** * Setter for POLICY_PROJECTS.POLICY_ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyRecord.java index af30c99572..13d45aea40 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class PolicyRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 54002621; + private static final long serialVersionUID = 1730537791; /** * Setter for POLICY.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyTagsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyTagsRecord.java index fbd355ac64..8e4ed305f3 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyTagsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyTagsRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class PolicyTagsRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 1568348211; + private static final long serialVersionUID = 1290267957; /** * Setter for POLICY_TAGS.POLICY_ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyViolationRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyViolationRecord.java index c43e65dec2..eb805c5be9 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyViolationRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PolicyViolationRecord.java @@ -21,14 +21,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class PolicyViolationRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 731228325; + private static final long serialVersionUID = -698016285; /** * Setter for POLICYVIOLATION.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PortfolioMetricsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PortfolioMetricsRecord.java index 9577078b7b..92292da008 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PortfolioMetricsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/PortfolioMetricsRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class PortfolioMetricsRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1414503296; + private static final long serialVersionUID = 133730690; /** * Setter for PORTFOLIOMETRICS.COMPONENTS. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectAccessTeamsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectAccessTeamsRecord.java index 53fcfc3dc8..04d7bbed6f 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectAccessTeamsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectAccessTeamsRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ProjectAccessTeamsRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -519805377; + private static final long serialVersionUID = -1553693119; /** * Setter for PROJECT_ACCESS_TEAMS.PROJECT_ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectHierarchyRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectHierarchyRecord.java index fc138a4ae4..281adc8fd9 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectHierarchyRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectHierarchyRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ProjectHierarchyRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -71539204; + private static final long serialVersionUID = -744060998; /** * Setter for PROJECT_HIERARCHY.PARENT_PROJECT_ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectMetadataRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectMetadataRecord.java index 77a0306f27..83cc2efcf5 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectMetadataRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectMetadataRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ProjectMetadataRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1834903502; + private static final long serialVersionUID = 909539440; /** * Setter for PROJECT_METADATA.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectMetricsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectMetricsRecord.java index a294e097e4..1e51451e76 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectMetricsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectMetricsRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ProjectMetricsRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 404466563; + private static final long serialVersionUID = 580774465; /** * Setter for PROJECTMETRICS.COMPONENTS. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectPropertyRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectPropertyRecord.java index 69d8d332a4..fc2f0ac9dc 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectPropertyRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectPropertyRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ProjectPropertyRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -433467356; + private static final long serialVersionUID = 724624550; /** * Setter for PROJECT_PROPERTY.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectRecord.java index 07af161ca7..bd38a82264 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectRecord.java @@ -22,14 +22,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ProjectRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 231035541; + private static final long serialVersionUID = -1244388909; /** * Setter for PROJECT.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectsTagsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectsTagsRecord.java index 11541e63b4..f2ee92422a 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectsTagsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ProjectsTagsRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ProjectsTagsRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 811696502; + private static final long serialVersionUID = -1759842764; /** * Setter for PROJECTS_TAGS.TAG_ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/RepositoryMetaComponentRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/RepositoryMetaComponentRecord.java index ab94228cbd..ae311437f4 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/RepositoryMetaComponentRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/RepositoryMetaComponentRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class RepositoryMetaComponentRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -2012991409; + private static final long serialVersionUID = -1220342319; /** * Setter for REPOSITORY_META_COMPONENT.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/RepositoryRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/RepositoryRecord.java index db3b0d3cc2..21179d2234 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/RepositoryRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/RepositoryRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class RepositoryRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1560456737; + private static final long serialVersionUID = 1948209249; /** * Setter for REPOSITORY.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/RoleRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/RoleRecord.java new file mode 100644 index 0000000000..97e5c16b66 --- /dev/null +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/RoleRecord.java @@ -0,0 +1,108 @@ +/* + * This file is generated by jOOQ. + */ +package org.dependencytrack.persistence.jooq.generated.tables.records; + + +import java.util.UUID; + +import javax.annotation.processing.Generated; + +import org.dependencytrack.persistence.jooq.generated.tables.Role; +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "https://www.jooq.org", + "jOOQ version:3.20.4", + "schema version:v5.6.0-28" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class RoleRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = -401848680; + + /** + * Setter for ROLE.ID. + */ + public RoleRecord setId(Long value) { + set(0, value); + return this; + } + + /** + * Getter for ROLE.ID. + */ + public Long getId() { + return (Long) get(0); + } + + /** + * Setter for ROLE.NAME. + */ + public RoleRecord setName(String value) { + set(1, value); + return this; + } + + /** + * Getter for ROLE.NAME. + */ + public String getName() { + return (String) get(1); + } + + /** + * Setter for ROLE.UUID. + */ + public RoleRecord setUuid(UUID value) { + set(2, value); + return this; + } + + /** + * Getter for ROLE.UUID. + */ + public UUID getUuid() { + return (UUID) get(2); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached RoleRecord + */ + public RoleRecord() { + super(Role.ROLE); + } + + /** + * Create a detached, initialised RoleRecord + */ + public RoleRecord(Long id, String name, UUID uuid) { + super(Role.ROLE); + + setId(id); + setName(name); + setUuid(uuid); + resetTouchedOnNotNull(); + } +} diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/RolesPermissionsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/RolesPermissionsRecord.java new file mode 100644 index 0000000000..aee9bf557b --- /dev/null +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/RolesPermissionsRecord.java @@ -0,0 +1,90 @@ +/* + * This file is generated by jOOQ. + */ +package org.dependencytrack.persistence.jooq.generated.tables.records; + + +import javax.annotation.processing.Generated; + +import org.dependencytrack.persistence.jooq.generated.tables.RolesPermissions; +import org.jooq.Record2; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "https://www.jooq.org", + "jOOQ version:3.20.4", + "schema version:v5.6.0-28" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class RolesPermissionsRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 240634674; + + /** + * Setter for ROLES_PERMISSIONS.ROLE_ID. + */ + public RolesPermissionsRecord setRoleId(Long value) { + set(0, value); + return this; + } + + /** + * Getter for ROLES_PERMISSIONS.ROLE_ID. + */ + public Long getRoleId() { + return (Long) get(0); + } + + /** + * Setter for ROLES_PERMISSIONS.PERMISSION_ID. + */ + public RolesPermissionsRecord setPermissionId(Long value) { + set(1, value); + return this; + } + + /** + * Getter for ROLES_PERMISSIONS.PERMISSION_ID. + */ + public Long getPermissionId() { + return (Long) get(1); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record2 key() { + return (Record2) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached RolesPermissionsRecord + */ + public RolesPermissionsRecord() { + super(RolesPermissions.ROLES_PERMISSIONS); + } + + /** + * Create a detached, initialised RolesPermissionsRecord + */ + public RolesPermissionsRecord(Long roleId, Long permissionId) { + super(RolesPermissions.ROLES_PERMISSIONS); + + setRoleId(roleId); + setPermissionId(permissionId); + resetTouchedOnNotNull(); + } +} diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ServiceComponentRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ServiceComponentRecord.java index 166f000630..a74c084b86 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ServiceComponentRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ServiceComponentRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ServiceComponentRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1569362453; + private static final long serialVersionUID = 943332205; /** * Setter for SERVICECOMPONENT.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ServiceComponentsVulnerabilitiesRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ServiceComponentsVulnerabilitiesRecord.java index 7fdea3f93a..408c84d821 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ServiceComponentsVulnerabilitiesRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ServiceComponentsVulnerabilitiesRecord.java @@ -17,14 +17,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ServiceComponentsVulnerabilitiesRecord extends TableRecordImpl { - private static final long serialVersionUID = -1485690636; + private static final long serialVersionUID = -1421916682; /** * Setter for diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/TagRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/TagRecord.java index 6a7b91b02e..74589d4c02 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/TagRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/TagRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class TagRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -340989787; + private static final long serialVersionUID = 1662148963; /** * Setter for TAG.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/TeamRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/TeamRecord.java index c83f500137..6813dcc152 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/TeamRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/TeamRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class TeamRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -838322539; + private static final long serialVersionUID = -586163501; /** * Setter for TEAM.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/TeamsPermissionsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/TeamsPermissionsRecord.java index 7425f770c9..685f70a059 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/TeamsPermissionsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/TeamsPermissionsRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class TeamsPermissionsRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 1287233552; + private static final long serialVersionUID = 1277670350; /** * Setter for TEAMS_PERMISSIONS.TEAM_ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UserProjectEffectivePermissionsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UserProjectEffectivePermissionsRecord.java index 08554da176..d278e9c72b 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UserProjectEffectivePermissionsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UserProjectEffectivePermissionsRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class UserProjectEffectivePermissionsRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 367791318; + private static final long serialVersionUID = 2058346840; /** * Setter for USER_PROJECT_EFFECTIVE_PERMISSIONS.PROJECT_ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UserProjectRolesRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UserProjectRolesRecord.java new file mode 100644 index 0000000000..41874b37be --- /dev/null +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UserProjectRolesRecord.java @@ -0,0 +1,106 @@ +/* + * This file is generated by jOOQ. + */ +package org.dependencytrack.persistence.jooq.generated.tables.records; + + +import javax.annotation.processing.Generated; + +import org.dependencytrack.persistence.jooq.generated.tables.UserProjectRoles; +import org.jooq.Record3; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "https://www.jooq.org", + "jOOQ version:3.20.4", + "schema version:v5.6.0-28" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class UserProjectRolesRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 306934379; + + /** + * Setter for USER_PROJECT_ROLES.USER_ID. + */ + public UserProjectRolesRecord setUserId(Long value) { + set(0, value); + return this; + } + + /** + * Getter for USER_PROJECT_ROLES.USER_ID. + */ + public Long getUserId() { + return (Long) get(0); + } + + /** + * Setter for USER_PROJECT_ROLES.PROJECT_ID. + */ + public UserProjectRolesRecord setProjectId(Long value) { + set(1, value); + return this; + } + + /** + * Getter for USER_PROJECT_ROLES.PROJECT_ID. + */ + public Long getProjectId() { + return (Long) get(1); + } + + /** + * Setter for USER_PROJECT_ROLES.ROLE_ID. + */ + public UserProjectRolesRecord setRoleId(Long value) { + set(2, value); + return this; + } + + /** + * Getter for USER_PROJECT_ROLES.ROLE_ID. + */ + public Long getRoleId() { + return (Long) get(2); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record3 key() { + return (Record3) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached UserProjectRolesRecord + */ + public UserProjectRolesRecord() { + super(UserProjectRoles.USER_PROJECT_ROLES); + } + + /** + * Create a detached, initialised UserProjectRolesRecord + */ + public UserProjectRolesRecord(Long userId, Long projectId, Long roleId) { + super(UserProjectRoles.USER_PROJECT_ROLES); + + setUserId(userId); + setProjectId(projectId); + setRoleId(roleId); + resetTouchedOnNotNull(); + } +} diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UserRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UserRecord.java index 07f7a718b5..0b830d85ac 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UserRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UserRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class UserRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 2060697873; + private static final long serialVersionUID = -1740382829; /** * Setter for USER.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UsersPermissionsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UsersPermissionsRecord.java index ab8d54e08e..1bbb055f79 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UsersPermissionsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UsersPermissionsRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class UsersPermissionsRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1186764856; + private static final long serialVersionUID = -1196328058; /** * Setter for USERS_PERMISSIONS.USER_ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UsersTeamsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UsersTeamsRecord.java index 1dd4d223c0..4ec4808ea0 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UsersTeamsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/UsersTeamsRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class UsersTeamsRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -931364464; + private static final long serialVersionUID = -670012722; /** * Setter for USERS_TEAMS.USER_ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VexRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VexRecord.java index dcd843a465..d39bf1ed33 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VexRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VexRecord.java @@ -21,14 +21,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VexRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 1950410703; + private static final long serialVersionUID = -636790319; /** * Setter for VEX.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ViolationAnalysisCommentRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ViolationAnalysisCommentRecord.java index ea472bc731..8e65c8728a 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ViolationAnalysisCommentRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ViolationAnalysisCommentRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ViolationAnalysisCommentRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1514790873; + private static final long serialVersionUID = -1995255835; /** * Setter for VIOLATIONANALYSISCOMMENT.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ViolationAnalysisRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ViolationAnalysisRecord.java index 6fe7fe6651..262f98ed7e 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ViolationAnalysisRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/ViolationAnalysisRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class ViolationAnalysisRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -706529884; + private static final long serialVersionUID = 195262434; /** * Setter for VIOLATIONANALYSIS.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilitiesTagsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilitiesTagsRecord.java index ec4ca69345..f8d9897300 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilitiesTagsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilitiesTagsRecord.java @@ -18,14 +18,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerabilitiesTagsRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1310036997; + private static final long serialVersionUID = -1339201735; /** * Setter for VULNERABILITIES_TAGS.TAG_ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityAliasRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityAliasRecord.java index f361662de5..37b0a3569a 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityAliasRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityAliasRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerabilityAliasRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -104244075; + private static final long serialVersionUID = 1404593559; /** * Setter for VULNERABILITYALIAS.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityMetricsRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityMetricsRecord.java index d4b5a1f8ba..4d7b353a71 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityMetricsRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityMetricsRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerabilityMetricsRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 1501402685; + private static final long serialVersionUID = -829325573; /** * Setter for VULNERABILITYMETRICS.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityPolicyBundleRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityPolicyBundleRecord.java index e6a812d7ff..c6b6ebc7cc 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityPolicyBundleRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityPolicyBundleRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerabilityPolicyBundleRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1296169560; + private static final long serialVersionUID = -1454362966; /** * Setter for VULNERABILITY_POLICY_BUNDLE.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityPolicyRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityPolicyRecord.java index e17eb333b1..652be14f7c 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityPolicyRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityPolicyRecord.java @@ -21,14 +21,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerabilityPolicyRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 1607234685; + private static final long serialVersionUID = 634551739; /** * Setter for VULNERABILITY_POLICY.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityRecord.java index 3dd02e8dfd..13ae5cfe59 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityRecord.java @@ -23,14 +23,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerabilityRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -232753684; + private static final long serialVersionUID = -582473302; /** * Setter for VULNERABILITY.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityScanRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityScanRecord.java index de93c263ea..d4551db8a6 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityScanRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerabilityScanRecord.java @@ -21,14 +21,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerabilityScanRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -1717386480; + private static final long serialVersionUID = 2011955662; /** * Setter for VULNERABILITYSCAN.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerableSoftwareRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerableSoftwareRecord.java index ed33346553..ee27597f50 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerableSoftwareRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerableSoftwareRecord.java @@ -20,14 +20,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerableSoftwareRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = 925913319; + private static final long serialVersionUID = 351395365; /** * Setter for VULNERABLESOFTWARE.ID. diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerableSoftwareVulnerabilitiesRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerableSoftwareVulnerabilitiesRecord.java index 7e1e9d1634..00776b58e4 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerableSoftwareVulnerabilitiesRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/VulnerableSoftwareVulnerabilitiesRecord.java @@ -17,14 +17,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class VulnerableSoftwareVulnerabilitiesRecord extends TableRecordImpl { - private static final long serialVersionUID = -1050450335; + private static final long serialVersionUID = 1760646115; /** * Setter for diff --git a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/WorkflowStateRecord.java b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/WorkflowStateRecord.java index 14e167da5a..2028c5c42e 100644 --- a/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/WorkflowStateRecord.java +++ b/persistence-jooq/src/main/java/org/dependencytrack/persistence/jooq/generated/tables/records/WorkflowStateRecord.java @@ -21,14 +21,14 @@ value = { "https://www.jooq.org", "jOOQ version:3.20.4", - "schema version:v5.6.0-26" + "schema version:v5.6.0-28" }, comments = "This class is generated by jOOQ" ) @SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class WorkflowStateRecord extends UpdatableRecordImpl { - private static final long serialVersionUID = -785742106; + private static final long serialVersionUID = 99722404; /** * Setter for WORKFLOW_STATE.ID. diff --git a/persistence-migration/src/main/resources/migration/changelog-v5.6.0.xml b/persistence-migration/src/main/resources/migration/changelog-v5.6.0.xml index 8ff79de562..f610455b47 100644 --- a/persistence-migration/src/main/resources/migration/changelog-v5.6.0.xml +++ b/persistence-migration/src/main/resources/migration/changelog-v5.6.0.xml @@ -2353,4 +2353,262 @@ constraintName="DEPENDENCYMETRICS_PK" columnNames="COMPONENT_ID, LAST_OCCURRENCE"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- Helper function to recalculate all user permissions for a project. + -- Called by trigger functions to update the values in the USER_PROJECT_EFFECTIVE_PERMISSIONS table. + CREATE OR REPLACE FUNCTION recalc_user_project_effective_permissions(project_ids BIGINT[]) + RETURNS void AS $$ + BEGIN + -- Remove any existing effective permissions for this project. + DELETE FROM "USER_PROJECT_EFFECTIVE_PERMISSIONS" + WHERE "PROJECT_ID" = ANY(project_ids); + + -- Rebuild effective permissions for users + INSERT INTO "USER_PROJECT_EFFECTIVE_PERMISSIONS" + ("USER_ID", "PROJECT_ID", "PERMISSION_ID", "PERMISSION_NAME") + SELECT ut."USER_ID", pat."PROJECT_ID", tp."PERMISSION_ID", p."NAME" + FROM "PROJECT_ACCESS_TEAMS" pat + INNER JOIN "TEAMS_PERMISSIONS" tp + ON tp."TEAM_ID" = pat."TEAM_ID" + INNER JOIN "PERMISSION" p + ON p."ID" = tp."PERMISSION_ID" + INNER JOIN "USERS_TEAMS" ut + ON ut."TEAM_ID" = pat."TEAM_ID" + WHERE pat."PROJECT_ID" = ANY(project_ids) + UNION + SELECT upr."USER_ID", upr."PROJECT_ID", rp."PERMISSION_ID", p."NAME" + FROM "USER_PROJECT_ROLES" upr + INNER JOIN "ROLES_PERMISSIONS" rp + ON rp."ROLE_ID" = upr."ROLE_ID" + INNER JOIN "PERMISSION" p + ON p."ID" = rp."PERMISSION_ID" + WHERE upr."PROJECT_ID" = ANY(project_ids); + END; + $$ LANGUAGE plpgsql; + + + + CREATE OR REPLACE FUNCTION role_effective_permissions_mx_on_delete() + RETURNS TRIGGER AS $$ + DECLARE + project_ids BIGINT[]; + role_ids BIGINT[]; + BEGIN + SELECT ARRAY_AGG(DISTINCT "ROLE_ID") + INTO role_ids + FROM old_table; + + IF TG_TABLE_NAME = 'ROLES_PERMISSIONS' THEN + SELECT ARRAY_AGG(sub."PROJECT_ID") + INTO project_ids + FROM ( + SELECT upr."PROJECT_ID" + FROM "USER_PROJECT_ROLES" upr + INNER JOIN old_table + ON old_table."ROLE_ID" = upr."ROLE_ID" + ) sub; + ELSE + SELECT ARRAY_AGG(DISTINCT "PROJECT_ID") + INTO project_ids + FROM "USER_PROJECT_ROLES" + WHERE "ROLE_ID" = ANY(role_ids); + END IF; + + PERFORM recalc_user_project_effective_permissions(project_ids); + RETURN NULL; + END; + $$ LANGUAGE plpgsql; + + + + CREATE OR REPLACE FUNCTION role_effective_permissions_mx_on_insert() + RETURNS TRIGGER AS $$ + DECLARE + project_ids BIGINT[]; + role_ids BIGINT[]; + BEGIN + SELECT ARRAY_AGG(DISTINCT "ROLE_ID") + INTO role_ids + FROM new_table; + + IF TG_TABLE_NAME = 'ROLES_PERMISSIONS' THEN + SELECT ARRAY_AGG(sub."PROJECT_ID") + INTO project_ids + FROM ( + SELECT upr."PROJECT_ID" + FROM "USER_PROJECT_ROLES" upr + INNER JOIN new_table + ON new_table."ROLE_ID" = upr."ROLE_ID" + ) sub; + ELSE + SELECT ARRAY_AGG(DISTINCT "PROJECT_ID") + INTO project_ids + FROM "USER_PROJECT_ROLES" + WHERE "ROLE_ID" = ANY(role_ids); + END IF; + + PERFORM recalc_user_project_effective_permissions(project_ids); + RETURN NULL; + END; + $$ LANGUAGE plpgsql; + + + + CREATE OR REPLACE FUNCTION role_effective_permissions_mx_on_update() + RETURNS TRIGGER AS $$ + DECLARE + project_ids BIGINT[]; + role_ids BIGINT[]; + BEGIN + SELECT ARRAY_AGG("ROLE_ID") + INTO role_ids + FROM ( + SELECT "ROLE_ID" FROM old_table + UNION + SELECT "ROLE_ID" FROM new_table + ) roles; + + IF TG_TABLE_NAME = 'ROLES_PERMISSIONS' THEN + SELECT ARRAY_AGG(sub."PROJECT_ID") + INTO project_ids + FROM ( + SELECT upr."PROJECT_ID" + FROM "USER_PROJECT_ROLES" upr + INNER JOIN new_table + ON new_table."ROLE_ID" = upr."ROLE_ID" + FULL OUTER JOIN old_table + ON new_table."ROLE_ID" = old_table."ROLE_ID" + ) sub; + ELSE + SELECT ARRAY_AGG(DISTINCT "PROJECT_ID") + INTO project_ids + FROM "USER_PROJECT_ROLES" + WHERE "ROLE_ID" = ANY(role_ids); + END IF; + + PERFORM recalc_user_project_effective_permissions(project_ids); + RETURN NULL; + END; + $$ LANGUAGE plpgsql; + + + + -- INSERT trigger for USER_PROJECT_ROLES + CREATE TRIGGER trigger_effective_permissions_mx_on_user_project_roles_insert + AFTER INSERT ON "USER_PROJECT_ROLES" + REFERENCING NEW TABLE AS new_table + FOR EACH STATEMENT + EXECUTE FUNCTION role_effective_permissions_mx_on_insert(); + + -- DELETE trigger for USER_PROJECT_ROLES + CREATE TRIGGER trigger_effective_permissions_mx_on_user_project_roles_delete + AFTER DELETE ON "USER_PROJECT_ROLES" + REFERENCING OLD TABLE AS old_table + FOR EACH STATEMENT + EXECUTE FUNCTION role_effective_permissions_mx_on_delete(); + + -- UPDATE trigger for USER_PROJECT_ROLES + CREATE TRIGGER trigger_effective_permissions_mx_on_user_project_roles_update + AFTER UPDATE ON "USER_PROJECT_ROLES" + REFERENCING OLD TABLE AS old_table NEW TABLE AS new_table + FOR EACH STATEMENT + EXECUTE FUNCTION role_effective_permissions_mx_on_update(); + + -- INSERT trigger for ROLES_PERMISSIONS + CREATE TRIGGER trigger_effective_permissions_mx_on_roles_permissions_insert + AFTER INSERT ON "ROLES_PERMISSIONS" + REFERENCING NEW TABLE AS new_table + FOR EACH STATEMENT + EXECUTE FUNCTION role_effective_permissions_mx_on_insert(); + + -- DELETE trigger for ROLES_PERMISSIONS + CREATE TRIGGER trigger_effective_permissions_mx_on_roles_permissions_delete + AFTER DELETE ON "ROLES_PERMISSIONS" + REFERENCING OLD TABLE AS old_table + FOR EACH STATEMENT + EXECUTE FUNCTION role_effective_permissions_mx_on_delete(); + + -- UPDATE trigger for ROLES_PERMISSIONS + CREATE TRIGGER trigger_effective_permissions_mx_on_roles_permissions_update + AFTER UPDATE ON "ROLES_PERMISSIONS" + REFERENCING OLD TABLE AS old_table NEW TABLE AS new_table + FOR EACH STATEMENT + EXECUTE FUNCTION role_effective_permissions_mx_on_update(); + +