private static T useSvc()

in src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/PrivilegesInfo.java [646:669]


    private static <S, T> T useSvc(Class<S> svc, Function<S, T> fn) {
        T value = null;
        Bundle bundle = FrameworkUtil.getBundle(PrivilegesInfo.class);
        if (bundle != null) {
            BundleContext bundleContext = bundle.getBundleContext();
            if (bundleContext != null) {
                ServiceReference<S> serviceReference = bundleContext.getServiceReference(svc);
                if (serviceReference != null) {
                    S service = null;
                    try {
                        service = bundleContext.getService(serviceReference);
                        if (service != null) {
                            value = fn.apply(service);
                        }
                    } finally {
                        if (service != null) {
                            bundleContext.ungetService(serviceReference);
                        }
                    }
                }
            }
        }
        return value;
    }