blob: f2eeaa0f533d23cae897ac759b13287a9db20aba [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2011 Obeo.
* 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:
* Obeo - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.docs.intent.client.ui.test.unit.cdo.util;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.mylyn.docs.intent.client.ui.test.util.AbstractIntentUITest;
import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryInitializer;
import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.ReadOnlyException;
import org.eclipse.mylyn.docs.intent.collab.repository.RepositoryConnectionException;
import org.eclipse.mylyn.docs.intent.test.server.IntentCDORepository;
/**
* An abstract test class providing API for managing an Intent document stored in a CDO Repository.
*
* @author <a href="mailto:alex.lagarde@obeo.fr">Alex Lagarde</a>
*/
public class AbstractIntentCDOTest extends AbstractIntentUITest {
private static final String INTENT_REPOSITORY_NAME = "intent-server";
/**
* {@inheritDoc}
*
* @see org.eclipse.mylyn.docs.intent.client.ui.test.util.AbstractIntentUITest#setUp()
*/
@Override
protected void setUp() throws Exception {
// First step is to launch a CDOServer
IntentCDORepository.start(true, INTENT_REPOSITORY_NAME);
// Otherwise, everything is the same as local
super.setUp();
}
/**
* {@inheritDoc}
*
* @see org.eclipse.mylyn.docs.intent.client.ui.test.util.AbstractIntentUITest#tearDown()
*/
@Override
protected void tearDown() throws Exception {
super.tearDown();
// Delete intent repository
IntentRepositoryManager.INSTANCE.getRepository(getIntentRepositoryIdentifier()).closeSession();
IntentRepositoryManager.INSTANCE.deleteRepository(getIntentRepositoryIdentifier());
waitForAllOperationsInUIThread();
// Stopping the CDOServer
IntentCDORepository.stop();
}
/**
* {@inheritDoc}
*
* @see org.eclipse.mylyn.docs.intent.client.ui.test.util.AbstractIntentUITest#setUpIntentProject(java.lang.String,
* java.lang.String, boolean)
*/
@Override
protected void setUpIntentProject(String projectName, String intentDocumentPath,
boolean listenForRepository) {
super.setUpIntentProject(getIntentRepositoryIdentifier(), intentDocumentPath, listenForRepository);
}
/**
* {@inheritDoc}
*
* @see org.eclipse.mylyn.docs.intent.client.ui.test.util.AbstractIntentUITest#doCreateIntentProject(java.lang.String,
* java.lang.String)
*/
@Override
protected void doCreateIntentProject(String projectName, String intentDocumentContent)
throws CoreException {
// Step 1: create the repository
try {
repository = IntentRepositoryManager.INSTANCE.getRepository(projectName);
repositoryAdapter = repository.createRepositoryAdapter();
repositoryAdapter.openSaveContext();
assertNotNull(repository);
assertNotNull(repositoryAdapter);
// Step 2: initialise content
IntentRepositoryInitializer.initializeContent(projectName, intentDocumentContent);
} catch (RepositoryConnectionException e) {
fail("Failed to create CDO Repository '" + projectName + "': " + e.getMessage());
} catch (ReadOnlyException e) {
fail("Failed to open a Transaction on the CDO Repository '" + projectName + "': "
+ e.getMessage());
}
}
/**
* Returns the repository identifier associated to the current test.
*
* @return the repository identifier associated to the current test
*/
protected final String getIntentRepositoryIdentifier() {
return "cdo://" + IntentCDORepository.getServerLocation() + "/" + INTENT_REPOSITORY_NAME;
}
/**
* {@inheritDoc}
*
* @see org.eclipse.mylyn.docs.intent.client.ui.test.util.AbstractIntentUITest#additionalSetUpOperations()
*/
@Override
protected void additionalSetUpOperations() {
}
}