package org.eclipse.emf.emfstore.client.test.server; import org.eclipse.emf.emfstore.client.model.ProjectSpace; import org.eclipse.emf.emfstore.client.model.ServerInfo; import org.eclipse.emf.emfstore.client.model.Usersession; import org.eclipse.emf.emfstore.client.model.WorkspaceManager; import org.eclipse.emf.emfstore.client.model.util.EMFStoreCommand; import org.eclipse.emf.emfstore.client.properties.PropertyManager; import org.eclipse.emf.emfstore.client.test.SetupHelper; import org.eclipse.emf.emfstore.server.exceptions.AccessControlException; import org.eclipse.emf.emfstore.server.exceptions.EmfStoreException; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class PropertiesTest extends ServerTests { private static ProjectSpace projectSpace1; private static PropertyManager propertyManager1; private static ProjectSpace projectSpace2; private static PropertyManager propertyManager2; private static Usersession usersession1; private static Usersession usersession2; private static ServerInfo severInfo; @Before public void setUpTests() { // SetupHelper.removeServerTestProfile(); severInfo = SetupHelper.getServerInfo(); setUpUsersession(); } private void setUpUsersession() { usersession1 = org.eclipse.emf.emfstore.client.model.ModelFactory.eINSTANCE.createUsersession(); usersession1.setServerInfo(severInfo); usersession1.setUsername("writer1"); usersession1.setPassword("foo"); usersession2 = org.eclipse.emf.emfstore.client.model.ModelFactory.eINSTANCE.createUsersession(); usersession2.setServerInfo(severInfo); usersession2.setUsername("writer2"); usersession2.setPassword("foo"); } @Test public void sharedPropertiesTest() throws EmfStoreException { new EMFStoreCommand() { @Override protected void doRun() { WorkspaceManager.getInstance().getCurrentWorkspace().getServerInfos().add(severInfo); WorkspaceManager.getInstance().getCurrentWorkspace().getUsersessions().add(usersession1); WorkspaceManager.getInstance().getCurrentWorkspace().getUsersessions().add(usersession2); WorkspaceManager.getInstance().getCurrentWorkspace().save(); try { usersession1.logIn(); usersession2.logIn(); projectSpace1 = usersession1.checkout(getProjectInfo()); projectSpace2 = usersession2.checkout(getProjectInfo()); } catch (AccessControlException e) { throw new RuntimeException(e); } catch (EmfStoreException e) { throw new RuntimeException(e); } } }.run(false); propertyManager1 = projectSpace1.getPropertyManager(); propertyManager2 = projectSpace2.getPropertyManager(); new EMFStoreCommand() { @Override protected void doRun() { propertyManager1.setSharedStringProperty("FirstPropKey", "test1"); propertyManager2.setSharedStringProperty("SecondTest", "test2"); try { projectSpace1.commit(); propertyManager1.transmit(); propertyManager2.transmit(); propertyManager1.transmit(); } catch (EmfStoreException e) { throw new RuntimeException(e); } } }.run(false); // 1. Test, ob transmit funktioniert Assert.assertEquals(propertyManager1.getSharedStringProperty("FirstPropKey"), propertyManager2.getSharedStringProperty("FirstPropKey")); Assert.assertEquals(propertyManager2.getSharedStringProperty("SecondTest"), propertyManager1.getSharedStringProperty("SecondTest")); new EMFStoreCommand() { @Override protected void doRun() { propertyManager1.setSharedStringProperty("SecondTest", "test4"); propertyManager2.setSharedStringProperty("SecondTest", "test5"); try { propertyManager1.transmit(); propertyManager2.transmit(); propertyManager1.transmit(); } catch (EmfStoreException e) { throw new RuntimeException(e); } } }.run(false); // 2. Funktioniert update Assert.assertEquals("test5", propertyManager1.getSharedStringProperty("SecondTest")); } }