use of org.forgerock.openam.cts.api.tokens.Token in project OpenAM by OpenRock.
the class CoreTokenResource method updateInstance.
/**
* Update a Token based on the Resource path.
*
* @param serverContext Required context.
* @param tokenId The tokenId to update. This must be the same TokenId as the serialised Token.
* @param updateRequest Contains the JSON serialised Token to update.
*/
public Promise<ResourceResponse, ResourceException> updateInstance(Context serverContext, String tokenId, UpdateRequest updateRequest) {
String principal = PrincipalRestUtils.getPrincipalNameFromServerContext(serverContext);
String value = updateRequest.getContent().toString();
Token newToken = serialisation.deserialise(value, Token.class);
try {
store.updateAsync(newToken);
ResourceResponse resource = newResourceResponse(newToken.getTokenId(), String.valueOf(System.currentTimeMillis()), new JsonValue("Token Updated"));
debug("UPDATE by {0}: Updated token resource with ID: {1}", principal, tokenId);
return newResultPromise(resource);
} catch (CoreTokenException e) {
error(e, "UPDATE by {0}: Error updating token resource with ID: {1}", principal, tokenId);
return generateException(e).asPromise();
}
}
use of org.forgerock.openam.cts.api.tokens.Token in project OpenAM by OpenRock.
the class CTSSessionBlacklist method blacklist.
@Override
public void blacklist(final Session session) throws SessionException {
DEBUG.message("CTSSessionBlacklist: Blacklisting session: {}", session);
try {
final Token token = new Token(session.getStableStorageID(), TokenType.SESSION_BLACKLIST);
token.setExpiryTimestamp(timeOf(session.getBlacklistExpiryTime(purgeDelayMs)));
token.setAttribute(BLACKLIST_TIME_FIELD, now());
token.setAttribute(SERVER_ID_FIELD, localServerId);
cts.create(token);
} catch (CoreTokenException ex) {
DEBUG.error("CTSSessionBlacklist: Error blacklisting session", ex);
throw new SessionException(ex);
}
notifyListeners(session);
}
use of org.forgerock.openam.cts.api.tokens.Token in project OpenAM by OpenRock.
the class TokenDataStore method query.
/**
* Query the store for instances.
*
* @param query The criteria of the query, using {@code T} bean property names as fields.
* @return A set of all matching objects.
* @throws ServerException When an error occurs when querying the store.
*/
public Set<T> query(QueryFilter<String> query) throws ServerException {
SyncResultHandler<Collection<Token>> handler = new SyncResultHandler<Collection<Token>>();
try {
Task task = taskFactory.query(adapter.toTokenQuery(query), handler);
taskExecutor.execute(null, task);
return convertResults(handler.getResults());
} catch (ServerException e) {
throw e;
} catch (DataLayerException e) {
if (debug.warningEnabled()) {
debug.warning("Unable to read objects corresponding to query: " + query, e);
}
throw new ServerException("Could not query tokens from data store: " + e.getMessage());
}
}
use of org.forgerock.openam.cts.api.tokens.Token in project OpenAM by OpenRock.
the class TokenDataStore method read.
/**
* Reads a {@code T} out of the store using its OpenAM Unique ID.
*
* @param id The OpenAM Unique ID assigned to the object.
* @return The object, T.
* @throws NotFoundException If the object is not found.
* @throws ServerException When the object cannot be loaded.
*/
public T read(String id) throws NotFoundException, ServerException {
try {
if (id == null) {
throw new NotFoundException("Object not found");
}
SyncResultHandler<Token> handler = new SyncResultHandler<Token>();
taskExecutor.execute(id, taskFactory.read(id, handler));
Token token = handler.getResults();
if (token == null) {
throw new NotFoundException("Object not found with id: " + id);
}
return adapter.fromToken(token);
} catch (NotFoundException e) {
throw e;
} catch (ServerException e) {
throw e;
} catch (DataLayerException e) {
if (debug.warningEnabled()) {
debug.warning("Unable to read token corresponding to id: " + id, e);
}
throw new ServerException("Could not read token from token data store: " + e.getMessage());
}
}
use of org.forgerock.openam.cts.api.tokens.Token in project OpenAM by OpenRock.
the class CoreTokenAdapterTest method shouldUseTaskQueueForQuery.
@Test
public void shouldUseTaskQueueForQuery() throws CoreTokenException {
// Given
Collection<Token> tokens = new ArrayList<Token>();
ResultHandler<Collection<Token>, CoreTokenException> mockResultHandler = mock(ResultHandler.class);
given(mockResultHandler.getResults()).willReturn(tokens);
given(mockResultHandlerFactory.getQueryHandler()).willReturn(mockResultHandler);
TokenFilter filter = new TokenFilterBuilder().and().build();
// When
adapter.query(filter);
// Then
verify(mockTaskDispatcher).query(eq(filter), eq(mockResultHandler));
}
Aggregations