Skip to content
This repository has been archived by the owner on Nov 22, 2023. It is now read-only.

Commit

Permalink
Deletes GroupDAO, switches everything to use GroupJooqDao instead.
Browse files Browse the repository at this point in the history
  • Loading branch information
alokmenghrajani committed Apr 17, 2015
1 parent a034a1e commit b6adaf4
Show file tree
Hide file tree
Showing 12 changed files with 82 additions and 286 deletions.
28 changes: 15 additions & 13 deletions server/src/main/java/keywhiz/ServiceModule.java
Expand Up @@ -57,7 +57,7 @@
import keywhiz.service.daos.AclDeps;
import keywhiz.service.daos.AclDAO;
import keywhiz.service.daos.ClientDAO;
import keywhiz.service.daos.GroupDAO;
import keywhiz.service.daos.GroupJooqDao;
import keywhiz.service.daos.MapArgumentFactory;
import keywhiz.service.daos.SecretController;
import keywhiz.service.daos.SecretDAO;
Expand Down Expand Up @@ -204,14 +204,6 @@ public ServiceModule(KeywhizConfig config, Environment environment) {
return new SecretController(transformer, cryptographer, secretDAO);
}

@Provides @Singleton @Readonly GroupDAO readonlyGroupDAO(@Readonly DBI dbi) {
return dbi.onDemand(GroupDAO.class);
}

@Provides @Singleton GroupDAO groupDAO(DBI dbi) {
return dbi.onDemand(GroupDAO.class);
}

