Merged HEAD-BUG-FIX (5.1/Cloud) to HEAD (5.1/Cloud)

93992: Merged 5.0.N (5.0.1) to HEAD-BUG-FIX (5.1/Cloud)
      93945: Merged V4.2-BUG-FIX (4.2.5) to 5.0.N (5.0.1)
         93895: MNT-12873: Merged V4.2.3 (4.2.3.16) to V4.2-BUG-FIX(4.2.5)
            93552 :Merged DEV to V4.2.3 (4.2.3.16)
               93524: MNT-13156: CLONE - Introduction of SiteRole in 4.2.x breaks sites API when there is a custom role defined
                  - Implement site role as String instead of enumeration to allow custom roles. Add CustomRoleTest Unit Test. In SitesImpl convert UnknownAuthorityException into InvalidArgumentException.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@95030 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2015-01-31 15:29:20 +00:00
parent 7e1f737e7e
commit 10971d5415
8 changed files with 49 additions and 64 deletions

View File

@@ -29,7 +29,6 @@ import org.alfresco.rest.framework.resource.parameters.Paging;
import org.alfresco.rest.framework.resource.parameters.Parameters; import org.alfresco.rest.framework.resource.parameters.Parameters;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.site.SiteInfo; import org.alfresco.service.cmr.site.SiteInfo;
import org.alfresco.service.cmr.site.SiteRole;
public interface Sites public interface Sites
{ {
@@ -59,6 +58,6 @@ public interface Sites
void removeFavouriteSite(String personId, String siteId); void removeFavouriteSite(String personId, String siteId);
CollectionWithPagingInfo<FavouriteSite> getFavouriteSites(String personId, Parameters parameters); CollectionWithPagingInfo<FavouriteSite> getFavouriteSites(String personId, Parameters parameters);
SiteRole getSiteRole(String siteId); String getSiteRole(String siteId);
SiteRole getSiteRole(String siteId, String personId); String getSiteRole(String siteId, String personId);
} }

View File

@@ -36,7 +36,6 @@ import org.alfresco.service.cmr.favourites.FavouritesService;
import org.alfresco.service.cmr.favourites.FavouritesService.Type; import org.alfresco.service.cmr.favourites.FavouritesService.Type;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.site.SiteInfo; import org.alfresco.service.cmr.site.SiteInfo;
import org.alfresco.service.cmr.site.SiteRole;
import org.alfresco.service.cmr.site.SiteService; import org.alfresco.service.cmr.site.SiteService;
import org.alfresco.util.Pair; import org.alfresco.util.Pair;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
@@ -101,7 +100,7 @@ public class FavouritesImpl implements Favourites
else if(type.equals(Type.SITE)) else if(type.equals(Type.SITE))
{ {
SiteInfo siteInfo = siteService.getSite(nodeRef); SiteInfo siteInfo = siteService.getSite(nodeRef);
SiteRole role = sites.getSiteRole(siteInfo.getShortName()); String role = sites.getSiteRole(siteInfo.getShortName());
Site site = new SiteImpl(siteInfo, role); Site site = new SiteImpl(siteInfo, role);
target = new SiteTarget(site); target = new SiteTarget(site);
} }

View File

