From 37602b45e50a1ccb7051a9310c33b022d995c798 Mon Sep 17 00:00:00 2001 From: Bogdan Horje Date: Thu, 12 Nov 2015 19:31:44 +0000 Subject: [PATCH] CM-690 extensions git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@117488 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../preference/PreferenceServiceImpl.java | 58 ++++++++++++++++++- .../PreferenceServiceExtension.java | 9 +++ .../traitextender/PreferenceServiceTrait.java | 12 ++++ 3 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 source/java/org/alfresco/repo/preference/traitextender/PreferenceServiceExtension.java create mode 100644 source/java/org/alfresco/repo/preference/traitextender/PreferenceServiceTrait.java diff --git a/source/java/org/alfresco/repo/preference/PreferenceServiceImpl.java b/source/java/org/alfresco/repo/preference/PreferenceServiceImpl.java index dd994446de..957e300ac4 100644 --- a/source/java/org/alfresco/repo/preference/PreferenceServiceImpl.java +++ b/source/java/org/alfresco/repo/preference/PreferenceServiceImpl.java @@ -32,6 +32,8 @@ import org.alfresco.query.CannedQueryPageDetails; import org.alfresco.query.PagingRequest; import org.alfresco.query.PagingResults; import org.alfresco.repo.content.MimetypeMap; +import org.alfresco.repo.preference.traitextender.PreferenceServiceExtension; +import org.alfresco.repo.preference.traitextender.PreferenceServiceTrait; import org.alfresco.repo.security.authentication.AuthenticationContext; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; @@ -46,6 +48,11 @@ import org.alfresco.service.cmr.security.AccessStatus; import org.alfresco.service.cmr.security.AuthorityService; import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.security.PersonService; +import org.alfresco.traitextender.AJExtender; +import org.alfresco.traitextender.Extend; +import org.alfresco.traitextender.ExtendedTrait; +import org.alfresco.traitextender.Extensible; +import org.alfresco.traitextender.Trait; import org.alfresco.util.ISO8601DateFormat; import org.alfresco.util.Pair; import org.apache.commons.logging.Log; @@ -58,7 +65,7 @@ import org.json.JSONObject; * * @author Roy Wetherall */ -public class PreferenceServiceImpl implements PreferenceService +public class PreferenceServiceImpl implements PreferenceService, Extensible { private static final Log log = LogFactory.getLog(PreferenceServiceImpl.class); @@ -75,7 +82,13 @@ public class PreferenceServiceImpl implements PreferenceService /** Authentication Service */ private AuthenticationContext authenticationContext; private AuthorityService authorityService; + + private final ExtendedTrait preferenceServiceTrait; + public PreferenceServiceImpl() + { + preferenceServiceTrait=new ExtendedTrait(createPreferenceServiceTrait()); + } /** * Set the node service * @@ -191,7 +204,10 @@ public class PreferenceServiceImpl implements PreferenceService @SuppressWarnings({ "unchecked" }) public Map getPreferences(String userName, String preferenceFilter) { - if (log.isTraceEnabled()) { log.trace("getPreferences(" + userName + ", " + preferenceFilter + ")"); } + if (log.isTraceEnabled()) + { + log.trace("getPreferences(" + userName + ", " + preferenceFilter + ")"); + } Map preferences = new TreeMap(); @@ -254,7 +270,10 @@ public class PreferenceServiceImpl implements PreferenceService throw new AlfrescoRuntimeException("Can not get preferences for " + userName + " because there was an error parsing the JSON data.", exception); } - if (log.isTraceEnabled()) { log.trace("result = " + preferences); } + if (log.isTraceEnabled()) + { + log.trace("result = " + preferences); + } return preferences; } @@ -354,6 +373,7 @@ public class PreferenceServiceImpl implements PreferenceService return result; } + @Extend(traitAPI=PreferenceServiceTrait.class,extensionAPI=PreferenceServiceExtension.class) public void setPreferences(final String userName, final Map preferences) { // Get the user node reference @@ -602,4 +622,36 @@ public class PreferenceServiceImpl implements PreferenceService return pageSize; } } + + @Override + public ExtendedTrait getTrait(Class traitAPI) + { + return (ExtendedTrait) preferenceServiceTrait; + } + + public PreferenceServiceTrait createPreferenceServiceTrait() + { + return new PreferenceServiceTrait() + { + + @Override + public void setPreferences(final String userName, final Map preferences) + throws Throwable + { + + AJExtender.run(new AJExtender.ExtensionBypass() + { + @Override + public Void run() + { + PreferenceServiceImpl.this.setPreferences(userName, preferences); + return null; + }; + }); + + } + + }; + } + } diff --git a/source/java/org/alfresco/repo/preference/traitextender/PreferenceServiceExtension.java b/source/java/org/alfresco/repo/preference/traitextender/PreferenceServiceExtension.java new file mode 100644 index 0000000000..19d6d7d42e --- /dev/null +++ b/source/java/org/alfresco/repo/preference/traitextender/PreferenceServiceExtension.java @@ -0,0 +1,9 @@ +package org.alfresco.repo.preference.traitextender; + +import java.io.Serializable; +import java.util.Map; + +public interface PreferenceServiceExtension +{ + public void setPreferences(final String userName, final Map preferences) throws Throwable; +} diff --git a/source/java/org/alfresco/repo/preference/traitextender/PreferenceServiceTrait.java b/source/java/org/alfresco/repo/preference/traitextender/PreferenceServiceTrait.java new file mode 100644 index 0000000000..0a2712cd80 --- /dev/null +++ b/source/java/org/alfresco/repo/preference/traitextender/PreferenceServiceTrait.java @@ -0,0 +1,12 @@ +package org.alfresco.repo.preference.traitextender; + +import java.io.Serializable; +import java.util.Map; + +import org.alfresco.traitextender.Trait; + +public interface PreferenceServiceTrait extends Trait +{ + public void setPreferences(final String userName, final Map preferences) throws Throwable; + +}