Search in sources :

Example 41 with Token

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();
    }
}
Also used : Responses.newResourceResponse(org.forgerock.json.resource.Responses.newResourceResponse) ResourceResponse(org.forgerock.json.resource.ResourceResponse) JsonValue(org.forgerock.json.JsonValue) CoreTokenException(org.forgerock.openam.cts.exceptions.CoreTokenException) Token(org.forgerock.openam.cts.api.tokens.Token)

Example 42 with Token

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);
}
Also used : CoreTokenException(org.forgerock.openam.cts.exceptions.CoreTokenException) SessionException(com.iplanet.dpro.session.SessionException) PartialToken(org.forgerock.openam.sm.datalayer.api.query.PartialToken) Token(org.forgerock.openam.cts.api.tokens.Token)

Example 43 with Token

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());
    }
}
Also used : Task(org.forgerock.openam.sm.datalayer.api.Task) DataLayerException(org.forgerock.openam.sm.datalayer.api.DataLayerException) Collection(java.util.Collection) Token(org.forgerock.openam.cts.api.tokens.Token)

Example 44 with Token

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());
    }
}
Also used : DataLayerException(org.forgerock.openam.sm.datalayer.api.DataLayerException) Token(org.forgerock.openam.cts.api.tokens.Token)

Example 45 with Token

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));
}
Also used : ArrayList(java.util.ArrayList) Collection(java.util.Collection) CoreTokenException(org.forgerock.openam.cts.exceptions.CoreTokenException) Token(org.forgerock.openam.cts.api.tokens.Token) PartialToken(org.forgerock.openam.sm.datalayer.api.query.PartialToken) TokenFilterBuilder(org.forgerock.openam.cts.api.filter.TokenFilterBuilder) TokenFilter(org.forgerock.openam.cts.api.filter.TokenFilter) Test(org.testng.annotations.Test)

Aggregations

Token (org.forgerock.openam.cts.api.tokens.Token)86 Test (org.testng.annotations.Test)58 Task (org.forgerock.openam.sm.datalayer.api.Task)17 ResultHandler (org.forgerock.openam.sm.datalayer.api.ResultHandler)16 PartialToken (org.forgerock.openam.sm.datalayer.api.query.PartialToken)16 InvocationOnMock (org.mockito.invocation.InvocationOnMock)14 CoreTokenException (org.forgerock.openam.cts.exceptions.CoreTokenException)13 InternalSession (com.iplanet.dpro.session.service.InternalSession)8 DataLayerException (org.forgerock.openam.sm.datalayer.api.DataLayerException)8 Calendar (java.util.Calendar)7 JsonValue (org.forgerock.json.JsonValue)7 SessionID (com.iplanet.dpro.session.SessionID)6 TokenFilter (org.forgerock.openam.cts.api.filter.TokenFilter)6 Collection (java.util.Collection)5 HashMap (java.util.HashMap)5 Entry (org.forgerock.opendj.ldap.Entry)5 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)4 SAMLToken (org.forgerock.openam.cts.api.tokens.SAMLToken)4 Connection (org.forgerock.opendj.ldap.Connection)4 LinkedHashMapEntry (org.forgerock.opendj.ldap.LinkedHashMapEntry)4