diff --git a/config/alfresco/application-context.xml b/config/alfresco/application-context.xml
index 2e935fd494..9f5483131c 100644
--- a/config/alfresco/application-context.xml
+++ b/config/alfresco/application-context.xml
@@ -17,7 +17,7 @@
-
+
@@ -27,8 +27,8 @@
-
-
+
+
@@ -36,7 +36,6 @@
-
@@ -47,18 +46,18 @@
-->
-
-
+
diff --git a/config/alfresco/authentication-services-context.xml b/config/alfresco/authentication-services-context.xml
index e1c71a6898..1265f434de 100644
--- a/config/alfresco/authentication-services-context.xml
+++ b/config/alfresco/authentication-services-context.xml
@@ -9,10 +9,10 @@
-
+
-
+
@@ -20,8 +20,8 @@
-
-
+
+
@@ -96,13 +96,10 @@
-
-
-
-
+
@@ -119,7 +116,7 @@
-
+
@@ -150,7 +147,7 @@
-
+
@@ -163,19 +160,19 @@
-
+
-
+
-
+
@@ -255,7 +252,7 @@
-
+
@@ -270,7 +267,7 @@
-
+
@@ -290,13 +287,13 @@
-
+
-
+
@@ -324,7 +321,7 @@
-
+
@@ -352,8 +349,8 @@
-
-
+
+
diff --git a/config/alfresco/authority-services-context.xml b/config/alfresco/authority-services-context.xml
index c6af6b9f48..2cade7c63e 100644
--- a/config/alfresco/authority-services-context.xml
+++ b/config/alfresco/authority-services-context.xml
@@ -9,9 +9,9 @@
-
+
-
+
@@ -51,13 +51,13 @@
-
+
-
+
@@ -73,9 +73,6 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/config/alfresco/bootstrap-context.xml b/config/alfresco/bootstrap-context.xml
index 5b13075c2c..cbd185cf06 100644
--- a/config/alfresco/bootstrap-context.xml
+++ b/config/alfresco/bootstrap-context.xml
@@ -4,14 +4,14 @@
@@ -60,7 +60,7 @@
-
+
@@ -73,7 +73,7 @@
-
+
@@ -203,7 +203,7 @@
/${spaces.company_home.childname}/${spaces.dictionary.childname}
alfresco/bootstrap/webScriptsReadme.xml
-
+
/${spaces.company_home.childname}/${spaces.dictionary.childname}
alfresco/bootstrap/customModelsSpace.acp
@@ -216,16 +216,16 @@
/${spaces.company_home.childname}/${spaces.dictionary.childname}
alfresco/bootstrap/customWebClientExtensionSpace.xml
-
+
/${spaces.company_home.childname}/${spaces.dictionary.childname}
alfresco/bootstrap/customWorkflowDefsSpace.acp
-
+
-
+
@@ -274,15 +274,8 @@
-
-
-
-
-
-
-
-
+
@@ -310,13 +303,13 @@
-
+
-
+
@@ -385,15 +378,15 @@
-
+
-
+
-
+
@@ -401,7 +394,7 @@
-
+
@@ -409,13 +402,13 @@
-
+
-
+
@@ -432,7 +425,7 @@
-
+
@@ -446,5 +439,5 @@
-->
-
+
diff --git a/config/alfresco/hibernate-context.xml b/config/alfresco/hibernate-context.xml
index b12c77277d..8b36c30b19 100644
--- a/config/alfresco/hibernate-context.xml
+++ b/config/alfresco/hibernate-context.xml
@@ -3,7 +3,7 @@
-
+
@@ -11,7 +11,7 @@
-
+
true
@@ -38,7 +38,7 @@
-
+
org/alfresco/repo/domain/hibernate/Node.hbm.xml
org/alfresco/repo/domain/hibernate/Store.hbm.xml
org/alfresco/repo/domain/hibernate/Transaction.hbm.xml
@@ -47,8 +47,7 @@
org/alfresco/repo/domain/hibernate/Permission.hbm.xml
org/alfresco/repo/avm/hibernate/AVM.hbm.xml
org/alfresco/repo/attributes/hibernate/Attributes.hbm.xml
- org/alfresco/repo/simple/permission/AuthorityCapability.hbm.xml
-
+
org/alfresco/repo/audit/hibernate/Audit.hbm.xml
@@ -111,7 +110,7 @@
org/jbpm/job/ExecuteActionJob.hbm.xml
org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml
org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml
- org/alfresco/repo/workflow/jbpm/WorkflowTaskInstance.hbm.xml
+ org/alfresco/repo/workflow/jbpm/WorkflowTaskInstance.hbm.xml
org/jbpm/taskmgmt/exe/PooledActor.hbm.xml
org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml
org/jbpm/logging/log/ProcessLog.hbm.xml
@@ -158,12 +157,12 @@
${cache.strategy}
${cache.strategy}
${cache.strategy}
-
+
${cache.strategy}
${cache.strategy}
${cache.strategy}
${cache.strategy}
-
+
${cache.strategy}
${cache.strategy}
${cache.strategy}
@@ -182,7 +181,7 @@
-
+
@@ -192,14 +191,14 @@
-
+
-
+
@@ -214,7 +213,7 @@
-
+
@@ -223,13 +222,13 @@
-
+
-
+
@@ -239,9 +238,9 @@
-
+
-
+
@@ -253,7 +252,7 @@
-
+
org.alfresco.repo.node.db.NodeDaoService
@@ -268,7 +267,7 @@
-
+
@@ -280,5 +279,5 @@
-
+
\ No newline at end of file
diff --git a/config/alfresco/simple-permissions-context.xml b/config/alfresco/simple-permissions-context.xml
deleted file mode 100644
index 6956ab4675..0000000000
--- a/config/alfresco/simple-permissions-context.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- read
- write
- delete
- shimmy
- shake
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/alfresco/version.properties b/config/alfresco/version.properties
index c0f6811559..87a05c9f2f 100644
--- a/config/alfresco/version.properties
+++ b/config/alfresco/version.properties
@@ -19,4 +19,4 @@ version.build=@build-number@
# Schema number
-version.schema=107
+version.schema=108
diff --git a/source/java/org/alfresco/repo/avm/util/RawServices.java b/source/java/org/alfresco/repo/avm/util/RawServices.java
index 44ab0ac473..d73440e8d7 100644
--- a/source/java/org/alfresco/repo/avm/util/RawServices.java
+++ b/source/java/org/alfresco/repo/avm/util/RawServices.java
@@ -1,5 +1,5 @@
/**
- *
+ *
*/
package org.alfresco.repo.avm.util;
@@ -10,7 +10,6 @@ import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.repository.ContentService;
import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.security.AuthorityService;
-import org.alfresco.service.simple.permission.AuthorityCapabilityRegistry;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
@@ -24,75 +23,70 @@ public class RawServices implements ApplicationContextAware
* The instance of RawServices
*/
private static RawServices fgInstance;
-
+
/**
* The Application Context.
*/
- private ApplicationContext fContext;
-
+ private ApplicationContext fContext;
+
/**
* The AuthenticationComponent.
*/
private AuthenticationComponent fAuthenticationComponent;
-
+
/**
* The Content Service.
*/
private ContentService fContentService;
-
+
/**
* The Mimetype Service.
*/
private MimetypeService fMimetypeService;
-
+
/**
* The Dictionary Service.
*/
private DictionaryService fDictionaryService;
-
+
/**
* The Content Store.
*/
private ContentStore fContentStore;
-
+
/**
* The LookupCache.
*/
private LookupCache fLookupCache;
-
+
/**
* The Authority Service.
*/
private AuthorityService fAuthorityService;
-
- /**
- * The CapabilityRegistry.
- */
- private AuthorityCapabilityRegistry fCapabilityRegistry;
-
+
/**
* Default constructor.
*/
public RawServices()
{
- fgInstance = this;
+ fgInstance = this;
}
-
+
public static RawServices Instance()
{
return fgInstance;
}
-
+
public void setApplicationContext(ApplicationContext applicationContext)
{
fContext = applicationContext;
}
-
+
public AuthenticationComponent getAuthenticationComponent()
{
if (fAuthenticationComponent == null)
{
- fAuthenticationComponent =
+ fAuthenticationComponent =
(AuthenticationComponent)fContext.getBean("authenticationComponent");
}
return fAuthenticationComponent;
@@ -102,7 +96,7 @@ public class RawServices implements ApplicationContextAware
{
if (fContentService == null)
{
- fContentService =
+ fContentService =
(ContentService)fContext.getBean("contentService");
}
return fContentService;
@@ -112,12 +106,12 @@ public class RawServices implements ApplicationContextAware
{
if (fMimetypeService == null)
{
- fMimetypeService =
+ fMimetypeService =
(MimetypeService)fContext.getBean("mimetypeService");
}
return fMimetypeService;
}
-
+
public DictionaryService getDictionaryService()
{
if (fDictionaryService == null)
@@ -127,7 +121,7 @@ public class RawServices implements ApplicationContextAware
}
return fDictionaryService;
}
-
+
public ContentStore getContentStore()
{
if (fContentStore == null)
@@ -137,7 +131,7 @@ public class RawServices implements ApplicationContextAware
}
return fContentStore;
}
-
+
public LookupCache getLookupCache()
{
if (fLookupCache == null)
@@ -146,7 +140,7 @@ public class RawServices implements ApplicationContextAware
}
return fLookupCache;
}
-
+
public AuthorityService getAuthorityService()
{
if (fAuthorityService == null)
@@ -157,15 +151,6 @@ public class RawServices implements ApplicationContextAware
return fAuthorityService;
}
- public AuthorityCapabilityRegistry getAuthorityCapabilityRegistry()
- {
- if (fCapabilityRegistry == null)
- {
- fCapabilityRegistry = (AuthorityCapabilityRegistry)fContext.getBean("authorityCapabilityRegistry");
- }
- return fCapabilityRegistry;
- }
-
public ApplicationContext getContext()
{
return fContext;
diff --git a/source/java/org/alfresco/repo/security/authentication/AuthenticationTest.java b/source/java/org/alfresco/repo/security/authentication/AuthenticationTest.java
index 179d470718..1d32e18f02 100644
--- a/source/java/org/alfresco/repo/security/authentication/AuthenticationTest.java
+++ b/source/java/org/alfresco/repo/security/authentication/AuthenticationTest.java
@@ -15,11 +15,11 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * As a special exception to the terms and conditions of version 2.0 of
- * the GPL, you may redistribute this Program in connection with Free/Libre
- * and Open Source Software ("FLOSS") applications as described in Alfresco's
- * FLOSS exception. You should have recieved a copy of the text describing
- * the FLOSS exception, and it is also available here:
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.repo.security.authentication;
@@ -61,7 +61,6 @@ import org.alfresco.service.namespace.DynamicNamespacePrefixResolver;
import org.alfresco.service.namespace.NamespacePrefixResolver;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
-import org.alfresco.service.simple.permission.AuthorityCapabilityRegistry;
import org.alfresco.service.transaction.TransactionService;
import org.alfresco.util.ApplicationContextHelper;
import org.springframework.context.ApplicationContext;
@@ -72,7 +71,7 @@ public class AuthenticationTest extends TestCase
private static ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();
private NodeService nodeService;
-
+
private TenantService tenantService;
private SearchService searchService;
@@ -96,7 +95,7 @@ public class AuthenticationTest extends TestCase
private SaltSource saltSource;
private TicketComponent ticketComponent;
-
+
private SimpleCache ticketsCache;
private AuthenticationService authenticationService;
@@ -109,8 +108,6 @@ public class AuthenticationTest extends TestCase
private AuthenticationComponent authenticationComponentImpl;
- private AuthorityCapabilityRegistry authorityCapabilityRegistry;
-
public AuthenticationTest()
{
super();
@@ -134,7 +131,6 @@ public class AuthenticationTest extends TestCase
pubAuthenticationService = (AuthenticationService) ctx.getBean("AuthenticationService");
authenticationComponent = (AuthenticationComponent) ctx.getBean("authenticationComponent");
authenticationComponentImpl = (AuthenticationComponent) ctx.getBean("authenticationComponent");
- authorityCapabilityRegistry = (AuthorityCapabilityRegistry) ctx.getBean("authorityCapabilityRegistry");
// permissionServiceSPI = (PermissionServiceSPI)
// ctx.getBean("permissionService");
ticketsCache = (SimpleCache) ctx.getBean("ticketsCache");
@@ -242,7 +238,7 @@ public class AuthenticationTest extends TestCase
{
authenticationService.authenticate("GUEST", "".toCharArray());
}
-
+
public void testCreateUsers()
{
authenticationService.createAuthentication("GUEST", "".toCharArray());
@@ -265,7 +261,7 @@ public class AuthenticationTest extends TestCase
{
// TODO - could create tenant domain 'chocolate.chip.cookie.com'
}
-
+
authenticationService.createAuthentication("Andy_Woof/Domain", "".toCharArray());
authenticationService.authenticate("Andy_Woof/Domain", "".toCharArray());
assertEquals("Andy_Woof/Domain", authenticationService.getCurrentUserName());
@@ -273,7 +269,7 @@ public class AuthenticationTest extends TestCase
authenticationService.createAuthentication("Andy_ Woof/Domain", "".toCharArray());
authenticationService.authenticate("Andy_ Woof/Domain", "".toCharArray());
assertEquals("Andy_ Woof/Domain", authenticationService.getCurrentUserName());
-
+
if (! tenantService.isEnabled())
{
authenticationService.createAuthentication("Andy `\u00ac\u00a6!\u00a3$%^&*()-_=+\t\n\u0000[]{};'#:@~,./<>?\\|", "".toCharArray());
@@ -295,7 +291,6 @@ public class AuthenticationTest extends TestCase
dao.setDictionaryService(dictionaryService);
dao.setNamespaceService(getNamespacePrefixReolsver(""));
dao.setPasswordEncoder(passwordEncoder);
- dao.setAuthorityCapabilityRegistry(authorityCapabilityRegistry);
dao.createUser("Andy", "cabbage".toCharArray());
assertNotNull(dao.getUserOrNull("Andy"));
@@ -702,7 +697,7 @@ public class AuthenticationTest extends TestCase
tc.validateTicket(ticket);
assertEquals(ticketComponent.getCurrentTicket("Andy"), ticket);
-
+
dao.deleteUser("Andy");
// assertNull(dao.getUserOrNull("Andy"));
diff --git a/source/java/org/alfresco/repo/security/authentication/RepositoryAuthenticationDao.java b/source/java/org/alfresco/repo/security/authentication/RepositoryAuthenticationDao.java
index 6f8d0f87c4..2a8b828a39 100644
--- a/source/java/org/alfresco/repo/security/authentication/RepositoryAuthenticationDao.java
+++ b/source/java/org/alfresco/repo/security/authentication/RepositoryAuthenticationDao.java
@@ -15,11 +15,11 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * As a special exception to the terms and conditions of version 2.0 of
- * the GPL, you may redistribute this Program in connection with Free/Libre
- * and Open Source Software ("FLOSS") applications as described in Alfresco's
- * FLOSS exception. You should have recieved a copy of the text describing
- * the FLOSS exception, and it is also available here:
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.repo.security.authentication;
@@ -53,7 +53,6 @@ import org.alfresco.service.cmr.search.SearchService;
import org.alfresco.service.namespace.NamespacePrefixResolver;
import org.alfresco.service.namespace.QName;
import org.alfresco.service.namespace.RegexQNamePattern;
-import org.alfresco.service.simple.permission.AuthorityCapabilityRegistry;
import org.springframework.dao.DataAccessException;
public class RepositoryAuthenticationDao implements MutableAuthenticationDao
@@ -71,8 +70,6 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao
private SearchService searchService;
private PasswordEncoder passwordEncoder;
-
- private AuthorityCapabilityRegistry authorityCapabilityRegistry;
private boolean userNamesAreCaseSensitive;
@@ -115,11 +112,6 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao
{
this.searchService = searchService;
}
-
- public void setAuthorityCapabilityRegistry(AuthorityCapabilityRegistry registry)
- {
- this.authorityCapabilityRegistry = registry;
- }
public UserDetails loadUserByUsername(String incomingUserName) throws UsernameNotFoundException,
DataAccessException
@@ -156,11 +148,11 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao
{
return null;
}
-
+
SearchParameters sp = new SearchParameters();
sp.setLanguage(SearchService.LANGUAGE_LUCENE);
sp.setQuery("@usr\\:username:\"" + searchUserName + "\"");
-
+
try
{
sp.addStore(tenantService.getName(searchUserName, STOREREF_USERS));
@@ -219,7 +211,7 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao
}
}
}
-
+
return returnRef;
}
finally
@@ -252,7 +244,6 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao
properties.put(ContentModel.PROP_ACCOUNT_LOCKED, Boolean.valueOf(false));
nodeService.createNode(typesNode, ContentModel.ASSOC_CHILDREN, ContentModel.TYPE_USER, ContentModel.TYPE_USER,
properties);
- authorityCapabilityRegistry.addAuthority(caseSensitiveUserName, null);
}
private NodeRef getUserFolderLocation(String caseSensitiveUserName)
@@ -312,7 +303,6 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao
throw new AuthenticationException("User name does not exist: " + userName);
}
nodeService.deleteNode(userRef);
- authorityCapabilityRegistry.removeAuthority(userName);
}
public Object getSalt(UserDetails userDetails)
diff --git a/source/java/org/alfresco/repo/security/authority/AuthorityDAOImpl.java b/source/java/org/alfresco/repo/security/authority/AuthorityDAOImpl.java
index a0a3317d82..f441c0d3e7 100644
--- a/source/java/org/alfresco/repo/security/authority/AuthorityDAOImpl.java
+++ b/source/java/org/alfresco/repo/security/authority/AuthorityDAOImpl.java
@@ -15,11 +15,11 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * As a special exception to the terms and conditions of version 2.0 of
- * the GPL, you may redistribute this Program in connection with Free/Libre
- * and Open Source Software ("FLOSS") applications as described in Alfresco's
- * FLOSS exception. You should have recieved a copy of the text describing
- * the FLOSS exception, and it is also available here:
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.repo.security.authority;
@@ -51,7 +51,6 @@ import org.alfresco.service.cmr.security.AuthorityType;
import org.alfresco.service.namespace.NamespacePrefixResolver;
import org.alfresco.service.namespace.QName;
import org.alfresco.service.namespace.RegexQNamePattern;
-import org.alfresco.service.simple.permission.AuthorityCapabilityRegistry;
import org.alfresco.util.ISO9075;
public class AuthorityDAOImpl implements AuthorityDAO
@@ -71,8 +70,6 @@ public class AuthorityDAOImpl implements AuthorityDAO
private DictionaryService dictionaryService;
private SimpleCache> userToAuthorityCache;
-
- private AuthorityCapabilityRegistry authorityCapabilityRegistry;
public AuthorityDAOImpl()
{
@@ -106,11 +103,6 @@ public class AuthorityDAOImpl implements AuthorityDAO
this.userToAuthorityCache = userToAuthorityCache;
}
- public void setAuthorityCapabilityRegistry(AuthorityCapabilityRegistry registry)
- {
- this.authorityCapabilityRegistry = registry;
- }
-
public boolean authorityExists(String name)
{
NodeRef ref = getAuthorityOrNull(name);
@@ -150,7 +142,6 @@ public class AuthorityDAOImpl implements AuthorityDAO
throw new AlfrescoRuntimeException("Authorities of the type "
+ AuthorityType.getAuthorityType(childName) + " may not be added to other authorities");
}
- authorityCapabilityRegistry.addAuthority(childName, parentName);
}
public void createAuthority(String parentName, String name)
@@ -173,7 +164,6 @@ public class AuthorityDAOImpl implements AuthorityDAO
nodeService.createNode(authorityContainerRef, ContentModel.ASSOC_CHILDREN, QName.createQName("usr", name,
namespacePrefixResolver), ContentModel.TYPE_AUTHORITY_CONTAINER, props);
}
- authorityCapabilityRegistry.addAuthority(name, parentName);
}
public void deleteAuthority(String name)
@@ -185,7 +175,6 @@ public class AuthorityDAOImpl implements AuthorityDAO
}
nodeService.deleteNode(nodeRef);
userToAuthorityCache.clear();
- authorityCapabilityRegistry.removeAuthority(name);
}
public Set getAllRootAuthorities(AuthorityType type)
@@ -256,7 +245,6 @@ public class AuthorityDAOImpl implements AuthorityDAO
nodeService.removeChild(parentRef, childRef);
userToAuthorityCache.clear();
}
- authorityCapabilityRegistry.removeAuthorityChild(parentName, childName);
}
public Set getContainingAuthorities(AuthorityType type, String name, boolean immediate)
diff --git a/source/java/org/alfresco/repo/simple/permission/ACLImpl.java b/source/java/org/alfresco/repo/simple/permission/ACLImpl.java
deleted file mode 100644
index 6b904fc32f..0000000000
--- a/source/java/org/alfresco/repo/simple/permission/ACLImpl.java
+++ /dev/null
@@ -1,425 +0,0 @@
-/*
- * Copyright (C) 2005-2007 Alfresco Software Limited.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
- * As a special exception to the terms and conditions of version 2.0 of
- * the GPL, you may redistribute this Program in connection with Free/Libre
- * and Open Source Software ("FLOSS") applications as described in Alfresco's
- * FLOSS exception. You should have recieved a copy of the text describing
- * the FLOSS exception, and it is also available here:
- * http://www.alfresco.com/legal/licensing
- */
-
-package org.alfresco.repo.simple.permission;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.alfresco.repo.avm.util.RawServices;
-import org.alfresco.service.cmr.security.AuthorityType;
-import org.alfresco.service.simple.permission.ACL;
-import org.alfresco.service.simple.permission.AuthorityCapabilityRegistry;
-
-/**
- * Basic implementation of a simple ACL.
- * @author britt
- */
-public class ACLImpl implements ACL
-{
- private static final long serialVersionUID = -8720314753104805631L;
-
- /**
- * Map of capabilities to authorities allowed.
- */
- private Map> fAllowed;
-
- /**
- * Map of capabilities to authorities denied.
- */
- private Map> fDenied;
-
- /**
- * Should this ACL be inherited.
- */
- private boolean fInherit;
-
- /**
- * String (compact) representation of ACL.
- */
- private String fStringRep;
-
- /**
- * Reference to the capability registry.
- */
- private transient AuthorityCapabilityRegistry fCapabilityRegistry;
-
- /**
- * Initialize a brand new one.
- * @param inherit Should this ACL be inherited.
- */
- public ACLImpl(boolean inherit)
- {
- fInherit = inherit;
- fCapabilityRegistry = RawServices.Instance().getAuthorityCapabilityRegistry();
- fAllowed = new HashMap>();
- fDenied = new HashMap>();
- fStringRep = null;
- }
-
- /**
- * Initialize from an external string representation.
- * @param rep
- */
- public ACLImpl(String rep)
- {
- this(true);
- fStringRep = rep;
- }
-
- public ACLImpl(ACL other)
- {
- this(true);
- fStringRep = other.getStringRepresentation();
- }
-
- /* (non-Javadoc)
- * @see org.alfresco.service.simple.permission.ACL#allow(java.lang.String, java.lang.String[])
- */
- public void allow(String capability, String... authorities)
- {
- capability = capability.toLowerCase();
- List auths = new ArrayList();
- for (String auth : authorities)
- {
- auths.add(fCapabilityRegistry.normalizeAuthority(auth));
- }
- digest();
- // First remove any explicit denies.
- Set denied = fDenied.get(capability);
- if (denied != null)
- {
- for (String authority : auths)
- {
- denied.remove(authority);
- }
- }
- // Add the authorities to the allowed list.
- Set allowed = fAllowed.get(capability);
- if (allowed == null)
- {
- allowed = new HashSet();
- fAllowed.put(capability, allowed);
- }
- for (String authority : auths)
- {
- allowed.add(authority);
- }
- }
-
- /**
- * Helper to decode from the string representation.
- */
- private void digest()
- {
- if (fStringRep == null)
- {
- return;
- }
- String[] segments = fStringRep.split("\\|");
- fInherit = segments[0].equals("i");
- digestMap(segments[1], fAllowed);
- digestMap(segments[2], fDenied);
- fStringRep = null;
- }
-
- /**
- * Sub helper for decoding string representation.
- * @param string The partial string representation.
- * @param map The map to update.
- */
- private void digestMap(String rep, Map> map)
- {
- String[] segments = rep.split(":");
- if (segments.length == 0 || segments[0].equals(""))
- {
- // This means there are no explicit entries.
- return;
- }
- for (String entryRep : segments)
- {
- String[] entryRegs = entryRep.split(";");
- String capability = fCapabilityRegistry.getCapabilityName(Integer.parseInt(entryRegs[0], 32));
- if (capability == null)
- {
- continue;
- }
- Set authorities = new HashSet();
- map.put(capability, authorities);
- for (int i = 1; i < entryRegs.length; ++i)
- {
- String authority = fCapabilityRegistry.getAuthorityName(Integer.parseInt(entryRegs[i], 32));
- if (authority == null)
- {
- continue;
- }
- authorities.add(authority);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.alfresco.service.simple.permission.ACL#can(java.lang.String, boolean, java.lang.String)
- */
- public boolean can(String authority, boolean isOwner, String capability)
- {
- authority = fCapabilityRegistry.normalizeAuthority(authority);
- capability = capability.toLowerCase();
- digest();
- AuthorityType type = AuthorityType.getAuthorityType(authority);
- // Admin trumps.
- if (type == AuthorityType.ADMIN)
- {
- return true;
- }
- // Look for denies first.
- Set denied = fDenied.get(capability);
- if (denied != null)
- {
- if (denied.contains(authority))
- {
- return false;
- }
- for (String auth : denied)
- {
- if (fCapabilityRegistry.getContainedAuthorities(auth).contains(authority))
- {
- return false;
- }
- }
- }
- // Now look for allows.
- Set allowed = fAllowed.get(capability);
- if (allowed != null)
- {
- if (allowed.contains(authority))
- {
- return true;
- }
- for (String auth : allowed)
- {
- if (fCapabilityRegistry.getContainedAuthorities(auth).contains(authority))
- {
- return true;
- }
- }
- }
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.alfresco.service.simple.permission.ACL#deny(java.lang.String, java.lang.String[])
- */
- public void deny(String capability, String ... authorities)
- {
- capability = capability.toLowerCase();
- List auths = new ArrayList();
- for (String auth : authorities)
- {
- auths.add(fCapabilityRegistry.normalizeAuthority(auth));
- }
- digest();
- // Remove corresponding explicit allows.
- Set allowed = fAllowed.get(capability);
- if (allowed != null)
- {
- for (String authority : auths)
- {
- allowed.remove(authority);
- }
- }
- // Now add denies.
- Set denied = fDenied.get(capability);
- if (denied == null)
- {
- denied = new HashSet();
- fDenied.put(capability, denied);
- }
- for (String authority : auths)
- {
- if (AuthorityType.getAuthorityType(authority) == AuthorityType.ADMIN)
- {
- continue;
- }
- denied.add(authority);
- }
- }
-
- /* (non-Javadoc)
- * @see org.alfresco.service.simple.permission.ACL#getAllowed(java.lang.String)
- */
- public Set getAllowed(String capability)
- {
- capability = capability.toLowerCase();
- digest();
- Set allowed = new HashSet();
- allowed.add(AuthorityType.ADMIN.getFixedString());
- // Add the explicitly allowed.
- Set expAllowed = fAllowed.get(capability);
- if (expAllowed == null)
- {
- return allowed;
- }
- allowed.addAll(expAllowed);
- for (String authority : expAllowed)
- {
- allowed.addAll(fCapabilityRegistry.getContainedAuthorities(authority));
- }
- // Now remove based on denials.
- Set denied = fDenied.get(capability);
- if (denied == null)
- {
- return allowed;
- }
- allowed.removeAll(denied);
- // Now those that are indirectly denied.
- for (String authority : denied)
- {
- allowed.removeAll(fCapabilityRegistry.getContainedAuthorities(authority));
- }
- return allowed;
- }
-
- /* (non-Javadoc)
- * @see org.alfresco.service.simple.permission.ACL#getCapabilities(java.lang.String, boolean)
- */
- public Set getCapabilities(String authority, boolean isOwner)
- {
- authority = fCapabilityRegistry.normalizeAuthority(authority);
- digest();
- AuthorityType type = AuthorityType.getAuthorityType(authority);
- if (type == AuthorityType.ADMIN)
- {
- return fCapabilityRegistry.getAllCapabilities();
- }
- Set capabilities = new HashSet();
- // First run through the allowed entries.
- Set containers = null;
- for (Map.Entry> entry : fAllowed.entrySet())
- {
- if (entry.getValue().contains(authority))
- {
- capabilities.add(entry.getKey());
- continue;
- }
- if (containers == null)
- {
- containers = fCapabilityRegistry.getContainerAuthorities(authority);
- }
- for (String auth : containers)
- {
- if (entry.getValue().contains(auth))
- {
- capabilities.add(entry.getKey());
- break;
- }
- }
- }
- // Now go through the denials.
- for (Map.Entry> entry : fDenied.entrySet())
- {
- if (!capabilities.contains(entry.getKey()))
- {
- continue;
- }
- Set denied = entry.getValue();
- if (denied.contains(authority))
- {
- capabilities.remove(entry.getKey());
- continue;
- }
- if (containers == null)
- {
- containers = fCapabilityRegistry.getContainerAuthorities(authority);
- }
- for (String auth : containers)
- {
- if (denied.contains(auth))
- {
- capabilities.remove(entry.getKey());
- break;
- }
- }
- }
- return capabilities;
- }
-
- /* (non-Javadoc)
- * @see org.alfresco.service.simple.permission.ACL#getStringRepresentation()
- */
- public String getStringRepresentation()
- {
- if (fStringRep != null)
- {
- return fStringRep;
- }
- StringBuilder builder = new StringBuilder();
- builder.append(fInherit ? 'i' : 'n');
- builder.append('|');
- int count = 0;
- for (Map.Entry> entry : fAllowed.entrySet())
- {
- builder.append(Integer.toString(fCapabilityRegistry.getCapabilityID(entry.getKey()), 32));
- for (String authority : entry.getValue())
- {
- builder.append(';');
- builder.append(Integer.toString(fCapabilityRegistry.getAuthorityID(authority), 32));
- }
- if (count++ < fAllowed.size() - 1)
- {
- builder.append(':');
- }
- }
- builder.append('|');
- count = 0;
- for (Map.Entry> entry : fDenied.entrySet())
- {
- builder.append(Integer.toString(fCapabilityRegistry.getCapabilityID(entry.getKey()), 32));
- for (String authority : entry.getValue())
- {
- builder.append(';');
- builder.append(Integer.toString(fCapabilityRegistry.getAuthorityID(authority), 32));
- }
- if (count++ < fDenied.size() - 1)
- {
- builder.append(':');
- }
- }
- return builder.toString();
- }
-
- /* (non-Javadoc)
- * @see org.alfresco.service.simple.permission.ACL#inherits()
- */
- public boolean inherits()
- {
- digest();
- return fInherit;
- }
-}
diff --git a/source/java/org/alfresco/repo/simple/permission/ACLTest.java b/source/java/org/alfresco/repo/simple/permission/ACLTest.java
deleted file mode 100644
index 4f0bfd2066..0000000000
--- a/source/java/org/alfresco/repo/simple/permission/ACLTest.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright (C) 2005-2007 Alfresco Software Limited.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
- * As a special exception to the terms and conditions of version 2.0 of
- * the GPL, you may redistribute this Program in connection with Free/Libre
- * and Open Source Software ("FLOSS") applications as described in Alfresco's
- * FLOSS exception. You should have recieved a copy of the text describing
- * the FLOSS exception, and it is also available here:
- * http://www.alfresco.com/legal/licensing
- */
-
-package org.alfresco.repo.simple.permission;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.alfresco.repo.security.authentication.AuthenticationComponent;
-import org.alfresco.service.cmr.security.AuthenticationService;
-import org.alfresco.service.cmr.security.AuthorityService;
-import org.alfresco.service.cmr.security.AuthorityType;
-import org.alfresco.service.cmr.security.PersonService;
-import org.alfresco.service.simple.permission.ACL;
-import org.alfresco.service.simple.permission.AuthorityCapabilityRegistry;
-import org.springframework.context.support.FileSystemXmlApplicationContext;
-
-import junit.framework.TestCase;
-
-/**
- * Rudimentary test of ACLs.
- * @author britt
- */
-public class ACLTest extends TestCase
-{
- private static FileSystemXmlApplicationContext fContext = null;
-
- private static PersonService fPersonService;
-
- private static AuthorityService fAuthorityService;
-
- private static AuthenticationService fAuthenticationService;
-
- private static AuthenticationComponent fAuthenticationComponent;
-
- private static AuthorityCapabilityRegistry fCapabilityRegistry;
-
- /* (non-Javadoc)
- * @see junit.framework.TestCase#setUp()
- */
- protected void setUp() throws Exception
- {
- if (fContext == null)
- {
- fContext = new FileSystemXmlApplicationContext("config/alfresco/application-context.xml");
- fPersonService = (PersonService)fContext.getBean("PersonService");
- fAuthorityService = (AuthorityService)fContext.getBean("AuthorityService");
- fAuthenticationService = (AuthenticationService)fContext.getBean("AuthenticationService");
- fAuthenticationComponent = (AuthenticationComponent)fContext.getBean("AuthenticationComponent");
- fAuthenticationComponent.setSystemUserAsCurrentUser();
- fCapabilityRegistry = (AuthorityCapabilityRegistry)fContext.getBean("authorityCapabilityRegistry");
- }
- // Set up sample users groups and roles.
- try
- {
- fAuthenticationService.createAuthentication("Buffy", "Buffy".toCharArray());
- fPersonService.getPerson("Buffy");
- fAuthorityService.createAuthority(AuthorityType.GROUP, null, "Scoobies");
- fAuthorityService.addAuthority("GROUP_Scoobies", "Buffy");
- fAuthenticationService.createAuthentication("Willow", "Willow".toCharArray());
- fPersonService.getPerson("Willow");
- fAuthorityService.addAuthority("GROUP_Scoobies", "Willow");
- fAuthenticationService.createAuthentication("Xander", "Xander".toCharArray());
- fPersonService.getPerson("Xander");
- fAuthorityService.addAuthority("GROUP_Scoobies", "Xander");
- fAuthenticationService.createAuthentication("Tara", "Tara".toCharArray());
- fPersonService.getPerson("Tara");
- fAuthenticationService.createAuthentication("Spike", "Spike".toCharArray());
- fPersonService.getPerson("Spike");
- fAuthorityService.createAuthority(AuthorityType.GROUP, null, "vampires");
- fAuthorityService.addAuthority("GROUP_vampires", "Spike");
- fAuthorityService.createAuthority(AuthorityType.GROUP, null, "soulless");
- fAuthorityService.addAuthority("GROUP_soulless", "Spike");
- }
- catch (Exception e)
- {
- tearDown();
- setUp();
- }
- }
-
- /* (non-Javadoc)
- * @see junit.framework.TestCase#tearDown()
- */
- protected void tearDown() throws Exception
- {
- fAuthenticationService.deleteAuthentication("Buffy");
- fAuthenticationService.deleteAuthentication("Willow");
- fAuthenticationService.deleteAuthentication("Xander");
- fAuthenticationService.deleteAuthentication("Tara");
- fAuthenticationService.deleteAuthentication("Spike");
- fPersonService.deletePerson("Buffy");
- fPersonService.deletePerson("Willow");
- fPersonService.deletePerson("Tara");
- fPersonService.deletePerson("Xander");
- fPersonService.deletePerson("Spike");
- fAuthorityService.deleteAuthority("GROUP_Scoobies");
- fAuthorityService.deleteAuthority("GROUP_vampires");
- fAuthorityService.deleteAuthority("GROUP_soulless");
- }
-
- public void testBasic()
- {
- try
- {
- Set allCaps = fCapabilityRegistry.getAllCapabilities();
- System.out.println(allCaps);
- System.out.println(fCapabilityRegistry.getAllAuthorities());
- ACL acl = new ACLImpl(true);
- acl.allow("read", "GROUP_Scoobies", "GROUP_vampires");
- acl.allow("write", "GROUP_Scoobies", "GROUP_vampires");
- acl.allow("delete", "GROUP_Scoobies", "GROUP_vampires");
- acl.allow("shimmy", "GROUP_Scoobies", "GROUP_vampires");
- acl.allow("shake", "GROUP_vampires", "Tara");
- acl.deny("delete", "Xander", "GROUP_soulless");
- acl.deny("shake", "Spike");
- checkEvaluation(allCaps, acl, "Spike");
- checkEvaluation(allCaps, acl, "Tara");
- checkEvaluation(allCaps, acl, "Xander");
- checkEvaluation(allCaps, acl, "Buffy");
- String stringRep = acl.getStringRepresentation();
- System.out.println(stringRep);
- ACL acl2 = new ACLImpl(stringRep);
- System.out.println(acl2.getStringRepresentation());
- checkEvaluation(allCaps, acl2, "Spike");
- checkEvaluation(allCaps, acl2, "Tara");
- checkEvaluation(allCaps, acl2, "Xander");
- checkEvaluation(allCaps, acl2, "Buffy");
- System.out.println(acl2.getStringRepresentation());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail();
- }
- }
-
- private void checkEvaluation(Set allCaps, ACL acl, String authority)
- {
- Set caps = acl.getCapabilities(authority, false);
- System.out.println(caps);
- for (String cap : caps)
- {
- assertTrue(acl.can(authority, false, cap));
- }
- Set inverse = new HashSet(allCaps);
- inverse.removeAll(caps);
- for (String cap : inverse)
- {
- assertFalse(acl.can(authority, false, cap));
- }
- }
-}
diff --git a/source/java/org/alfresco/repo/simple/permission/AuthorityCapability.hbm.xml b/source/java/org/alfresco/repo/simple/permission/AuthorityCapability.hbm.xml
deleted file mode 100644
index 5a731883c1..0000000000
--- a/source/java/org/alfresco/repo/simple/permission/AuthorityCapability.hbm.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/source/java/org/alfresco/repo/simple/permission/AuthorityCapabilityBootstrap.java b/source/java/org/alfresco/repo/simple/permission/AuthorityCapabilityBootstrap.java
deleted file mode 100644
index 1ec03921c3..0000000000
--- a/source/java/org/alfresco/repo/simple/permission/AuthorityCapabilityBootstrap.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2005-2007 Alfresco Software Limited.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
- * As a special exception to the terms and conditions of version 2.0 of
- * the GPL, you may redistribute this Program in connection with Free/Libre
- * and Open Source Software ("FLOSS") applications as described in Alfresco's
- * FLOSS exception. You should have recieved a copy of the text describing
- * the FLOSS exception, and it is also available here:
- * http://www.alfresco.com/legal/licensing
- */
-
-package org.alfresco.repo.simple.permission;
-
-import org.alfresco.util.AbstractLifecycleBean;
-import org.springframework.context.ApplicationEvent;
-
-/**
- * Bootstrapping for the AuthorityCapabilityRegistry.
- * @author britt
- */
-public class AuthorityCapabilityBootstrap extends AbstractLifecycleBean
-{
- private AuthorityCapabilityRegistryImpl fRegistry;
-
- public AuthorityCapabilityBootstrap()
- {
- }
-
- public void setAuthorityCapabilityRegistry(AuthorityCapabilityRegistryImpl registry)
- {
- fRegistry = registry;
- }
-
- /* (non-Javadoc)
- * @see org.alfresco.util.AbstractLifecycleBean#onBootstrap(org.springframework.context.ApplicationEvent)
- */
- @Override
- protected void onBootstrap(ApplicationEvent event)
- {
- fRegistry.bootstrap();
- }
-
- /* (non-Javadoc)
- * @see org.alfresco.util.AbstractLifecycleBean#onShutdown(org.springframework.context.ApplicationEvent)
- */
- @Override
- protected void onShutdown(ApplicationEvent event)
- {
- }
-}
diff --git a/source/java/org/alfresco/repo/simple/permission/AuthorityCapabilityRegistryImpl.java b/source/java/org/alfresco/repo/simple/permission/AuthorityCapabilityRegistryImpl.java
deleted file mode 100644
index f0839628af..0000000000
--- a/source/java/org/alfresco/repo/simple/permission/AuthorityCapabilityRegistryImpl.java
+++ /dev/null
@@ -1,588 +0,0 @@
-/*
- * Copyright (C) 2005-2007 Alfresco Software Limited.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
- * As a special exception to the terms and conditions of version 2.0 of
- * the GPL, you may redistribute this Program in connection with Free/Libre
- * and Open Source Software ("FLOSS") applications as described in Alfresco's
- * FLOSS exception. You should have recieved a copy of the text describing
- * the FLOSS exception, and it is also available here:
- * http://www.alfresco.com/legal/licensing
- */
-
-package org.alfresco.repo.simple.permission;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
-import org.alfresco.repo.transaction.RetryingTransactionHelper;
-import org.alfresco.repo.transaction.TransactionListener;
-import org.alfresco.service.cmr.security.AuthorityService;
-import org.alfresco.service.cmr.security.AuthorityType;
-import org.alfresco.service.cmr.security.PermissionService;
-import org.alfresco.service.simple.permission.AuthorityCapabilityRegistry;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Implementation of a registry for Authorities and Capabilities.
- * @author britt
- */
-public class AuthorityCapabilityRegistryImpl implements
- AuthorityCapabilityRegistry, TransactionListener
-{
- private static Log fgLogger = LogFactory.getLog(AuthorityCapabilityRegistryImpl.class);
-
- private Map fAuthorityToID;
-
- private Map fIDToAuthority;
-
- private Map> fAuthorityToChild;
-
- private Map> fChildToAuthority;
-
- private Map fCapabilityToID;
-
- private Map fIDToCapability;
-
- private AuthorityEntryDAO fAuthorityEntryDAO;
-
- private CapabilityEntryDAO fCapabilityEntryDAO;
-
- private Set fInitialCapabilities;
-
- private RetryingTransactionHelper fTransactionHelper;
-
- private AuthorityService fAuthorityService;
-
- public AuthorityCapabilityRegistryImpl()
- {
- fAuthorityToID = new HashMap();
- fIDToAuthority = new HashMap();
- fAuthorityToChild = new HashMap>();
- fChildToAuthority = new HashMap>();
- fCapabilityToID = new HashMap();
- fIDToCapability = new HashMap();
- }
-
- public void setAuthorityEntryDAO(AuthorityEntryDAO dao)
- {
- fAuthorityEntryDAO = dao;
- }
-
- public void setCapabilityEntryDAO(CapabilityEntryDAO dao)
- {
- fCapabilityEntryDAO = dao;
- }
-
- public void setCapabilities(Set capabilities)
- {
- fInitialCapabilities = capabilities;
- }
-
- public void setRetryingTransactionHelper(RetryingTransactionHelper helper)
- {
- fTransactionHelper = helper;
- }
-
- public void setAuthorityService(AuthorityService service)
- {
- fAuthorityService = service;
- }
-
- public void bootstrap()
- {
- fTransactionHelper.doInTransaction(
- new RetryingTransactionHelper.RetryingTransactionCallback