/* * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. * * 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: * bstefanescu */ package org.eclipse.ecr.runtime.persistence; import org.eclipse.ecr.runtime.DummyContribution; import org.eclipse.ecr.runtime.api.Framework; import org.eclipse.ecr.runtime.model.persistence.Contribution; import org.eclipse.ecr.runtime.model.persistence.ContributionBuilder; import org.eclipse.ecr.runtime.model.persistence.ContributionPersistenceManager; import org.eclipse.ecr.runtime.services.event.Event; import org.eclipse.ecr.runtime.services.event.EventService; import org.eclipse.ecr.testlib.NXRuntimeTestCase; /** * @author <a href="mailto:bs@nuxeo.com">Bogdan Stefanescu</a> * */ public class TestContributionPersistence extends NXRuntimeTestCase { protected ContributionPersistenceManager mgr; @Override public void setUp() throws Exception { super.setUp(); fireFrameworkStarted(); mgr = Framework.getLocalService(ContributionPersistenceManager.class); } public void test1() throws Exception { assertTrue(mgr.getContributions().isEmpty()); // contribute something (an event listener) ContributionBuilder cb = new ContributionBuilder("contrib1"); cb.setDescription("My first contribution"); String xml = "<listener class=\"org.eclipse.ecr.runtime.persistence.MyListener\"><topic>test</topic></listener>"; cb.addXmlExtension("org.eclipse.ecr.runtime.EventService", "listeners", xml); cb.addExtension("BaseXPoint", "xp", new DummyContribution("dummy1"), new DummyContribution("dummy2")); Contribution c1 = mgr.addContribution(cb); // check the created contribution String content = c1.getContent(); assertTrue(content.contains("</component>")); // System.out.println(content); assertEquals("My first contribution", c1.getDescription()); assertFalse(c1.isDisabled()); assertEquals(1, mgr.getContributions().size()); assertTrue(mgr.isPersisted(c1)); assertFalse(mgr.isInstalled(c1)); mgr.installContribution(c1); assertTrue(mgr.isPersisted(c1)); assertTrue(mgr.isInstalled(c1)); // fire an event. EventService es = Framework.getLocalService(EventService.class); assertEquals(0, MyListener.getCounter()); es.sendEvent(new Event("test", "a test", null, null)); assertEquals(1, MyListener.getCounter()); es.sendEvent(new Event("test", "a test", null, null)); assertEquals(2, MyListener.getCounter()); mgr.uninstallContribution(c1); assertTrue(mgr.isPersisted(c1)); assertFalse(mgr.isInstalled(c1)); es.sendEvent(new Event("test", "a test", null, null)); assertEquals(2, MyListener.getCounter()); mgr.removeContribution(c1); assertEquals(0, mgr.getContributions().size()); assertFalse(mgr.isPersisted(c1)); assertFalse(mgr.isInstalled(c1)); } }