blob: 30b335d034fb7a6697c36ed977d7b7584acf047a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2012 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.core.tests.internal.registry;
import java.io.IOException;
import junit.framework.*;
import org.eclipse.core.runtime.*;
import org.eclipse.core.tests.harness.BundleTestingHelper;
import org.eclipse.core.tests.runtime.RuntimeTestsPlugin;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleException;
public class NamespaceTest extends TestCase {
public NamespaceTest(String name) {
super(name);
}
public void testNamespaceBasic() throws IOException, BundleException {
//test the addition of an extension point
Bundle bundle01 = BundleTestingHelper.installBundle("Plugin", RuntimeTestsPlugin.getContext(), RuntimeTestsPlugin.TEST_FILES_ROOT + "registry/testNamespace/1");
BundleTestingHelper.refreshPackages(RuntimeTestsPlugin.getContext(), new Bundle[] {bundle01});
// Extension point and extension should be present
IExtensionPoint extpt = Platform.getExtensionRegistry().getExtensionPoint("org.abc.xptNS1");
assertNotNull(extpt);
assertTrue(extpt.getNamespaceIdentifier().equals("org.abc"));
assertTrue(extpt.getContributor().getName().equals("testNamespace1"));
assertTrue(extpt.getSimpleIdentifier().equals("xptNS1"));
assertTrue(extpt.getUniqueIdentifier().equals("org.abc.xptNS1"));
IExtension ext = Platform.getExtensionRegistry().getExtension("org.abc.extNS1");
assertNotNull(ext);
assertTrue(ext.getNamespaceIdentifier().equals("org.abc"));
assertTrue(ext.getContributor().getName().equals("testNamespace1"));
assertTrue(ext.getSimpleIdentifier().equals("extNS1"));
assertTrue(ext.getUniqueIdentifier().equals("org.abc.extNS1"));
// Check linkage extension <-> extension point
assertTrue(ext.getExtensionPointUniqueIdentifier().equals(extpt.getUniqueIdentifier()));
IExtension[] extensions = extpt.getExtensions();
assertTrue(extensions.length == 1);
assertTrue(extensions[0].equals(ext));
// Exactly one extension and one extension point in the "org.abc" namespace
IExtensionPoint[] namespaceExtensionPoints = Platform.getExtensionRegistry().getExtensionPoints("org.abc");
assertTrue(namespaceExtensionPoints.length == 1);
assertTrue(namespaceExtensionPoints[0].equals(extpt));
IExtension[] namespaceExtensions = Platform.getExtensionRegistry().getExtensions("org.abc");
assertTrue(namespaceExtensions.length == 1);
assertTrue(namespaceExtensions[0].equals(ext));
// There should not be extension points or extensions in the default namespace
IExtensionPoint[] defaultExtensionPoints = Platform.getExtensionRegistry().getExtensionPoints("testNamespace1");
assertTrue(defaultExtensionPoints.length == 0);
IExtension[] defaultExtensions = Platform.getExtensionRegistry().getExtensions("testNamespace1");
assertTrue(defaultExtensions.length == 0);
// remove the first bundle
bundle01.uninstall();
BundleTestingHelper.refreshPackages(RuntimeTestsPlugin.getContext(), new Bundle[] {bundle01});
}
public void testNamespaceDynamic() throws BundleException, IOException {
// add another bundle
Bundle anotherNamespaceBundle = BundleTestingHelper.installBundle("Plugin", RuntimeTestsPlugin.getContext(), RuntimeTestsPlugin.TEST_FILES_ROOT + "registry/testNamespace/2");
BundleTestingHelper.refreshPackages(RuntimeTestsPlugin.getContext(), new Bundle[] {anotherNamespaceBundle});
// all elements from the first bundle should be gone
IExtensionPoint extpt_removed = Platform.getExtensionRegistry().getExtensionPoint("org.abc.xptNS1");
assertNull(extpt_removed);
IExtension ext_removed = Platform.getExtensionRegistry().getExtension("org.abc.extNS1");
assertNull(ext_removed);
// all elements from the second bundle should still be present
IExtensionPoint extpt2 = Platform.getExtensionRegistry().getExtensionPoint("org.abc.xptNS2");
assertNotNull(extpt2);
IExtension ext2 = Platform.getExtensionRegistry().getExtension("org.abc.extNS2");
assertNotNull(ext2);
// Exactly one extension and one extension point in the "org.abc" namespace
IExtensionPoint[] namespaceExtensionPoints2 = Platform.getExtensionRegistry().getExtensionPoints("org.abc");
assertTrue(namespaceExtensionPoints2.length == 1);
assertTrue(namespaceExtensionPoints2[0].equals(extpt2));
IExtension[] namespaceExtensions2 = Platform.getExtensionRegistry().getExtensions("org.abc");
assertTrue(namespaceExtensions2.length == 1);
assertTrue(namespaceExtensions2[0].equals(ext2));
// remove the second bundle
anotherNamespaceBundle.uninstall();
BundleTestingHelper.refreshPackages(RuntimeTestsPlugin.getContext(), new Bundle[] {anotherNamespaceBundle});
}
public static Test suite() {
//Order is important
TestSuite sameSession = new TestSuite(NamespaceTest.class.getName());
sameSession.addTest(new NamespaceTest("testNamespaceBasic"));
sameSession.addTest(new NamespaceTest("testNamespaceDynamic"));
return sameSession;
}
}