use of org.forgerock.oauth2.resources.ResourceSetDescription in project OpenAM by OpenRock.
the class OpenAMResourceSetStore method create.
@Override
public void create(OAuth2Request request, ResourceSetDescription resourceSetDescription) throws ServerException, BadRequestException, NotFoundException {
resourceSetDescription.setId(idGenerator.generateTokenId(null));
String policyEndpoint = oauth2UrisFactory.get(request).getResourceSetRegistrationPolicyEndpoint(resourceSetDescription.getId());
resourceSetDescription.setPolicyUri(policyEndpoint);
resourceSetDescription.setRealm(realm);
try {
delegate.create(resourceSetDescription);
} catch (org.forgerock.openam.sm.datalayer.store.ServerException e) {
throw new ServerException(e);
}
}
use of org.forgerock.oauth2.resources.ResourceSetDescription in project OpenAM by OpenRock.
the class OpenAMResourceSetStore method update.
@Override
public void update(ResourceSetDescription resourceSetDescription) throws NotFoundException, ServerException {
try {
if (!realm.equals(resourceSetDescription.getRealm())) {
throw new ServerException("Could not read token with id, " + resourceSetDescription.getId() + ", in realm, " + realm);
}
read(resourceSetDescription.getId(), resourceSetDescription.getResourceOwnerId());
delegate.update(resourceSetDescription);
} catch (org.forgerock.openam.sm.datalayer.store.NotFoundException e) {
throw new NotFoundException("Resource set does not exist with id " + resourceSetDescription.getId());
} catch (org.forgerock.openam.sm.datalayer.store.ServerException e) {
throw new ServerException(e);
}
}
use of org.forgerock.oauth2.resources.ResourceSetDescription in project OpenAM by OpenRock.
the class ResourceSetRegistrationEndpoint method createResourceSet.
/**
* <p>Creates or updates a resource set description.</p>
*
* <p>If the request contains a If-Match header an update is performed, otherwise a create is performed.</p>
*
* <p>An update will replace the current description of the resource set with the contents of the request body.</p>
*
* @param entity The new resource set description.
* @return A JSON object containing the authorization server's unique id for the resource set and, optionally,
* a policy uri.
* @throws NotFoundException If the requested resource set description does not exist.
* @throws ServerException When an error occurs during creating or updating.
* @throws BadRequestException If the request JSON is invalid.
*/
@Post
public Representation createResourceSet(JsonRepresentation entity) throws NotFoundException, ServerException, BadRequestException {
ResourceSetDescription resourceSetDescription = new ResourceSetDescription(null, getClientId(), getResourceOwnerId(), validator.validate(toMap(entity)));
OAuth2Request oAuth2Request = requestFactory.create(getRequest());
ResourceSetStore store = providerSettingsFactory.get(oAuth2Request).getResourceSetStore();
QueryFilter<String> query = QueryFilter.and(QueryFilter.equalTo(ResourceSetTokenField.NAME, resourceSetDescription.getName()), QueryFilter.equalTo(ResourceSetTokenField.CLIENT_ID, getClientId()), QueryFilter.equalTo(ResourceSetTokenField.RESOURCE_OWNER_ID, getResourceOwnerId()));
if (!store.query(query).isEmpty()) {
getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
Map<String, Object> response = new HashMap<String, Object>();
response.put(OAuth2Constants.Params.ERROR, Status.CLIENT_ERROR_BAD_REQUEST.getReasonPhrase());
response.put(OAuth2Constants.Params.ERROR_DESCRIPTION, "A shared item with the name '" + resourceSetDescription.getName() + "' already exists");
return new JsonRepresentation(response);
}
JsonValue labels = resourceSetDescription.getDescription().get(OAuth2Constants.ResourceSets.LABELS);
resourceSetDescription.getDescription().remove(OAuth2Constants.ResourceSets.LABELS);
for (ResourceRegistrationFilter filter : extensionFilterManager.getFilters(ResourceRegistrationFilter.class)) {
filter.beforeResourceRegistration(resourceSetDescription);
}
store.create(oAuth2Request, resourceSetDescription);
if (labels.isNotNull()) {
resourceSetDescription.getDescription().add(OAuth2Constants.ResourceSets.LABELS, labels.asSet());
}
labelRegistration.updateLabelsForNewResourceSet(resourceSetDescription);
for (ResourceRegistrationFilter filter : extensionFilterManager.getFilters(ResourceRegistrationFilter.class)) {
filter.afterResourceRegistration(resourceSetDescription);
}
for (ResourceSetRegistrationHook hook : hooks) {
hook.resourceSetCreated(oAuth2Request.<String>getParameter("realm"), resourceSetDescription);
}
getResponse().setStatus(Status.SUCCESS_CREATED);
return createJsonResponse(resourceSetDescription, false, true);
}
use of org.forgerock.oauth2.resources.ResourceSetDescription in project OpenAM by OpenRock.
the class ResourceSetRegistrationEndpoint method deleteResourceSet.
/**
* <p>Deletes the resource set description for the request resource set id as long as the If-Match header matches
* the current version of the resource set.</p>
*
* <p>If no If-Match header is present on the request a 512 Precondition Failed response will be returned.</p>
*
* @return An empty representation.
* @throws NotFoundException If the requested resource set description does not exist.
* @throws ServerException When an error occurs during removal.
*/
@Delete
public Representation deleteResourceSet() throws NotFoundException, ServerException {
if (!isConditionalRequest()) {
throw new ResourceException(512, "precondition_failed", "Require If-Match header to delete Resource Set", null);
}
ResourceSetStore store = providerSettingsFactory.get(requestFactory.create(getRequest())).getResourceSetStore();
ResourceSetDescription resourceSetDescription = store.read(getResourceSetId(), getResourceOwnerId());
OAuth2Request oAuth2Request = requestFactory.create(getRequest());
for (ResourceSetRegistrationHook hook : hooks) {
hook.resourceSetDeleted(oAuth2Request.<String>getParameter("realm"), resourceSetDescription);
}
labelRegistration.updateLabelsForDeletedResourceSet(resourceSetDescription);
store.delete(getResourceSetId(), getResourceOwnerId());
return createEmptyResponse();
}
use of org.forgerock.oauth2.resources.ResourceSetDescription in project OpenAM by OpenRock.
the class ResourceSetRegistrationEndpointTest method shouldUpdateResourceSetDescription.
@Test
@SuppressWarnings("unchecked")
public void shouldUpdateResourceSetDescription() throws Exception {
//Given
JsonRepresentation entity = createUpdateRequestRepresentation();
ResourceSetDescription resourceSetDescription = new ResourceSetDescription("RESOURCE_SET_ID", "CLIENT_ID", "RESOURCE_OWNER_ID", RESOURCE_SET_DESCRIPTION_CONTENT.asMap());
setUriResourceSetId();
addCondition();
given(store.read("RESOURCE_SET_ID", "RESOURCE_OWNER_ID")).willReturn(resourceSetDescription);
//When
Representation responseRep = endpoint.updateResourceSet(entity);
//Then
ArgumentCaptor<ResourceSetDescription> resourceSetCaptor = ArgumentCaptor.forClass(ResourceSetDescription.class);
verify(store).update(resourceSetCaptor.capture());
assertThat(resourceSetCaptor.getValue().getId()).isEqualTo("RESOURCE_SET_ID");
assertThat(resourceSetCaptor.getValue().getClientId()).isEqualTo("CLIENT_ID");
assertThat(resourceSetCaptor.getValue().getName()).isEqualTo("NEW_NAME");
assertThat(resourceSetCaptor.getValue().getUri()).isEqualTo(URI.create("NEW_URI"));
assertThat(resourceSetCaptor.getValue().getType()).isEqualTo("NEW_TYPE");
assertThat(resourceSetCaptor.getValue().getScopes()).containsExactly("NEW_SCOPE");
assertThat(resourceSetCaptor.getValue().getIconUri()).isEqualTo(URI.create("NEW_ICON_URI"));
Map<String, Object> responseBody = (Map<String, Object>) new ObjectMapper().readValue(responseRep.getText(), Map.class);
assertThat(responseBody).containsKey("_id");
verify(labelRegistration).updateLabelsForExistingResourceSet(any(ResourceSetDescription.class));
}
Aggregations