diff --git a/remote-api/src/main/java/org/alfresco/rest/api/impl/PreferencesImpl.java b/remote-api/src/main/java/org/alfresco/rest/api/impl/PreferencesImpl.java index 0c5624c374..b3c09f7bcd 100644 --- a/remote-api/src/main/java/org/alfresco/rest/api/impl/PreferencesImpl.java +++ b/remote-api/src/main/java/org/alfresco/rest/api/impl/PreferencesImpl.java @@ -1,112 +1,112 @@ -/* - * #%L - * Alfresco Remote API - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * 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 . - * #L% - */ -package org.alfresco.rest.api.impl; - -import org.alfresco.query.PagingResults; -import org.alfresco.rest.api.People; -import org.alfresco.rest.api.Preferences; -import org.alfresco.rest.api.model.Preference; -import org.alfresco.rest.framework.core.exceptions.RelationshipResourceNotFoundException; -import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo; -import org.alfresco.rest.framework.resource.parameters.Paging; -import org.alfresco.service.cmr.preference.PreferenceService; -import org.alfresco.util.Pair; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Centralises access to preference services and maps between representations. - * - * @author steveglover - * @since publicapi1.0 - */ -public class PreferencesImpl implements Preferences -{ - private People people; - private PreferenceService preferenceService; - - public void setPeople(People people) - { - this.people = people; - } - - public void setPreferenceService(PreferenceService preferenceService) - { - this.preferenceService = preferenceService; - } - - public Preference getPreference(String personId, String preferenceName) - { - personId = people.validatePerson(personId); - Serializable preferenceValue = preferenceService.getPreference(personId, preferenceName); - if (preferenceValue != null) - { - return new Preference(preferenceName, preferenceValue); - } - else - { - throw new RelationshipResourceNotFoundException(personId, preferenceName); - } - } - - public CollectionWithPagingInfo getPreferences(String personId, Paging paging) - { - personId = people.validatePerson(personId); - - PagingResults> preferences = preferenceService.getPagedPreferences(personId, null, Util.getPagingRequest(paging)); - List ret = new ArrayList(preferences.getPage().size()); - for (Pair prefEntity : preferences.getPage()) - { - Preference pref = new Preference(prefEntity.getFirst(), prefEntity.getSecond()); - ret.add(pref); - } - - return CollectionWithPagingInfo.asPaged(paging, ret, preferences.hasMoreItems(), preferences.getTotalResultCount().getFirst()); - } - - @Override - public Preference updatePreference(String personId, Preference preference) - { - personId = people.validatePerson(personId, true); - final Map preferencesToSet; - if (preference.getValue() == null || "".equals(preference.getValue())) - { - preferencesToSet = new HashMap<>(1); - preferencesToSet.put(preference.getName(), null); - } - else - { - preferencesToSet = Map.of(preference.getName(), preference.getValue()); - } - - preferenceService.setPreferences(personId, preferencesToSet); - return new Preference(preference.getName(), preferenceService.getPreference(personId, preference.getName())); - } -} +/* + * #%L + * Alfresco Remote API + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * 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 . + * #L% + */ +package org.alfresco.rest.api.impl; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.alfresco.query.PagingResults; +import org.alfresco.rest.api.People; +import org.alfresco.rest.api.Preferences; +import org.alfresco.rest.api.model.Preference; +import org.alfresco.rest.framework.core.exceptions.RelationshipResourceNotFoundException; +import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo; +import org.alfresco.rest.framework.resource.parameters.Paging; +import org.alfresco.service.cmr.preference.PreferenceService; +import org.alfresco.util.Pair; + +/** + * Centralises access to preference services and maps between representations. + * + * @author steveglover + * @since publicapi1.0 + */ +public class PreferencesImpl implements Preferences +{ + private People people; + private PreferenceService preferenceService; + + public void setPeople(People people) + { + this.people = people; + } + + public void setPreferenceService(PreferenceService preferenceService) + { + this.preferenceService = preferenceService; + } + + public Preference getPreference(String personId, String preferenceName) + { + personId = people.validatePerson(personId); + Serializable preferenceValue = preferenceService.getPreference(personId, preferenceName); + if (preferenceValue != null) + { + return new Preference(preferenceName, preferenceValue); + } + else + { + throw new RelationshipResourceNotFoundException(personId, preferenceName); + } + } + + public CollectionWithPagingInfo getPreferences(String personId, Paging paging) + { + personId = people.validatePerson(personId); + + PagingResults> preferences = preferenceService.getPagedPreferences(personId, null, Util.getPagingRequest(paging)); + List ret = new ArrayList(preferences.getPage().size()); + for (Pair prefEntity : preferences.getPage()) + { + Preference pref = new Preference(prefEntity.getFirst(), prefEntity.getSecond()); + ret.add(pref); + } + + return CollectionWithPagingInfo.asPaged(paging, ret, preferences.hasMoreItems(), preferences.getTotalResultCount().getFirst()); + } + + @Override + public Preference updatePreference(String personId, Preference preference) + { + personId = people.validatePerson(personId, true); + final Map preferencesToSet; + if (preference.getValue() == null || "".equals(preference.getValue())) + { + preferencesToSet = new HashMap<>(1); + preferencesToSet.put(preference.getName(), null); + } + else + { + preferencesToSet = Map.of(preference.getName(), preference.getValue()); + } + + preferenceService.setPreferences(personId, preferencesToSet); + return new Preference(preference.getName(), preferenceService.getPreference(personId, preference.getName())); + } +} diff --git a/remote-api/src/main/java/org/alfresco/rest/api/people/PersonPreferencesRelation.java b/remote-api/src/main/java/org/alfresco/rest/api/people/PersonPreferencesRelation.java index 2c4ba87bac..ee162ffcc3 100644 --- a/remote-api/src/main/java/org/alfresco/rest/api/people/PersonPreferencesRelation.java +++ b/remote-api/src/main/java/org/alfresco/rest/api/people/PersonPreferencesRelation.java @@ -1,105 +1,106 @@ -/* - * #%L - * Alfresco Remote API - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * 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 . - * #L% - */ -package org.alfresco.rest.api.people; - -import org.alfresco.rest.api.Preferences; -import org.alfresco.rest.api.model.Preference; -import org.alfresco.rest.framework.WebApiDescription; -import org.alfresco.rest.framework.core.exceptions.InvalidArgumentException; -import org.alfresco.rest.framework.resource.RelationshipResource; -import org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction; -import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo; -import org.alfresco.rest.framework.resource.parameters.Parameters; -import org.alfresco.util.ParameterCheck; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.springframework.beans.factory.InitializingBean; - -@RelationshipResource(name = "preferences", entityResource = PeopleEntityResource.class, title = "Person Preferences") -public class PersonPreferencesRelation implements RelationshipResourceAction.Read, RelationshipResourceAction.ReadById, RelationshipResourceAction.Update, InitializingBean -{ - private static final Log logger = LogFactory.getLog(PersonPreferencesRelation.class); - - private Preferences preferences; - - public void setPreferences(Preferences preferences) - { - this.preferences = preferences; - } - - @Override - public void afterPropertiesSet() - { - ParameterCheck.mandatory("preferences", this.preferences); - } - - /** - * Returns a paged list of preferences for the user personId. - * - * If personId does not exist, NotFoundException (status 404). - * - * @see org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction.Read#readAll(java.lang.String, org.alfresco.rest.framework.resource.parameters.Parameters) - */ - @Override - @WebApiDescription(title = "A paged list of the persons preferences.") - public CollectionWithPagingInfo readAll(String personId, Parameters parameters) - { - return preferences.getPreferences(personId, parameters.getPaging()); - } - - /** - * Returns information regarding the preference 'preferenceName' for user personId. - * - * If personId does not exist, NotFoundException (status 404). - * - * @see org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction.ReadById#readById(String, String, org.alfresco.rest.framework.resource.parameters.Parameters) - */ - @Override - @WebApiDescription(title = "Preference value for preference 'preferenceName' for person 'personId'.") - public Preference readById(String personId, String preferenceName, Parameters parameters) - { - // fix for REPO-855 - String url = parameters.getRequest().getURL(); - if (url.matches(".*workspace://SpacesStore/.*")) - { - preferenceName += url.substring(url.indexOf("//SpacesStore/")); - } - // - - return preferences.getPreference(personId, preferenceName); - } - - @Override - @WebApiDescription(title = "Upsert preference value for person 'personId'.") - public Preference update(String personId, Preference preference, Parameters parameters) - { - if (preference.getName() == null || preference.getName().isBlank()) - { - throw new InvalidArgumentException(); - } - return preferences.updatePreference(personId, preference); - } -} +/* + * #%L + * Alfresco Remote API + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * 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 . + * #L% + */ +package org.alfresco.rest.api.people; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.beans.factory.InitializingBean; + +import org.alfresco.rest.api.Preferences; +import org.alfresco.rest.api.model.Preference; +import org.alfresco.rest.framework.WebApiDescription; +import org.alfresco.rest.framework.core.exceptions.InvalidArgumentException; +import org.alfresco.rest.framework.resource.RelationshipResource; +import org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction; +import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo; +import org.alfresco.rest.framework.resource.parameters.Parameters; +import org.alfresco.util.ParameterCheck; + +@RelationshipResource(name = "preferences", entityResource = PeopleEntityResource.class, title = "Person Preferences") +public class PersonPreferencesRelation implements RelationshipResourceAction.Read, RelationshipResourceAction.ReadById, RelationshipResourceAction.Update, InitializingBean +{ + private static final Log logger = LogFactory.getLog(PersonPreferencesRelation.class); + + private Preferences preferences; + + public void setPreferences(Preferences preferences) + { + this.preferences = preferences; + } + + @Override + public void afterPropertiesSet() + { + ParameterCheck.mandatory("preferences", this.preferences); + } + + /** + * Returns a paged list of preferences for the user personId. + * + * If personId does not exist, NotFoundException (status 404). + * + * @see org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction.Read#readAll(java.lang.String, org.alfresco.rest.framework.resource.parameters.Parameters) + */ + @Override + @WebApiDescription(title = "A paged list of the persons preferences.") + public CollectionWithPagingInfo readAll(String personId, Parameters parameters) + { + return preferences.getPreferences(personId, parameters.getPaging()); + } + + /** + * Returns information regarding the preference 'preferenceName' for user personId. + * + * If personId does not exist, NotFoundException (status 404). + * + * @see org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction.ReadById#readById(String, String, org.alfresco.rest.framework.resource.parameters.Parameters) + */ + @Override + @WebApiDescription(title = "Preference value for preference 'preferenceName' for person 'personId'.") + public Preference readById(String personId, String preferenceName, Parameters parameters) + { + // fix for REPO-855 + String url = parameters.getRequest().getURL(); + if (url.matches(".*workspace://SpacesStore/.*")) + { + preferenceName += url.substring(url.indexOf("//SpacesStore/")); + } + // + + return preferences.getPreference(personId, preferenceName); + } + + @Override + @WebApiDescription(title = "Upsert preference value for person 'personId'.") + public Preference update(String personId, Preference preference, Parameters parameters) + { + if (preference.getName() == null || preference.getName().isBlank()) + { + throw new InvalidArgumentException(); + } + return preferences.updatePreference(personId, preference); + } +} diff --git a/remote-api/src/main/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptPut.java b/remote-api/src/main/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptPut.java index 2e45d7effb..4ace67a647 100644 --- a/remote-api/src/main/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptPut.java +++ b/remote-api/src/main/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptPut.java @@ -25,6 +25,20 @@ */ package org.alfresco.rest.framework.webscripts; +import java.io.IOException; +import java.io.InputStream; +import java.util.Locale; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.extensions.webscripts.WebScriptRequest; +import org.springframework.extensions.webscripts.WrappingWebScriptRequest; +import org.springframework.extensions.webscripts.servlet.WebScriptServletRequest; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; + import org.alfresco.repo.content.MimetypeMap; import org.alfresco.rest.framework.core.ResourceLocator; import org.alfresco.rest.framework.core.ResourceMetadata; @@ -42,19 +56,6 @@ import org.alfresco.rest.framework.resource.parameters.Params; import org.alfresco.rest.framework.resource.parameters.Params.RecognizedParams; import org.alfresco.rest.framework.tools.RecognizedParamsExtractor; import org.alfresco.rest.framework.tools.RequestReader; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.springframework.extensions.webscripts.WebScriptRequest; -import org.springframework.extensions.webscripts.WrappingWebScriptRequest; -import org.springframework.extensions.webscripts.servlet.WebScriptServletRequest; -import org.springframework.http.HttpMethod; -import org.springframework.http.MediaType; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Locale; -import java.util.Map; /** * Handles the HTTP PUT for a Resource, equivalent to CRUD Update @@ -131,7 +132,7 @@ public class ResourceWebScriptPut extends AbstractResourceWebScript implements P } } - //Fall through to unsupported. + // Fall through to unsupported. default: throw new UnsupportedResourceOperationException("PUT not supported for this request."); } @@ -141,7 +142,7 @@ public class ResourceWebScriptPut extends AbstractResourceWebScript implements P * Returns the basic content info from the request. * * @param req - * WebScriptRequest + * WebScriptRequest * @return BasicContentInfo */ private BasicContentInfo getContentInfo(WebScriptRequest req) @@ -167,7 +168,7 @@ public class ResourceWebScriptPut extends AbstractResourceWebScript implements P * Returns the input stream for the request * * @param req - * WebScriptRequest + * WebScriptRequest * @return InputStream */ private InputStream getStream(WebScriptRequest req) @@ -196,9 +197,9 @@ public class ResourceWebScriptPut extends AbstractResourceWebScript implements P * Executes the action on the resource * * @param resource - * ResourceWithMetadata + * ResourceWithMetadata * @param params - * parameters to use + * parameters to use * @return anObject the result of the execute */ @Override