下面列出了java.net.ContentHandler#org.osgi.service.url.URLConstants 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
ContentHandler getServiceHandler(String mimetype) {
try {
final String filter = "(" + URLConstants.URL_CONTENT_MIMETYPE + "=" + mimetype + ")";
//TODO true or false?
@SuppressWarnings("unchecked")
final ServiceReference<ContentHandler>[] srl
= (ServiceReference<ContentHandler>[])
framework.services.get(ContentHandler.class.getName(), filter, framework.systemBundle, false);
if (srl != null && srl.length > 0) {
ContentHandlerWrapper wrapper = wrapMap.get(mimetype);
if (wrapper == null) {
wrapper = new ContentHandlerWrapper(framework, mimetype);
wrapMap.put(mimetype, wrapper);
}
return wrapper;
}
} catch (final InvalidSyntaxException e) {
throw new RuntimeException("Failed to get service: " + e);
}
return null;
}
/**
*
*/
private URLStreamHandler getServiceHandler(final String protocol)
{
try {
final String filter =
"(" +
URLConstants.URL_HANDLER_PROTOCOL +
"=" + protocol +
")";
@SuppressWarnings("unchecked")
final Vector<FrameworkContext> sfws = (Vector<FrameworkContext>)framework.clone();
for (final FrameworkContext sfw : sfws) {
@SuppressWarnings("unchecked")
final ServiceReference<URLStreamHandlerService>[] srl
= (ServiceReference<URLStreamHandlerService>[]) sfw.services
.get(URLStreamHandlerService.class.getName(), filter, sfw.systemBundle, false);
if (srl != null && srl.length > 0) {
synchronized (wrapMap) {
URLStreamHandlerWrapper wrapper = wrapMap.get(protocol);
if (wrapper == null) {
wrapper = new URLStreamHandlerWrapper(sfw, protocol);
wrapMap.put(protocol, wrapper);
} else {
wrapper.addFramework(sfw);
}
return wrapper;
}
}
}
} catch (final InvalidSyntaxException e) {
throw new RuntimeException("Failed to get service: " + e);
}
// no handler found
return null;
}
ContentHandlerWrapper(FrameworkContext framework,
String mimetype) {
this.framework = framework;
this.mimetype = mimetype;
filter =
"(&" +
"(" + Constants.OBJECTCLASS + "=" +
ContentHandler.class.getName() + ")" +
"(" + URLConstants.URL_CONTENT_MIMETYPE + "=" + mimetype +
")" +
")";
final ServiceListener serviceListener =
new ServiceListener() {
public void serviceChanged(ServiceEvent evt) {
@SuppressWarnings("unchecked")
final
ServiceReference<ContentHandler> ref =
(ServiceReference<ContentHandler>) evt.getServiceReference();
switch (evt.getType()) {
case ServiceEvent.MODIFIED:
// fall through
case ServiceEvent.REGISTERED:
if (best == null) {
updateBest();
return ;
}
if (compare(best, ref) > 0) {
best = ref;
}
break;
case ServiceEvent.MODIFIED_ENDMATCH:
// fall through
case ServiceEvent.UNREGISTERING:
if (best.equals(ref)) {
best = null;
}
}
}
};
try {
framework.systemBundle.bundleContext.addServiceListener(serviceListener, filter);
} catch (final Exception e) {
throw new IllegalArgumentException("Could not register service listener for content handler: " + e);
}
if (framework.debug.url) {
framework.debug.println("created wrapper for " + mimetype + ", filter=" + filter);
}
}