use of org.alfresco.rest.api.model.SiteTarget in project alfresco-remote-api by Alfresco.
the class FavouritesImpl method addFavourite.
@Override
public Favourite addFavourite(String personId, Favourite favourite, Parameters parameters) {
Favourite ret = null;
personId = people.validatePerson(personId, true);
Target target = favourite.getTarget();
if (target == null) {
throw new InvalidArgumentException("target is missing");
} else if (target instanceof SiteTarget) {
SiteTarget siteTarget = (SiteTarget) target;
String guid = siteTarget.getSite().getGuid();
SiteInfo siteInfo = sites.validateSite(new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, guid));
NodeRef siteNodeRef = siteInfo.getNodeRef();
String siteId = siteInfo.getShortName();
try {
PersonFavourite personFavourite = favouritesService.addFavourite(personId, siteNodeRef);
ret = getFavourite(personFavourite, parameters);
} catch (SiteDoesNotExistException e) {
throw new RelationshipResourceNotFoundException(personId, siteId);
}
} else if (target instanceof DocumentTarget) {
DocumentTarget documentTarget = (DocumentTarget) target;
NodeRef nodeRef = documentTarget.getFile().getGuid();
if (!nodes.nodeMatches(nodeRef, Collections.singleton(ContentModel.TYPE_CONTENT), null)) {
throw new RelationshipResourceNotFoundException(personId, nodeRef.getId());
}
PersonFavourite personFavourite = favouritesService.addFavourite(personId, nodeRef);
ret = getFavourite(personFavourite, parameters);
} else if (target instanceof FolderTarget) {
FolderTarget folderTarget = (FolderTarget) target;
NodeRef nodeRef = folderTarget.getFolder().getGuid();
if (!nodes.nodeMatches(nodeRef, Collections.singleton(ContentModel.TYPE_FOLDER), Collections.singleton(SiteModel.TYPE_SITE))) {
throw new RelationshipResourceNotFoundException(personId, nodeRef.getId());
}
PersonFavourite personFavourite = favouritesService.addFavourite(personId, nodeRef);
ret = getFavourite(personFavourite, parameters);
}
return ret;
}
use of org.alfresco.rest.api.model.SiteTarget in project alfresco-remote-api by Alfresco.
the class TargetDeserializer method deserialize.
@Override
public Target deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
Target target = null;
JsonToken curr = jp.getCurrentToken();
if (curr == JsonToken.START_OBJECT) {
while (jp.nextToken() != JsonToken.END_OBJECT) {
String fieldname = jp.getCurrentName();
if (Type.SITE.toString().equals(fieldname.toUpperCase())) {
jp.nextToken();
try {
JavaType t = SimpleType.construct(Site.class);
BeanProperty p = new BeanProperty.Std(new PropertyName(""), t, null, null, null, null);
JsonDeserializer<?> siteDeserializer = ctxt.findContextualValueDeserializer(t, p);
Site site = (Site) siteDeserializer.deserialize(jp, ctxt);
target = new SiteTarget(site);
} catch (JsonMappingException e) {
throw new IllegalArgumentException("Target body is invalid for target type");
}
} else if (Type.FILE.toString().equals(fieldname.toUpperCase())) {
jp.nextToken();
try {
JavaType t = SimpleType.construct(Document.class);
BeanProperty p = new BeanProperty.Std(new PropertyName(""), t, null, null, null, null);
JsonDeserializer<?> documentDeserializer = ctxt.findContextualValueDeserializer(t, p);
Document document = (Document) documentDeserializer.deserialize(jp, ctxt);
target = new DocumentTarget(document);
} catch (JsonMappingException e) {
throw new IllegalArgumentException("Target body is invalid for target type");
}
} else if (Type.FOLDER.toString().equals(fieldname.toUpperCase())) {
jp.nextToken();
try {
JavaType t = SimpleType.construct(Folder.class);
BeanProperty p = new BeanProperty.Std(new PropertyName(""), t, null, null, null, null);
JsonDeserializer<?> folderDeserializer = ctxt.findContextualValueDeserializer(t, p);
Folder folder = (Folder) folderDeserializer.deserialize(jp, ctxt);
target = new FolderTarget(folder);
} catch (JsonMappingException e) {
throw new IllegalArgumentException("Target body is invalid for target type");
}
}
}
return target;
} else {
throw new IOException("Unable to deserialize favourite: " + curr.asString());
}
}
use of org.alfresco.rest.api.model.SiteTarget in project alfresco-remote-api by Alfresco.
the class FavouritesImpl method getTarget.
private Target getTarget(PersonFavourite personFavourite, Parameters parameters) {
Target target = null;
NodeRef nodeRef = personFavourite.getNodeRef();
Type type = personFavourite.getType();
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)) {
SiteInfo siteInfo = siteService.getSite(nodeRef);
String role = sites.getSiteRole(siteInfo.getShortName());
Site site = new Site(siteInfo, role);
target = new SiteTarget(site);
} else {
throw new AlfrescoRuntimeException("Unexpected favourite target type: " + type);
}
return target;
}
Aggregations