/*******************************************************************************
* Copyright (c) 2008-2011 Chair for Applied Software Engineering,
* Technische Universitaet Muenchen.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
******************************************************************************/
package org.eclipse.emf.emfstore.server.connection.xmlrpc;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.emfstore.common.filetransfer.FileChunk;
import org.eclipse.emf.emfstore.common.filetransfer.FileTransferInformation;
import org.eclipse.emf.emfstore.common.model.EMFStoreProperty;
import org.eclipse.emf.emfstore.common.model.Project;
import org.eclipse.emf.emfstore.server.EmfStore;
import org.eclipse.emf.emfstore.server.accesscontrol.AuthenticationControl;
import org.eclipse.emf.emfstore.server.accesscontrol.Permission;
import org.eclipse.emf.emfstore.server.exceptions.AccessControlException;
import org.eclipse.emf.emfstore.server.exceptions.EmfStoreException;
import org.eclipse.emf.emfstore.server.exceptions.InvalidVersionSpecException;
import org.eclipse.emf.emfstore.server.model.ClientVersionInfo;
import org.eclipse.emf.emfstore.server.model.ProjectHistory;
import org.eclipse.emf.emfstore.server.model.ProjectId;
import org.eclipse.emf.emfstore.server.model.ProjectInfo;
import org.eclipse.emf.emfstore.server.model.SessionId;
import org.eclipse.emf.emfstore.server.model.accesscontrol.ACOrgUnitId;
import org.eclipse.emf.emfstore.server.model.accesscontrol.ACUser;
import org.eclipse.emf.emfstore.server.model.accesscontrol.OrgUnitProperty;
import org.eclipse.emf.emfstore.server.model.accesscontrol.PermissionSet;
import org.eclipse.emf.emfstore.server.model.operation.Operation;
import org.eclipse.emf.emfstore.server.model.versioning.ChangePackage;
import org.eclipse.emf.emfstore.server.model.versioning.HistoryInfo;
import org.eclipse.emf.emfstore.server.model.versioning.HistoryQuery;
import org.eclipse.emf.emfstore.server.model.versioning.LogMessage;
import org.eclipse.emf.emfstore.server.model.versioning.PrimaryVersionSpec;
import org.eclipse.emf.emfstore.server.model.versioning.TagVersionSpec;
import org.eclipse.emf.emfstore.server.model.versioning.VersionSpec;
/**
* XML RPC connection interface for emfstore.
*
* @author wesendon
*/
public class XmlRpcEmfStoreImpl implements EmfStore, AuthenticationControl {
private EmfStore getEmfStore() {
return XmlRpcConnectionHandler.getEmfStore();
}
private AuthenticationControl getAccessControl() {
return XmlRpcConnectionHandler.getAccessControl();
}
/**
* {@inheritDoc}
*/
public SessionId logIn(String username, String password, ClientVersionInfo clientVersionInfo)
throws AccessControlException {
return getAccessControl().logIn(username, password, clientVersionInfo);
}
/**
* {@inheritDoc}
*/
public void logout(SessionId sessionId) throws AccessControlException {
getAccessControl().logout(sessionId);
}
/**
* {@inheritDoc}
*/
public void addTag(SessionId sessionId, ProjectId projectId, PrimaryVersionSpec versionSpec, TagVersionSpec tag)
throws EmfStoreException {
getEmfStore().addTag(sessionId, projectId, versionSpec, tag);
}
/**
* {@inheritDoc}
*/
public ProjectInfo createEmptyProject(SessionId sessionId, String name, String description, LogMessage logMessage)
throws EmfStoreException {
return getEmfStore().createEmptyProject(sessionId, name, description, logMessage);
}
/**
* {@inheritDoc}
*/
public ProjectInfo createProject(SessionId sessionId, String name, String description, LogMessage logMessage,
Project project) throws EmfStoreException {
return getEmfStore().createProject(sessionId, name, description, logMessage, project);
}
/**
* {@inheritDoc}
*/
public PrimaryVersionSpec createVersion(SessionId sessionId, ProjectId projectId,
PrimaryVersionSpec baseVersionSpec, ChangePackage changePackage, LogMessage logMessage)
throws EmfStoreException, InvalidVersionSpecException {
return getEmfStore().createVersion(sessionId, projectId, baseVersionSpec, changePackage, logMessage);
}
/**
* {@inheritDoc}
*/
public void deleteProject(SessionId sessionId, ProjectId projectId, boolean deleteFiles) throws EmfStoreException {
getEmfStore().deleteProject(sessionId, projectId, deleteFiles);
}
/**
* {@inheritDoc}
*/
public FileChunk downloadFileChunk(SessionId sessionId, ProjectId projectId, FileTransferInformation fileInformation)
throws EmfStoreException {
return getEmfStore().downloadFileChunk(sessionId, projectId, fileInformation);
}
/**
* {@inheritDoc}
*/
public ProjectHistory exportProjectHistoryFromServer(SessionId sessionId, ProjectId projectId)
throws EmfStoreException {
return getEmfStore().exportProjectHistoryFromServer(sessionId, projectId);
}
/**
* {@inheritDoc}
*/
public List<ChangePackage> getChanges(SessionId sessionId, ProjectId projectId, VersionSpec source,
VersionSpec target) throws EmfStoreException {
return getEmfStore().getChanges(sessionId, projectId, source, target);
}
/**
* {@inheritDoc}
*/
public List<HistoryInfo> getHistoryInfo(SessionId sessionId, ProjectId projectId, HistoryQuery historyQuery)
throws EmfStoreException {
return getEmfStore().getHistoryInfo(sessionId, projectId, historyQuery);
}
/**
* {@inheritDoc}
*/
public Project getProject(SessionId sessionId, ProjectId projectId, VersionSpec versionSpec)
throws EmfStoreException {
return getEmfStore().getProject(sessionId, projectId, versionSpec);
}
/**
* {@inheritDoc}
*/
public List<ProjectInfo> getProjectList(SessionId sessionId) throws EmfStoreException {
return getEmfStore().getProjectList(sessionId);
}
/**
* {@inheritDoc}
*/
public ProjectId importProjectHistoryToServer(SessionId sessionId, ProjectHistory projectHistory)
throws EmfStoreException {
return getEmfStore().importProjectHistoryToServer(sessionId, projectHistory);
}
/**
* {@inheritDoc}
*/
public void removeTag(SessionId sessionId, ProjectId projectId, PrimaryVersionSpec versionSpec, TagVersionSpec tag)
throws EmfStoreException {
getEmfStore().removeTag(sessionId, projectId, versionSpec, tag);
}
/**
* {@inheritDoc}
*/
public ACUser resolveUser(SessionId sessionId, ACOrgUnitId id) throws EmfStoreException {
return getEmfStore().resolveUser(sessionId, id);
}
/**
* {@inheritDoc}
*/
public PrimaryVersionSpec resolveVersionSpec(SessionId sessionId, ProjectId projectId, VersionSpec versionSpec)
throws EmfStoreException {
return getEmfStore().resolveVersionSpec(sessionId, projectId, versionSpec);
}
/**
* {@inheritDoc}
*/
public void transmitProperty(SessionId sessionId, OrgUnitProperty changedProperty, ACUser tmpUser,
ProjectId projectId) throws EmfStoreException {
getEmfStore().transmitProperty(sessionId, changedProperty, tmpUser, projectId);
}
/**
* {@inheritDoc}
*/
public FileTransferInformation uploadFileChunk(SessionId sessionId, ProjectId projectId, FileChunk fileChunk)
throws EmfStoreException {
return getEmfStore().uploadFileChunk(sessionId, projectId, fileChunk);
}
/**
* {@inheritDoc}
*/
public void transmitEMFProperties(SessionId sessionId, List<EMFStoreProperty> properties, ProjectId projectId)
throws EmfStoreException {
if (properties != null && properties.size() > 0) {
getEmfStore().transmitEMFProperties(sessionId, properties, projectId);
}
}
/**
* {@inheritDoc}
*/
public List<EMFStoreProperty> getEMFProperties(SessionId sessionId, ProjectId projectId) throws EmfStoreException {
return getEmfStore().getEMFProperties(sessionId, projectId);
}
/**
*
* {@inheritDoc}
*
* @see org.eclipse.emf.emfstore.server.EmfStore#getPermissionSet(org.eclipse.emf.emfstore.server.model.SessionId)
*/
public PermissionSet getPermissionSet(SessionId sessionId) throws EmfStoreException {
return getEmfStore().getPermissionSet(sessionId);
}
/**
*
* {@inheritDoc}
*
* @see org.eclipse.emf.emfstore.server.EmfStore#executeOperation(org.eclipse.emf.emfstore.server.model.SessionId,
* org.eclipse.emf.emfstore.server.model.operation.Operation)
*/
public <T> T executeOperation(SessionId sessionId, Operation<T> op) throws EmfStoreException {
return getEmfStore().executeOperation(sessionId, op);
}
/**
* helper method, because XMLRPC server cannot see the type of the array elements
*
* @param sessionId
* @param operations
* @return
* @throws EmfStoreException
*/
public List<Permission[]> getOperationPermissions(SessionId sessionId, Object[] operationObjects)
throws EmfStoreException {
List<Operation<?>> operations = new ArrayList<Operation<?>>();
for (Object object : operationObjects) {
operations.add((Operation<?>) object);
}
return getEmfStore().getOperationPermissions(sessionId, operations.toArray(new Operation<?>[0]));
}
/**
*
* {@inheritDoc}
*
* @see
* org.eclipse.emf.emfstore.server.EmfStore#getOperationPermissions(org.eclipse.emf.emfstore.server.model.
* SessionId
* , org.eclipse.emf.emfstore.server.model.operation.Operation<?>[])
*/
public List<Permission[]> getOperationPermissions(SessionId sessionId, Operation<?>[] operations)
throws EmfStoreException {
throw new RuntimeException("this method will never be used by the XMLRPC server");
}
}