You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2016/11/08 16:09:53 UTC

svn commit: r1768719 - in /sling/trunk/tooling/support/source: pom.xml src/main/java/org/apache/sling/tooling/support/source/impl/FelixJettySourceReferenceFinder.java src/main/java/org/apache/sling/tooling/support/source/impl/SourceReferencesServlet.java

Author: kwin
Date: Tue Nov  8 16:09:53 2016
New Revision: 1768719

URL: http://svn.apache.org/viewvc?rev=1768719&view=rev
Log:
SLING-6256 skip bundle fragments for listing source references (as they are listed with their host bundle anyways)

Modified:
    sling/trunk/tooling/support/source/pom.xml
    sling/trunk/tooling/support/source/src/main/java/org/apache/sling/tooling/support/source/impl/FelixJettySourceReferenceFinder.java
    sling/trunk/tooling/support/source/src/main/java/org/apache/sling/tooling/support/source/impl/SourceReferencesServlet.java

Modified: sling/trunk/tooling/support/source/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/source/pom.xml?rev=1768719&r1=1768718&r2=1768719&view=diff
==============================================================================
--- sling/trunk/tooling/support/source/pom.xml (original)
+++ sling/trunk/tooling/support/source/pom.xml Tue Nov  8 16:09:53 2016
@@ -69,9 +69,11 @@
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
         </dependency>
+        <!-- override version to OSGi 4.3.0 to support BundleRevision -->
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
+            <version>4.3.0</version>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>

Modified: sling/trunk/tooling/support/source/src/main/java/org/apache/sling/tooling/support/source/impl/FelixJettySourceReferenceFinder.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/source/src/main/java/org/apache/sling/tooling/support/source/impl/FelixJettySourceReferenceFinder.java?rev=1768719&r1=1768718&r2=1768719&view=diff
==============================================================================
--- sling/trunk/tooling/support/source/src/main/java/org/apache/sling/tooling/support/source/impl/FelixJettySourceReferenceFinder.java (original)
+++ sling/trunk/tooling/support/source/src/main/java/org/apache/sling/tooling/support/source/impl/FelixJettySourceReferenceFinder.java Tue Nov  8 16:09:53 2016
@@ -29,11 +29,15 @@ import javax.xml.parsers.SAXParserFactor
 
 import org.apache.commons.io.IOUtils;
 import org.osgi.framework.Bundle;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 
 public class FelixJettySourceReferenceFinder implements SourceReferenceFinder {
 
+    private final Logger log = LoggerFactory.getLogger(getClass());
+
     @Override
     public List<SourceReference> findSourceReferences(Bundle bundle) throws SourceReferenceException {
         // the org.apache.felix.http.jetty bundle does not retain references to the source bundles
@@ -44,11 +48,12 @@ public class FelixJettySourceReferenceFi
             
         final Object jettyVersion = bundle.getHeaders().get("X-Jetty-Version");
         if ( !(jettyVersion instanceof String) ) {
+            log.warn("Could not retrieve Jetty version from bundle '{}' because header 'X-Jetty-Version' is not set!", bundle);
             return Collections.emptyList();
         }
-        Enumeration entries = bundle.findEntries("META-INF/maven", "pom.xml", true);
+        Enumeration<URL> entries = bundle.findEntries("META-INF/maven", "pom.xml", true);
         if (entries != null && entries.hasMoreElements()) {
-            URL entry = (URL)entries.nextElement();
+            URL entry = entries.nextElement();
             InputStream pom = null;
             try {
                 pom = entry.openStream();
@@ -74,6 +79,7 @@ public class FelixJettySourceReferenceFi
             }
             
         } else {
+            log.warn("Could not find a pom.xml in bundle '{}'!", bundle);
             return Collections.emptyList();
         }
     }

Modified: sling/trunk/tooling/support/source/src/main/java/org/apache/sling/tooling/support/source/impl/SourceReferencesServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/source/src/main/java/org/apache/sling/tooling/support/source/impl/SourceReferencesServlet.java?rev=1768719&r1=1768718&r2=1768719&view=diff
==============================================================================
--- sling/trunk/tooling/support/source/src/main/java/org/apache/sling/tooling/support/source/impl/SourceReferencesServlet.java (original)
+++ sling/trunk/tooling/support/source/src/main/java/org/apache/sling/tooling/support/source/impl/SourceReferencesServlet.java Tue Nov  8 16:09:53 2016
@@ -41,6 +41,7 @@ import org.apache.sling.commons.json.JSO
 import org.apache.sling.commons.json.io.JSONWriter;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
+import org.osgi.framework.wiring.BundleRevision;
 import org.osgi.service.component.ComponentContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -87,6 +88,12 @@ public class SourceReferencesServlet ext
             
             for ( Bundle bundle : ctx.getBundleContext().getBundles() ) {
 
+                // skip bundle if it is a fragment (http://stackoverflow.com/questions/11655295/using-the-osgi-api-how-do-i-find-out-if-a-given-bundle-is-a-fragment)
+                if ((bundle.adapt(BundleRevision.class).getTypes() & BundleRevision.TYPE_FRAGMENT) != 0) {
+                    log.debug("Skip bundle '{}' because it is a fragment", bundle);
+                    // source references should only be listed with the host bundle
+                    continue;
+                }
                 Object bundleVersion = bundle.getHeaders().get(Constants.BUNDLE_VERSION);
                 
                 w.object();