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

public class URLStreamHandlerProxy
extends java.net.URLStreamHandler
implements ServiceTrackerCustomizer

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 urlStreamHandlerServiceTracker
           
protected  ServiceReference urlStreamServiceReference
           
 
Constructor Summary
URLStreamHandlerProxy(java.lang.String protocol, ServiceReference reference, BundleContext context)
           
 
Method Summary
 java.lang.Object addingService(ServiceReference reference)
          A service is being added to the ServiceTracker object.
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 reference, java.lang.Object service)
          A service tracked by the ServiceTracker object 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 reference, java.lang.Object service)
          A service tracked by the ServiceTracker object 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 urlStreamHandlerServiceTracker

context

protected BundleContext context

urlStreamServiceReference

protected ServiceReference urlStreamServiceReference

protocol

protected java.lang.String protocol

ranking

protected int ranking
Constructor Detail

URLStreamHandlerProxy

public URLStreamHandlerProxy(java.lang.String protocol,
                             ServiceReference 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 java.lang.Object addingService(ServiceReference reference)
Description copied from interface: ServiceTrackerCustomizer
A service is being added to the ServiceTracker object.

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

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

modifiedService

public void modifiedService(ServiceReference reference,
                            java.lang.Object service)
Description copied from interface: ServiceTrackerCustomizer
A service tracked by the ServiceTracker object has been modified.

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

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

removedService

public void removedService(ServiceReference reference,
                           java.lang.Object service)
Description copied from interface: ServiceTrackerCustomizer
A service tracked by the ServiceTracker object has been removed.

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

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