use of org.datanucleus.plugin.NonManagedPluginRegistry in project datanucleus-core by datanucleus.
the class PluginParserTest method testParseExtensionPoint.
public void testParseExtensionPoint() {
ClassLoaderResolver clr = new ClassLoaderResolverImpl();
NonManagedPluginRegistry mgr = new NonManagedPluginRegistry(clr, "EXCEPTION", true);
assertEquals(0, mgr.getExtensionPoints().length);
Bundle bundle0 = mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST0.MF", null));
mgr.registerExtensionsForPlugin(clr.getResource("/org/datanucleus/samples/plugin/plugin1expoint.xml", null), bundle0);
assertEquals(2, mgr.getExtensionPoints().length);
assertNull(mgr.getExtensionPoint("testID"));
assertNull(mgr.getExtensionPoint("testID2"));
assertNotNull(mgr.getExtensionPoint("org.datanucleus.testID"));
assertNotNull(mgr.getExtensionPoint("org.datanucleus.testID2"));
ExtensionPoint point = mgr.getExtensionPoint("org.datanucleus.testID");
assertEquals("testID", point.getId());
assertEquals("org.datanucleus.testID", point.getUniqueId());
assertEquals("testName", point.getName());
assertNotNull(clr.getResource("/org/datanucleus/samples/plugin/plugin1.xsd", null));
assertEquals(clr.getResource("/org/datanucleus/samples/plugin/plugin1.xsd", null), point.getSchema());
assertEquals(0, point.getExtensions().length);
mgr.registerExtensionsForPlugin(clr.getResource("/org/datanucleus/samples/plugin/plugin1.xml", null), bundle0);
assertEquals(2, point.getExtensions().length);
Extension[] exts = point.getExtensions();
assertEquals(exts[0].getPlugin(), exts[1].getPlugin());
assertEquals(2, exts[0].getConfigurationElements().length);
ConfigurationElement[] level1 = exts[0].getConfigurationElements();
assertEquals(2, level1[0].getChildren().length);
assertEquals("level1", level1[0].getName());
assertEquals(1, level1[0].getAttributeNames().length);
assertEquals("1", level1[0].getAttribute("attr11"));
assertNull(level1[0].getAttribute("attr11XXX"));
ConfigurationElement[] level2 = level1[0].getChildren();
assertEquals(1, level2[0].getChildren().length);
assertEquals("level2", level2[0].getName());
assertEquals(2, level2[0].getAttributeNames().length);
assertEquals("attr21", level2[0].getAttributeNames()[0]);
assertEquals("attr22", level2[0].getAttributeNames()[1]);
assertEquals("2211", level2[0].getAttribute("attr21"));
assertEquals("2221", level2[0].getAttribute("attr22"));
assertNull(level2[0].getAttribute("attr11XXX"));
assertEquals(0, level1[1].getChildren().length);
assertEquals("2", level1[1].getAttribute("attr11"));
assertEquals(1, exts[1].getConfigurationElements().length);
level1 = exts[1].getConfigurationElements();
assertEquals("A", level1[0].getAttribute("attr11"));
assertEquals(0, level1[0].getChildren().length);
}
use of org.datanucleus.plugin.NonManagedPluginRegistry in project datanucleus-core by datanucleus.
the class PluginParserTest method testRequireBundle.
public void testRequireBundle() {
ClassLoaderResolver clr = new ClassLoaderResolverImpl();
NonManagedPluginRegistry mgr = new NonManagedPluginRegistry(clr, "EXCEPTION", true);
assertEquals(0, mgr.getExtensionPoints().length);
Bundle bundle3 = mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST3.MF", null));
Bundle bundle4 = mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST4.MF", null));
Bundle bundle5 = mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST5.MF", null));
assertEquals(1, bundle3.getRequireBundle().size());
assertEquals("org.datanucleus.plugin.test4", (bundle3.getRequireBundle().iterator().next()).getBundleSymbolicName());
assertEquals(0, bundle4.getRequireBundle().size());
assertEquals(2, bundle5.getRequireBundle().size());
assertEquals("org.datanucleus.plugin.test6", (bundle5.getRequireBundle().get(0)).getBundleSymbolicName());
assertEquals("org.datanucleus.plugin.test7", (bundle5.getRequireBundle().get(1)).getBundleSymbolicName());
assertEquals("org.datanucleus.plugin.test7", (bundle5.getRequireBundle().get(1)).getBundleSymbolicName());
assertEquals("optional", (bundle5.getRequireBundle().get(1)).getParameter("resolution"));
}
use of org.datanucleus.plugin.NonManagedPluginRegistry in project datanucleus-core by datanucleus.
the class PluginParserTest method testDuplicatedBundleSymbolicNameSameOrDifferentVersion.
/**
* NonManagedPluginRegistry cannot handle multiple versions
* of the same plugin, so it must raise an exception
*/
public void testDuplicatedBundleSymbolicNameSameOrDifferentVersion() {
ClassLoaderResolver clr = new ClassLoaderResolverImpl();
NonManagedPluginRegistry mgr = new NonManagedPluginRegistry(clr, "EXCEPTION", true);
mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST1.MF", null));
try {
mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST1-1.MF", null));
fail("Expected JPOXException");
} catch (NucleusException ex) {
// expected
}
}
use of org.datanucleus.plugin.NonManagedPluginRegistry in project datanucleus-core by datanucleus.
the class PluginParserTest method testRequireBundleVersionLogged.
public void testRequireBundleVersionLogged() {
final java.util.Set messages = new HashSet();
Logger.getLogger("DataNucleus.General").addAppender(new Appender() {
public void setName(String arg0) {
}
public void setLayout(Layout arg0) {
}
public void setErrorHandler(ErrorHandler arg0) {
}
public boolean requiresLayout() {
return false;
}
public String getName() {
return "testappender123";
}
public Layout getLayout() {
return null;
}
public Filter getFilter() {
return null;
}
public ErrorHandler getErrorHandler() {
return null;
}
public void doAppend(LoggingEvent arg0) {
if (arg0.getLevel() != Level.DEBUG) {
messages.add(arg0.getRenderedMessage());
}
}
public void close() {
}
public void clearFilters() {
}
public void addFilter(Filter arg0) {
}
});
ClassLoaderResolver clr = new ClassLoaderResolverImpl();
NonManagedPluginRegistry mgr = new NonManagedPluginRegistry(clr, "EXCEPTION", true);
assertEquals(0, mgr.getExtensionPoints().length);
mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST10.MF", null));
mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST11.MF", null));
mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST12.MF", null));
mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST13.MF", null));
mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST14.MF", null));
mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST15.MF", null));
mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST16.MF", null));
mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST17.MF", null));
mgr.resolveConstraints();
try {
assertEquals(3, messages.size());
assertTrue(messages.contains("Bundle \"org.datanucleus.plugin.test12\" requires \"org.datanucleus.plugin.test11\" version \"(1.2.0.b2\" but the resolved bundle has version \"1.2.0.b2\" which is outside the expected range."));
assertTrue(messages.contains("Bundle \"org.datanucleus.plugin.test13\" requires \"org.datanucleus.plugin.test11\" version \"(1.2.0.c1\" but the resolved bundle has version \"1.2.0.b2\" which is outside the expected range."));
assertTrue(messages.contains("Bundle \"org.datanucleus.plugin.test15\" requires \"org.datanucleus.plugin.test11\" version \"(1.0.0.b2,1.2.0.b2)\" but the resolved bundle has version \"1.2.0.b2\" which is outside the expected range."));
} finally {
Logger.getLogger("DataNucleus.General").removeAppender("testappender123");
}
}
use of org.datanucleus.plugin.NonManagedPluginRegistry in project datanucleus-core by datanucleus.
the class PluginParserTest method testParseSymbolicName.
public void testParseSymbolicName() {
ClassLoaderResolver clr = new ClassLoaderResolverImpl();
NonManagedPluginRegistry mgr = new NonManagedPluginRegistry(clr, "EXCEPTION", true);
Bundle bundle1 = mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST1.MF", null));
mgr.registerExtensionsForPlugin(clr.getResource("/org/datanucleus/samples/plugin/plugin1expoint.xml", null), bundle1);
assertEquals(2, mgr.getExtensionPoints().length);
assertNull(mgr.getExtensionPoint("testID"));
assertNull(mgr.getExtensionPoint("testID2"));
assertNotNull(mgr.getExtensionPoint("org.datanucleus.plugin.test1.testID"));
assertNotNull(mgr.getExtensionPoint("org.datanucleus.plugin.test1.testID2"));
Bundle bundle2 = mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST2.MF", null));
mgr.registerExtensionsForPlugin(clr.getResource("/org/datanucleus/samples/plugin/plugin1expoint.xml", null), bundle2);
assertEquals(4, mgr.getExtensionPoints().length);
assertNotNull(mgr.getExtensionPoint("org.datanucleus.plugin.test2.testID"));
assertNotNull(mgr.getExtensionPoint("org.datanucleus.plugin.test2.testID2"));
Extension[] ex = mgr.getExtensionPoint("org.datanucleus.plugin.test2.testID").getExtensions();
assertEquals(ex.length, 0);
/*assertEquals("org.datanucleus.plugin.test2",ex[ex.length-1].getPlugin().getSymbolicName());*/
}
Aggregations