org.eclipse.osgi.framework.internal.protocol
Class URLStreamHandlerProxy

java.lang.Object
  extended by java.net.URLStreamHandler
      extended by org.eclipse.osgi.framework.internal.protocol.URLStreamHandlerProxy
All Implemented Interfaces:
ServiceTrackerCustomizer<URLStreamHandlerService,ServiceReference<URLStreamHandlerService>>
Direct Known Subclasses:
URLStreamHandlerFactoryProxyFor15

public class URLStreamHandlerProxy
extends java.net.URLStreamHandler
implements ServiceTrackerCustomizer<URLStreamHandlerService,ServiceReference<URLStreamHandlerService>>

The URLStreamHandlerProxy is a URLStreamHandler that acts as a proxy for registered URLStreamHandlerServices. When a URLStreamHandler is requested from the URLStreamHandlerFactory and it exists in the service registry, a URLStreamHandlerProxy is created which will pass all the requests from the requestor to the real URLStreamHandlerService. We can't return the real URLStreamHandlerService from the URLStreamHandlerFactory because the JVM caches URLStreamHandlers and therefore would not support a dynamic environment of URLStreamHandlerServices being registered and unregistered.


Field Summary
protected  BundleContext context
           
protected  java.lang.String protocol
           
protected  int ranking
           
protected  URLStreamHandlerService realHandlerService
           
protected  URLStreamHandlerSetter urlSetter
           
protected  ServiceTracker<URLStreamHandlerService,ServiceReference<URLStreamHandlerService>> urlStreamHandlerServiceTracker
           
protected  ServiceReference<URLStreamHandlerService> urlStreamServiceReference
           
 
Constructor Summary
URLStreamHandlerProxy(java.lang.String protocol, ServiceReference<URLStreamHandlerService> reference, BundleContext context)
           
 
Method Summary
 ServiceReference<URLStreamHandlerService> addingService(ServiceReference<URLStreamHandlerService> reference)
          A service is being added to the ServiceTracker.
protected  boolean equals(java.net.URL url1, java.net.URL url2)
           
protected  int getDefaultPort()
           
protected  java.net.InetAddress getHostAddress(java.net.URL url)
           
protected  int hashCode(java.net.URL url)
           
protected  boolean hostsEqual(java.net.URL url1, java.net.URL url2)
           
 void modifiedService(ServiceReference<URLStreamHandlerService> reference, ServiceReference<URLStreamHandlerService> service)
          A service tracked by the ServiceTracker has been modified.
protected  java.net.URLConnection openConnection(java.net.URL url)
           
protected  void parseURL(java.net.URL url, java.lang.String str, int start, int end)
           
 void removedService(ServiceReference<URLStreamHandlerService> reference, ServiceReference<URLStreamHandlerService> service)
          A service tracked by the ServiceTracker has been removed.
protected  boolean sameFile(java.net.URL url1, java.net.URL url2)
           
 void setURL(java.net.URL url, java.lang.String protocol, java.lang.String host, int port, java.lang.String file, java.lang.String ref)
           
 void setURL(java.net.URL u, java.lang.String protocol, java.lang.String host, int port, java.lang.String authority, java.lang.String userInfo, java.lang.String file, java.lang.String query, java.lang.String ref)
           
protected  java.lang.String toExternalForm(java.net.URL url)
           
 
Methods inherited from class java.net.URLStreamHandler
openConnection
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

realHandlerService

protected URLStreamHandlerService realHandlerService

urlSetter

protected URLStreamHandlerSetter urlSetter

urlStreamHandlerServiceTracker

protected ServiceTracker<URLStreamHandlerService,ServiceReference<URLStreamHandlerService>> urlStreamHandlerServiceTracker

context

protected BundleContext context

urlStreamServiceReference

protected ServiceReference<URLStreamHandlerService> urlStreamServiceReference

protocol

protected java.lang.String protocol

ranking

protected int ranking
Constructor Detail

URLStreamHandlerProxy

public URLStreamHandlerProxy(java.lang.String protocol,
                             ServiceReference<URLStreamHandlerService> reference,
                             BundleContext context)
Method Detail

equals

protected boolean equals(java.net.URL url1,
                         java.net.URL url2)
Overrides:
equals in class java.net.URLStreamHandler
See Also:
URLStreamHandler.equals(URL, URL)

getDefaultPort

protected int getDefaultPort()
Overrides:
getDefaultPort in class java.net.URLStreamHandler
See Also:
URLStreamHandler.getDefaultPort()

