Commit 6264e980 authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

simple error handling

parent 254189ca
package com.telephoners.krakyournet.ctf.exceptions;
import com.telephoners.krakyournet.ctf.beans.User;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
public class ElementAlreadyExistsException extends WebApplicationException
{
public ElementAlreadyExistsException(final Class<User> elementName)
{
super(Response.status(Response.Status.BAD_REQUEST)
.entity(String.format("Element %s already exists", elementName.getSimpleName()))
.type("text/plain")
.build());
}
}
package com.telephoners.krakyournet.ctf.exceptions;
import com.telephoners.krakyournet.ctf.beans.Team;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
public class ElementDoesNotExistException extends WebApplicationException
{
public ElementDoesNotExistException(final Class<Team> elementName)
{
super(Response.status(Response.Status.NOT_FOUND)
.entity(String.format("Element %s does not exist", elementName.getSimpleName()))
.type("text/plain")
.build());
}
}
package com.telephoners.krakyournet.ctf.repositories;
import com.google.inject.Inject;
import com.telephoners.krakyournet.ctf.beans.User;
import com.telephoners.krakyournet.ctf.core.DataConnector;
public class UserRepository extends Repository<User>
{
@Inject
public UserRepository(final Class<User> type, final DataConnector<User> connector)
{
super(type, connector);
}
//todo: this should be handled by driver itself
public boolean exists(final String userName)
{
return getAll()
.stream()
.anyMatch(user -> user.getName().equals(userName));
}
}
......@@ -2,7 +2,10 @@ package com.telephoners.krakyournet.ctf.resources;
import com.telephoners.krakyournet.ctf.beans.Team;
import com.telephoners.krakyournet.ctf.beans.User;
import com.telephoners.krakyournet.ctf.exceptions.ElementAlreadyExistsException;
import com.telephoners.krakyournet.ctf.exceptions.ElementDoesNotExistException;
import com.telephoners.krakyournet.ctf.repositories.Repository;
import com.telephoners.krakyournet.ctf.repositories.UserRepository;
import javax.inject.Inject;
import javax.inject.Singleton;
......@@ -18,10 +21,10 @@ import javax.ws.rs.core.MediaType;
public class RegistrationResource
{
private final Repository<Team> teamsRepository;
private final Repository<User> userRepository;
private final UserRepository userRepository;
@Inject
public RegistrationResource(final Repository<User> userRepository,
public RegistrationResource(final UserRepository userRepository,
final Repository<Team> teamsRepository)
{
//todo: checkNotNUll
......@@ -47,11 +50,8 @@ public class RegistrationResource
public String register(@QueryParam("userName") final String userName,
@QueryParam("teamId") final String teamId)
{
//todo: check if exists
if (!teamsRepository.contains(teamId))
{
throw new RuntimeException("Team does not exist");
}
validateTeam(teamId);
validateUserName(userName);
User user = new User();
user.setEmail("gpietrusza@gmail.com");
......@@ -63,4 +63,14 @@ public class RegistrationResource
return user.getId();
}
private void validateTeam(final String teamId)
{
if(teamsRepository.contains(teamId)) throw new ElementDoesNotExistException(Team.class);
}
private void validateUserName(final String userName)
{
if(userRepository.exists(userName)) throw new ElementAlreadyExistsException(User.class);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment