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

64416: Merged WAT1 (4.3/Cloud) to HEAD-BUG-FIX (4.3/Cloud)
      61735: ACE-493: Made Sites Public REST API Get method callable by Admins or by users that are made members of the new "Site Admin" group.
      ACE-503: Created a new PUT method in Sites Public REST API, such that it is possible to modify the visibility of a site.
      ACE-511: Created a new DELETE method in Sites Public REST API, such that it is possible to delete a site.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@64562 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2014-03-15 01:29:23 +00:00
parent 98992479a4
commit 25895187d8
4 changed files with 705 additions and 549 deletions

View File

@@ -16,6 +16,7 @@
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>. * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/ */
package org.alfresco.rest.api; package org.alfresco.rest.api;
import org.alfresco.query.PagingResults; import org.alfresco.query.PagingResults;
@@ -23,6 +24,7 @@ import org.alfresco.rest.api.model.FavouriteSite;
import org.alfresco.rest.api.model.MemberOfSite; import org.alfresco.rest.api.model.MemberOfSite;
import org.alfresco.rest.api.model.Site; import org.alfresco.rest.api.model.Site;
import org.alfresco.rest.api.model.SiteContainer; import org.alfresco.rest.api.model.SiteContainer;
import org.alfresco.rest.api.model.SiteImpl;
import org.alfresco.rest.api.model.SiteMember; import org.alfresco.rest.api.model.SiteMember;
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo; import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
import org.alfresco.rest.framework.resource.parameters.Paging; import org.alfresco.rest.framework.resource.parameters.Paging;
@@ -33,32 +35,52 @@ import org.alfresco.service.cmr.site.SiteRole;
public interface Sites public interface Sites
{ {
SiteInfo validateSite(String siteShortName); SiteInfo validateSite(String siteShortName);
SiteInfo validateSite(NodeRef nodeRef);
SiteInfo validateSite(NodeRef nodeRef);
CollectionWithPagingInfo<SiteMember> getSiteMembers(String siteShortName, Parameters parameters); CollectionWithPagingInfo<SiteMember> getSiteMembers(String siteShortName, Parameters parameters);
Site getSite(String siteId); Site getSite(String siteId);
/** SiteImpl updateSite(String siteShortName, SiteImpl site);
* people/<personId>/sites/<siteId>
* void deleteSite(String siteShortName);
* @param siteId
* @param personId /**
* @return * people/<personId>/sites/<siteId>
*/ *
MemberOfSite getMemberOfSite(String personId, String siteShortName); * @param siteId
SiteMember getSiteMember(String personId, String siteShortName); * @param personId
SiteMember addSiteMember(String siteShortName, SiteMember siteMember); * @return
void removeSiteMember(String personId, String siteId); */
SiteMember updateSiteMember(String siteShortName, SiteMember siteMember); MemberOfSite getMemberOfSite(String personId, String siteShortName);
CollectionWithPagingInfo<MemberOfSite> getSites(String personId, Parameters parameters);
SiteContainer getSiteContainer(String siteShortName, String containerId); SiteMember getSiteMember(String personId, String siteShortName);
PagingResults<SiteContainer> getSiteContainers(String siteShortName, Paging paging);
CollectionWithPagingInfo<Site> getSites(Parameters parameters); SiteMember addSiteMember(String siteShortName, SiteMember siteMember);
void removeSiteMember(String personId, String siteId);
SiteMember updateSiteMember(String siteShortName, SiteMember siteMember);
CollectionWithPagingInfo<MemberOfSite> getSites(String personId, Parameters parameters);
SiteContainer getSiteContainer(String siteShortName, String containerId);
PagingResults<SiteContainer> getSiteContainers(String siteShortName, Paging paging);
CollectionWithPagingInfo<Site> getSites(Parameters parameters);
FavouriteSite getFavouriteSite(String personId, String siteShortName); FavouriteSite getFavouriteSite(String personId, String siteShortName);
void addFavouriteSite(String personId, FavouriteSite favouriteSite); void addFavouriteSite(String personId, FavouriteSite favouriteSite);
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); SiteRole getSiteRole(String siteId);
SiteRole getSiteRole(String siteId, String personId); SiteRole getSiteRole(String siteId, String personId);
} }

File diff suppressed because it is too large Load Diff

View File

