Alan Davis 29f7f5d073 Merged BRANCHES/DEV/V3.4-BUG-FIX to HEAD
28236: ALF-8810: Removed trailing space from discussion.discussion_for Italian translation
   28241: Incremented version revision for 3.4.4
   28284: ALF-835 - WCM/AVM: copy (empty) folder into itself
   28285: ALF-6863: More than one cifs device breaks the web UI (explorer)
   28290: ALF-8840: user-*.atomentry.ftl
   28291: ALF-6863: Continuation of fix by Arseny
   28336: ALF-8768: Fixed typo in comment on wcm-bootstrap-context.xml
   28363: Merged DEV to V3.4-BUG-FIX
      28262: ALF-8847: WCM: OrphanReaper contention throws error after 39 retries.
             Checkin Comment:
                Use JobLockService to make sure that only one OrphanReaper job is working.
                Generate list of nodes that must be processed in OrphanReaper.doBatch() transaction. 
   28386: ALF-9100: Merged PATCHES/V3.4.1 to V3.4-BUG-FIX
      28249: ALF-8946: Avoid one full table scan per batch in full reindex
         - Now each batch scans a single time sample, dynamically adjusted based on the number of transactions
		   in the previous sample, always aiming for 1000 transactions per sample.
   28394: Fixed ALF-9090: NPE during inter-cluster subsystem messaging
    - Bean ID is a List<String> and might not be recognized on receiving machine
    - Log warning when bean ID is not available (unsymmetrical configuration, perhaps?)
   28396: Merged DEV to V3.4-BUG-FIX
      28384: ALF-6150: Initial state lost when non-versionable document is saved for the first time
             Creation of new version of document before writing its content was added to
             - AbstractAlfrescoMethodHandler->putDocument (this method is used by Office 2003, 2007)
             - VtiIfHeaderAction->doPut (this method is used by Office 2007 and 2010 on Windows 7)
               Creation of new version was added twice to AbstractAlfrescoMethodHandler to avoid affecting
               initial version when transaction is committed. 
   28432: Merged DEV to V3.4-BUG-FIX
      28431: ALF-8530: Pressing the info icon creates an unrecorded file in the ContentStore
             Use ContentService.getTempWriter() in BaseContentNode$TemplateContentData.getContentAsText() method. 
   28435: Merged DEV/TEMPORARY to V3.4-BUG-FIX
      28428: ALF-9015: cm:modifier not updated when document is updated via CIFS
         In ContentDiskDriver.closeFile() added ContentModel.PROP_MODIFIER property update.
   28436: ALF-8550: Number of http requests (currentThreadsBusy) increases when session times out during creation of webform
   - Corrected use of read and write locks
   28465: Fix for ALF-8023 Share preview doesn't work if...
     fixed as outlined by Dmitry.
   28478: Merged BRANCHES/DEV/ALAN/AUDIT to BRANCHES/DEV/V3.4-BUG-FIX:
      28062-28477 (28062,28063,28080,28081,28302,28303,28334,28340,28464,28469,28477) ALF-8438 Need higher level audit of user actions

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28481 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2011-06-20 12:42:10 +00:00

218 lines
6.4 KiB
Java

