blob: b712f28e260ea0456574d3519af5b92e103f957d [file] [log] [blame]
/*******************************************************************************
* 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.client.test.persistence;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.xmi.XMLHelper;
import org.eclipse.emf.emfstore.client.test.common.cases.ESTest;
import org.eclipse.emf.emfstore.internal.client.model.Configuration;
import org.eclipse.emf.emfstore.internal.client.model.ESWorkspaceProviderImpl;
import org.eclipse.emf.emfstore.internal.client.model.Workspace;
import org.eclipse.emf.emfstore.internal.client.model.util.EMFStoreCommand;
import org.eclipse.emf.emfstore.internal.common.EMFStoreResource;
import org.eclipse.emf.emfstore.internal.common.EMFStoreResourceHelper;
import org.eclipse.emf.emfstore.internal.common.model.Project;
import org.eclipse.emf.emfstore.internal.common.model.util.ModelUtil;
import org.eclipse.emf.emfstore.internal.common.model.util.SerializationException;
import org.eclipse.emf.emfstore.test.model.TestmodelFactory;
import org.junit.Test;
public class PersistenceTest extends ESTest {
@Test
public void testReinitWorkspace() throws SerializationException {
Configuration.getClientBehavior().setAutoSave(false);
final Project originalProject = ModelUtil.clone(ESWorkspaceProviderImpl.getInstance().getWorkspace()
.toInternalAPI()
.getProjectSpaces().get(0).getProject());
new EMFStoreCommand() {
@Override
protected void doRun() {
getProject().addModelElement(TestmodelFactory.eINSTANCE.createTestElement());
}
}.run(false, getProjectSpace().getContentEditingDomain());
assertEquals(
ESWorkspaceProviderImpl.getInstance().getWorkspace().getLocalProjects().get(0).getModelElements().size(), 1);
ESWorkspaceProviderImpl.getInstance().dispose();
ESWorkspaceProviderImpl.getInstance().load();
final Workspace internalWorkspace = ESWorkspaceProviderImpl.getInstance().getWorkspace().toInternalAPI();
final Project project = internalWorkspace.getProjectSpaces().get(0).getProject();
assertTrue(ModelUtil.areEqual(project, originalProject));
// set new projectspace since old one got disposed but WorkspaceTest still holds a reference and tries to save
// it in teardown
// setProjectSpace(internalWorkspace.getProjectSpaces().get(0));
}
/**
* Checks whether the XMLHelper used by the {@link EMFStoreResource} is an {@link EMFStoreResourceHelper}.
*
* @throws IOException
*/
@Test
public void testIsEMFStoreResourceHelperInUse() throws IOException {
final XMLHelper[] helper = new XMLHelper[1];
final EMFStoreResource resource = new EMFStoreResource(URI.createURI("foo")) {
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.emfstore.internal.common.EMFStoreResource#createXMLHelper()
*/
@Override
protected XMLHelper createXMLHelper() {
final XMLHelper xmlHelper = super.createXMLHelper();
helper[0] = xmlHelper;
return xmlHelper;
}
};
resource.save(null);
assertTrue(EMFStoreResourceHelper.class.isInstance(helper[0]));
}
}