Search in sources :

Example 6 with Result

use of net.sf.ehcache.search.Result in project directory-fortress-core by apache.

the class CacheSample method runTests.

void runTests() {
    loadCache();
    Attribute<String> member = cache.getSearchAttribute("member");
    Query query = cache.createQuery();
    query.includeKeys();
    query.includeValues();
    Set<String> roles = new HashSet<>();
    roles.add("oamt17dsd1");
    roles.add("oamt17dsd4");
    roles.add("oamT13DSD6");
    roles.add("oamT16SDR7");
    query.addCriteria(member.in(roles));
    Results results = query.execute();
    System.out.println(" Size: " + results.size());
    System.out.println("----Results-----\n");
    Set<SDSet> resultSet = new HashSet<>();
    for (Result result : results.all()) {
        DsdCacheEntry entry = (DsdCacheEntry) result.getValue();
        resultSet.add(entry.getSdSet());
    }
    for (SDSet sdSet : resultSet) {
        LOG.info("Found SDSet: " + sdSet.getName());
    }
}
Also used : SDSet(org.apache.directory.fortress.core.model.SDSet) Query(net.sf.ehcache.search.Query) Results(net.sf.ehcache.search.Results) HashSet(java.util.HashSet) Result(net.sf.ehcache.search.Result)

Example 7 with Result

use of net.sf.ehcache.search.Result in project directory-fortress-core by apache.

the class SDUtil method clearDsdCacheEntry.

/**
 * Given DSD entry name, clear its corresponding object values from the cache.
 *
 * @param name contains the name of object to be cleared.
 * @param contextId maps to sub-tree in DIT, e.g. ou=contextId, dc=example, dc=com.     *
 * @throws SecurityException in the event of system or rule violation.
 */
void clearDsdCacheEntry(String name, String contextId) {
    Attribute<String> context = m_dsdCache.getSearchAttribute(CONTEXT_ID);
    Attribute<String> dsdName = m_dsdCache.getSearchAttribute(DSD_NAME);
    Query query = m_dsdCache.createQuery();
    query.includeKeys();
    query.includeValues();
    query.addCriteria(dsdName.eq(name).and(context.eq(contextId)));
    Results results = query.execute();
    for (Result result : results.all()) {
        m_dsdCache.clear(result.getKey());
    }
}
Also used : Query(net.sf.ehcache.search.Query) Results(net.sf.ehcache.search.Results) Result(net.sf.ehcache.search.Result)

Example 8 with Result

use of net.sf.ehcache.search.Result in project directory-fortress-core by apache.

the class SDUtil method getDsdCache.

/**
 * Given a role name, return the set of DSD's that have a matching member.
 *
 * @param name contains name of authorized Role used to search the cache.
 * @param contextId maps to sub-tree in DIT, e.g. ou=contextId, dc=example, dc=com.
 * @return un-ordered set of matching DSD's.
 * @throws SecurityException in the event of system or rule violation.
 */
private Set<SDSet> getDsdCache(String name, String contextId) throws SecurityException {
    contextId = getContextId(contextId);
    Set<SDSet> finalSet = new HashSet<>();
    Attribute<String> context = m_dsdCache.getSearchAttribute(CONTEXT_ID);
    Attribute<String> member = m_dsdCache.getSearchAttribute(SchemaConstants.MEMBER_AT);
    Query query = m_dsdCache.createQuery();
    query.includeKeys();
    query.includeValues();
    query.addCriteria(member.eq(name).and(context.eq(contextId)));
    Results results = query.execute();
    boolean empty = false;
    for (Result result : results.all()) {
        DsdCacheEntry entry = (DsdCacheEntry) result.getValue();
        if (!entry.isEmpty()) {
            finalSet.add(entry.getSdSet());
            finalSet = putDsdCache(name, contextId);
        } else {
            empty = true;
        }
        finalSet.add(entry.getSdSet());
    }
    // If nothing was found in the cache, determine if it needs to be seeded:
    if (finalSet.size() == 0 && !empty) {
        finalSet = putDsdCache(name, contextId);
    }
    return finalSet;
}
Also used : Query(net.sf.ehcache.search.Query) Results(net.sf.ehcache.search.Results) DsdCacheEntry(org.apache.directory.fortress.core.util.cache.DsdCacheEntry) HashSet(java.util.HashSet) Result(net.sf.ehcache.search.Result)

Aggregations

Query (net.sf.ehcache.search.Query)8 Result (net.sf.ehcache.search.Result)8 Results (net.sf.ehcache.search.Results)7 ArrayList (java.util.ArrayList)3 HashSet (java.util.HashSet)3 Cache (net.sf.ehcache.Cache)3 DomainRoleEntry (joynr.infrastructure.DacTypes.DomainRoleEntry)2 DsdCacheEntry (org.apache.directory.fortress.core.util.cache.DsdCacheEntry)2 UserRoleKey (io.joynr.accesscontrol.primarykey.UserRoleKey)1 SDSet (org.apache.directory.fortress.core.model.SDSet)1