Adds the barely necesaries for post deployment actions for alfresco->alfresco.

Remoted Actions service.
Added getRomoteActionService call to DeploymentService.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6236 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Britt Park
2007-07-12 23:15:14 +00:00
parent 7a575c5518
commit 82841201e2
8 changed files with 798 additions and 3 deletions

View File

@@ -0,0 +1,225 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program 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 General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing
*/
package org.alfresco.repo.action;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import org.alfresco.repo.remote.ClientTicketHolder;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ActionCondition;
import org.alfresco.service.cmr.action.ActionConditionDefinition;
import org.alfresco.service.cmr.action.ActionDefinition;
import org.alfresco.service.cmr.action.ActionService;
import org.alfresco.service.cmr.action.ActionServiceTransport;
import org.alfresco.service.cmr.action.CompositeAction;
import org.alfresco.service.cmr.repository.NodeRef;
/**
* Client side implementation of ActionService for remote access.
* @author britt
*/
public class ActionServiceRemote implements ActionService
{
private ClientTicketHolder fHolder;
private ActionServiceTransport fTransport;
public void setClientTicketHolder(ClientTicketHolder holder)
{
fHolder = holder;
}
public void setActionServiceTransport(ActionServiceTransport transport)
{
fTransport = transport;
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#createAction(java.lang.String)
*/
public Action createAction(String name)
{
return fTransport.createAction(fHolder.getTicket(), name);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#createAction(java.lang.String, java.util.Map)
*/
public Action createAction(String name, Map<String, Serializable> params)
{
return fTransport.createAction(fHolder.getTicket(), name, params);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#createActionCondition(java.lang.String)
*/
public ActionCondition createActionCondition(String name)
{
return fTransport.createActionCondition(fHolder.getTicket(), name);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#createActionCondition(java.lang.String, java.util.Map)
*/
public ActionCondition createActionCondition(String name,
Map<String, Serializable> params)
{
return fTransport.createActionCondition(fHolder.getTicket(), name, params);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#createCompositeAction()
*/
public CompositeAction createCompositeAction()
{
return fTransport.createCompositeAction(fHolder.getTicket());
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#evaluateAction(org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef)
*/
public boolean evaluateAction(Action action, NodeRef actionedUponNodeRef)
{
return fTransport.evaluateAction(fHolder.getTicket(), action, actionedUponNodeRef);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#evaluateActionCondition(org.alfresco.service.cmr.action.ActionCondition, org.alfresco.service.cmr.repository.NodeRef)
*/
public boolean evaluateActionCondition(ActionCondition condition,
NodeRef actionedUponNodeRef)
{
return fTransport.evaluateActionCondition(fHolder.getTicket(), condition, actionedUponNodeRef);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#executeAction(org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef)
*/
public void executeAction(Action action, NodeRef actionedUponNodeRef)
{
fTransport.executeAction(fHolder.getTicket(), action, actionedUponNodeRef);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#executeAction(org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef, boolean)
*/
public void executeAction(Action action, NodeRef actionedUponNodeRef,
boolean checkConditions)
{
fTransport.executeAction(fHolder.getTicket(), action, actionedUponNodeRef, checkConditions);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#executeAction(org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef, boolean, boolean)
*/
public void executeAction(Action action, NodeRef actionedUponNodeRef,
boolean checkConditions, boolean executeAsynchronously)
{
fTransport.executeAction(fHolder.getTicket(), action, actionedUponNodeRef, checkConditions);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#getAction(org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
*/
public Action getAction(NodeRef nodeRef, String actionId)
{
return fTransport.getAction(fHolder.getTicket(), nodeRef, actionId);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#getActionConditionDefinition(java.lang.String)
*/
public ActionConditionDefinition getActionConditionDefinition(String name)
{
return fTransport.getActionConditionDefinition(fHolder.getTicket(), name);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#getActionConditionDefinitions()
*/
public List<ActionConditionDefinition> getActionConditionDefinitions()
{
return fTransport.getActionConditionDefinitions(fHolder.getTicket());
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#getActionDefinition(java.lang.String)
*/
public ActionDefinition getActionDefinition(String name)
{
return fTransport.getActionDefinition(fHolder.getTicket(), name);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#getActionDefinitions()
*/
public List<ActionDefinition> getActionDefinitions()
{
return fTransport.getActionDefinitions(fHolder.getTicket());
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#getActionDefinitions(org.alfresco.service.cmr.repository.NodeRef)
*/
public List<ActionDefinition> getActionDefinitions(NodeRef nodeRef)
{
return fTransport.getActionDefinitions(fHolder.getTicket(), nodeRef);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#getActions(org.alfresco.service.cmr.repository.NodeRef)
*/
public List<Action> getActions(NodeRef nodeRef)
{
return fTransport.getActions(fHolder.getTicket(), nodeRef);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#removeAction(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.action.Action)
*/
public void removeAction(NodeRef nodeRef, Action action)
{
fTransport.removeAction(fHolder.getTicket(), nodeRef, action);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#removeAllActions(org.alfresco.service.cmr.repository.NodeRef)
*/
public void removeAllActions(NodeRef nodeRef)
{
fTransport.removeAllActions(fHolder.getTicket(), nodeRef);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionService#saveAction(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.action.Action)
*/
public void saveAction(NodeRef nodeRef, Action action)
{
fTransport.saveAction(fHolder.getTicket(), nodeRef, action);
}
}

View File

@@ -0,0 +1,252 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program 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 General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing
*/
package org.alfresco.repo.action;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ActionCondition;
import org.alfresco.service.cmr.action.ActionConditionDefinition;
import org.alfresco.service.cmr.action.ActionDefinition;
import org.alfresco.service.cmr.action.ActionService;
import org.alfresco.service.cmr.action.ActionServiceTransport;
import org.alfresco.service.cmr.action.CompositeAction;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.security.AuthenticationService;
/**
* Server side implementation for transport of ActionService.
* @author britt
*/
public class ActionServiceTransportImpl implements ActionServiceTransport
{
private ActionService fActionService;
private AuthenticationService fAuthenticationService;
public void setActionService(ActionService service)
{
fActionService = service;
}
public void setAuthenticationService(AuthenticationService service)
{
fAuthenticationService = service;
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#createAction(java.lang.String, java.lang.String)
*/
public Action createAction(String ticket, String name)
{
fAuthenticationService.validate(ticket);
return fActionService.createAction(name);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#createAction(java.lang.String, java.lang.String, java.util.Map)
*/
public Action createAction(String ticket, String name,
Map<String, Serializable> params)
{
fAuthenticationService.validate(ticket);
return fActionService.createAction(name, params);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#createActionCondition(java.lang.String, java.lang.String)
*/
public ActionCondition createActionCondition(String ticket, String name)
{
fAuthenticationService.validate(ticket);
return fActionService.createActionCondition(name);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#createActionCondition(java.lang.String, java.lang.String, java.util.Map)
*/
public ActionCondition createActionCondition(String ticket, String name,
Map<String, Serializable> params)
{
fAuthenticationService.validate(ticket);
return fActionService.createActionCondition(name, params);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#createCompositeAction(java.lang.String)
*/
public CompositeAction createCompositeAction(String ticket)
{
fAuthenticationService.validate(ticket);
return fActionService.createCompositeAction();
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#evaluateAction(java.lang.String, org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef)
*/
public boolean evaluateAction(String ticket, Action action,
NodeRef actionedUponNodeRef)
{
fAuthenticationService.validate(ticket);
return fActionService.evaluateAction(action, actionedUponNodeRef);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#evaluateActionCondition(java.lang.String, org.alfresco.service.cmr.action.ActionCondition, org.alfresco.service.cmr.repository.NodeRef)
*/
public boolean evaluateActionCondition(String ticket,
ActionCondition condition, NodeRef actionedUponNodeRef)
{
fAuthenticationService.validate(ticket);
return fActionService.evaluateActionCondition(condition, actionedUponNodeRef);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#executeAction(java.lang.String, org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef)
*/
public void executeAction(String ticket, Action action,
NodeRef actionedUponNodeRef)
{
fAuthenticationService.validate(ticket);
fActionService.executeAction(action, actionedUponNodeRef);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#executeAction(java.lang.String, org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef, boolean)
*/
public void executeAction(String ticket, Action action,
NodeRef actionedUponNodeRef, boolean checkConditions)
{
fAuthenticationService.validate(ticket);
fActionService.executeAction(action, actionedUponNodeRef, checkConditions);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#executeAction(java.lang.String, org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef, boolean, boolean)
*/
public void executeAction(String ticket, Action action,
NodeRef actionedUponNodeRef, boolean checkConditions,
boolean executeAsynchronously)
{
fAuthenticationService.validate(ticket);
fActionService.executeAction(action, actionedUponNodeRef, checkConditions, executeAsynchronously);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#getAction(java.lang.String, org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
*/
public Action getAction(String ticket, NodeRef nodeRef, String actionId)
{
fAuthenticationService.validate(ticket);
return fActionService.getAction(nodeRef, actionId);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#getActionConditionDefinition(java.lang.String, java.lang.String)
*/
public ActionConditionDefinition getActionConditionDefinition(
String ticket, String name)
{
fAuthenticationService.validate(ticket);
return fActionService.getActionConditionDefinition(name);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#getActionConditionDefinitions(java.lang.String)
*/
public List<ActionConditionDefinition> getActionConditionDefinitions(
String ticket)
{
fAuthenticationService.validate(ticket);
return fActionService.getActionConditionDefinitions();
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#getActionDefinition(java.lang.String, java.lang.String)
*/
public ActionDefinition getActionDefinition(String ticket, String name)
{
fAuthenticationService.validate(ticket);
return fActionService.getActionDefinition(name);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#getActionDefinitions(java.lang.String)
*/
public List<ActionDefinition> getActionDefinitions(String ticket)
{
fAuthenticationService.validate(ticket);
return fActionService.getActionDefinitions();
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#getActionDefinitions(java.lang.String, org.alfresco.service.cmr.repository.NodeRef)
*/
public List<ActionDefinition> getActionDefinitions(String ticket,
NodeRef nodeRef)
{
fAuthenticationService.validate(ticket);
return fActionService.getActionDefinitions(nodeRef);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#getActions(java.lang.String, org.alfresco.service.cmr.repository.NodeRef)
*/
public List<Action> getActions(String ticket, NodeRef nodeRef)
{
fAuthenticationService.validate(ticket);
return fActionService.getActions(nodeRef);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#removeAction(java.lang.String, org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.action.Action)
*/
public void removeAction(String ticket, NodeRef nodeRef, Action action)
{
fAuthenticationService.validate(ticket);
fActionService.removeAction(nodeRef, action);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#removeAllActions(java.lang.String, org.alfresco.service.cmr.repository.NodeRef)
*/
public void removeAllActions(String ticket, NodeRef nodeRef)
{
fAuthenticationService.validate(ticket);
fActionService.removeAllActions(nodeRef);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.action.ActionServiceTransport#saveAction(java.lang.String, org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.action.Action)
*/
public void saveAction(String ticket, NodeRef nodeRef, Action action)
{
fAuthenticationService.validate(ticket);
fActionService.saveAction(nodeRef, action);
}
}

View File

@@ -26,7 +26,6 @@ package org.alfresco.repo.avm;
import java.io.Serializable;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -36,6 +35,7 @@ import org.alfresco.repo.domain.PropertyValue;
import org.alfresco.service.cmr.avm.AVMReadOnlyException;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.GUID;
import org.apache.log4j.Logger;
/**
* Base class for all repository file system like objects.
@@ -43,6 +43,8 @@ import org.alfresco.util.GUID;
*/
public abstract class AVMNodeImpl implements AVMNode, Serializable
{
private static Logger fgLogger = Logger.getLogger(AVMNodeImpl.class);
protected static final boolean DEBUG = true;
/**

View File

@@ -57,6 +57,8 @@ import org.alfresco.repo.search.impl.lucene.AVMLuceneIndexer;
import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ActionService;
import org.alfresco.service.cmr.avm.AVMBadArgumentException;
import org.alfresco.service.cmr.avm.AVMCycleException;
import org.alfresco.service.cmr.avm.AVMException;
@@ -490,12 +492,20 @@ public class AVMServiceTest extends AVMServiceTestBase
assertNull(fService.lookup(-1, "target:/a/b/snarl.bak"));
runQueriesAgainstBasicTreeWithAOnly("target");
System.out.println(report);
ActionService actionService = depService.getRemoteActionService("localhost", 50500, "admin", "admin");
Map<String, Serializable> params = new HashMap<String, Serializable>();
params.put("property", ContentModel.PROP_ADDRESSEE);
params.put("value", "Santa Claus");
assertEquals(fService.lookup(-1, "main:/a/b/c/foo").getGuid(), fService.lookup(-1, "target:/a/b/c/foo")
.getGuid());
assertEquals(fService.lookup(-1, "main:/a/b/c/bar").getGuid(), fService.lookup(-1, "target:/a/b/c/bar")
.getGuid());
ContentData srcCD = fService.getContentDataForRead(-1, "main:/a/b/c/foo");
ContentData dstCD = fService.getContentDataForRead(-1, "target:/a/b/c/foo");
NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, "target:/a/b/c/foo");
Action action = new ActionImpl(nodeRef, "set-property-value", "set-property-value", params);
actionService.executeAction(action, nodeRef, false, false);
assertEquals("Santa Claus", fService.getNodeProperty(-1, "target:/a/b/c/foo", ContentModel.PROP_ADDRESSEE).getStringValue());
ContentData srcCD = fService.getContentDataForRead(-1, "main:/a/b/c/bar");
ContentData dstCD = fService.getContentDataForRead(-1, "target:/a/b/c/bar");
assertEquals(srcCD.getMimetype(), dstCD.getMimetype());
fService.createFile("main:/a/b", "biz").close();
report = depService.deployDifference(-1, "main:/a", "localhost", 50500, "admin", "admin", "target:/a", matcher,

View File

@@ -39,12 +39,15 @@ import org.alfresco.deployment.DeploymentReceiverTransport;
import org.alfresco.deployment.FileDescriptor;
import org.alfresco.deployment.FileType;
import org.alfresco.deployment.impl.client.DeploymentReceiverServiceClient;
import org.alfresco.repo.action.ActionServiceRemote;
import org.alfresco.repo.avm.AVMNodeConverter;
import org.alfresco.repo.avm.util.SimplePath;
import org.alfresco.repo.domain.PropertyValue;
import org.alfresco.repo.remote.AVMRemoteImpl;
import org.alfresco.repo.remote.ClientTicketHolder;
import org.alfresco.repo.remote.ClientTicketHolderThread;
import org.alfresco.service.cmr.action.ActionService;
import org.alfresco.service.cmr.action.ActionServiceTransport;
import org.alfresco.service.cmr.avm.AVMException;
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
import org.alfresco.service.cmr.avm.AVMNotFoundException;
@@ -556,6 +559,39 @@ public class DeploymentServiceImpl implements DeploymentService
}
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.avm.deploy.DeploymentService#getRemoteActionService(java.lang.String, int, java.lang.String, java.lang.String)
*/
public ActionService getRemoteActionService(String hostName, int port, String userName, String password)
{
try
{
RmiProxyFactoryBean authFactory = new RmiProxyFactoryBean();
authFactory.setRefreshStubOnConnectFailure(true);
authFactory.setServiceInterface(AuthenticationService.class);
authFactory.setServiceUrl("rmi://" + hostName + ":" + port + "/authentication");
authFactory.afterPropertiesSet();
AuthenticationService authService = (AuthenticationService)authFactory.getObject();
authService.authenticate(userName, password.toCharArray());
String ticket = authService.getCurrentTicket();
fTicketHolder.setTicket(ticket);
RmiProxyFactoryBean remoteFactory = new RmiProxyFactoryBean();
remoteFactory.setRefreshStubOnConnectFailure(true);
remoteFactory.setServiceInterface(ActionServiceTransport.class);
remoteFactory.setServiceUrl("rmi://" + hostName + ":" + port + "/action");
remoteFactory.afterPropertiesSet();
ActionServiceTransport transport = (ActionServiceTransport)remoteFactory.getObject();
ActionServiceRemote remote = new ActionServiceRemote();
remote.setActionServiceTransport(transport);
remote.setClientTicketHolder(fTicketHolder);
return remote;
}
catch (Exception e)
{
throw new AVMException("Could not Initialize Remote Connection to " + hostName, e);
}
}
private DeploymentReceiverService getReceiver(String hostName, int port)
{
try

View File

@@ -0,0 +1,232 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program 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 General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing
*/
package org.alfresco.service.cmr.action;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import org.alfresco.service.Auditable;
import org.alfresco.service.cmr.repository.NodeRef;
/**
* This is the interface for over the transport of ActionService.
* It's job is to tunnel an authentication token for each call.
* @author britt
*/
public interface ActionServiceTransport
{
/**
* Get a named action definition
*
* @param name the name of the action definition
* @return the action definition
*/
ActionDefinition getActionDefinition(String ticket, String name);
/**
* Get all the action definitions
*
* @return the list action definitions
*/
List<ActionDefinition> getActionDefinitions(String ticket);
/**
* Get all the action definitions that are applicable for the given node, based on
* its type and aspects.
*
* @param nodeRef the node reference
* @return a list of applicable action definitions
*/
List<ActionDefinition> getActionDefinitions(String ticket, NodeRef nodeRef);
/**
* Get a named action condition definition
*
* @param name the name of the action condition definition
* @return the action condition definition
*/
ActionConditionDefinition getActionConditionDefinition(String ticket, String name);
/**
* Get all the action condition definitions
*
* @return the list of aciton condition definitions
*/
List<ActionConditionDefinition> getActionConditionDefinitions(String ticket);
/**
* Create a new action
*
* @param name the action definition name
* @return the action
*/
Action createAction(String ticket, String name);
/**
* Create a new action specifying the initial set of parameter values
*
* @param name the action definition name
* @param params the parameter values
* @return the action
*/
Action createAction(String ticket, String name, Map<String, Serializable> params);
/**
* Create a composite action
*
* @return the composite action
*/
CompositeAction createCompositeAction(String ticket);
/**
* Create an action condition
*
* @param name the action condition definition name
* @return the action condition
*/
ActionCondition createActionCondition(String ticket, String name);
/**
* Create an action condition specifying the initial set of parameter values
*
* @param name the action condition definition name
* @param params the parameter values
* @return the action condition
*/
ActionCondition createActionCondition(String ticket, String name, Map<String, Serializable> params);
/**
* The actions conditions are always checked.
*
* @see ActionService#executeAction(Action, NodeRef, boolean)
*
* @param action the action
* @param actionedUponNodeRef the actioned upon node reference
*/
void executeAction(String ticket, Action action, NodeRef actionedUponNodeRef);
/**
* The action is executed based on the asynchronous attribute of the action.
*
* @see ActionService#executeAction(Action, NodeRef, boolean, boolean)
*
* @param action the action
* @param actionedUponNodeRef the actioned upon node reference
* @param checkConditions indicates whether the conditions should be checked
*/
void executeAction(String ticket, Action action, NodeRef actionedUponNodeRef, boolean checkConditions);
/**
* Executes the specified action upon the node reference provided.
* <p>
* If specified that the conditions should be checked then any conditions
* set on the action are evaluated.
* <p>
* If the conditions fail then the action is not executed.
* <p>
* If an action has no conditions then the action will always be executed.
* <p>
* If the conditions are not checked then the action will always be executed.
*
* @param action the action
* @param actionedUponNodeRef the actioned upon node reference
* @param checkConditions indicates whether the conditions should be checked before
* executing the action
* @param executeAsynchronously indicates whether the action should be executed asychronously or not, this value overrides
* the value set on the action its self
*/
void executeAction(String ticket, Action action, NodeRef actionedUponNodeRef, boolean checkConditions, boolean executeAsynchronously);
/**
* Evaluted the conditions set on an action.
* <p>
* Returns true if the action has no conditions.
* <p>
* If the action has more than one condition their results are combined using the 'AND'
* logical operator.
*
* @param action the action
* @param actionedUponNodeRef the actioned upon node reference
* @return true if the condition succeeds, false otherwise
*/
boolean evaluateAction(String ticket, Action action, NodeRef actionedUponNodeRef);
/**
* Evaluate an action condition.
*
* @param condition the action condition
* @param actionedUponNodeRef the actioned upon node reference
* @return true if the condition succeeds, false otherwise
*/
boolean evaluateActionCondition(String ticket, ActionCondition condition, NodeRef actionedUponNodeRef);
/**
* Save an action against a node reference.
* <p>
* The node will be made configurable if it is not already.
* <p>
* If the action already exists then its details will be updated.
*
* @param nodeRef the node reference
* @param action the action
*/
void saveAction(String ticket, NodeRef nodeRef, Action action);
/**
* Gets all the actions currently saved on the given node reference.
*
* @param nodeRef the node reference
* @return the list of actions
*/
List<Action> getActions(String ticket, NodeRef nodeRef);
/**
* Gets an action stored against a given node reference.
* <p>
* Returns null if the action can not be found.
*
* @param nodeRef the node reference
* @param actionId the action id
* @return the action
*/
Action getAction(String ticket, NodeRef nodeRef, String actionId);
/**
* Removes an action associated with a node reference.
*
* @param nodeRef the node reference
* @param action the action
*/
void removeAction(String ticket, NodeRef nodeRef, Action action);
/**
* Removes all actions associated with a node reference
*
* @param nodeRef the node reference
*/
void removeAllActions(String ticket, NodeRef nodeRef);
}

View File

@@ -3,6 +3,7 @@
*/
package org.alfresco.service.cmr.avm.deploy;
import org.alfresco.service.cmr.action.ActionService;
import org.alfresco.util.NameMatcher;
/**
@@ -35,6 +36,17 @@ public interface DeploymentService
boolean dontDelete,
boolean dontDo,
DeploymentCallback callback);
/**
* Get A reference to an ActionService instance on a remote Alfresco Server.
* @param hostName
* @param port
* @param userName
* @param password
* @return
*/
public ActionService getRemoteActionService(String hostName, int port,
String userName, String password);
/**
* Deploy to a filesystem on another machine.