registry.addContribution(is, contributorId, true, manifestName, b, token);
IContributor contributor = ContributorFactoryOSGi.createContributor(bundle); registry.addContribution(is, contributor, true, manifestName, translationBundle, token);
	private void addBundle(Bundle bundle) {		String contributorId = RegistryUtils.getContributorId(bundle);		// if the given bundle already exists in the registry then return.		// note that this does not work for update cases.		if (registry.hasNamespace(contributorId))			return;		// bail out if system bundle		if (bundle.getBundleId() == 0)			return;		// bail out if the bundle does not have a symbolic name		if (bundle.getSymbolicName() == null)			return;		//If the bundle is not a singleton, then it is not added		if (!isSingleton(bundle))			return;		boolean isFragment = OSGIUtils.getDefault().isFragment(bundle);		//If the bundle is a fragment being added to a non singleton host, then it is not added		if (isFragment) {			Bundle[] hosts = OSGIUtils.getDefault().getHosts(bundle);			if (hosts != null && isSingleton(hosts[0]) == false)				return;		}		InputStream is = null;		String manifestName = isFragment ? FRAGMENT_MANIFEST : PLUGIN_MANIFEST;		try {			URL url = bundle.getEntry(manifestName);			if (url != null)				is = url.openStream();		} catch (IOException ex) {			is = null;		}		if (is == null)			return;		ResourceBundle b = null;		try {			b = ResourceTranslator.getResourceBundle(bundle);		} catch (MissingResourceException e) {			//Ignore the exception		}		registry.addContribution(is, contributorId, true, manifestName, b, token);		// bug 70941		// need to ensure we can find resource bundles from fragments		// The code below no longer seems necessary as all runtime plugins are installed		// before the corresponding Message classes are instantiated. 		//		if (RuntimeUtils.PI_RUNTIME.equals(bundleModel.getNamespace()))		//			Messages.reloadMessages();	}