@@ -1,23 +1,5 @@
/* /*
* Copyright (C) 2005-2012 Alfresco Software Limited. * Copyright (C) 2005-2015 Alfresco Software Limited.
*
* This file is part of Alfresco
*
* Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Alfresco 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* Copyright (C) 2005-2012 Alfresco Software Limited.
* *
* This file is part of Alfresco * This file is part of Alfresco
* *
@@ -55,6 +37,7 @@ import org.alfresco.query.PageDetails;
import org.alfresco.query.PagingRequest; import org.alfresco.query.PagingRequest;
import org.alfresco.query.PagingResults; import org.alfresco.query.PagingResults;
import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authority.UnknownAuthorityException;
import org.alfresco.repo.site.SiteMembership; import org.alfresco.repo.site.SiteMembership;
import org.alfresco.repo.site.SiteModel; import org.alfresco.repo.site.SiteModel;
import org.alfresco.rest.api.Nodes; import org.alfresco.rest.api.Nodes;
@@ -83,7 +66,6 @@ import org.alfresco.service.cmr.preference.PreferenceService;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.site.SiteInfo; import org.alfresco.service.cmr.site.SiteInfo;
import org.alfresco.service.cmr.site.SiteRole;
import org.alfresco.service.cmr.site.SiteService; import org.alfresco.service.cmr.site.SiteService;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
import org.alfresco.util.Pair; import org.alfresco.util.Pair;
@@ -214,17 +196,15 @@ public class SitesImpl implements Sites
return CollectionWithPagingInfo.asPaged(paging, ret, pagedResults.hasMoreItems(), null); return CollectionWithPagingInfo.asPaged(paging, ret, pagedResults.hasMoreItems(), null);
} }
public SiteRole getSiteRole(String siteId) public String getSiteRole(String siteId)
{ {
String personId = AuthenticationUtil.getFullyAuthenticatedUser(); String personId = AuthenticationUtil.getFullyAuthenticatedUser();
return getSiteRole(siteId, personId); return getSiteRole(siteId, personId);
} }
public SiteRole getSiteRole(String siteId, String personId) public String getSiteRole(String siteId, String personId)
{ {
String roleStr = siteService.getMembersRole(siteId, personId); return siteService.getMembersRole(siteId, personId);
SiteRole role = (roleStr != null ? SiteRole.valueOf(roleStr) : null);
return role;
} }
public Site getSite(String siteId) public Site getSite(String siteId)
@@ -242,7 +222,7 @@ public class SitesImpl implements Sites
} }
// set the site id to the short name (to deal with case sensitivity issues with using the siteId from the url) // set the site id to the short name (to deal with case sensitivity issues with using the siteId from the url)
siteId = siteInfo.getShortName(); siteId = siteInfo.getShortName();
SiteRole role = null; String role = null;
if(includeRole) if(includeRole)
{ {
role = getSiteRole(siteId); role = getSiteRole(siteId);
@@ -274,9 +254,8 @@ public class SitesImpl implements Sites
String roleStr = siteService.getMembersRole(siteInfo.getShortName(), personId); String roleStr = siteService.getMembersRole(siteInfo.getShortName(), personId);
if(roleStr != null) if(roleStr != null)
{ {
SiteRole role = SiteRole.valueOf(roleStr); SiteImpl site = new SiteImpl(siteInfo, roleStr);
SiteImpl site = new SiteImpl(siteInfo, role); siteMember = new MemberOfSite(site.getId(), siteInfo.getNodeRef(), roleStr);
siteMember = new MemberOfSite(site.getId(), siteInfo.getNodeRef(), role);
} }
else else
{ {
@@ -302,7 +281,7 @@ public class SitesImpl implements Sites
String role = siteService.getMembersRole(siteId, personId); String role = siteService.getMembersRole(siteId, personId);
if(role != null) if(role != null)
{ {
siteMember = new SiteMember(personId, SiteRole.valueOf(role)); siteMember = new SiteMember(personId, role);
} }
else else
{ {
@@ -324,12 +303,11 @@ public class SitesImpl implements Sites
// set the site id to the short name (to deal with case sensitivity issues with using the siteId from the url) // set the site id to the short name (to deal with case sensitivity issues with using the siteId from the url)
siteId = siteInfo.getShortName(); siteId = siteInfo.getShortName();
SiteRole siteRole = siteMember.getRole(); String role = siteMember.getRole();
if(siteRole == null) if(role == null)
{ {
throw new InvalidArgumentException("Must provide a role"); throw new InvalidArgumentException("Must provide a role");
} }
String role = siteRole.name();
if(siteService.isMember(siteId, personId)) if(siteService.isMember(siteId, personId))
{ {
@@ -341,7 +319,14 @@ public class SitesImpl implements Sites
throw new PermissionDeniedException(); throw new PermissionDeniedException();
} }
siteService.setMembership(siteId, personId, role); try
{
siteService.setMembership(siteId, personId, role);
}
catch (UnknownAuthorityException e)
{
throw new InvalidArgumentException("Unknown role '" + role + "'");
}
return siteMember; return siteMember;
} }
@@ -400,7 +385,7 @@ public class SitesImpl implements Sites
throw new EntityNotFoundException(siteId); throw new EntityNotFoundException(siteId);
} }
siteId = siteInfo.getShortName(); siteId = siteInfo.getShortName();
SiteRole siteRole = siteMember.getRole(); String siteRole = siteMember.getRole();
if(siteRole == null) if(siteRole == null)
{ {
throw new InvalidArgumentException("Must provide a role"); throw new InvalidArgumentException("Must provide a role");
@@ -412,7 +397,14 @@ public class SitesImpl implements Sites
throw new InvalidArgumentException("User is not a member of the site"); throw new InvalidArgumentException("User is not a member of the site");
} }
siteService.setMembership(siteId, siteMember.getPersonId(), siteRole.toString()); try
{
siteService.setMembership(siteId, siteMember.getPersonId(), siteRole);
}
catch (UnknownAuthorityException e)
{
throw new InvalidArgumentException("Unknown role '" + siteRole + "'");
}
return siteMember; return siteMember;
} }
@@ -547,11 +539,10 @@ public class SitesImpl implements Sites
{ {
SiteInfo siteInfo = sites.get(index); SiteInfo siteInfo = sites.get(index);
SiteRole role = null; String role = null;
if(filter.isAllowed(Site.ROLE)) if(filter.isAllowed(Site.ROLE))
{ {
String roleStr = siteService.getMembersRole(siteInfo.getShortName(), personId); role = siteService.getMembersRole(siteInfo.getShortName(), personId);
role = (roleStr != null ? SiteRole.valueOf(roleStr) : null);
} }
return new SiteImpl(siteInfo, role); return new SiteImpl(siteInfo, role);
} }
@@ -581,7 +572,7 @@ public class SitesImpl implements Sites
if(favouritesService.isFavourite(personId, nodeRef)) if(favouritesService.isFavourite(personId, nodeRef))
{ {
SiteRole role = getSiteRole(siteId, personId); String role = getSiteRole(siteId, personId);
return new FavouriteSite(siteInfo, role); return new FavouriteSite(siteInfo, role);
} }
else else
@@ -740,7 +731,7 @@ public class SitesImpl implements Sites
List<FavouriteSite> favourites = new ArrayList<FavouriteSite>(favouriteSites.getPage().size()); List<FavouriteSite> favourites = new ArrayList<FavouriteSite>(favouriteSites.getPage().size());
for(SiteInfo favouriteSite : favouriteSites.getPage()) for(SiteInfo favouriteSite : favouriteSites.getPage())
{ {
SiteRole role = null; String role = null;
if(filter.isAllowed(Site.ROLE)) if(filter.isAllowed(Site.ROLE))
{ {
role = getSiteRole(favouriteSite.getShortName(), personId); role = getSiteRole(favouriteSite.getShortName(), personId);

View File

@@ -19,7 +19,6 @@
package org.alfresco.rest.api.model; package org.alfresco.rest.api.model;
import org.alfresco.service.cmr.site.SiteInfo; import org.alfresco.service.cmr.site.SiteInfo;
import org.alfresco.service.cmr.site.SiteRole;
/** /**
* Represents a user's favourite site. * Represents a user's favourite site.
@@ -35,7 +34,7 @@ public class FavouriteSite extends SiteImpl
{ {
} }
public FavouriteSite(SiteInfo siteInfo, SiteRole role) public FavouriteSite(SiteInfo siteInfo, String role)
{ {
super(siteInfo, role); super(siteInfo, role);
} }

View File

@@ -23,7 +23,6 @@ import org.alfresco.rest.framework.resource.EmbeddedEntityResource;
import org.alfresco.rest.framework.resource.UniqueId; import org.alfresco.rest.framework.resource.UniqueId;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.site.SiteInfo; import org.alfresco.service.cmr.site.SiteInfo;
import org.alfresco.service.cmr.site.SiteRole;
/** /**
* Represents membership of a site. * Represents membership of a site.
@@ -33,7 +32,7 @@ import org.alfresco.service.cmr.site.SiteRole;
*/ */
public class MemberOfSite implements Comparable<MemberOfSite> public class MemberOfSite implements Comparable<MemberOfSite>
{ {
private SiteRole role; private String role;
private String siteShortName; private String siteShortName;
private NodeRef guid; private NodeRef guid;
@@ -41,7 +40,7 @@ public class MemberOfSite implements Comparable<MemberOfSite>
{ {
} }
public MemberOfSite(String siteShortName, NodeRef siteGuid, SiteRole role) public MemberOfSite(String siteShortName, NodeRef siteGuid, String role)
{ {
super(); super();
if(siteShortName == null) if(siteShortName == null)
@@ -61,7 +60,7 @@ public class MemberOfSite implements Comparable<MemberOfSite>
this.guid = siteGuid; this.guid = siteGuid;
} }
public static MemberOfSite getMemberOfSite(SiteInfo siteInfo, SiteRole siteRole) public static MemberOfSite getMemberOfSite(SiteInfo siteInfo, String siteRole)
{ {
MemberOfSite memberOfSite = new MemberOfSite(siteInfo.getShortName(), siteInfo.getNodeRef(), siteRole); MemberOfSite memberOfSite = new MemberOfSite(siteInfo.getShortName(), siteInfo.getNodeRef(), siteRole);
return memberOfSite; return memberOfSite;
@@ -84,12 +83,12 @@ public class MemberOfSite implements Comparable<MemberOfSite>
this.guid = guid; this.guid = guid;
} }
public SiteRole getRole() public String getRole()
{ {
return role; return role;
} }
public void setRole(SiteRole role) public void setRole(String role)
{ {
if(role == null) if(role == null)
{ {

View File

@@ -19,7 +19,6 @@
package org.alfresco.rest.api.model; package org.alfresco.rest.api.model;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.site.SiteRole;
import org.alfresco.service.cmr.site.SiteVisibility; import org.alfresco.service.cmr.site.SiteVisibility;
/** /**
@@ -38,5 +37,5 @@ public interface Site
String getTitle(); String getTitle();
String getDescription(); String getDescription();
SiteVisibility getVisibility(); SiteVisibility getVisibility();
SiteRole getRole(); String getRole();
} }

View File

@@ -21,7 +21,6 @@ package org.alfresco.rest.api.model;
import org.alfresco.rest.framework.resource.UniqueId; import org.alfresco.rest.framework.resource.UniqueId;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.site.SiteInfo; import org.alfresco.service.cmr.site.SiteInfo;
import org.alfresco.service.cmr.site.SiteRole;
import org.alfresco.service.cmr.site.SiteVisibility; import org.alfresco.service.cmr.site.SiteVisibility;
/** /**
@@ -37,13 +36,13 @@ public class SiteImpl implements Site, Comparable<SiteImpl>
protected String title; protected String title;
protected String description; protected String description;
protected SiteVisibility visibility; protected SiteVisibility visibility;
protected SiteRole role; protected String role;
public SiteImpl() public SiteImpl()
{ {
} }
public SiteImpl(SiteInfo siteInfo, SiteRole role) public SiteImpl(SiteInfo siteInfo, String role)
{ {
if(siteInfo == null) if(siteInfo == null)
{ {
@@ -140,7 +139,7 @@ public class SiteImpl implements Site, Comparable<SiteImpl>
} }
@Override @Override
public SiteRole getRole() public String getRole()
{ {
return role; return role;
} }

View File

@@ -32,13 +32,13 @@ import org.alfresco.service.cmr.site.SiteRole;
public class SiteMember public class SiteMember
{ {
private String personId; private String personId;
private SiteRole role; private String role;
public SiteMember() public SiteMember()
{ {
} }
public SiteMember(String personId, SiteRole role) public SiteMember(String personId, String role)
{ {
super(); super();
if(personId == null) if(personId == null)
@@ -60,12 +60,12 @@ public class SiteMember
return personId; return personId;
} }
public SiteRole getRole() public String getRole()
{ {
return role; return role;
} }
public void setRole(SiteRole role) public void setRole(String role)
{ {
if(role == null) if(role == null)
{ {