Merged WEBAPP-API (5.2.1) to 5.2.N (5.2.1)

136745 jkaabimofrad: APPSREPO-147: Added an optional "include=path" parameter to the "list favorites" API as well as create and get a single favorite endpoints.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@136755 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jamal Kaabi-Mofrad
2017-05-15 15:29:26 +00:00
parent b69b6463c0
commit ea8994f297
8 changed files with 549 additions and 224 deletions

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Remote API
* %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited
* Copyright (C) 2005 - 2017 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -37,6 +37,8 @@ import org.alfresco.rest.framework.resource.parameters.Parameters;
*/
public interface Favourites
{
String PARAM_INCLUDE_PATH = Nodes.PARAM_INCLUDE_PATH;
/**
* Add a favourite for user personId
*
@@ -45,6 +47,15 @@ public interface Favourites
*/
Favourite addFavourite(String personId, Favourite favourite);
/**
* Add a favourite for user personId taking parameters into account
*
* @param personId the personId for which the favourite is to be added
* @param favourite the favourite to add
* @param parameters the parameters
*/
Favourite addFavourite(String personId, Favourite favourite, Parameters parameters);
/**
* Add a favourite for user personId
*
@@ -70,4 +81,14 @@ public interface Favourites
* @return the favourite
*/
Favourite getFavourite(String personId, String favouriteId);
/**
* Get a specific favourite for user personId taking parameters into account
*
* @param personId the personId for which the favourite is to be removed
* @param favouriteId the favourite id
* @param parameters the parameters
* @return the favourite
*/
Favourite getFavourite(String personId, String favouriteId, Parameters parameters);
}

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Remote API
* %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited
* Copyright (C) 2005 - 2017 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -46,6 +46,8 @@ import org.alfresco.rest.api.model.DocumentTarget;
import org.alfresco.rest.api.model.Favourite;
import org.alfresco.rest.api.model.Folder;
import org.alfresco.rest.api.model.FolderTarget;
import org.alfresco.rest.api.model.Node;
import org.alfresco.rest.api.model.PathInfo;
import org.alfresco.rest.api.model.Site;
import org.alfresco.rest.api.model.SiteTarget;
import org.alfresco.rest.api.model.Target;
@@ -54,6 +56,7 @@ import org.alfresco.rest.framework.core.exceptions.RelationshipResourceNotFoundE
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
import org.alfresco.rest.framework.resource.parameters.Paging;
import org.alfresco.rest.framework.resource.parameters.Parameters;
import org.alfresco.rest.framework.resource.parameters.Params;
import org.alfresco.rest.framework.resource.parameters.where.QueryHelper;
import org.alfresco.rest.framework.resource.parameters.where.QueryHelper.WalkerCallbackAdapter;
import org.alfresco.service.cmr.favourites.FavouritesService;
@@ -107,7 +110,7 @@ public class FavouritesImpl implements Favourites
this.siteService = siteService;
}
private Target getTarget(PersonFavourite personFavourite)
private Target getTarget(PersonFavourite personFavourite, Parameters parameters)
{
Target target = null;
NodeRef nodeRef = personFavourite.getNodeRef();
@@ -115,11 +118,13 @@ public class FavouritesImpl implements Favourites
if(type.equals(Type.FILE))
{
Document document = nodes.getDocument(nodeRef);
setPathInfo(document, parameters.getInclude());
target = new DocumentTarget(document);
}
else if(type.equals(Type.FOLDER))
{
Folder folder = nodes.getFolder(nodeRef);
setPathInfo(folder, parameters.getInclude());
target = new FolderTarget(folder);
}
else if(type.equals(Type.SITE))
@@ -137,17 +142,17 @@ public class FavouritesImpl implements Favourites
return target;
}
private Favourite getFavourite(PersonFavourite personFavourite)
private Favourite getFavourite(PersonFavourite personFavourite, Parameters parameters)
{
Favourite fav = new Favourite();
fav.setTargetGuid(personFavourite.getNodeRef().getId());
fav.setCreatedAt(personFavourite.getCreatedAt());
Target target = getTarget(personFavourite);
Target target = getTarget(personFavourite, parameters);
fav.setTarget(target);
return fav;
}
private CollectionWithPagingInfo<Favourite> wrap(Paging paging, PagingResults<PersonFavourite> personFavourites)
private CollectionWithPagingInfo<Favourite> wrap(Paging paging, PagingResults<PersonFavourite> personFavourites, Parameters parameters)
{
final List<PersonFavourite> page = personFavourites.getPage();
final List<Favourite> list = new AbstractList<Favourite>()
@@ -156,7 +161,7 @@ public class FavouritesImpl implements Favourites
public Favourite get(int index)
{
PersonFavourite personFavourite = page.get(index);
Favourite fav = getFavourite(personFavourite);
Favourite fav = getFavourite(personFavourite, parameters);
return fav;
}
@@ -177,6 +182,13 @@ public class FavouritesImpl implements Favourites
@Override
public Favourite addFavourite(String personId, Favourite favourite)
{
Parameters parameters = getDefaultParameters(personId, null);
return addFavourite(personId, favourite, parameters);
}
@Override
public Favourite addFavourite(String personId, Favourite favourite, Parameters parameters)
{
Favourite ret = null;
@@ -197,7 +209,7 @@ public class FavouritesImpl implements Favourites
try
{
PersonFavourite personFavourite = favouritesService.addFavourite(personId, siteNodeRef);
ret = getFavourite(personFavourite);
ret = getFavourite(personFavourite, parameters);
}
catch(SiteDoesNotExistException e)
{
@@ -214,7 +226,7 @@ public class FavouritesImpl implements Favourites
}
PersonFavourite personFavourite = favouritesService.addFavourite(personId, nodeRef);
ret = getFavourite(personFavourite);
ret = getFavourite(personFavourite, parameters);
}
else if(target instanceof FolderTarget)
{
@@ -226,7 +238,7 @@ public class FavouritesImpl implements Favourites
}
PersonFavourite personFavourite = favouritesService.addFavourite(personId, nodeRef);
ret = getFavourite(personFavourite);
ret = getFavourite(personFavourite, parameters);
}
return ret;
@@ -264,7 +276,15 @@ public class FavouritesImpl implements Favourites
}
}
@Override
public Favourite getFavourite(String personId, String favouriteId)
{
Parameters parameters = getDefaultParameters(personId, favouriteId);
return getFavourite(personId, favouriteId, parameters);
}
@Override
public Favourite getFavourite(String personId, String favouriteId, Parameters parameters)
{
NodeRef nodeRef = nodes.validateNode(favouriteId);
personId = people.validatePerson(personId, true);
@@ -272,7 +292,7 @@ public class FavouritesImpl implements Favourites
PersonFavourite personFavourite = favouritesService.getFavourite(personId, nodeRef);
if(personFavourite != null)
{
Favourite favourite = getFavourite(personFavourite);
Favourite favourite = getFavourite(personFavourite, parameters);
return favourite;
}
else
@@ -327,6 +347,27 @@ public class FavouritesImpl implements Favourites
final PagingResults<PersonFavourite> favourites = favouritesService.getPagedFavourites(personId, filterTypes, FavouritesService.DEFAULT_SORT_PROPS,
Util.getPagingRequest(paging));
return wrap(paging, favourites);
return wrap(paging, favourites, parameters);
}
private void setPathInfo(Node node, List<String> includeParam)
{
if (includeParam.contains(PARAM_INCLUDE_PATH))
{
PathInfo pathInfo = nodes.lookupPathInfo(node.getNodeRef(), null);
node.setPath(pathInfo);
}
}
/**
* Returns a {@code {@link Parameters} object where almost all of its values are null.
* the non-null value is the {@literal include} and whatever value is passed for {@code personId} and {@code favouriteId}
*/
private Parameters getDefaultParameters(String personId, String favouriteId)
{
Params.RecognizedParams recognizedParams = new Params.RecognizedParams(null, null, null, null, Collections.emptyList(), null, null, null,
false);
Parameters parameters = Params.valueOf(recognizedParams, personId, favouriteId, null);
return parameters;
}
}

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Remote API
* %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited
* Copyright (C) 2005 - 2017 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -84,7 +84,7 @@ RelationshipResourceAction.Create<Favourite>, RelationshipResourceAction.Delete
List<Favourite> ret = new ArrayList<Favourite>(entity.size());
for(Favourite favourite : entity)
{
ret.add(favourites.addFavourite(personId, favourite));
ret.add(favourites.addFavourite(personId, favourite, parameters));
}
return ret;
}
@@ -100,6 +100,6 @@ RelationshipResourceAction.Create<Favourite>, RelationshipResourceAction.Delete
public Favourite readById(String personId, String favouriteId, Parameters parameters)
throws RelationshipResourceNotFoundException
{
return favourites.getFavourite(personId, favouriteId);
return favourites.getFavourite(personId, favouriteId, parameters);
}
}

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Remote API
* %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited
* Copyright (C) 2005 - 2017 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -28,6 +28,7 @@ package org.alfresco.rest.api.tests;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -42,6 +43,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.tenant.TenantUtil;
@@ -61,11 +63,13 @@ import org.alfresco.rest.api.tests.client.data.Comment;
import org.alfresco.rest.api.tests.client.data.Favourite;
import org.alfresco.rest.api.tests.client.data.FavouriteDocument;
import org.alfresco.rest.api.tests.client.data.FavouriteFolder;
import org.alfresco.rest.api.tests.client.data.FavouriteNode;
import org.alfresco.rest.api.tests.client.data.FavouritesTarget;
import org.alfresco.rest.api.tests.client.data.FileFavouriteTarget;
import org.alfresco.rest.api.tests.client.data.FolderFavouriteTarget;
import org.alfresco.rest.api.tests.client.data.InvalidFavouriteTarget;
import org.alfresco.rest.api.tests.client.data.JSONAble;
import org.alfresco.rest.api.tests.client.data.PathInfo;
import org.alfresco.rest.api.tests.client.data.Site;
import org.alfresco.rest.api.tests.client.data.SiteFavouriteTarget;
import org.alfresco.rest.api.tests.client.data.SiteImpl;
@@ -91,7 +95,7 @@ import com.google.common.collect.Lists;
* @author steveglover
* @since publicapi1.0
*/
public class TestFavourites extends EnterpriseTestApi
public class TestFavourites extends AbstractBaseApiTest
{
private static enum TARGET_TYPE
{
@@ -1712,4 +1716,187 @@ public class TestFavourites extends EnterpriseTestApi
}
}
}
/**
* Tests get favourites with 'include' parameter.
* <p>GET:</p>
* {@literal <host>:<port>/alfresco/api/<networkId>/public/alfresco/versions/1/people/<userName>/favorites?include=path}
*/
@Test
public void testGetFavouritesWithPath() throws Exception
{
// As person12 user
setRequestContext(network1.getId(), person12Id, "password");
final NodeRef folderNodeRef = person1PublicFolders.get(0); // person1's folder (Test Folder1)
final NodeRef nodeRef = person1PublicDocs.get(1); // a file (Test Doc2) in the folder (Test Folder1)
final TestSite publicSite = person1PublicSites.get(0); // person1's public site
// Favourite the doc (Test Doc2)
Favourite fileFavourite = makeFileFavourite(nodeRef.getId());
favouritesProxy.createFavourite(person12Id, fileFavourite);
//Favourite the folder (Test Folder1)
Favourite folderFavourite = makeFolderFavourite(folderNodeRef.getId());
favouritesProxy.createFavourite(person12Id, folderFavourite);
// Favourite the public site
final Favourite siteFavourite = makeSiteFavourite(publicSite);
favouritesProxy.createFavourite(person12Id, siteFavourite);
Paging paging = getPaging(0, 100);
Map<String, String> otherParams = Collections.singletonMap("include", "path");
ListResponse<Favourite> resp = favouritesProxy.getFavourites(person12Id, createParams(paging, otherParams));
List<Favourite> actualFavouritesList = resp.getList();
assertEquals("Incorrect number of entries returned", 3, actualFavouritesList.size());
actualFavouritesList.forEach(fav ->
{
FavouriteNode node;
switch (fav.getType())
{
case FILE:
{
node = ((FileFavouriteTarget) fav.getTarget()).getDocument();
assertNotNull("node is null.", node);
assertPathInfo(node.getPath(), "/Company Home/Sites/" + publicSite.getSiteId() + "/documentLibrary/Test Folder1", true);
break;
}
case FOLDER:
{
node = ((FolderFavouriteTarget) fav.getTarget()).getFolder();
assertNotNull("node is null.", node);
assertPathInfo(node.getPath(), "/Company Home/Sites/" + publicSite.getSiteId() + "/documentLibrary", true);
break;
}
case SITE:
{
JSONObject siteJsonObject = fav.getTarget().toJSON();
assertNotNull("There should be a site JSON object.", siteJsonObject);
assertNull("Path info should not be returned for sites.", siteJsonObject.get("path"));
break;
}
}
});
// Get favourites without 'include' option
resp = favouritesProxy.getFavourites(person12Id, createParams(paging, null));
actualFavouritesList = resp.getList();
assertEquals("Incorrect number of entries returned", 3, actualFavouritesList.size());
actualFavouritesList.forEach(fav ->
{
FavouriteNode node;
switch (fav.getType())
{
case FILE:
{
node = ((FileFavouriteTarget) fav.getTarget()).getDocument();
assertNotNull("node is null.", node);
assertNull("Path info should not be returned by default", node.getPath());
break;
}
case FOLDER:
{
node = ((FolderFavouriteTarget) fav.getTarget()).getFolder();
assertNotNull("node is null.", node);
assertNull("Path info should not be returned by default", node.getPath());
break;
}
case SITE:
{
JSONObject siteJsonObject = fav.getTarget().toJSON();
assertNotNull("There should be a site JSON object.", siteJsonObject);
assertNull("Path info should not be returned for sites.", siteJsonObject.get("path"));
break;
}
}
});
}
/**
* Tests create and get favourite with 'include' parameter.
*
* <p>POST:</p>
* {@literal <host>:<port>/alfresco/api/<networkId>/public/alfresco/versions/1/people/<userName>/favorites?include=path}
*
* <p>GET:</p>
* {@literal <host>:<port>/alfresco/api/<networkId>/public/alfresco/versions/1/people/<userName>/favorites/<targetId>?include=path}
*/
@Test
public void testCreateAndGetFavouriteWithPath() throws Exception
{
Map<String, String> includePath = Collections.singletonMap("include", "path");
// As person12 user
setRequestContext(network1.getId(), person12Id, "password");
final NodeRef folderNodeRef = person1PublicFolders.get(0); // person1's folder (Test Folder1)
final NodeRef nodeRef1= person1PublicDocs.get(0); // a file in the site's document library (Test Doc1)
final NodeRef nodeRef2 = person1PublicDocs.get(1); // a file (Test Doc2) in the folder (Test Folder1)
final TestSite publicSite = person1PublicSites.get(0); // person1's public site
// Favourite the doc (Test Doc1)
Favourite file1Favourite = makeFileFavourite(nodeRef1.getId());
file1Favourite = favouritesProxy.createFavourite(person12Id, file1Favourite, includePath);
FavouriteNode node = ((FileFavouriteTarget) file1Favourite.getTarget()).getDocument();
assertPathInfo(node.getPath(), "/Company Home/Sites/" + publicSite.getSiteId() + "/documentLibrary", true);
// Favourite the doc (Test Doc2)
Favourite file2Favourite = makeFileFavourite(nodeRef2.getId());
file2Favourite = favouritesProxy.createFavourite(person12Id, file2Favourite);
node = ((FileFavouriteTarget) file2Favourite.getTarget()).getDocument();
assertNull("Path info should not be returned by default", node.getPath());
//Favourite the folder (Test Folder1)
Favourite folderFavourite = makeFolderFavourite(folderNodeRef.getId());
folderFavourite = favouritesProxy.createFavourite(person12Id, folderFavourite, includePath);
node = ((FolderFavouriteTarget) folderFavourite.getTarget()).getFolder();
assertPathInfo(node.getPath(), "/Company Home/Sites/" + publicSite.getSiteId() + "/documentLibrary", true);
// Favourite the public site
Favourite siteFavourite = makeSiteFavourite(publicSite);
siteFavourite = favouritesProxy.createFavourite(person12Id, siteFavourite);
JSONObject siteJsonObject = siteFavourite.getTarget().toJSON();
assertNotNull("There should be a site JSON object.", siteJsonObject);
assertNull("Path info should not be returned for sites.", siteJsonObject.get("path"));
// Get single favourite (Test Doc2) with include path
Favourite favouriteResp = favouritesProxy.getFavourite(person12Id, file2Favourite.getTargetGuid(), includePath);
node = ((FileFavouriteTarget) favouriteResp.getTarget()).getDocument();
assertPathInfo(node.getPath(), "/Company Home/Sites/" + publicSite.getSiteId() + "/documentLibrary/Test Folder1", true);
favouriteResp = favouritesProxy.getFavourite(person12Id, folderFavourite.getTargetGuid(), includePath);
node = ((FolderFavouriteTarget) favouriteResp.getTarget()).getFolder();
assertPathInfo(node.getPath(), "/Company Home/Sites/" + publicSite.getSiteId() + "/documentLibrary", true);
favouriteResp = favouritesProxy.getFavourite(person12Id, siteFavourite.getTargetGuid(), includePath);
siteJsonObject = favouriteResp.getTarget().toJSON();
assertNotNull("There should be a site JSON object.", siteJsonObject);
assertNull("Path info should not be returned for sites.", siteJsonObject.get("path"));
}
private void assertPathInfo(PathInfo expectedPathInfo, String expectedPathName, boolean expectedIsComplete)
{
assertNotNull("Path info was requested.", expectedPathInfo);
assertEquals("IsComplete should have been true.", expectedIsComplete, expectedPathInfo.getIsComplete());
assertEquals("Incorrect path name.", expectedPathName, expectedPathInfo.getName());
// substring(1) -> so we can ignore the first '/'
List<String> expectedPathElements = Arrays.asList(expectedPathName.substring(1).split("/"));
assertEquals("Incorrect number of path elements.", expectedPathElements.size(), expectedPathInfo.getElements().size());
AtomicInteger i = new AtomicInteger(0);
expectedPathElements.forEach(path -> assertEquals("Incorrect path element.", path,
expectedPathInfo.getElements().get(i.getAndIncrement()).getName()));
}
@Override
public String getScope()
{
return "public";
}
}

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Remote API
* %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited
* Copyright (C) 2005 - 2017 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -1086,6 +1086,12 @@ public class PublicApiClient
return Favourite.parseFavourite((JSONObject)response.getJsonResponse().get("entry"));
}
public Favourite getFavourite(String personId, String favouriteId, Map<String, String> params) throws PublicApiException, ParseException
{
HttpResponse response = getSingle("people", personId, "favorites", favouriteId, params, "Failed to get favourite " + favouriteId, 200);
return Favourite.parseFavourite((JSONObject) response.getJsonResponse().get("entry"));
}
public Favourite createFavourite(String personId, Favourite favourite) throws PublicApiException, ParseException
{
HttpResponse response = create("people", personId, "favorites", null, favourite.toJSON().toString(), "Failed to create favourite");
@@ -1093,6 +1099,13 @@ public class PublicApiClient
return ret;
}
public Favourite createFavourite(String personId, Favourite favourite, Map<String, String> params) throws PublicApiException, ParseException
{
HttpResponse response = create("people", personId, "favorites", null, favourite.toJSON().toString(), "Failed to create favourite", 201, params);
Favourite ret = Favourite.parseFavourite((JSONObject)response.getJsonResponse().get("entry"));
return ret;
}
public void removeFavourite(String personId, String favouriteId) throws PublicApiException
{
remove("people", personId, "favorites", favouriteId, "Failed to remove favourite");

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Remote API
* %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited
* Copyright (C) 2005 - 2017 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -170,17 +170,29 @@ public class FavouriteDocument extends FavouriteNode implements ExpectedComparis
document.setMimeType(mimeType);
document.setSizeInBytes(BigInteger.valueOf(sizeInBytes));
document.setVersionLabel(versionLabel);
// set path if available
document.parseAndSetPath(jsonObject);
return document;
}
@Override
public String toString()
{
return "FavouriteDocument [mimeType=" + mimeType + ", sizeInBytes="
+ sizeInBytes + ", versionLabel=" + versionLabel + ", nodeId="
+ nodeId + ", guid=" + guid + ", name=" + name + ", title="
+ title + ", description=" + description + ", createdAt="
+ createdAt + ", modifiedAt=" + modifiedAt + ", createdBy="
+ createdBy + ", modifiedBy=" + modifiedBy + "]";
final StringBuilder sb = new StringBuilder(250);
sb.append("FavouriteDocument [nodeId=").append(nodeId)
.append(", guid=").append(guid)
.append(", name=").append(name)
.append(", title=").append(title)
.append(", description=").append(description)
.append(", createdAt=").append(createdAt)
.append(", modifiedAt=").append(modifiedAt)
.append(", createdBy=").append(createdBy)
.append(", modifiedBy=").append(modifiedBy)
.append(", mimeType=").append(mimeType)
.append(", sizeInBytes=").append(sizeInBytes)
.append(", versionLabel=").append(versionLabel)
.append(", path=").append(path)
.append(']');
return sb.toString();
}
}

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Remote API
* %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited
* Copyright (C) 2005 - 2017 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -110,6 +110,8 @@ public class FavouriteFolder extends FavouriteNode implements ExpectedComparison
folder.setModifiedAt(modifiedAt);
folder.setCreatedAt(createdAt);
folder.setDescription(description);
// set path if available
folder.parseAndSetPath(jsonObject);
return folder;
}
@@ -122,10 +124,18 @@ public class FavouriteFolder extends FavouriteNode implements ExpectedComparison
@Override
public String toString()
{
return "Folder [nodeId=" + nodeId + ", guid=" + guid + ", name=" + name
+ ", title=" + title + ", description=" + description
+ ", createdAt=" + createdAt + ", modifiedAt=" + modifiedAt
+ ", createdBy=" + createdBy + ", modifiedBy=" + modifiedBy
+ "]";
final StringBuilder sb = new StringBuilder(250);
sb.append("FavouriteFolder [nodeId=").append(nodeId)
.append(", guid=").append(guid)
.append(", name=").append(name)
.append(", title=").append(title)
.append(", description=").append(description)
.append(", createdAt=").append(createdAt)
.append(", modifiedAt=").append(modifiedAt)
.append(", createdBy=").append(createdBy)
.append(", modifiedBy=").append(modifiedBy)
.append(", path=").append(path)
.append(']');
return sb.toString();
}
}

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Remote API
* %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited
* Copyright (C) 2005 - 2017 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -29,8 +29,10 @@ package org.alfresco.rest.api.tests.client.data;
import static org.junit.Assert.assertTrue;
import java.io.Serializable;
import java.text.ParseException;
import java.util.Date;
import org.alfresco.rest.api.tests.util.RestApiUtil;
import org.json.simple.JSONObject;
/**
@@ -52,6 +54,7 @@ public class FavouriteNode implements Serializable, ExpectedComparison
protected Date modifiedAt;
protected String createdBy;
protected String modifiedBy;
protected PathInfo path;
public FavouriteNode()
{
@@ -173,6 +176,32 @@ public class FavouriteNode implements Serializable, ExpectedComparison
this.nodeId = nodeId;
}
public PathInfo getPath()
{
return path;
}
public void setPath(PathInfo pathInfo)
{
this.path = pathInfo;
}
protected void parseAndSetPath(JSONObject jsonObject) throws ParseException
{
if (jsonObject.get("path") != null)
{
try
{
PathInfo pathInfo = RestApiUtil.parsePojo("path", jsonObject, PathInfo.class);
this.setPath(pathInfo);
}
catch (Exception e)
{
throw new ParseException(e.getMessage(), -1);
}
}
}
@Override
public int hashCode()
{
@@ -229,15 +258,27 @@ public class FavouriteNode implements Serializable, ExpectedComparison
}
AssertUtil.assertEquals("createdBy", createdBy, other.getCreatedBy());
AssertUtil.assertEquals("modifiedBy", modifiedBy, other.getModifiedBy());
if(path != null)
{
path.expected(other.path);
}
}
@Override
public String toString()
{
return "Node [nodeId=" + nodeId + ", guid=" + guid + ", name=" + name
+ ", title=" + title + ", description=" + description
+ ", createdAt=" + createdAt + ", modifiedAt=" + modifiedAt
+ ", createdBy=" + createdBy + ", modifiedBy=" + modifiedBy
+ "]";
final StringBuilder sb = new StringBuilder(250);
sb.append("FavouriteNode [nodeId=").append(nodeId)
.append(", guid=").append(guid)
.append(", name=").append(name)
.append(", title=").append(title)
.append(", description=").append(description)
.append(", createdAt=").append(createdAt)
.append(", modifiedAt=").append(modifiedAt)
.append(", createdBy=").append(createdBy)
.append(", modifiedBy=").append(modifiedBy)
.append(", path=").append(path)
.append(']');
return sb.toString();
}
}