in jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java [336:383]
private static <T> OSGi<? extends ResourceProvider> getResourceProvider(
ServiceTuple<T> serviceTuple) {
CachingServiceReference<T> cachingServiceReference =
serviceTuple.getCachingServiceReference();
String scope = Utils.getString(cachingServiceReference.getProperty("service.scope"));
if (Objects.equals(scope, "prototype")) {
boolean applicationScoped =
Boolean.parseBoolean(
getString(
cachingServiceReference.getProperty(
"org.apache.aries.jax.rs.whiteboard.application.scoped")));
if (applicationScoped) {
return just(
serviceTuple.getServiceObjects().getService()
).effects(
__ -> {},
serviceTuple.getServiceObjects()::ungetService
).map(
service -> new SingletonServiceReferenceResourceProvider(
cachingServiceReference, service)
);
}
else {
return just(
new PrototypeServiceReferenceResourceProvider(
cachingServiceReference,
serviceTuple.getService().getClass(),
serviceTuple.getServiceObjects())
).effects(
__ -> {},
__ -> serviceTuple.dispose(),
__ -> {},
__ -> {}
);
}
}
else {
return just(
new SingletonServiceReferenceResourceProvider(
serviceTuple.getCachingServiceReference(),
serviceTuple.getService()
));
}
}