java.net.ContentHandler#org.osgi.service.url.URLConstants源码实例Demo

下面列出了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;
}
 
源代码3 项目: knopflerfish.org   文件: ContentHandlerWrapper.java
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);
  }
}