getHostAddress

protected java.net.InetAddress getHostAddress(java.net.URL url)
Overrides:
getHostAddress in class java.net.URLStreamHandler
See Also:
URLStreamHandler.getHostAddress(URL)

hashCode

protected int hashCode(java.net.URL url)
Overrides:
hashCode in class java.net.URLStreamHandler
See Also:
URLStreamHandler.hashCode(URL)

hostsEqual

protected boolean hostsEqual(java.net.URL url1,
                             java.net.URL url2)
Overrides:
hostsEqual in class java.net.URLStreamHandler
See Also:
URLStreamHandler.hostsEqual(URL, URL)

openConnection

protected java.net.URLConnection openConnection(java.net.URL url)
                                         throws java.io.IOException
Specified by:
openConnection in class java.net.URLStreamHandler
Throws:
java.io.IOException
See Also:
URLStreamHandler.openConnection(URL)

parseURL

protected void parseURL(java.net.URL url,
                        java.lang.String str,
                        int start,
                        int end)
Overrides:
parseURL in class java.net.URLStreamHandler
See Also:
URLStreamHandler.parseURL(URL, String, int, int)

sameFile

protected boolean sameFile(java.net.URL url1,
                           java.net.URL url2)
Overrides:
sameFile in class java.net.URLStreamHandler
See Also:
URLStreamHandler.sameFile(URL, URL)

toExternalForm

protected java.lang.String toExternalForm(java.net.URL url)
Overrides:
toExternalForm in class java.net.URLStreamHandler
See Also:
URLStreamHandler.toExternalForm(URL)

setURL

public void setURL(java.net.URL u,
                   java.lang.String protocol,
                   java.lang.String host,
                   int port,
                   java.lang.String authority,
                   java.lang.String userInfo,
                   java.lang.String file,
                   java.lang.String query,
                   java.lang.String ref)
Overrides:
setURL in class java.net.URLStreamHandler
See Also:
URLStreamHandler.setURL(URL, String, String, int, String, String, String, String, String)

setURL

public void setURL(java.net.URL url,
                   java.lang.String protocol,
                   java.lang.String host,
                   int port,
                   java.lang.String file,
                   java.lang.String ref)
Overrides:
setURL in class java.net.URLStreamHandler

addingService

public ServiceReference<URLStreamHandlerService> addingService(ServiceReference<URLStreamHandlerService> reference)
Description copied from interface: ServiceTrackerCustomizer
A service is being added to the ServiceTracker.

This method is called before a service which matched the search parameters of the ServiceTracker is added to the ServiceTracker. This method should return the service object to be tracked for the specified ServiceReference. The returned service object is stored in the ServiceTracker and is available from the getService and getServices methods.

Specified by:
addingService in interface ServiceTrackerCustomizer<URLStreamHandlerService,ServiceReference<URLStreamHandlerService>>
Parameters:
reference - The reference to the service being added to the ServiceTracker.
Returns:
The service object to be tracked for the specified referenced service or null if the specified referenced service should not be tracked.
See Also:
ServiceTrackerCustomizer.addingService(ServiceReference)

modifiedService

public void modifiedService(ServiceReference<URLStreamHandlerService> reference,
                            ServiceReference<URLStreamHandlerService> service)
Description copied from interface: ServiceTrackerCustomizer
A service tracked by the ServiceTracker has been modified.

This method is called when a service being tracked by the ServiceTracker has had it properties modified.

Specified by:
modifiedService in interface ServiceTrackerCustomizer<URLStreamHandlerService,ServiceReference<URLStreamHandlerService>>
Parameters:
reference - The reference to the service that has been modified.
service - The service object for the specified referenced service.
See Also:
ServiceTrackerCustomizer.modifiedService(ServiceReference, Object)

removedService

public void removedService(ServiceReference<URLStreamHandlerService> reference,
                           ServiceReference<URLStreamHandlerService> service)
Description copied from interface: ServiceTrackerCustomizer
A service tracked by the ServiceTracker has been removed.

This method is called after a service is no longer being tracked by the ServiceTracker.

Specified by:
removedService in interface ServiceTrackerCustomizer<URLStreamHandlerService,ServiceReference<URLStreamHandlerService>>
Parameters:
reference - The reference to the service that has been removed.
service - The service object for the specified referenced service.
See Also:
ServiceTrackerCustomizer.removedService(ServiceReference, Object)


Copyright © 2007-2012 FuseSource, Corp.. All Rights Reserved.