001package com.pingidentity;
002
003import java.util.Arrays;
004import java.util.Collections;
005import java.util.HashMap;
006import java.util.List;
007import java.util.Map;
008
009import com.unboundid.directory.sdk.ds.api.IdentityMapper;
010import com.unboundid.directory.sdk.ds.config.IdentityMapperConfig;
011import com.unboundid.directory.sdk.ds.types.DirectoryServerContext;
012import com.unboundid.ldap.sdk.LDAPException;
013import com.unboundid.util.args.ArgumentException;
014import com.unboundid.util.args.ArgumentParser;
015import com.unboundid.util.args.StringArgument;
016
017/**
018 * An example UnboundID Server SDK extension that implements a simple identity
019 * mapper.
020 */
021public class MyExampleExtension extends IdentityMapper
022{
023  private String emailDomain;
024
025  @Override
026  public String getExtensionName()
027  {
028    return "Example Identity Mapper";
029  }
030
031
032  @Override
033  public String[] getExtensionDescription()
034  {
035    return new String[] {
036        "This is an example identity mapper extension that converts a " +
037            "username to an email address."
038    };
039  }
040
041
042  @Override
043  public Map<List<String>, String> getExamplesArgumentSets()
044  {
045    List<String> exampleArguments1 = Arrays.asList("emailDomain", "mydomain.com");
046    List<String> exampleArguments2 = Collections.emptyList();
047    Map<List<String>, String> exampleArgumentSets = new HashMap<>();
048    exampleArgumentSets.put(exampleArguments1,
049                            "Sets 'mydomain.com' as the domain to be used " +
050                                "when contructing email addresses.");
051    exampleArgumentSets.put(exampleArguments2,
052                            "Uses the default email domain of 'example.com'.");
053    return exampleArgumentSets;
054  }
055
056
057  @Override
058  public void defineConfigArguments(final ArgumentParser parser)
059      throws ArgumentException
060  {
061    parser.addArgument(new StringArgument(
062        null, "emailDomain",
063        true, 1, "emailDomain",
064        "The domain name to be used when constructing an email address.",
065        "example.com"));
066  }
067
068
069  @Override
070  public void initializeIdentityMapper(
071      final DirectoryServerContext serverContext,
072      final IdentityMapperConfig config,
073      final ArgumentParser parser)
074      throws LDAPException
075  {
076    final StringArgument emailDomainArgument =
077        parser.getStringArgument("emailDomain");
078    emailDomain = emailDomainArgument.getValue();
079  }
080
081
082  @Override
083  public String mapUsername(String username) throws LDAPException
084  {
085    return String.format("%s@%s", username, emailDomain);
086  }
087}