1.
Prepopulate Adapter in OIM uses the plugin point oracle.iam.request.plugins.PrePopulationAdapter.
2. Write the
Java code which returns the value which has to be populated on the form.
3.
This code will implement the plugin point oracle.iam.request.plugins.PrePopulationAdapter.
Code Snippet:-
package com.oracle.oim.utility.eventhandler;
import java.io.Serializable;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Logger;
import
oracle.iam.identity.exception.NoSuchUserException;
import
oracle.iam.identity.exception.UserLookupException;
import
oracle.iam.identity.usermgmt.api.UserManager;
import oracle.iam.identity.usermgmt.vo.User;
import oracle.iam.platform.Platform;
import
oracle.iam.platform.authz.exception.AccessDeniedException;
import
oracle.iam.request.exception.RequestServiceException;
import oracle.iam.request.vo.Beneficiary;
import oracle.iam.request.vo.RequestData;
public class DepartmentPrepopulate implements oracle.iam.request.plugins.PrePopulationAdapter{
private static final Logger LOGGER = Logger.getLogger("com.oracle.oim.utility.eventhandler.DepartmentPrepopulate");
@Override
public Serializable prepopulate(RequestData reqData) throws RequestServiceException {
LOGGER.fine("DepartmentPrepopulate ::
prepopulate :: Inside Prepopulate method ");
LOGGER.fine("DepartmentPrepopulate ::
prepopulate :: name "+DepartmentPrepopulate.class.getName());
UserManager uMan=Platform.getService(UserManager.class);
List<Beneficiary> benList =
reqData.getBeneficiaries();
String dep=null;
//<Implement Logic here>
catch (NoSuchUserException e) {
// TODO
Auto-generated catch block
LOGGER.fine("DepartmentPrepopulate
:: prepopulate ::
NoSuchUserException"+e.getMessage() );
e.printStackTrace();
} catch (UserLookupException e) {
// TODO
Auto-generated catch block
LOGGER.fine("DepartmentPrepopulate
:: prepopulate ::
UserLookupException"+e.getMessage() );
e.printStackTrace();
} catch (AccessDeniedException e) {
// TODO
Auto-generated catch block
LOGGER.fine("DepartmentPrepopulate
:: prepopulate ::
AccessDeniedException"+e.getMessage() );
e.printStackTrace();
}
}
}
// TODO Auto-generated method stub
return dep;
}
}
4. Export the code into a Jar
file and put it in a folder named as lib.
5. Create a plugin.xml file
as below:-
<?xml
version="1.0" encoding="UTF-8" ?>
<oimplugins
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<plugins
pluginpoint="oracle.iam.request.plugins.PrePopulationAdapter">
<plugin pluginclass=
"com.oracle.oim.utility.eventhandler.DepartmentPrepopulate"
version="1.0" name="DepartmentPrePop">
<metadata name="PrePopulationAdapater">
<value><Form_name>::<Field_label>
</value>
</metadata>
</plugin>
</plugins>
</oimplugins>
6. Put the Plugin.xml and lib
folder in a structure as below:
7. After the zip is prepared
put it into <Middleware_home>/Oracle_IDM/server/plugins folder.
8. Go to <Middleware_home>/Oracle_IDM/server/plugin_utility
folder and change the ant.properties file.
9. Update the wls.home, oim.home,
login.config and mw.home with proper details.
10. Run the ant
-f pluginregistration.xml register command to register the plugin.
do I have to restart OIM after that?
ReplyDeleteNo.. It works without restart.
Deleteant -f pluginregistration.xml
ReplyDeletebash: ant: command not found
Ant should be set in your path. Add ant 1.7 in your path and this will work.
Deletewhich data will i pass instead of ::.
ReplyDeleteI think is UD_* & is UD_* form field label right