blob: 138aaa75771e01f50ebc9b2465144bb62c994f83 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011-2013 EclipseSource Muenchen GmbH and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Neil Mackenzie - initial implementation
******************************************************************************/
package org.eclipse.emf.ecp.core.rap.test;
import java.util.Collection;
import junit.framework.TestCase;
import org.eclipse.emf.ecp.core.ECPProject;
import org.eclipse.emf.ecp.core.ECPProjectManager;
import org.eclipse.emf.ecp.core.ECPProviderRegistry;
import org.eclipse.emf.ecp.core.ECPRepositoryManager;
import org.eclipse.emf.ecp.core.exceptions.ECPProjectWithNameExistsException;
import org.eclipse.emf.ecp.core.rap.SessionProvider;
import org.eclipse.emf.ecp.core.rap.sessionprovider.test.MockSessionProvider;
import org.eclipse.emf.ecp.core.rap.sessionprovider.test.MockSessionProvider.SessionProviderType;
import org.eclipse.emf.ecp.core.util.observer.ECPObserverBus;
import org.eclipse.emf.ecp.emfstore.core.internal.EMFStoreProvider;
import org.junit.Test;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
import org.osgi.framework.ServiceReference;
/**
*
* @author neilmack
* Tests the service factory classes from the
* org.eclipse.emf.ecp.core.rap package.
*/
@SuppressWarnings("restriction")
public class RAPFactories_PTest extends TestCase {
/**
* Test retrieval of the mock SessionProvider service.
*/
@Test
public void testRetrieveMock() {
final BundleContext bundleContext = FrameworkUtil.getBundle(getClass()).getBundleContext();
final ServiceReference<SessionProvider> ref = bundleContext.getServiceReference(SessionProvider.class);
final SessionProvider provider = bundleContext.getService(ref);
assertNotNull(provider);
bundleContext.ungetService(ref);
}
/**
* test that the ECPProjectManagerFacotry returns a
* working ECPProjectManager.
*
* @throws ECPProjectWithNameExistsException in case of exception
*/
@Test
public final void testServices() throws ECPProjectWithNameExistsException {
MockSessionProvider.getInstance();
MockSessionProvider.setSessionProvider(SessionProviderType.DIFFERENT_SESSION_ID);
final BundleContext bundleContext = FrameworkUtil.getBundle(getClass()).getBundleContext();
final ServiceReference<ECPProjectManager> serviceReference = bundleContext
.getServiceReference(ECPProjectManager.class);
final ECPProjectManager service1 = bundleContext.getService(serviceReference);
final ECPProject project1 = service1.createProject(new EMFStoreProvider(), "Test10"); //$NON-NLS-1$
final ECPProject project2 = service1.createProject(EMFStoreProvider.INSTANCE, "Test2"); //$NON-NLS-1$
bundleContext.ungetService(serviceReference);
final ECPProjectManager service2 = bundleContext.getService(serviceReference);
assertNotSame(service1, service2);
final ECPProject project3 = service2.createProject(EMFStoreProvider.INSTANCE, "Test3"); //$NON-NLS-1$
final Collection<ECPProject> projects1 = service1.getProjects();
assertEquals(2, projects1.size());
assertTrue(projects1.contains(project1));
assertTrue(projects1.contains(project2));
final Collection<ECPProject> projects2 = service2.getProjects();
assertEquals(1, projects2.size());
assertTrue(projects2.contains(project3));
bundleContext.ungetService(serviceReference);
}
/**
* Test that when the ECPProjectManagerFactory is asked for
* a ECPProjectManager from 2 different sessions, that 2 different
* ECPProjectManagers are returned.
*/
@Test
public void testDifferentSessionIdsECPProjectManager() {
MockSessionProvider.getInstance();
MockSessionProvider.setSessionProvider(
SessionProviderType.DIFFERENT_SESSION_ID);
final BundleContext bundleContext = FrameworkUtil.getBundle(getClass()).getBundleContext();
final ServiceReference<ECPProjectManager> serviceReference = bundleContext
.getServiceReference(ECPProjectManager.class);
final ECPProjectManager service1 = bundleContext.getService(serviceReference);
bundleContext.ungetService(serviceReference);
final ECPProjectManager service2 = bundleContext.getService(serviceReference);
assertNotSame(service1, service2);
bundleContext.ungetService(serviceReference);
}
/**
* Test that when the ECPProjectManageractory is asked for
* a ECPProjectManager 2 times from the same session,
* that the same ECPProjectManager is returned.
*/
@Test
public void testSameSessionIdsECPProjectManager() {
MockSessionProvider.getInstance();
MockSessionProvider.setSessionProvider(SessionProviderType.SAME_SESSION_ID);
final BundleContext bundleContext = FrameworkUtil.getBundle(getClass()).getBundleContext();
final ServiceReference<ECPProjectManager> serviceReference = bundleContext
.getServiceReference(ECPProjectManager.class);
final ECPProjectManager service1 = bundleContext.getService(serviceReference);
bundleContext.ungetService(serviceReference);
final ECPProjectManager service2 = bundleContext.getService(serviceReference);
assertSame(service1, service2);
bundleContext.ungetService(serviceReference);
}
/**
* Test that when the ECPObserverBusFactory is asked for
* a ECPObserverBus from 2 different sessions, that 2 different
* ECPObserverBus's are returned.
*/
@Test
public final void testDifferentSessionIdsECPObserverBus() {
MockSessionProvider.getInstance();
MockSessionProvider.setSessionProvider(SessionProviderType.DIFFERENT_SESSION_ID);
final BundleContext bundleContext = FrameworkUtil.getBundle(getClass()).getBundleContext();
final ServiceReference<ECPObserverBus> serviceReference = bundleContext
.getServiceReference(ECPObserverBus.class);
final ECPObserverBus service1 = bundleContext.getService(serviceReference);
bundleContext.ungetService(serviceReference);
final ECPObserverBus service2 = bundleContext.getService(serviceReference);
assertNotSame(service1, service2);
bundleContext.ungetService(serviceReference);
}
/**
* Test that when the ECPObserverBusFactory is asked for
* a ECPObserverBus 2 times from the same session,
* that the same ECPObserverBus is returned.
*/
@Test
public final void testSameSessionIdsECPObserverBus() {
MockSessionProvider.getInstance();
MockSessionProvider.setSessionProvider(SessionProviderType.SAME_SESSION_ID);
final BundleContext bundleContext = FrameworkUtil.getBundle(getClass()).getBundleContext();
final ServiceReference<ECPObserverBus> serviceReference = bundleContext
.getServiceReference(ECPObserverBus.class);
final ECPObserverBus service1 = bundleContext.getService(serviceReference);
bundleContext.ungetService(serviceReference);
final ECPObserverBus service2 = bundleContext.getService(serviceReference);
assertSame(service1, service2);
bundleContext.ungetService(serviceReference);
}
/**
* Test that when the ECPProviderRegistryFactory is asked for
* a ECPProviderRegistry from 2 different sessions, that 2 different
* ECPProviderRegistry's are returned.
*/
@Test
public final void testDifferentSessionIdsECPProviderRegistry() {
MockSessionProvider.getInstance();
MockSessionProvider.setSessionProvider(SessionProviderType.DIFFERENT_SESSION_ID);
final BundleContext bundleContext = FrameworkUtil.getBundle(getClass()).getBundleContext();
final ServiceReference<ECPProviderRegistry> serviceReference = bundleContext
.getServiceReference(ECPProviderRegistry.class);
final ECPProviderRegistry service1 = bundleContext.getService(serviceReference);
bundleContext.ungetService(serviceReference);
final ECPProviderRegistry service2 = bundleContext.getService(serviceReference);
assertNotSame(service1, service2);
bundleContext.ungetService(serviceReference);
}
/**
* Test that when the ECPProviderRegistryFactory is asked for
* a ECPProviderRegistry 2 times from the same session,
* that the same ECPProviderRegistry is returned.
*/
@Test
public final void testSameSessionIdsECPProviderRegistry() {
MockSessionProvider.getInstance();
MockSessionProvider.setSessionProvider(SessionProviderType.SAME_SESSION_ID);
final BundleContext bundleContext = FrameworkUtil.getBundle(getClass()).getBundleContext();
final ServiceReference<ECPProviderRegistry> serviceReference = bundleContext
.getServiceReference(ECPProviderRegistry.class);
final ECPProviderRegistry service1 = bundleContext.getService(serviceReference);
bundleContext.ungetService(serviceReference);
final ECPProviderRegistry service2 = bundleContext.getService(serviceReference);
assertSame(service1, service2);
bundleContext.ungetService(serviceReference);
}
/**
* Test that when the ECPRepositoryManagerFactory is asked for
* a ECPRepositoryManager from 2 different sessions, that 2 different
* ECPRepositoryManagers are returned.
*/
@Test
public final void testDifferentSessionIdsECPRepositoryManager() {
MockSessionProvider.getInstance();
MockSessionProvider.setSessionProvider(SessionProviderType.DIFFERENT_SESSION_ID);
final BundleContext bundleContext = FrameworkUtil.getBundle(getClass()).getBundleContext();
final ServiceReference<ECPRepositoryManager> serviceReference = bundleContext
.getServiceReference(ECPRepositoryManager.class);
final ECPRepositoryManager service1 = bundleContext.getService(serviceReference);
bundleContext.ungetService(serviceReference);
final ECPRepositoryManager service2 = bundleContext.getService(serviceReference);
assertNotSame(service1, service2);
bundleContext.ungetService(serviceReference);
}
/**
* Test that when the ECPRepositoryManagerFactory is asked for
* a ECPRepositoryManager 2 times from the same session,
* that the same ECPRepositoryManager is returned.
*/
@Test
public final void testSameSessionIdsECPRepositoryManager() {
MockSessionProvider.getInstance();
MockSessionProvider.setSessionProvider(SessionProviderType.SAME_SESSION_ID);
final BundleContext bundleContext = FrameworkUtil.getBundle(getClass()).getBundleContext();
final ServiceReference<ECPRepositoryManager> serviceReference = bundleContext
.getServiceReference(ECPRepositoryManager.class);
final ECPRepositoryManager service1 = bundleContext.getService(serviceReference);
bundleContext.ungetService(serviceReference);
final ECPRepositoryManager service2 = bundleContext.getService(serviceReference);
assertSame(service1, service2);
bundleContext.ungetService(serviceReference);
}
}