本文整理汇总了Java中org.osgi.framework.Bundle.getRegisteredServices方法的典型用法代码示例。如果您正苦于以下问题:Java Bundle.getRegisteredServices方法的具体用法?Java Bundle.getRegisteredServices怎么用?Java Bundle.getRegisteredServices使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.osgi.framework.Bundle
的用法示例。
在下文中一共展示了Bundle.getRegisteredServices方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getRegisteredServiceInUseLowestRanking
import org.osgi.framework.Bundle; //导入方法依赖的package包/类
private static int getRegisteredServiceInUseLowestRanking(Bundle bundle) {
ServiceReference[] services = bundle.getRegisteredServices();
int min = Integer.MAX_VALUE;
if (!isEmpty(services)) {
for (ServiceReference ref : services) {
// make sure somebody is using the service
if (!isEmpty(ref.getUsingBundles())) {
int localRank = OsgiServiceReferenceUtils.getServiceRanking(ref);
if (localRank < min) {
min = localRank;
}
}
}
}
return min;
}
示例2: findDependentContainersRecursively
import org.osgi.framework.Bundle; //导入方法依赖的package包/类
/**
* Recursively finds the services registered by the given bundle and the bundles using those services.
* User bundles that have an associated blueprint container are added to containerBundles. In addition,
* if a registered service has an associated config system Module, as determined via the presence of
* certain service properties, the ModuleIdentifier is added to the configModules list.
*
* @param bundle the bundle to traverse
* @param containerBundles the current set of bundles containing blueprint containers
* @param configModules the current set of bundles containing config modules
*/
private void findDependentContainersRecursively(final Bundle bundle, final Set<Bundle> containerBundles,
final List<Entry<String, ModuleIdentifier>> configModules) {
if (!containerBundles.add(bundle)) {
// Already seen this bundle...
return;
}
ServiceReference<?>[] references = bundle.getRegisteredServices();
if (references != null) {
for (ServiceReference<?> reference : references) {
possiblyAddConfigModuleIdentifier(reference, configModules);
Bundle[] usingBundles = reference.getUsingBundles();
if (usingBundles != null) {
for (Bundle usingBundle : usingBundles) {
if (blueprintExtenderService.getContainer(usingBundle) != null) {
findDependentContainersRecursively(usingBundle, containerBundles, configModules);
}
}
}
}
}
}
示例3: getHighestServiceId
import org.osgi.framework.Bundle; //导入方法依赖的package包/类
private static long getHighestServiceId(Bundle bundle) {
ServiceReference[] services = bundle.getRegisteredServices();
long max = Long.MIN_VALUE;
if (!isEmpty(services)) {
for (ServiceReference ref : services) {
long id = OsgiServiceReferenceUtils.getServiceId(ref);
if (id > max) {
max = id;
}
}
}
return max;
}
示例4: findBundleWithHighestUsedServiceId
import org.osgi.framework.Bundle; //导入方法依赖的package包/类
@Nullable
private Bundle findBundleWithHighestUsedServiceId(final Collection<Bundle> containerBundles) {
ServiceReference<?> highestServiceRef = null;
for (Bundle bundle : containerBundles) {
ServiceReference<?>[] references = bundle.getRegisteredServices();
if (references == null) {
continue;
}
for (ServiceReference<?> reference : references) {
// We did check the service usage previously but it's possible the usage has changed since then.
if (getServiceUsage(reference) == 0) {
continue;
}
// Choose 'reference' if it has a lower service ranking or, if the rankings are equal
// which is usually the case, if it has a higher service ID. For the latter the < 0
// check looks backwards but that's how ServiceReference#compareTo is documented to work.
if (highestServiceRef == null || reference.compareTo(highestServiceRef) < 0) {
LOG.debug("Currently selecting bundle {} for destroy (with reference {})", bundle, reference);
highestServiceRef = reference;
}
}
}
return highestServiceRef == null ? null : highestServiceRef.getBundle();
}
示例5: unusedBundles
import org.osgi.framework.Bundle; //导入方法依赖的package包/类
private static List<Bundle> unusedBundles(Collection<Bundle> unsortedManagedBundles) {
List<Bundle> unused = new ArrayList<Bundle>();
boolean trace = log.isTraceEnabled();
for (Bundle bundle : unsortedManagedBundles) {
try {
String bundleToString = null;
if (trace) {
bundleToString = OsgiStringUtils.nullSafeSymbolicName(bundle);
}
ServiceReference[] services = bundle.getRegisteredServices();
if (isEmpty(services)) {
if (trace) {
log.trace("Bundle " + bundleToString + " has no registered services; added for shutdown");
}
unused.add(bundle);
} else {
boolean unusedBundle = true;
for (ServiceReference serviceReference : services) {
Bundle[] usingBundles = serviceReference.getUsingBundles();
if (!isEmpty(usingBundles)) {
usingBundles =
stream(usingBundles)
.filter(b -> unsortedManagedBundles.contains(b) && !b.equals(bundle))
.collect(toList())
.toArray(new Bundle[]{});
}
if (!isEmpty(usingBundles)) {
if (trace)
log.trace("Bundle " + bundleToString + " has registered services in use; postponing shutdown. The using bundles are "
+ Arrays.toString(usingBundles));
unusedBundle = false;
break;
}
}
if (unusedBundle) {
if (trace) {
log.trace("Bundle " + bundleToString + " has unused registered services; added for shutdown");
}
unused.add(bundle);
}
}
}
catch (IllegalStateException ignored) {
unused.add(bundle);
}
}
unused.sort(ReverseBundleIdSorter.INSTANCE);
return unused;
}