@@ -16,11 +16,15 @@
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>. * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/ */
package org.alfresco.rest.api.sites; package org.alfresco.rest.api.sites;
import org.alfresco.rest.api.Sites; import org.alfresco.rest.api.Sites;
import org.alfresco.rest.api.model.Site; import org.alfresco.rest.api.model.Site;
import org.alfresco.rest.api.model.SiteImpl;
import org.alfresco.rest.framework.WebApiDescription; import org.alfresco.rest.framework.WebApiDescription;
import org.alfresco.rest.framework.WebApiParam;
import org.alfresco.rest.framework.core.ResourceParameter.KIND;
import org.alfresco.rest.framework.resource.EntityResource; import org.alfresco.rest.framework.resource.EntityResource;
import org.alfresco.rest.framework.resource.actions.interfaces.EntityResourceAction; import org.alfresco.rest.framework.resource.actions.interfaces.EntityResourceAction;
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo; import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
@@ -34,17 +38,18 @@ import org.springframework.beans.factory.InitializingBean;
* @author Gethin James * @author Gethin James
* @author steveglover * @author steveglover
*/ */
@EntityResource(name="sites", title = "Sites") @EntityResource(name = "sites", title = "Sites")
public class SiteEntityResource implements EntityResourceAction.Read<Site>, EntityResourceAction.ReadById<Site>, InitializingBean public class SiteEntityResource implements EntityResourceAction.Read<Site>, EntityResourceAction.ReadById<Site>,
EntityResourceAction.Delete, EntityResourceAction.Update<SiteImpl>, InitializingBean
{ {
private Sites sites; private Sites sites;
public void setSites(Sites sites) public void setSites(Sites sites)
{ {
this.sites = sites; this.sites = sites;
} }
@Override @Override
public void afterPropertiesSet() public void afterPropertiesSet()
{ {
ParameterCheck.mandatory("sites", this.sites); ParameterCheck.mandatory("sites", this.sites);
@@ -56,7 +61,8 @@ public class SiteEntityResource implements EntityResourceAction.Read<Site>, Enti
* @see org.alfresco.rest.framework.resource.actions.interfaces.CollectionResourceAction.Get#get() * @see org.alfresco.rest.framework.resource.actions.interfaces.CollectionResourceAction.Get#get()
*/ */
@Override @Override
@WebApiDescription(title="A paged list of visible sites in the network.", description="A site is visible if it is public or if the person is a member") @WebApiDescription(title = "A paged list of visible sites in the network.", description = "A site is visible if it is public or if the person is a member")
@WebApiParam(name = "admin", title = "Admin", description = "An optional filter that when is set to true and the user has site-admin permission, a paged list of all sites in the network will be returned.", kind = KIND.QUERY_STRING)
public CollectionWithPagingInfo<Site> readAll(Parameters parameters) public CollectionWithPagingInfo<Site> readAll(Parameters parameters)
{ {
return sites.getSites(parameters); return sites.getSites(parameters);
@@ -64,13 +70,35 @@ public class SiteEntityResource implements EntityResourceAction.Read<Site>, Enti
/** /**
* Returns information regarding the site 'siteId'. * Returns information regarding the site 'siteId'.
*
*/ */
@Override @Override
@WebApiDescription(title="Returns site information for site siteId.") @WebApiDescription(title = "Returns site information for site siteId.")
public Site readById(String siteId, Parameters parameters) public Site readById(String siteId, Parameters parameters)
{ {
return sites.getSite(siteId); return sites.getSite(siteId);
} }
/**
* PUT sites/{@literal <siteId>}
* <p>
* Updates the <i>visibility</i> of the site.
*/
@Override
@WebApiDescription(title = "Updates the visibility of the site.")
public SiteImpl update(String siteId, SiteImpl entity, Parameters parameters)
{
return sites.updateSite(siteId, entity);
}
/**
* Delete sites/{@literal <siteId>}
* <p>
* Deletes the site.
*/
@Override
@WebApiDescription(title = "Deletes the site.")
public void delete(String siteId, Parameters parameters)
{
sites.deleteSite(siteId);
}
} }

View File

@@ -131,7 +131,8 @@ public class TestSites extends EnterpriseTestApi
} }
catch(PublicApiException e) catch(PublicApiException e)
{ {
assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode()); // ACE-511: as we added Delete method, the status code needed to be changed from 405 (Method Not Allowed) to 404.
assertEquals(HttpStatus.SC_NOT_FOUND, e.getHttpResponse().getStatusCode());
} }
// invalid site // invalid site