[FELIX-3609] Optimization: cache BundleRevision's types

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1365506 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/BundleRevisionImpl.java b/framework/src/main/java/org/apache/felix/framework/BundleRevisionImpl.java
index 5a4e3b3..ee613ec 100644
--- a/framework/src/main/java/org/apache/felix/framework/BundleRevisionImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/BundleRevisionImpl.java
@@ -56,6 +56,7 @@
 
     private final String m_manifestVersion;
     private final boolean m_isExtension;
+    private final boolean m_isFragment;
     private final String m_symbolicName;
     private final Version m_version;
 
@@ -95,6 +96,7 @@
         m_manifestVersion = null;
         m_symbolicName = null;
         m_isExtension = false;
+        m_isFragment = false;
         m_version = null;
         m_declaredCaps = Collections.EMPTY_LIST;
         m_declaredReqs = Collections.EMPTY_LIST;
@@ -136,6 +138,7 @@
             : ManifestParser.parseDelimitedString(mp.getActivationIncludeDirective(), ",");
         m_symbolicName = mp.getSymbolicName();
         m_isExtension = mp.isExtension();
+        m_isFragment = m_headerMap.containsKey(Constants.FRAGMENT_HOST);
     }
 
     static SecureAction getSecureAction()
@@ -247,12 +250,8 @@
 
     public int getTypes()
     {
-        if ((getManifestVersion() == "2")
-            && getHeaders().containsKey(Constants.FRAGMENT_HOST))
-        {
-            return BundleRevision.TYPE_FRAGMENT;
-        }
-        return 0;
+        return getManifestVersion() == "2" && m_isFragment
+                ? BundleRevision.TYPE_FRAGMENT : 0;
     }
 
     public BundleWiring getWiring()