/** * @see com.liferay.modulesadmin.portlet.ModulesAdminPortlet#getBundle( BundleContext, * InputStream) */ public Bundle getBundle(BundleContext bundleContext, InputStream inputStream) throws PortalException { try { if (inputStream.markSupported()) { // 1 megabyte is more than enough for even the largest manifest // file inputStream.mark(1024 * 1000); } JarInputStream jarInputStream = new JarInputStream(inputStream); Manifest manifest = jarInputStream.getManifest(); if (inputStream.markSupported()) { inputStream.reset(); } Attributes attributes = manifest.getMainAttributes(); String bundleSymbolicNameAttributeValue = attributes.getValue(Constants.BUNDLE_SYMBOLICNAME); Parameters parameters = OSGiHeader.parseHeader(bundleSymbolicNameAttributeValue); Set<String> bundleSymbolicNameSet = parameters.keySet(); Iterator<String> bundleSymbolicNameIterator = bundleSymbolicNameSet.iterator(); String bundleSymbolicName = bundleSymbolicNameIterator.next(); String bundleVersionAttributeValue = attributes.getValue(Constants.BUNDLE_VERSION); Version bundleVersion = Version.parseVersion(bundleVersionAttributeValue); for (Bundle bundle : bundleContext.getBundles()) { Version curBundleVersion = Version.parseVersion(String.valueOf(bundle.getVersion())); if (bundleSymbolicName.equals(bundle.getSymbolicName()) && bundleVersion.equals(curBundleVersion)) { return bundle; } } return null; } catch (IOException ioe) { throw new PortalException(ioe); } }