Uploaded image for project: 'NetBeans'
  1. NetBeans
  2. NETBEANS-5613

Support for OSGi modules on Classpath (tests primarily)

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None

    Description

      Tests compose their execution environment on the classpath; if module system is triggered (i.e. by a Lookup for Module or ModuleInfo, core loads happily NB modules from the classpath. But does not load OSGi modules.

      Subsequently, NB modules that depends on those won't be 'initialized' although they are well part of <testdependencies> and their code can be actually executed. 

      Modules tha are OSGi in the current distribution are:

       

      
      Bundle-SymbolicName: com.fasterxml.jackson.core.jackson-annotations
      Bundle-SymbolicName: com.fasterxml.jackson.core.jackson-core
      Bundle-SymbolicName: com.fasterxml.jackson.core.jackson-databind
      Bundle-SymbolicName: com.fasterxml.jackson.dataformat.jackson-dataformat
      Bundle-SymbolicName: com.googlecode.javaewah.JavaEWAH
      Bundle-SymbolicName: com.google.guava
      Bundle-SymbolicName: com.jcraft.jzlib
      Bundle-SymbolicName: com.sun.jersey.core
      Bundle-SymbolicName: com.sun.jna
      Bundle-SymbolicName: com.sun.jna.platform
      Bundle-SymbolicName: groovy
      Bundle-SymbolicName: groovy-ant
      Bundle-SymbolicName: javax.annotation-api
      Bundle-SymbolicName: javax.servlet-api
      Bundle-SymbolicName: javax.servlet.jsp.jstl-api
      Bundle-SymbolicName: javax.validation.api
      Bundle-SymbolicName: javax.ws.rs-api
      Bundle-SymbolicName: javax.xml
      Bundle-SymbolicName: javax.xml.soap-api
      Bundle-SymbolicName: jaxb-api
      Bundle-SymbolicName: jaxb-api
      Bundle-SymbolicName: joda-time
      Bundle-SymbolicName: junit-jupiter-api
      Bundle-SymbolicName: junit-jupiter-engine
      Bundle-SymbolicName: junit-jupiter-params
      Bundle-SymbolicName: net.java.html
      Bundle-SymbolicName: net.java.html.boot
      Bundle-SymbolicName: net.java.html.boot.fx
      Bundle-SymbolicName: net.java.html.boot.script
      Bundle-SymbolicName: net.java.html.geo
      Bundle-SymbolicName: net.java.html.json
      Bundle-SymbolicName: net.java.html.sound
      Bundle-SymbolicName: org.apache.commons.beanutils
      Bundle-SymbolicName: org.apache.commons.chain
      Bundle-SymbolicName: org.apache.commons.codec
      Bundle-SymbolicName: org.apache.commons.commons-fileupload
      Bundle-SymbolicName: org.apache.commons.io
      Bundle-SymbolicName: org.apache.commons.logging
      Bundle-SymbolicName: org.apache.felix.main
      Bundle-SymbolicName: org.apache.xmlrpc
      Bundle-SymbolicName: org.eclipse.core.jobs; singleton:=true
      Bundle-SymbolicName: org.eclipse.core.runtime.compatibility.auth
      Bundle-SymbolicName: org.eclipse.core.runtime; singleton:=true
      Bundle-SymbolicName: org.eclipse.equinox.common; singleton:=true
      Bundle-SymbolicName: org.eclipse.equinox.registry;singleton:=true
      Bundle-SymbolicName: org.eclipse.equinox.security;singleton:=true
      Bundle-SymbolicName: org.eclipse.mylyn.bugzilla.core;singleton:=true
      Bundle-SymbolicName: org.eclipse.mylyn.tasks.core;singleton:=true
      Bundle-SymbolicName: org.eclipse.mylyn.wikitext.confluence.core;single
      Bundle-SymbolicName: org.eclipse.mylyn.wikitext.markdown.core;singleto
      Bundle-SymbolicName: org.eclipse.osgi; singleton:=true
      Bundle-SymbolicName: org.glassfish.hk2.api
      Bundle-SymbolicName: org.glassfish.hk2.external.asm-all-repackaged
      Bundle-SymbolicName: org.glassfish.hk2.external.cglib
      Bundle-SymbolicName: org.glassfish.hk2.external.javax.inject
      Bundle-SymbolicName: org.glassfish.hk2.locator
      Bundle-SymbolicName: org.glassfish.hk2.osgi-resource-locator
      Bundle-SymbolicName: org.glassfish.hk2.utils
      Bundle-SymbolicName: org.glassfish.javax.el
      Bundle-SymbolicName: org.glassfish.javax.faces
      Bundle-SymbolicName: org.glassfish.jersey.containers.jersey-container-se
      Bundle-SymbolicName: org.glassfish.jersey.core.jersey-client
      Bundle-SymbolicName: org.glassfish.jersey.core.jersey-common
      Bundle-SymbolicName: org.glassfish.jersey.core.jersey-server
      Bundle-SymbolicName: org.glassfish.jersey.ext.jersey-entity-filtering
      Bundle-SymbolicName: org.glassfish.jersey.media.jersey-media-moxy
      Bundle-SymbolicName: org.glassfish.web.javax.servlet.jsp.jstl
      Bundle-SymbolicName: org.json
      Bundle-SymbolicName: org.netbeans.html.ko4j
      Bundle-SymbolicName: org.netbeans.html.xhr4j
      Bundle-SymbolicName: org.primefaces
      Bundle-SymbolicName: osgi.cmpn
      Bundle-SymbolicName: osgi.core
      Bundle-SymbolicName: slf4j.jdk14
      Bundle-SymbolicName: software.amazon.ion.java
      Bundle-SymbolicName: testng
      
      

      And some others. 

      Tests that eventually use those modules on classpath must either use NbModuleSuite, or will eventually fail to initialize the module system properly, even though the running code can actually use the module's classes.

      Most notably, there're asm-8.0.jar*, which is used at boostrap and are included by org.netbeans.lib.asm NetBeans module wrapper, although the JARs themselves are OSGi modules. This complicates classpath construction as in the module system tends to include both distribution (platform/core/asm*.jar) as well as the original binaries (libs.asm/external/asm*.jar) that leads to duplicate Bundle errors.

      Not sure about impact of this feature to tests: virtually any test that uses OSGi on its classpath would then require inclusion of Felix or Netbinox to provide an OSGi container.

      // jtulach please evaluate

       

      Attachments

        Activity

          People

            jtulach Jaroslav Tulach
            sdedic Svatopluk Dedic
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: