Author: fmeschbe
Date: Thu Nov 26 07:47:54 2009
New Revision: 884436

URL: http://svn.apache.org/viewvc?rev=884436&view=rev
Log:
FELIX-1894 Display fragment info in bundle details view.

Modified:
    
felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java

Modified: 
felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java?rev=884436&r1=884435&r2=884436&view=diff
==============================================================================
--- 
felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java
 (original)
+++ 
felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java
 Thu Nov 26 07:47:54 2009
@@ -506,7 +506,7 @@
                     installed++;
                     break;
                 case Bundle.RESOLVED:
-                    if ( bundles[i].getHeaders().get(Constants.FRAGMENT_HOST) 
!= null )
+                    if ( isFragmentBundle( bundles[i] ) )
                     {
                         fragments++;
                     }
@@ -638,7 +638,7 @@
 
     private boolean isFragmentBundle( Bundle bundle)
     {
-        return bundle.getHeaders().get(Constants.FRAGMENT_HOST) != null;
+        return getPackageAdmin().getBundleType( bundle ) == 
PackageAdmin.BUNDLE_TYPE_FRAGMENT;
     }
 
     private boolean hasStart( Bundle bundle )
@@ -694,6 +694,8 @@
 
         keyVal( jw, "Bundle Classpath", headers.get( 
Constants.BUNDLE_CLASSPATH ) );
 
+        listFragmentInfo( jw, bundle, pluginRoot );
+
         if ( bundle.getState() == Bundle.INSTALLED )
         {
             listImportExportsUnresolved( jw, bundle, pluginRoot );
@@ -993,6 +995,40 @@
     }
 
 
+    private void listFragmentInfo( final JSONWriter jw, final Bundle bundle, 
final String pluginRoot )
+        throws JSONException
+    {
+
+        if ( isFragmentBundle( bundle ) )
+        {
+            Bundle[] hostBundles = getPackageAdmin().getHosts( bundle );
+            if ( hostBundles != null )
+            {
+                JSONArray val = new JSONArray();
+                for ( int i = 0; i < hostBundles.length; i++ )
+                {
+                    val.put( getBundleDescriptor( hostBundles[i], pluginRoot ) 
);
+                }
+                keyVal( jw, "Host Bundles", val );
+            }
+        }
+        else
+        {
+            Bundle[] fragmentBundles = getPackageAdmin().getFragments( bundle 
);
+            if ( fragmentBundles != null )
+            {
+                JSONArray val = new JSONArray();
+                for ( int i = 0; i < fragmentBundles.length; i++ )
+                {
+                    val.put( getBundleDescriptor( fragmentBundles[i], 
pluginRoot ) );
+                }
+                keyVal( jw, "Fragments Attached", val );
+            }
+        }
+
+    }
+
+
     private void appendProperty( JSONArray array, ServiceReference ref, String 
name, String label )
     {
         StringBuffer dest = new StringBuffer();


Reply via email to