*
*/
-import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
-import javax.ws.rs.DELETE;
import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.Consumes;
import javax.ws.rs.PathParam;
-import javax.ws.rs.core.Response;
+import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
+
+import org.opendaylight.aaa.api.IDMStoreException;
+import org.opendaylight.aaa.api.IIDMStore;
+import org.opendaylight.aaa.api.model.IDMError;
+import org.opendaylight.aaa.api.model.Role;
+import org.opendaylight.aaa.api.model.Roles;
+import org.opendaylight.aaa.idm.IdmLightApplication;
+import org.opendaylight.aaa.idm.IdmLightProxy;
+import org.opendaylight.aaa.idm.ServiceLocator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.List;
-import java.util.ArrayList;
-import org.opendaylight.aaa.idm.model.Roles;
-import org.opendaylight.aaa.idm.model.Role;
-import org.opendaylight.aaa.idm.model.IDMError;
-import org.opendaylight.aaa.idm.persistence.RoleStore;
-import org.opendaylight.aaa.idm.persistence.StoreException;
-import org.opendaylight.aaa.idm.IdmLightProxy;
@Path("/v1/roles")
public class RoleHandler {
private static Logger logger = LoggerFactory.getLogger(RoleHandler.class);
- private static RoleStore roleStore = new RoleStore();
@GET
@Produces("application/json")
logger.info("get /roles");
Roles roles=null;
try {
- roles = roleStore.getRoles();
+ roles = ServiceLocator.INSTANCE.getStore().getRoles();
}
- catch (StoreException se) {
- return new IDMError(500,"internal error getting roles",se.message).response();
+ catch (IDMStoreException se) {
+ return new IDMError(500,"internal error getting roles",se.getMessage()).response();
}
return Response.ok(roles).build();
}
public Response getRole(@PathParam("id") String id) {
logger.info("get /roles/" + id);
Role role=null;
- long longId=0;
- try {
- longId=Long.parseLong(id);
- }
- catch (NumberFormatException nfe) {
- return new IDMError(404,"invalid role id :" + id,"").response();
- }
try {
- role = roleStore.getRole(longId);
+ role = ServiceLocator.INSTANCE.getStore().readRole(id);
}
- catch(StoreException se) {
- return new IDMError(500,"internal error getting roles",se.message).response();
+ catch(IDMStoreException se) {
+ return new IDMError(500,"internal error getting roles",se.getMessage()).response();
}
if (role==null) {
if (role.getName()==null) {
return new IDMError(404,"name must be defined on role create","").response();
}
- else if (role.getName().length()>RoleStore.MAX_FIELD_LEN) {
- return new IDMError(400,"role name max length is :" + RoleStore.MAX_FIELD_LEN,"").response();
+ else if (role.getName().length()> IdmLightApplication.MAX_FIELD_LEN) {
+ return new IDMError(400,"role name max length is :" + IdmLightApplication.MAX_FIELD_LEN,"").response();
+ }
+
+ // domain
+ if (role.getDomainid()==null) {
+ return new IDMError(404,"The role's domain must be defined on role when creating a role.","").response();
+ }
+ else if (role.getDomainid().length()>IdmLightApplication.MAX_FIELD_LEN) {
+ return new IDMError(400,"role domain max length is :" + IdmLightApplication.MAX_FIELD_LEN,"").response();
}
// description
if (role.getDescription()==null) {
role.setDescription("");
}
- else if (role.getDescription().length()>RoleStore.MAX_FIELD_LEN) {
- return new IDMError(400,"role description max length is :" + RoleStore.MAX_FIELD_LEN,"").response();
+ else if (role.getDescription().length()>IdmLightApplication.MAX_FIELD_LEN) {
+ return new IDMError(400,"role description max length is :" + IdmLightApplication.MAX_FIELD_LEN,"").response();
}
- role = roleStore.createRole(role);
+ role = ServiceLocator.INSTANCE.getStore().writeRole(role);
}
- catch (StoreException se) {
- return new IDMError(500,"internal error creating role",se.message).response();
+ catch (IDMStoreException se) {
+ return new IDMError(500,"internal error creating role",se.getMessage()).response();
}
return Response.status(201).entity(role).build();
@Consumes("application/json")
@Produces("application/json")
public Response putRole(@Context UriInfo info,Role role,@PathParam("id") String id) {
- long longId=0;
logger.info("put /roles/" + id);
- try {
- longId= Long.parseLong(id);
- }
- catch (NumberFormatException nfe) {
- return new IDMError(404,"invalid role id :" + id,"").response();
- }
try {
- role.setRoleid((int)longId);
+ role.setRoleid(id);
// name
// TODO: names should be unique
- if ((role.getName()!=null) && (role.getName().length()>RoleStore.MAX_FIELD_LEN)) {
- return new IDMError(400,"role name max length is :" + RoleStore.MAX_FIELD_LEN,"").response();
+ if ((role.getName()!=null) && (role.getName().length()>IdmLightApplication.MAX_FIELD_LEN)) {
+ return new IDMError(400,"role name max length is :" + IdmLightApplication.MAX_FIELD_LEN,"").response();
}
// description
- if ((role.getDescription()!=null) && (role.getDescription().length()>RoleStore.MAX_FIELD_LEN)) {
- return new IDMError(400,"role description max length is :" + RoleStore.MAX_FIELD_LEN,"").response();
+ if ((role.getDescription()!=null) && (role.getDescription().length()>IdmLightApplication.MAX_FIELD_LEN)) {
+ return new IDMError(400,"role description max length is :" + IdmLightApplication.MAX_FIELD_LEN,"").response();
}
- role = roleStore.putRole(role);
+ role = ServiceLocator.INSTANCE.getStore().updateRole(role);
if (role==null) {
return new IDMError(404,"role id not found :" + id,"").response();
}
IdmLightProxy.clearClaimCache();
return Response.status(200).entity(role).build();
}
- catch (StoreException se) {
- return new IDMError(500,"internal error putting role",se.message).response();
+ catch (IDMStoreException se) {
+ return new IDMError(500,"internal error putting role",se.getMessage()).response();
}
}
@DELETE
@Path("/{id}")
public Response deleteRole(@Context UriInfo info,@PathParam("id") String id) {
- long longId=0;
logger.info("Delete /roles/" + id);
- try {
- longId= Long.parseLong(id);
- }
- catch (NumberFormatException nfe) {
- return new IDMError(404,"invalid role id :" + id,"").response();
- }
try {
- Role role = new Role();
- role.setRoleid((int)longId);
- role = roleStore.deleteRole(role);
+ Role role = ServiceLocator.INSTANCE.getStore().deleteRole(id);
if (role==null) {
return new IDMError(404,"role id not found :" + id,"").response();
}
}
- catch (StoreException se) {
- return new IDMError(500,"internal error deleting role",se.message).response();
+ catch (IDMStoreException se) {
+ return new IDMError(500,"internal error deleting role",se.getMessage()).response();
}
IdmLightProxy.clearClaimCache();
return Response.status(204).build();