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}