Implementing Operations for ServerElements

To implement operations for server elements, you must define the following:

  • Types of elements
  • Possible states for a defined element type
  • Operations that can be performed
  • Operations that can be performed when an element is in a particular state

It is also necessary to set the correct type and state for every server element created when calling the refreshServer method.

The following code fragment shows how to create and configure all necessary elements to implement a WebDAV module (file) delete operation.

private OperationImpl deleteFileOperation;
private ServerElementType fileType;
private ServerElementState publishedState;
private void initialiseServerElementTypes() {
    DeployFactory f = DeployFactory.eINSTANCE;
    fileType = f.createServerElementType();
    // states. States should not be shared between different element types
    publishedState = f.createServerElementState();
    publishedState.setName("Published");
    // all states server element type could be in
    fileType.getStates().add(publishedState);
    // operations
    deleteFileOperation = new OperationImpl() {
        @Override
        public Object execute(ServerElement serverElement)
                throws DeploymentException {
            try {
                return deleteRemoteFile(serverElement);
            } finally {
                refreshServerContent();
            }
        }
    };
    deleteFileOperation.setName("Delete");
    // all available operations for server element type
    fileType.getOperations().add(deleteFileOperation);
    // possible operations for states
    publishedState.getPossibleOperations().add(deleteFileOperation);
}

Also when you create modules using the refreshServer method, you must set an element’s type and state as follows:

serverElement.setServerElementType(fileType);
serverElement.setServerElementState(publishedState);