public static BasicSecuritySystem selfConfigure(SessionManager sm,
ServiceFactory sf, SessionCache cache) {
CurrentDetails cd = new CurrentDetails(cache);
SystemTypes st = new SystemTypes();
TokenHolder th = new TokenHolder();
Roles roles = new Roles();
final SessionProvider sessionProvider = new SessionProviderInMemory(roles, new NodeProviderInMemory(""), null);
final OmeroInterceptor oi = new OmeroInterceptor(roles,
st, new ExtendedMetadata.Impl(),
cd, th, new PerSessionStats(cd),
new LightAdminPrivileges(roles), null, new HashSet<String>(), new HashSet<String>());
SecurityFilterHolder holder = new SecurityFilterHolder(
cd, new OneGroupSecurityFilter(roles),
new AllGroupsSecurityFilter(null, roles),
new SharingSecurityFilter(roles, null));
BasicSecuritySystem sec = new BasicSecuritySystem(oi, st, cd, sm, sessionProvider, new EventProviderInMemory(),
roles, sf, new TokenHolder(), Collections.<SecurityFilter>singletonList(holder), new DefaultPolicyService(),
new BasicACLVoter(cd, st, th, holder, sessionProvider, new ReadOnlyStatus(false, false)));
return sec;
}