Search in sources :

Example 1 with NonManagedPluginRegistry

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);
}
Also used : Extension(org.datanucleus.plugin.Extension) ConfigurationElement(org.datanucleus.plugin.ConfigurationElement) NonManagedPluginRegistry(org.datanucleus.plugin.NonManagedPluginRegistry) Bundle(org.datanucleus.plugin.Bundle) ExtensionPoint(org.datanucleus.plugin.ExtensionPoint) ClassLoaderResolver(org.datanucleus.ClassLoaderResolver) ClassLoaderResolverImpl(org.datanucleus.ClassLoaderResolverImpl)

Example 2 with NonManagedPluginRegistry

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"));
}
Also used : NonManagedPluginRegistry(org.datanucleus.plugin.NonManagedPluginRegistry) Bundle(org.datanucleus.plugin.Bundle) ClassLoaderResolver(org.datanucleus.ClassLoaderResolver) ClassLoaderResolverImpl(org.datanucleus.ClassLoaderResolverImpl)

Example 3 with NonManagedPluginRegistry

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
    }
}
Also used : NonManagedPluginRegistry(org.datanucleus.plugin.NonManagedPluginRegistry) ClassLoaderResolver(org.datanucleus.ClassLoaderResolver) NucleusException(org.datanucleus.exceptions.NucleusException) ClassLoaderResolverImpl(org.datanucleus.ClassLoaderResolverImpl)

Example 4 with NonManagedPluginRegistry

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");
    }
}
Also used : Appender(org.apache.log4j.Appender) LoggingEvent(org.apache.log4j.spi.LoggingEvent) ErrorHandler(org.apache.log4j.spi.ErrorHandler) Layout(org.apache.log4j.Layout) Filter(org.apache.log4j.spi.Filter) NonManagedPluginRegistry(org.datanucleus.plugin.NonManagedPluginRegistry) ClassLoaderResolver(org.datanucleus.ClassLoaderResolver) HashSet(java.util.HashSet) ClassLoaderResolverImpl(org.datanucleus.ClassLoaderResolverImpl)

Example 5 with NonManagedPluginRegistry

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());*/
}
Also used : Extension(org.datanucleus.plugin.Extension) NonManagedPluginRegistry(org.datanucleus.plugin.NonManagedPluginRegistry) Bundle(org.datanucleus.plugin.Bundle) ClassLoaderResolver(org.datanucleus.ClassLoaderResolver) ClassLoaderResolverImpl(org.datanucleus.ClassLoaderResolverImpl)

Aggregations

ClassLoaderResolver (org.datanucleus.ClassLoaderResolver)6 ClassLoaderResolverImpl (org.datanucleus.ClassLoaderResolverImpl)6 NonManagedPluginRegistry (org.datanucleus.plugin.NonManagedPluginRegistry)6 Bundle (org.datanucleus.plugin.Bundle)3 HashSet (java.util.HashSet)2 Appender (org.apache.log4j.Appender)2 Layout (org.apache.log4j.Layout)2 ErrorHandler (org.apache.log4j.spi.ErrorHandler)2 Filter (org.apache.log4j.spi.Filter)2 LoggingEvent (org.apache.log4j.spi.LoggingEvent)2 Extension (org.datanucleus.plugin.Extension)2 NucleusException (org.datanucleus.exceptions.NucleusException)1 ConfigurationElement (org.datanucleus.plugin.ConfigurationElement)1 ExtensionPoint (org.datanucleus.plugin.ExtensionPoint)1