/*
* Copyright (c) 2010 Lockheed Martin Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.eurekastreams.server.persistence.mappers.ldap;
import java.util.List;
import org.eurekastreams.server.persistence.mappers.DomainMapper;
import org.eurekastreams.server.persistence.mappers.requests.LdapLookupRequest;
/**
* Uses an LDAP query to look up a single entry in LDAP and return a single attribute (e.g. given a user's account id,
* return the UPN). This is essentially just an adapter to convert the request and response types so it can be used with
* other String-to-String mappers.
*/
public class LdapSingleValueLookupMapper implements DomainMapper<String, String>
{
/** Mapper to query LDAP. */
private DomainMapper<LdapLookupRequest, List<String>> ldapQueryMapper;
/**
* Constructor.
*
* @param inLdapQueryMapper
* Mapper to query LDAP.
*/
public LdapSingleValueLookupMapper(final DomainMapper<LdapLookupRequest, List<String>> inLdapQueryMapper)
{
ldapQueryMapper = inLdapQueryMapper;
}
/**
* {@inheritDoc}
*/
@Override
public String execute(final String inRequest)
{
// use LDAP mapper to fetch desired attribute for user
List<String> results = ldapQueryMapper.execute(new LdapLookupRequest(inRequest));
return results.isEmpty() ? null : results.get(0);
}
}