mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Merged V2.2 to HEAD
8083: Merged V2.1 to V2.2 8066: RM-31 and related issues (ACT-729) 8068: Fix for AR-1997 8084: Fixed script error on notify page of invite website user wizard 8086: Merged V2.1 to V2.2 8075: Clear()ing a hibernate session, is not always enough to guarantee that transactions not use unbounded amounts of memory 8076: Turn off test that needs to be fixed real soon now. 8092: Implementation for: http://issues.alfresco.com/browse/AR-1744 8093: Fixed upgrade scripts for V2.1.2 to V2.2 upgrades 8096: Fix for AWC-1578 and AWC-1814 8097: Added new indexes missing from scripts and made index names consistent. 8098: Fix for AWC-1548 8100: Removed use of QName from alf_permission table 8102: Fix for AWC-1690 8103: test was == on id that used to be long but is now a Long git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@8476 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -39,6 +39,8 @@ import org.alfresco.repo.domain.DbAccessControlListChangeSet;
|
||||
import org.alfresco.repo.domain.DbAccessControlListMember;
|
||||
import org.alfresco.repo.domain.DbAuthority;
|
||||
import org.alfresco.repo.domain.DbPermission;
|
||||
import org.alfresco.repo.domain.QNameDAO;
|
||||
import org.alfresco.repo.domain.QNameEntity;
|
||||
import org.alfresco.repo.node.db.hibernate.HibernateNodeDaoServiceImpl;
|
||||
import org.alfresco.repo.security.permissions.ACLCopyMode;
|
||||
import org.alfresco.repo.security.permissions.ACLType;
|
||||
@@ -54,6 +56,7 @@ import org.alfresco.repo.security.permissions.impl.AclDaoComponent;
|
||||
import org.alfresco.repo.security.permissions.impl.SimplePermissionReference;
|
||||
import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
|
||||
import org.alfresco.service.cmr.security.AccessStatus;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.util.GUID;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
@@ -93,6 +96,8 @@ public class AclDaoComponentImpl extends HibernateDaoSupport implements AclDaoCo
|
||||
|
||||
static String QUERY_GET_LATEST_ACL_BY_ACLID = "permission.FindLatestAclByGuid";
|
||||
|
||||
/** Access to QName entities */
|
||||
private QNameDAO qnameDAO;
|
||||
/** a transactionally-safe cache to be injected */
|
||||
private SimpleCache<Long, AccessControlList> aclCache;
|
||||
|
||||
@@ -107,6 +112,14 @@ public class AclDaoComponentImpl extends HibernateDaoSupport implements AclDaoCo
|
||||
DbAccessControlListImpl.setAclDaoComponent(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the DAO for accessing QName entities
|
||||
*/
|
||||
public void setQnameDAO(QNameDAO qnameDAO)
|
||||
{
|
||||
this.qnameDAO = qnameDAO;
|
||||
}
|
||||
|
||||
public void setAclCache(SimpleCache<Long, AccessControlList> aclCache)
|
||||
{
|
||||
this.aclCache = aclCache;
|
||||
@@ -1002,8 +1015,8 @@ public class AclDaoComponentImpl extends HibernateDaoSupport implements AclDaoCo
|
||||
context.setPropertyContext(member.getAccessControlEntry().getContext().getPropertyContext());
|
||||
entry.setContext(context);
|
||||
}
|
||||
SimplePermissionReference permissionRefernce = new SimplePermissionReference(member.getAccessControlEntry().getPermission().getTypeQname(), member
|
||||
.getAccessControlEntry().getPermission().getName());
|
||||
DbPermission perm = member.getAccessControlEntry().getPermission();
|
||||
SimplePermissionReference permissionRefernce = new SimplePermissionReference(perm.getTypeQName().getQName(), perm.getName());
|
||||
entry.setPermission(permissionRefernce);
|
||||
entry.setPosition(member.getPosition());
|
||||
|
||||
@@ -1176,6 +1189,7 @@ public class AclDaoComponentImpl extends HibernateDaoSupport implements AclDaoCo
|
||||
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<AclChange> setAccessControlEntry(Long id, final AccessControlEntry ace)
|
||||
{
|
||||
DbAccessControlList target = (DbAccessControlList) getHibernateTemplate().get(DbAccessControlListImpl.class, id);
|
||||
@@ -1222,13 +1236,17 @@ public class AclDaoComponentImpl extends HibernateDaoSupport implements AclDaoCo
|
||||
|
||||
// Find permission
|
||||
|
||||
final QName permissionQName = ace.getPermission().getQName();
|
||||
final String permissionName = ace.getPermission().getName();
|
||||
final QNameEntity permissionQNameEntity = qnameDAO.getOrCreateQNameEntity(permissionQName);
|
||||
|
||||
callback = new HibernateCallback()
|
||||
{
|
||||
public Object doInHibernate(Session session)
|
||||
{
|
||||
Query query = session.getNamedQuery(QUERY_GET_PERMISSION);
|
||||
query.setParameter("permissionTypeQName", ace.getPermission().getQName());
|
||||
query.setParameter("permissionName", ace.getPermission().getName());
|
||||
query.setParameter("permissionTypeQName", permissionQNameEntity);
|
||||
query.setParameter("permissionName", permissionName);
|
||||
return query.uniqueResult();
|
||||
}
|
||||
};
|
||||
@@ -1236,8 +1254,8 @@ public class AclDaoComponentImpl extends HibernateDaoSupport implements AclDaoCo
|
||||
if (permission == null)
|
||||
{
|
||||
DbPermissionImpl newPermission = new DbPermissionImpl();
|
||||
newPermission.setTypeQname(ace.getPermission().getQName());
|
||||
newPermission.setName(ace.getPermission().getName());
|
||||
newPermission.setTypeQName(permissionQNameEntity);
|
||||
newPermission.setName(permissionName);
|
||||
permission = newPermission;
|
||||
getHibernateTemplate().save(newPermission);
|
||||
}
|
||||
@@ -1536,6 +1554,7 @@ public class AclDaoComponentImpl extends HibernateDaoSupport implements AclDaoCo
|
||||
return avmNodeIds;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private List<AclChange> disableInheritanceImpl(Long id, boolean setInheritedOnAcl, DbAccessControlList acl)
|
||||
{
|
||||
List<AclChange> changes = new ArrayList<AclChange>();
|
||||
@@ -1583,8 +1602,8 @@ public class AclDaoComponentImpl extends HibernateDaoSupport implements AclDaoCo
|
||||
context.setPropertyContext(member.getAccessControlEntry().getContext().getPropertyContext());
|
||||
entry.setContext(context);
|
||||
}
|
||||
SimplePermissionReference permissionRefernce = new SimplePermissionReference(member.getAccessControlEntry().getPermission().getTypeQname(), member
|
||||
.getAccessControlEntry().getPermission().getName());
|
||||
DbPermission perm = member.getAccessControlEntry().getPermission();
|
||||
SimplePermissionReference permissionRefernce = new SimplePermissionReference(perm.getTypeQName().getQName(), perm.getName());
|
||||
entry.setPermission(permissionRefernce);
|
||||
entry.setPosition(Integer.valueOf(0));
|
||||
|
||||
@@ -1676,11 +1695,13 @@ public class AclDaoComponentImpl extends HibernateDaoSupport implements AclDaoCo
|
||||
|
||||
if (pattern.getPermission() != null)
|
||||
{
|
||||
if ((pattern.getPermission().getQName() != null) && (!pattern.getPermission().getQName().equals(entry.getPermission().getTypeQname())))
|
||||
final QName patternQName = pattern.getPermission().getQName();
|
||||
if ((patternQName != null) && (!patternQName.equals(entry.getPermission().getTypeQName().getQName())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if ((pattern.getPermission().getName() != null) && (!pattern.getPermission().getName().equals(entry.getPermission().getName())))
|
||||
final String patternName = pattern.getPermission().getName();
|
||||
if ((patternName != null) && (!patternName.equals(entry.getPermission().getName())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@@ -32,8 +32,6 @@ import org.alfresco.repo.domain.DbAuthority;
|
||||
import org.alfresco.repo.domain.DbPermission;
|
||||
import org.alfresco.repo.domain.DbPermissionKey;
|
||||
import org.alfresco.repo.security.permissions.ACEType;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.hibernate.CallbackException;
|
||||
import org.hibernate.Session;
|
||||
|
||||
/**
|
||||
@@ -71,9 +69,15 @@ public class DbAccessControlEntryImpl implements DbAccessControlEntry, Serializa
|
||||
public String toString()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder(128);
|
||||
sb.append("DbAccessControlEntryImpl").append("[ id=").append(id).append(", version=").append(version).append(", permission=").append(permission.getKey()).append(
|
||||
", authority=").append(authority.getAuthority()).append(", allowed=").append(allowed).append(", authorityDeleted=").append(", aceType=")
|
||||
.append(ACEType.getACETypeFromId(aceType)).append(", context=").append(context).append("]");
|
||||
sb.append("DbAccessControlEntryImpl")
|
||||
.append("[ id=").append(id)
|
||||
.append(", version=").append(version)
|
||||
.append(", permission=").append(permission.getKey())
|
||||
.append(", authority=").append(authority.getAuthority())
|
||||
.append(", allowed=").append(allowed)
|
||||
.append(", aceType=").append(ACEType.getACETypeFromId(aceType))
|
||||
.append(", context=").append(context)
|
||||
.append("]");
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
@@ -28,12 +28,9 @@ import java.io.Serializable;
|
||||
|
||||
import org.alfresco.repo.domain.DbPermission;
|
||||
import org.alfresco.repo.domain.DbPermissionKey;
|
||||
import org.alfresco.repo.domain.QNameEntity;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.util.EqualsHelper;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.hibernate.CallbackException;
|
||||
import org.hibernate.Query;
|
||||
import org.hibernate.Session;
|
||||
|
||||
/**
|
||||
@@ -45,14 +42,9 @@ public class DbPermissionImpl implements DbPermission, Serializable
|
||||
{
|
||||
private static final long serialVersionUID = -6352566900815035461L;
|
||||
|
||||
private static Log logger = LogFactory.getLog(DbPermissionImpl.class);
|
||||
|
||||
private Long id;
|
||||
|
||||
private Long version;
|
||||
|
||||
private QName typeQname;
|
||||
|
||||
private QNameEntity typeQName;
|
||||
private String name;
|
||||
|
||||
public DbPermissionImpl()
|
||||
@@ -64,8 +56,12 @@ public class DbPermissionImpl implements DbPermission, Serializable
|
||||
public String toString()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder(128);
|
||||
sb.append("DbPermissionImpl").append("[ id=").append(id).append(", version=").append(version).append(", typeQname=").append(typeQname).append(", name=").append(getName())
|
||||
.append("]");
|
||||
sb.append("DbPermissionImpl")
|
||||
.append("[ id=").append(id)
|
||||
.append(", version=").append(version)
|
||||
.append(", typeQName=").append(typeQName.getQName())
|
||||
.append(", name=").append(getName())
|
||||
.append("]");
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@@ -81,13 +77,13 @@ public class DbPermissionImpl implements DbPermission, Serializable
|
||||
return false;
|
||||
}
|
||||
DbPermission other = (DbPermission) o;
|
||||
return (EqualsHelper.nullSafeEquals(typeQname, other.getTypeQname())) && (EqualsHelper.nullSafeEquals(name, other.getName()));
|
||||
return (EqualsHelper.nullSafeEquals(typeQName, other.getTypeQName())) && (EqualsHelper.nullSafeEquals(name, other.getName()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
return typeQname.hashCode() + (37 * name.hashCode());
|
||||
return typeQName.hashCode() + (37 * name.hashCode());
|
||||
}
|
||||
|
||||
public Long getId()
|
||||
@@ -118,14 +114,14 @@ public class DbPermissionImpl implements DbPermission, Serializable
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public QName getTypeQname()
|
||||
public QNameEntity getTypeQName()
|
||||
{
|
||||
return typeQname;
|
||||
return typeQName;
|
||||
}
|
||||
|
||||
public void setTypeQname(QName typeQname)
|
||||
public void setTypeQName(QNameEntity typeQName)
|
||||
{
|
||||
this.typeQname = typeQname;
|
||||
this.typeQName = typeQName;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
@@ -140,7 +136,7 @@ public class DbPermissionImpl implements DbPermission, Serializable
|
||||
|
||||
public DbPermissionKey getKey()
|
||||
{
|
||||
return new DbPermissionKey(typeQname, name);
|
||||
return new DbPermissionKey(typeQName.getQName(), name);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -6,8 +6,6 @@
|
||||
|
||||
<hibernate-mapping>
|
||||
|
||||
<typedef class="org.alfresco.repo.domain.hibernate.QNameUserType" name="QName" />
|
||||
|
||||
<class
|
||||
name="org.alfresco.repo.domain.hibernate.DbAccessControlListChangeSetImpl"
|
||||
proxy="org.alfresco.repo.domain.DbAccessControlListChangeSet"
|
||||
@@ -54,9 +52,9 @@
|
||||
|
||||
<version column="version" name="version" type="long" />
|
||||
|
||||
<property name="inherits" column="inherits" type="boolean" not-null="true" index="idx_pm_acl_inh" />
|
||||
<property name="inherits" column="inherits" type="boolean" not-null="true" index="idx_alf_acl_inh" />
|
||||
|
||||
<property name="inheritsFrom" column="inherits_from" type="long" not-null="false" index="idx_pm_acl_inh" />
|
||||
<property name="inheritsFrom" column="inherits_from" type="long" not-null="false" index="idx_alf_acl_inh" />
|
||||
|
||||
<property name="type" column="type" type="int" not-null="true" />
|
||||
|
||||
@@ -174,8 +172,17 @@
|
||||
<generator class="native" />
|
||||
</id>
|
||||
|
||||
<natural-id mutable="true">
|
||||
<property name="typeQname" column="type_qname" type="QName" length="200" />
|
||||
<natural-id mutable="true" >
|
||||
<many-to-one
|
||||
name="typeQName"
|
||||
class="org.alfresco.repo.domain.hibernate.QNameEntityImpl"
|
||||
column="type_qname_id"
|
||||
foreign-key="fk_alf_perm_tqn"
|
||||
lazy="proxy"
|
||||
fetch="select"
|
||||
unique="false"
|
||||
not-null="true"
|
||||
cascade="none" />
|
||||
<property name="name" type="string" length="100" column="name" />
|
||||
</natural-id>
|
||||
|
||||
@@ -199,9 +206,9 @@
|
||||
|
||||
<version column="version" name="version" type="long" />
|
||||
|
||||
<property name="authority" column="authority" type="string" length="100" unique-key="uidx_auth_name" index="idx_authority" />
|
||||
|
||||
<property name="crc" column="crc" type="long" unique-key="uidx_auth_name" />
|
||||
<property name="authority" column="authority" type="string" length="100" unique-key="uidx_auth_name" index="idx_alf_auth_aut" />
|
||||
|
||||
<property name="crc" column="crc" type="long" unique-key="uidx_auth_name" />
|
||||
|
||||
</class>
|
||||
|
||||
@@ -268,7 +275,7 @@
|
||||
from
|
||||
org.alfresco.repo.domain.hibernate.DbPermissionImpl as permission
|
||||
where
|
||||
permission.typeQname = :permissionTypeQName and
|
||||
permission.typeQName = :permissionTypeQName and
|
||||
permission.name = :permissionName
|
||||
</query>
|
||||
|
||||
@@ -402,7 +409,7 @@
|
||||
ace.authority.recipient = :authorityRecipient and
|
||||
ace.allowed = :allow and
|
||||
ace.permission.name = :permissionName and
|
||||
ace.permission.typeQname = :permissionTypeQname
|
||||
ace.permission.typeQName = :permissionTypeQname
|
||||
</query>
|
||||
-->
|
||||
</hibernate-mapping>
|
Reference in New Issue
Block a user