/*
* Copyright (C) 2005-2011 Alfresco Software Limited.
*
* This file is part of Alfresco
*
* 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 <http://www.gnu.org/licenses/>.
*/
package org.alfresco.service.cmr.invitation;
import java.util.List;
import org.alfresco.service.Auditable;
import org.alfresco.service.NotAuditable;
import org.alfresco.service.PublicService;
/**
* The invitation service provides the ability to invite
* people to resources. For example adding a user to a shared web site.
*
* It manages the relationship between person, resource and requestType
* and may also pass along information such as who is to approve or the expected
* role of the user.
*
* @author mrogers
*/
public interface InvitationService
{
/**
* Get the names of the workflows managed by the invitation service.
*
* @return the names of the workkflows managed by the invitation service.
*/
@NotAuditable
public List<String> getInvitationServiceWorkflowNames();
/**
* Start the invitation process for a NominatedInvitation for a user who does not yet have an Alfresco User Name
*
* @param inviteeUserName Alfresco user name of who should be invited
* @param ResourceType resourceType
* @param resourceName
* @param inviteeRole
* @param serverPath
* @param acceptUrl
* @param rejectUrl
*
* @return the nominated invitation which will contain the invitationId and
* ticket which will uniqely identify this invitation for the rest
* of the workflow.
*
* @throws InvitationException
* @throws InvitationExceptionUserError
* @throws InvitationExceptionForbidden
*/
@Auditable(parameters = {"inviteeUserName",
"resourceType",
"resourceName",
"inviteeRole",
"serverPath",
"acceptUrl",
"rejectUrl"})
public NominatedInvitation inviteNominated(
String inviteeUserName,
Invitation.ResourceType resourceType,
String resourceName,
String inviteeRole,
String serverPath,
String acceptUrl,
String rejectUrl) ;
/**
* Start the invitation process for a NominatedInvitation for a user who does not yet have an
* Alfresco User NameA new user name will be generated as part of the invitation process.
*
* @param inviteeFirstName
* @param inviteeLastName
* @param inviteeEmail
* @param Invitation.ResourceType resourceType
* @param resourceName
* @param inviteeRole
* @param serverPath
* @param acceptUrl
* @param rejectUrl
*
* @return the nominated invitation which will contain the invitationId and ticket which
* will uniquely identify this invitation.
*
* @throws InvitationException
* @throws InvitationExceptionUserError
* @throws InvitationExceptionForbidden
*/
@Auditable(parameters = {
"inviteeFirstName",
"inviteeLastName",
"inviteeEmail",
"resourceType",
"resourceName",
"inviteeRole",
"serverPath",
"acceptUrl",
"rejectUrl"})
public NominatedInvitation inviteNominated(
String inviteeFirstName,
String inviteeLastName,
String inviteeEmail,
Invitation.ResourceType resourceType,
String resourceName,
String inviteeRole,
String serverPath,
String acceptUrl,
String rejectUrl);
/**
* Start the invitation process for a ModeratedInvitation
* @param inviteeUserName who is to be invited
* @param Invitation.ResourceType resourceType what resource type ?
* @param resourceName which resource
* @param inviteeRole which role ?
*/
@Auditable(parameters = {
"inviteeComments",
"inviteeUserName",
"resourceType",
"resourceName",
"inviteeRole"})
public ModeratedInvitation inviteModerated(
String inviteeComments,
String inviteeUserName,
Invitation.ResourceType resourceType,
String resourceName,
String inviteeRole);
/**
* For a Nominated Invitation invitee accepts this invitation
*
* @param request
* @param ticket
* @return the invitation
*/
@Auditable(parameters = {"invitationId", "reason"})
public Invitation accept(String invitationId, String ticket);
/**
* Moderator approves this invitation
*
* @param invitationId the request to approve
* @param reason - comments about the acceptance
*/
@Auditable(parameters = {"invitationId", "reason"})
public Invitation approve(String invitationId, String reason);
/**
* User or moderator rejects this request
* @param invitationId
* @param reason
*/
@Auditable(parameters = {"invitationId", "reason"})
public Invitation reject(String invitationId, String reason);
/**
* cancel this request
*/
@Auditable(parameters = {"invitationId"})
public Invitation cancel (String invitationId);
/**
* get an invitation from its invitation id
*
* @param invitationId;
*/
@NotAuditable
public Invitation getInvitation(String invitationId) ;
/**
* list Invitations for a specific person
*/
@NotAuditable
public List<Invitation> listPendingInvitationsForInvitee(String invitee);
/**
* list Invitations for a specific resource
* @param resourceType
* @param resourceName
*/
@NotAuditable
public List<Invitation> listPendingInvitationsForResource(Invitation.ResourceType resourceType, String resourceName);
/**
* search invitation
*
* @param criteria
* @return the list of invitations
*/
@NotAuditable
public List<Invitation> searchInvitation(InvitationSearchCriteria criteria);
/**
* @return true if emails are sent on invite.
*/
@NotAuditable
boolean isSendEmails();
}