- All Implemented Interfaces:
- public class OSUEntityMigrator
- extends java.lang.Object
- implements EntityMigrator
Makes a raw JDBC connection to os_user tables and copies across information into the supplied
|Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public OSUEntityMigrator(RepositoryAccessor osuserRepositoryAccessor,
public void migrate(MigratorConfiguration config,
- The method is organised in a 'strange' way for performance reasons. DON'T change it. Every white space is there for a reason :)
The performace problem was: every time we add a member to a hibernate group, hibernate marks this group object as dirty.
Because hibernate group contains the list of all its members and needs to iterate through all of them when flush() is called.
flush() is called every time hibernate thinks it needs to do it, for example when we call getUser() it first calls flush to make
sure we get up to date data. We structured the code in a way so that flush is not called until we add all users to a group.
That's why we cache the list of users. We also rely on the fact that targetGroupManager maintains its own cache and does not need
to call flush() each time we get a group by a groupname.
- Specified by:
migrate in interface
RepositoryException - if there is no non OSUser repository was included in target repository Accessor
Copyright © 2005-2008 Atlassian Software Systems Pty Ltd. All Rights Reserved.