Advanced Customization > Business Logic Customization > Packages Customization > Identifying Users in Context Replication and Activating Replicated Users > Sample Code
  
Sample Code
Writing a Custom Delegate
A custom delegate would implement the PrincipaMatchDelegate and override the match(…) API to provide some custom logic. The following example shows the logic for finding a match by user name:
public WTPrincipal match(WTPrincipal querySpec) throws WTException {

if (querySpec == null || !(querySpec instanceof WTUser)) {
if (logger.isDebugEnabled()) logger.debug("Input principal is null");
return null;
}

// Clone right away to avoid auto-inflate when calling getters
WTUser querySpecClone = (WTUser) querySpec.cloneAsInflated();

String userName = ((WTUser) querySpecClone).getName();
if (userName == null || userName.trim().isEmpty()) return null;

WTPrincipal result = null;
String userNames[] = new String[] { userName };

result = OrganizationServicesHelper.manager.findPersistedUser
userNames, null /* email */, null /* fullName */, null /* surname
*/, null /* status */, null /* internal */, Boolean.FALSE /* disabled */);

return result;
}
Examples of Usage in Windchill Code
<Windchill>\codebase\service.properties
<Windchill>\codebase\wt\org\delegate\PrincipalMatchDelegate.class
<Windchill>\codebase\wt\org\delegate\ImportedUserByUserNameMatchDelegate.class
<Windchill>\codebase\wt\org\delegate\ImportedUserByEmailIdMatchDelegate.class
<Windchill>\\codebase\wt\org\delegate\ImportedUserByUserNameMatchDelegate.class
<Windchill>\codebase\wt\org\delegate\ReplicatedUserForActivationByUserNameMatchDelegate.class
<Windchill>\codebase\wt\org\delegate\ReplicatedUserForActivationByEmailIdMatchDelegate.class
Packaged Samples
<Windchill>\prog_examples\principal\principalmatchdelegate\ImportedUserByUserNameMatchDelegate.java
<Windchill>\prog_examples\principal\principalmatchdelegate\ReplicatedUserForActivationByUserNameMatchDelegate.java
Related Package/Class Javadoc
wt.org.delegate