From aa4589e3623bd00210ce1a9f56153beee45e6c1d Mon Sep 17 00:00:00 2001 From: bsinou Date: Fri, 17 Feb 2017 14:41:17 +0100 Subject: [PATCH] First part of the refactoring: clean backends. --- .../META-INF/spring/application.xml | 2 +- org.argeo.suite.core/bnd.bnd | 1 + .../argeo/suite/SuiteMaintenanceService.java | 115 ++++++++++++++++ .../suite/people/PeopleSuiteServiceImpl.java | 128 ++++++++++-------- .../META-INF/spring/people.xml | 15 +- .../org/argeo/suite/web/DefaultDashboard.java | 7 +- .../org/argeo/suite/web/DefaultMainPage.java | 10 +- org.argeo.suite.workbench.rap/bnd.bnd | 2 + .../parts/AbstractSuiteDashboard.java | 44 ++++-- .../parts/DefaultDashboardEditor.java | 16 +-- 10 files changed, 256 insertions(+), 84 deletions(-) create mode 100644 org.argeo.suite.core/src/org/argeo/suite/SuiteMaintenanceService.java diff --git a/org.argeo.suite.core/META-INF/spring/application.xml b/org.argeo.suite.core/META-INF/spring/application.xml index 460fc85..d3af814 100644 --- a/org.argeo.suite.core/META-INF/spring/application.xml +++ b/org.argeo.suite.core/META-INF/spring/application.xml @@ -13,7 +13,7 @@ - diff --git a/org.argeo.suite.core/bnd.bnd b/org.argeo.suite.core/bnd.bnd index d316eb5..d1349a9 100644 --- a/org.argeo.suite.core/bnd.bnd +++ b/org.argeo.suite.core/bnd.bnd @@ -2,6 +2,7 @@ Require-Capability: cms.datamodel; filter:="(name=people)",\ cms.datamodel; filter:="(name=documents)" Import-Package:\ javax.jcr.nodetype,\ +org.argeo.connect.resources,\ org.argeo.node,\ org.argeo.util,\ javax.jcr.security,\ diff --git a/org.argeo.suite.core/src/org/argeo/suite/SuiteMaintenanceService.java b/org.argeo.suite.core/src/org/argeo/suite/SuiteMaintenanceService.java new file mode 100644 index 0000000..ef1ade0 --- /dev/null +++ b/org.argeo.suite.core/src/org/argeo/suite/SuiteMaintenanceService.java @@ -0,0 +1,115 @@ +package org.argeo.suite; + +import java.net.URI; +import java.util.List; +import java.util.Map; + +import javax.jcr.Repository; +import javax.jcr.RepositoryException; +import javax.jcr.Session; +import javax.jcr.nodetype.NodeType; +import javax.jcr.security.Privilege; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.connect.AppMaintenanceService; +import org.argeo.connect.resources.ResourceService; +import org.argeo.jcr.JcrUtils; +import org.argeo.node.NodeConstants; + +/** Make the DJay-ing to provide a full running Suite platform */ +public class SuiteMaintenanceService implements AppMaintenanceService { + private final static Log log = LogFactory.getLog(SuiteMaintenanceService.class); + + /* DEPENDENCY INJECTION */ + private Repository repository; + private String workspaceName; + private ResourceService resourceService; + private List maintenanceServices; + private Map initResources = null; + private Map legacyResources = null; + + public void init() { + Session adminSession = null; + try { + adminSession = repository.login(workspaceName); + if (prepareJcrTree(adminSession)) { + configurePrivileges(adminSession); + importResources(adminSession, null); + } + } catch (Exception e) { + throw new SuiteException("Cannot initialise model", e); + } finally { + JcrUtils.logoutQuietly(adminSession); + } + } + + // TODO Hard-coded model initialisation + // To be cleaned once first init and config mechanisms have been implemented + private final static String publicPath = "/public"; + // FIXME Users must have read access on the jcr:system/jcr:versionStorage + // node under JackRabbit to be able to manage versions + private final static String jackRabbitVersionSystemPath = "/jcr:system"; + + @Override + public boolean prepareJcrTree(Session session) { + boolean hasCHanged = false; + try { + JcrUtils.mkdirs(session, publicPath, NodeType.NT_UNSTRUCTURED); + if (session.hasPendingChanges()) { + session.save(); + hasCHanged = true; + } + } catch (RepositoryException e) { + throw new SuiteException("Cannot build model", e); + } + for (AppMaintenanceService service : maintenanceServices) + hasCHanged |= service.prepareJcrTree(session); + log.info("Repository has been initialised with Argeo Suite model"); + return hasCHanged; + } + + @Override + public void configurePrivileges(Session session) { + // TODO check if first init. + try { + JcrUtils.addPrivilege(session, jackRabbitVersionSystemPath, ArgeoSuiteRole.coworker.dn(), + Privilege.JCR_READ); + // Default configuration of the workspace + JcrUtils.addPrivilege(session, "/", NodeConstants.ROLE_ADMIN, Privilege.JCR_ALL); + JcrUtils.addPrivilege(session, publicPath, NodeConstants.ROLE_USER, Privilege.JCR_READ); + JcrUtils.addPrivilege(session, publicPath, "anonymous", Privilege.JCR_READ); + JcrUtils.addPrivilege(session, publicPath, NodeConstants.ROLE_ANONYMOUS, Privilege.JCR_READ); + session.save(); + } catch (RepositoryException e) { + throw new SuiteException("Cannot build model", e); + } + for (AppMaintenanceService service : maintenanceServices) + service.configurePrivileges(session); + log.info("Access control configured"); + } + + @Override + public void importResources(Session session, Map initialResources) { + for (AppMaintenanceService service : maintenanceServices) + service.prepareJcrTree(session); + } + + @Override + public void importData(Session session, URI uri, Map resources) { + for (AppMaintenanceService service : maintenanceServices) + service.prepareJcrTree(session); + + } + + @Override + public void doBackup(Session session, URI uri, Object resource) { + for (AppMaintenanceService service : maintenanceServices) + service.prepareJcrTree(session); + } + + /* DEPENDENCY INJECTION */ + public void setMaintenanceServices(List maintenanceServices) { + this.maintenanceServices = maintenanceServices; + } +} diff --git a/org.argeo.suite.core/src/org/argeo/suite/people/PeopleSuiteServiceImpl.java b/org.argeo.suite.core/src/org/argeo/suite/people/PeopleSuiteServiceImpl.java index 19067bd..d512bfb 100644 --- a/org.argeo.suite.core/src/org/argeo/suite/people/PeopleSuiteServiceImpl.java +++ b/org.argeo.suite.core/src/org/argeo/suite/people/PeopleSuiteServiceImpl.java @@ -1,7 +1,6 @@ package org.argeo.suite.people; -import java.io.IOException; -import java.util.ArrayList; +import java.net.URI; import java.util.Map; import javax.jcr.Repository; @@ -13,18 +12,13 @@ import javax.jcr.security.Privilege; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.connect.people.PeopleConstants; -import org.argeo.connect.people.PeopleNames; import org.argeo.connect.people.PeopleService; -import org.argeo.connect.people.PeopleTypes; -import org.argeo.connect.people.ResourceService; import org.argeo.connect.people.core.PeopleServiceImpl; -import org.argeo.connect.people.core.imports.EncodedTagCsvFileParser; -import org.argeo.connect.util.ConnectJcrUtils; +import org.argeo.connect.resources.ResourceService; import org.argeo.jcr.JcrUtils; import org.argeo.node.NodeConstants; import org.argeo.suite.ArgeoSuiteRole; import org.argeo.suite.SuiteException; -import org.springframework.core.io.Resource; /** * Default implementation of an Argeo Suite specific People Backend @@ -37,7 +31,9 @@ public class PeopleSuiteServiceImpl extends PeopleServiceImpl implements PeopleS /* DEPENDENCY INJECTION */ private Repository repository; private String workspaceName; - private Map initResources = null; + private ResourceService resourceService; + private Map initResources = null; + private Map legacyResources = null; public void init() { super.init(); @@ -93,54 +89,70 @@ public class PeopleSuiteServiceImpl extends PeopleServiceImpl implements PeopleS * Initialises People resource model and optionally imports legacy resources */ protected void initModelResources(Session adminSession) { - try { - // initialisation - ResourceService resourceService = getResourceService(); - resourceService.initialiseResources(adminSession); - - Resource resource = initResources.get("Countries"); - if (resourceService.getTagLikeResourceParent(adminSession, PeopleConstants.RESOURCE_COUNTRY) == null - && resource != null) { - resourceService.createTagLikeResourceParent(adminSession, PeopleConstants.RESOURCE_COUNTRY, - PeopleTypes.PEOPLE_TAG_ENCODED_INSTANCE, PeopleNames.PEOPLE_CODE, getBasePath(null), - ConnectJcrUtils.getLocalJcrItemName(NodeType.NT_UNSTRUCTURED), new ArrayList()); - String EN_SHORT_NAME = "English short name (upper-lower case)"; - String ISO_CODE = "Alpha-2 code"; - new EncodedTagCsvFileParser(resourceService, adminSession, PeopleConstants.RESOURCE_COUNTRY, ISO_CODE, - EN_SHORT_NAME).parse(resource.getInputStream(), "UTF-8"); - } - - resource = initResources.get("Languages"); - if (resourceService.getTagLikeResourceParent(adminSession, PeopleConstants.RESOURCE_LANG) == null - && resource != null) { - resourceService.createTagLikeResourceParent(adminSession, PeopleConstants.RESOURCE_LANG, - PeopleTypes.PEOPLE_TAG_ENCODED_INSTANCE, PeopleNames.PEOPLE_CODE, getBasePath(null), - ConnectJcrUtils.getLocalJcrItemName(NodeType.NT_UNSTRUCTURED), new ArrayList()); - String EN_SHORT_NAME = "Language name"; - String ISO_CODE = "639-1"; - new EncodedTagCsvFileParser(resourceService, adminSession, PeopleConstants.RESOURCE_LANG, ISO_CODE, - EN_SHORT_NAME).parse(resource.getInputStream(), "UTF-8"); - } - - // Create tag & mailing list parents - if (resourceService.getTagLikeResourceParent(adminSession, PeopleConstants.RESOURCE_TAG) == null) - resourceService.createTagLikeResourceParent(adminSession, PeopleConstants.RESOURCE_TAG, - PeopleTypes.PEOPLE_TAG_INSTANCE, null, getBasePath(null), PeopleTypes.PEOPLE_ENTITY, - PeopleNames.PEOPLE_TAGS); - if (resourceService.getTagLikeResourceParent(adminSession, PeopleTypes.PEOPLE_MAILING_LIST) == null) - resourceService.createTagLikeResourceParent(adminSession, null, PeopleTypes.PEOPLE_MAILING_LIST, null, - getBasePath(null), PeopleTypes.PEOPLE_ENTITY, PeopleNames.PEOPLE_MAILING_LISTS); - - // Initialise catalogues - importCatalogue(adminSession, initResources.get("SimpleTasks"), PeopleTypes.PEOPLE_TASK); - - if (adminSession.hasPendingChanges()) { - adminSession.save(); - log.info("Resources have been added to Argeo Suite model"); - } - } catch (IOException | RepositoryException e) { - throw new SuiteException("Cannot initialise resources ", e); - } + // try { + // // initialisation + // resourceService.initialiseResources(adminSession); + // + // Resource resource = initResources.get("Countries"); + // if (resourceService.getTagLikeResourceParent(adminSession, + // PeopleConstants.RESOURCE_COUNTRY) == null + // && resource != null) { + // resourceService.createTagLikeResourceParent(adminSession, + // PeopleConstants.RESOURCE_COUNTRY, + // PeopleTypes.PEOPLE_TAG_ENCODED_INSTANCE, PeopleNames.PEOPLE_CODE, + // getBasePath(null), + // ConnectJcrUtils.getLocalJcrItemName(NodeType.NT_UNSTRUCTURED), new + // ArrayList()); + // String EN_SHORT_NAME = "English short name (upper-lower case)"; + // String ISO_CODE = "Alpha-2 code"; + // new EncodedTagCsvFileParser(resourceService, adminSession, + // PeopleConstants.RESOURCE_COUNTRY, ISO_CODE, + // EN_SHORT_NAME).parse(resource.getInputStream(), "UTF-8"); + // } + // + // resource = initResources.get("Languages"); + // if (resourceService.getTagLikeResourceParent(adminSession, + // PeopleConstants.RESOURCE_LANG) == null + // && resource != null) { + // resourceService.createTagLikeResourceParent(adminSession, + // PeopleConstants.RESOURCE_LANG, + // PeopleTypes.PEOPLE_TAG_ENCODED_INSTANCE, PeopleNames.PEOPLE_CODE, + // getBasePath(null), + // ConnectJcrUtils.getLocalJcrItemName(NodeType.NT_UNSTRUCTURED), new + // ArrayList()); + // String EN_SHORT_NAME = "Language name"; + // String ISO_CODE = "639-1"; + // new EncodedTagCsvFileParser(resourceService, adminSession, + // PeopleConstants.RESOURCE_LANG, ISO_CODE, + // EN_SHORT_NAME).parse(resource.getInputStream(), "UTF-8"); + // } + // + // // Create tag & mailing list parents + // if (resourceService.getTagLikeResourceParent(adminSession, + // PeopleConstants.RESOURCE_TAG) == null) + // resourceService.createTagLikeResourceParent(adminSession, + // PeopleConstants.RESOURCE_TAG, + // PeopleTypes.PEOPLE_TAG_INSTANCE, null, getBasePath(null), + // PeopleTypes.PEOPLE_ENTITY, + // PeopleNames.PEOPLE_TAGS); + // if (resourceService.getTagLikeResourceParent(adminSession, + // PeopleTypes.PEOPLE_MAILING_LIST) == null) + // resourceService.createTagLikeResourceParent(adminSession, null, + // PeopleTypes.PEOPLE_MAILING_LIST, null, + // getBasePath(null), PeopleTypes.PEOPLE_ENTITY, + // PeopleNames.PEOPLE_MAILING_LISTS); + // + // // Initialise catalogues + // importCatalogue(adminSession, initResources.get("SimpleTasks"), + // PeopleTypes.PEOPLE_TASK); + // + // if (adminSession.hasPendingChanges()) { + // adminSession.save(); + // log.info("Resources have been added to Argeo Suite model"); + // } + // } catch (IOException | RepositoryException e) { + // throw new SuiteException("Cannot initialise resources ", e); + // } } /** Give access to the repository to extending classes */ @@ -161,7 +173,7 @@ public class PeopleSuiteServiceImpl extends PeopleServiceImpl implements PeopleS this.workspaceName = workspaceName; } - public void setInitResources(Map initResources) { + public void setInitResources(Map initResources) { this.initResources = initResources; } } diff --git a/org.argeo.suite.web/META-INF/spring/people.xml b/org.argeo.suite.web/META-INF/spring/people.xml index 0c5a29f..036fe60 100644 --- a/org.argeo.suite.web/META-INF/spring/people.xml +++ b/org.argeo.suite.web/META-INF/spring/people.xml @@ -9,6 +9,7 @@ + @@ -18,8 +19,10 @@ - - + + @@ -61,16 +64,20 @@ + + - + + @@ -80,12 +87,14 @@ + + diff --git a/org.argeo.suite.web/src/org/argeo/suite/web/DefaultDashboard.java b/org.argeo.suite.web/src/org/argeo/suite/web/DefaultDashboard.java index 332187b..8b0c78c 100644 --- a/org.argeo.suite.web/src/org/argeo/suite/web/DefaultDashboard.java +++ b/org.argeo.suite.web/src/org/argeo/suite/web/DefaultDashboard.java @@ -10,6 +10,7 @@ import org.argeo.cms.util.CmsUtils; import org.argeo.connect.people.PeopleException; import org.argeo.connect.people.PeopleService; import org.argeo.connect.people.web.parts.PeopleSearchCmp; +import org.argeo.connect.resources.ResourceService; import org.argeo.eclipse.ui.EclipseUiUtils; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; @@ -26,13 +27,15 @@ import org.eclipse.swt.widgets.Label; /** Default dashboard layout for Argeo Suite */ public class DefaultDashboard implements CmsUiProvider { + private ResourceService resourceService; private PeopleService peopleService; private Map peopleIconPaths; // Local UI Providers // private CmsUiProvider orgPage; - public DefaultDashboard(PeopleService peopleService, Map peopleIconPaths) { + public DefaultDashboard(ResourceService resourceService, PeopleService peopleService, Map peopleIconPaths) { + this.resourceService = resourceService; this.peopleService = peopleService; this.peopleIconPaths = peopleIconPaths; @@ -66,7 +69,7 @@ public class DefaultDashboard implements CmsUiProvider { titleLbl.setText("My Tasks"); titleLbl.setFont(EclipseUiUtils.getBoldFont(titleCmp)); - PeopleSearchCmp searchComp = new PeopleSearchCmp(parent, SWT.NO_FOCUS, peopleService, peopleIconPaths); + PeopleSearchCmp searchComp = new PeopleSearchCmp(parent, SWT.NO_FOCUS, resourceService, peopleService, peopleIconPaths); searchComp.populate(context, true); searchComp.setLayoutData(EclipseUiUtils.fillAll()); diff --git a/org.argeo.suite.web/src/org/argeo/suite/web/DefaultMainPage.java b/org.argeo.suite.web/src/org/argeo/suite/web/DefaultMainPage.java index d7ae032..6c4c74e 100644 --- a/org.argeo.suite.web/src/org/argeo/suite/web/DefaultMainPage.java +++ b/org.argeo.suite.web/src/org/argeo/suite/web/DefaultMainPage.java @@ -19,6 +19,7 @@ import org.argeo.cms.widgets.auth.CmsLogin; import org.argeo.connect.people.PeopleService; import org.argeo.connect.people.PeopleTypes; import org.argeo.connect.people.web.pages.PeopleDefaultPage; +import org.argeo.connect.resources.ResourceService; import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.suite.web.fs.MyFilesBrowserPage; import org.eclipse.swt.SWT; @@ -41,6 +42,7 @@ public class DefaultMainPage implements LifeCycleUiProvider { private CmsUiProvider fsBrowserPage; /* DEPENDENCY INJECTION */ + private ResourceService resourceService; private PeopleService peopleService; private FileSystemProvider nodeFileSystemProvider; private Map peopleIconPaths; @@ -50,8 +52,8 @@ public class DefaultMainPage implements LifeCycleUiProvider { @Override public void init(Session adminSession) throws RepositoryException { - dashboardPage = new DefaultDashboard(peopleService, peopleIconPaths); - peoplePage = new PeopleDefaultPage(peopleService, peopleIconPaths); + dashboardPage = new DefaultDashboard(resourceService, peopleService, peopleIconPaths); + peoplePage = new PeopleDefaultPage(resourceService, peopleService, peopleIconPaths); fsBrowserPage = new MyFilesBrowserPage(nodeFileSystemProvider); } @@ -121,6 +123,10 @@ public class DefaultMainPage implements LifeCycleUiProvider { } /* DEPENDENCY INJECTION */ + public void setResourceService(ResourceService resourceService) { + this.resourceService = resourceService; + } + public void setPeopleService(PeopleService peopleService) { this.peopleService = peopleService; } diff --git a/org.argeo.suite.workbench.rap/bnd.bnd b/org.argeo.suite.workbench.rap/bnd.bnd index 57d52a8..ea52d2b 100644 --- a/org.argeo.suite.workbench.rap/bnd.bnd +++ b/org.argeo.suite.workbench.rap/bnd.bnd @@ -12,6 +12,8 @@ javax.jcr.security,\ org.argeo.cms,\ org.argeo.cms.ui.workbench,\ org.argeo.connect,\ +org.argeo.connect.resources,\ +org.argeo.connect.activities,\ org.argeo.connect.ui,\ org.argeo.connect.people.workbench.rap.views,\ org.argeo.connect.documents.workbench.parts,\ diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/AbstractSuiteDashboard.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/AbstractSuiteDashboard.java index 39ea5ec..e18d202 100644 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/AbstractSuiteDashboard.java +++ b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/AbstractSuiteDashboard.java @@ -10,6 +10,9 @@ import javax.jcr.Session; import org.argeo.cms.ui.workbench.util.CommandUtils; import org.argeo.cms.util.CmsUtils; import org.argeo.connect.documents.DocumentsService; +import org.argeo.connect.resources.ResourceService; +import org.argeo.connect.activities.ActivityService; +import org.argeo.connect.activities.ActivitiesTypes; import org.argeo.connect.people.PeopleService; import org.argeo.connect.people.workbench.rap.PeopleStyles; import org.argeo.connect.people.workbench.rap.editors.util.EntityEditorInput; @@ -38,6 +41,8 @@ public abstract class AbstractSuiteDashboard extends EditorPart { // DEPENDENCY INJECTION private Repository repository; + private ResourceService resourceService; + private ActivityService activityService; private PeopleService peopleService; private DocumentsService documentsService; private AppWorkbenchService appWorkbenchService; @@ -178,26 +183,35 @@ public abstract class AbstractSuiteDashboard extends EditorPart { } // Expose to implementing classes + protected Session getSession() { + return session; + } + + public ResourceService getResourceService() { + return resourceService; + } + + protected ActivityService getActivityService() { + return activityService; + } + protected PeopleService getPeopleService() { return peopleService; } - protected AppWorkbenchService getAppWorkbenchService() { - return appWorkbenchService; + protected DocumentsService getDocumentsService() { + return documentsService; } - protected Session getSession() { - return session; + + protected AppWorkbenchService getAppWorkbenchService() { + return appWorkbenchService; } protected Image getLogoImg() { return logoImg; } - protected DocumentsService getDocumentsService() { - return documentsService; - } - protected FormToolkit getFormToolkit() { return toolkit; } @@ -207,8 +221,12 @@ public abstract class AbstractSuiteDashboard extends EditorPart { this.repository = repository; } - public void setAppWorkbenchService(AppWorkbenchService appWorkbenchService) { - this.appWorkbenchService = appWorkbenchService; + public void setResourceService(ResourceService resourceService) { + this.resourceService = resourceService; + } + + public void setActivityService(ActivityService activityService) { + this.activityService = activityService; } public void setDocumentsService(DocumentsService documentsService) { @@ -218,4 +236,10 @@ public abstract class AbstractSuiteDashboard extends EditorPart { public void setPeopleService(PeopleService peopleService) { this.peopleService = peopleService; } + + + public void setAppWorkbenchService(AppWorkbenchService appWorkbenchService) { + this.appWorkbenchService = appWorkbenchService; + } + } diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/DefaultDashboardEditor.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/DefaultDashboardEditor.java index 24ada50..e45e068 100644 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/DefaultDashboardEditor.java +++ b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/DefaultDashboardEditor.java @@ -5,9 +5,11 @@ import javax.jcr.NodeIterator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.argeo.connect.people.PeopleConstants; +import org.argeo.connect.ConnectConstants; +import org.argeo.connect.activities.ActivitiesTypes; import org.argeo.connect.people.PeopleTypes; import org.argeo.connect.people.workbench.rap.PeopleRapUtils; +import org.argeo.connect.resources.ResourcesTypes; import org.argeo.connect.ui.workbench.Refreshable; import org.argeo.connect.util.ConnectJcrUtils; import org.argeo.eclipse.ui.EclipseUiUtils; @@ -87,18 +89,16 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re PeopleRapUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Organisations", PeopleTypes.PEOPLE_ORG, getPeopleService().getBasePath(PeopleTypes.PEOPLE_ORG)); - Node tagParent = getPeopleService().getResourceService().getTagLikeResourceParent(getSession(), - PeopleTypes.PEOPLE_MAILING_LIST); + Node tagParent = getResourceService().getTagLikeResourceParent(getSession(), PeopleTypes.PEOPLE_MAILING_LIST); PeopleRapUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Mailing lists", PeopleTypes.PEOPLE_MAILING_LIST, ConnectJcrUtils.getPath(tagParent)); - PeopleRapUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Tasks", PeopleTypes.PEOPLE_TASK, - getPeopleService().getBasePath(null)); + PeopleRapUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Tasks", + ActivitiesTypes.ACTIVITIES_TASK, getPeopleService().getBasePath(null)); - tagParent = getPeopleService().getResourceService().getTagLikeResourceParent(getSession(), - PeopleConstants.RESOURCE_TAG); + tagParent = getResourceService().getTagLikeResourceParent(getSession(), ConnectConstants.RESOURCE_TAG); PeopleRapUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Tags", - PeopleTypes.PEOPLE_TAG_INSTANCE, ConnectJcrUtils.getPath(tagParent)); + ResourcesTypes.PEOPLE_TAG_INSTANCE, ConnectJcrUtils.getPath(tagParent)); } } -- 2.30.2