@Provides @Singleton @Readonly SecretDAO readonlySecretDAO(@Readonly DBI dbi) {
return dbi.onDemand(SecretDAO.class);
}
Expand All @@ -230,13 +222,15 @@ public ServiceModule(KeywhizConfig config, Environment environment) {

// DAOs using jOOQ

@Provides @Singleton AclDAO aclDAO(DSLContext jooqContext, ClientDAO clientDAO, DBI dbi) {
return new AclDAO(jooqContext, clientDAO, dbi.onDemand(AclDeps.class));
@Provides @Singleton AclDAO aclDAO(DSLContext jooqContext, ClientDAO clientDAO,
GroupJooqDao groupJooqDao, DBI dbi) {
return new AclDAO(jooqContext, clientDAO, groupJooqDao, dbi.onDemand(AclDeps.class));
}

@Provides @Singleton
@Readonly AclDAO readonlyAclDAO(@Readonly DSLContext jooqContext, @Readonly ClientDAO clientDAO, @Readonly DBI dbi) {
return new AclDAO(jooqContext, clientDAO, dbi.onDemand(AclDeps.class));
@Readonly AclDAO readonlyAclDAO(@Readonly DSLContext jooqContext, @Readonly ClientDAO clientDAO,
@Readonly GroupJooqDao groupJooqDao, @Readonly DBI dbi) {
return new AclDAO(jooqContext, clientDAO, groupJooqDao, dbi.onDemand(AclDeps.class));
}

@Provides @Singleton ClientDAO clientDAO(DSLContext jooqContext) {
Expand All @@ -247,6 +241,14 @@ public ServiceModule(KeywhizConfig config, Environment environment) {
return new ClientDAO(jooqContext);
}

@Provides @Singleton GroupJooqDao groupJooqDao(DSLContext jooqContext) {
return new GroupJooqDao(jooqContext);
}

@Provides @Singleton @Readonly GroupJooqDao readonlygroupJooqDao(@Readonly DSLContext jooqContext) {
return new GroupJooqDao(jooqContext);
}

@Provides @Singleton
@Readonly Authenticator<BasicCredentials, User> authenticator(KeywhizConfig config,
@Readonly DSLContext jooqContext) {
Expand Down
14 changes: 7 additions & 7 deletions server/src/main/java/keywhiz/service/daos/AclDAO.java
Expand Up @@ -49,22 +49,22 @@ public class AclDAO {

private final DSLContext dslContext;
private ClientDAO clientDAO;
private GroupDAO groupDAO;
private GroupJooqDao groupJooqDao;
private SecretContentDAO secretContentDAO;
private SecretSeriesDAO secretSeriesDAO;

@Inject
public AclDAO(DSLContext dslContext, ClientDAO clientDAO, AclDeps aclDeps) {
public AclDAO(DSLContext dslContext, ClientDAO clientDAO, GroupJooqDao groupJooqDao, AclDeps aclDeps) {
this.dslContext = dslContext;
this.clientDAO = clientDAO;
this.groupDAO = aclDeps.createGroupDAO();
this.groupJooqDao = groupJooqDao;
this.secretContentDAO = aclDeps.createSecretContentDAO();
this.secretSeriesDAO = aclDeps.createSecretSeriesDAO();
}

public void findAndAllowAccess(long secretId, long groupId) {
dslContext.transaction(configuration -> {
Optional<Group> group = groupDAO.getGroupById(groupId);
Optional<Group> group = groupJooqDao.getGroupById(groupId);
if (!group.isPresent()) {
logger.info("Failure to allow access groupId {}, secretId {}: groupId not found.", groupId,
secretId);
Expand All @@ -84,7 +84,7 @@ public void findAndAllowAccess(long secretId, long groupId) {

public void findAndRevokeAccess(long secretId, long groupId) {
dslContext.transaction(configuration -> {
Optional<Group> group = groupDAO.getGroupById(groupId);
Optional<Group> group = groupJooqDao.getGroupById(groupId);
if (!group.isPresent()) {
logger.info("Failure to revoke access groupId {}, secretId {}: groupId not found.", groupId,
secretId);
Expand All @@ -111,7 +111,7 @@ public void findAndEnrollClient(long clientId, long groupId) {
throw new IllegalStateException(format("ClientId %d doesn't exist.", clientId));
}

Optional<Group> group = groupDAO.getGroupById(groupId);
Optional<Group> group = groupJooqDao.getGroupById(groupId);
if (!group.isPresent()) {
logger.info("Failure to enroll membership clientId {}, groupId {}: groupId not found.",
clientId, groupId);
Expand All @@ -131,7 +131,7 @@ public void findAndEvictClient(long clientId, long groupId) {
throw new IllegalStateException(format("ClientId %d doesn't exist.", clientId));
}

Optional<Group> group = groupDAO.getGroupById(groupId);
Optional<Group> group = groupJooqDao.getGroupById(groupId);
if (!group.isPresent()) {
logger.info("Failure to evict membership clientId {}, groupId {}: groupId not found.",
clientId, groupId);
Expand Down
3 changes: 1 addition & 2 deletions server/src/main/java/keywhiz/service/daos/AclDeps.java
Expand Up @@ -7,9 +7,8 @@
* Temporary class while we transition from JDBI to jooq. We need this because we can't use
* dbi.ondemand + @Inject in the same class.
*/
@RegisterMapper({SecretSeriesMapper.class, GroupMapper.class})
@RegisterMapper({SecretSeriesMapper.class})
abstract public class AclDeps {
@CreateSqlObject protected abstract GroupDAO createGroupDAO();
@CreateSqlObject protected abstract SecretContentDAO createSecretContentDAO();
@CreateSqlObject protected abstract SecretSeriesDAO createSecretSeriesDAO();
}
55 changes: 0 additions & 55 deletions server/src/main/java/keywhiz/service/daos/GroupDAO.java

This file was deleted.

5 changes: 1 addition & 4 deletions server/src/main/java/keywhiz/service/daos/GroupJooqDao.java
Expand Up @@ -27,10 +27,7 @@

import static keywhiz.jooq.tables.Groups.GROUPS;

/**
* Jooq version of GroupDAO.
*/
class GroupJooqDao {
public class GroupJooqDao {
private final DSLContext dslContext;

@Inject public GroupJooqDao(DSLContext dslContext) {
Expand Down
37 changes: 0 additions & 37 deletions server/src/main/java/keywhiz/service/daos/GroupMapper.java

This file was deleted.

Expand Up @@ -41,7 +41,7 @@
import keywhiz.api.model.Group;
import keywhiz.api.model.SanitizedSecret;
import keywhiz.service.daos.AclDAO;
import keywhiz.service.daos.GroupDAO;
import keywhiz.service.daos.GroupJooqDao;
import keywhiz.service.exceptions.ConflictException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -59,12 +59,12 @@
public class AutomationGroupResource {
private static final Logger logger = LoggerFactory.getLogger(AutomationGroupResource.class);

private final GroupDAO groupDAO;
private final GroupJooqDao groupJooqDao;
private final AclDAO aclDAO;

@Inject
public AutomationGroupResource(GroupDAO groupDAO, AclDAO aclDAO) {
this.groupDAO = groupDAO;
public AutomationGroupResource(GroupJooqDao groupJooqDao, AclDAO aclDAO) {
this.groupJooqDao = groupJooqDao;
this.aclDAO = aclDAO;
}

Expand All @@ -82,7 +82,7 @@ public AutomationGroupResource(GroupDAO groupDAO, AclDAO aclDAO) {
public GroupDetailResponse getGroupById(
@Auth AutomationClient automationClient,
@PathParam("groupId") LongParam groupId) {
Group group = groupDAO.getGroupById(groupId.get()).orElseThrow(NotFoundException::new);
Group group = groupJooqDao.getGroupById(groupId.get()).orElseThrow(NotFoundException::new);

ImmutableList<Client> clients = ImmutableList.copyOf(aclDAO.getClientsFor(group));
ImmutableList<SanitizedSecret> sanitizedSecrets =
Expand All @@ -103,7 +103,7 @@ public GroupDetailResponse getGroupById(
@GET
public Response getGroupByName(@QueryParam("name") Optional<String> name) {
if (name.isPresent()) {
Group group = groupDAO.getGroup(name.get()).orElseThrow(NotFoundException::new);
Group group = groupJooqDao.getGroup(name.get()).orElseThrow(NotFoundException::new);

ImmutableList<Client> clients = ImmutableList.copyOf(aclDAO.getClientsFor(group));
ImmutableList<SanitizedSecret> sanitizedSecrets = ImmutableList.copyOf(aclDAO.getSanitizedSecretsFor(group));
Expand All @@ -114,7 +114,7 @@ public Response getGroupByName(@QueryParam("name") Optional<String> name) {

ImmutableList<SanitizedSecret> emptySecrets = ImmutableList.of();
ImmutableList<Client> emptyClients = ImmutableList.of();
List<GroupDetailResponse> groups = groupDAO.getGroups().stream()
List<GroupDetailResponse> groups = groupJooqDao.getGroups().stream()
.map((g) -> GroupDetailResponse.fromGroup(g, emptySecrets, emptyClients))
.collect(toList());
return Response.ok()
Expand All @@ -137,15 +137,15 @@ public Group createGroup(
@Auth AutomationClient automationClient,
@Valid CreateGroupRequest groupRequest) {

Optional<Group> group = groupDAO.getGroup(groupRequest.name);
Optional<Group> group = groupJooqDao.getGroup(groupRequest.name);
if (group.isPresent()) {
logger.info("Automation ({}) - Group {} already exists", automationClient.getName(), groupRequest.name);
throw new ConflictException("Group name already exists.");
}

long id = groupDAO.createGroup(groupRequest.name, automationClient.getName(),
long id = groupJooqDao.createGroup(groupRequest.name, automationClient.getName(),
Optional.ofNullable(groupRequest.description));
return groupDAO.getGroupById(id).get();
return groupJooqDao.getGroupById(id).get();
}

/**
Expand All @@ -161,8 +161,8 @@ public Group createGroup(
@Path("{groupId}")
public Response deleteGroup(@Auth AutomationClient automationClient,
@PathParam("groupId") LongParam groupId) {
Group group = groupDAO.getGroupById(groupId.get()).orElseThrow(NotFoundException::new);
groupDAO.deleteGroup(group);
Group group = groupJooqDao.getGroupById(groupId.get()).orElseThrow(NotFoundException::new);
groupJooqDao.deleteGroup(group);
return Response.ok().build();
}
}
22 changes: 11 additions & 11 deletions server/src/main/java/keywhiz/service/resources/GroupsResource.java
Expand Up @@ -46,7 +46,7 @@
import keywhiz.api.model.SanitizedSecret;
import keywhiz.auth.User;
import keywhiz.service.daos.AclDAO;
import keywhiz.service.daos.GroupDAO;
import keywhiz.service.daos.GroupJooqDao;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -61,12 +61,12 @@
public class GroupsResource {
private static final Logger logger = LoggerFactory.getLogger(GroupsResource.class);
private final AclDAO aclDAO;
private final GroupDAO groupDAO;
private final GroupJooqDao groupJooqDao;

@Inject
public GroupsResource(AclDAO aclDAO, GroupDAO groupDAO) {
public GroupsResource(AclDAO aclDAO, GroupJooqDao groupJooqDao) {
this.aclDAO = aclDAO;
this.groupDAO = groupDAO;
this.groupJooqDao = groupJooqDao;
}

/**
Expand All @@ -90,7 +90,7 @@ public Response findGroups(@Auth User user, @DefaultValue("") @QueryParam("name"

protected List<Group> listGroups(@Auth User user) {
logger.info("User '{}' listing groups.", user);
Set<Group> groups = groupDAO.getGroups();
Set<Group> groups = groupJooqDao.getGroups();
return ImmutableList.copyOf(groups);
}

Expand All @@ -114,11 +114,11 @@ protected Group getGroupByName(@Auth User user, String name) {
public Response createGroup(@Auth User user, @Valid CreateGroupRequest request) {

logger.info("User '{}' creating group.", user);
if (groupDAO.getGroup(request.name).isPresent()) {
if (groupJooqDao.getGroup(request.name).isPresent()) {
throw new BadRequestException("Group already exists.");
}

long groupId = groupDAO.createGroup(request.name, user.getName(),
long groupId = groupJooqDao.createGroup(request.name, user.getName(),
Optional.ofNullable(request.description));
URI uri = UriBuilder.fromResource(GroupsResource.class).build(groupId);
return Response
Expand Down Expand Up @@ -159,17 +159,17 @@ public GroupDetailResponse getGroup(@Auth User user, @PathParam("groupId") LongP
public Response deleteGroup(@Auth User user, @PathParam("groupId") LongParam groupId) {
logger.info("User '{}' deleting group id={}.", user, groupId);

Optional<Group> group = groupDAO.getGroupById(groupId.get());
Optional<Group> group = groupJooqDao.getGroupById(groupId.get());
if (!group.isPresent()) {
throw new NotFoundException("Group not found.");
}

groupDAO.deleteGroup(group.get());
groupJooqDao.deleteGroup(group.get());
return Response.noContent().build();
}

private GroupDetailResponse groupDetailResponseFromId(long groupId) {
Optional<Group> optionalGroup = groupDAO.getGroupById(groupId);
Optional<Group> optionalGroup = groupJooqDao.getGroupById(groupId);
if (!optionalGroup.isPresent()) {
throw new NotFoundException("Group not found.");
}
Expand All @@ -183,7 +183,7 @@ private GroupDetailResponse groupDetailResponseFromId(long groupId) {
}

private Group groupFromName(String name) {
Optional<Group> optionalGroup = groupDAO.getGroup(name);
Optional<Group> optionalGroup = groupJooqDao.getGroup(name);
if (!optionalGroup.isPresent()) {
throw new NotFoundException("Group not found.");
}
Expand Down

0 comments on commit b6adaf4

Please sign in to comment.