org.apache.felix.framework
Class URLHandlersStreamHandlerProxy

java.lang.Object
  extended by java.net.URLStreamHandler
      extended by org.apache.felix.framework.URLHandlersStreamHandlerProxy
All Implemented Interfaces:
java.lang.reflect.InvocationHandler, org.osgi.service.url.URLStreamHandlerSetter

public final class URLHandlersStreamHandlerProxy
extends java.net.URLStreamHandler
implements org.osgi.service.url.URLStreamHandlerSetter, java.lang.reflect.InvocationHandler

This class implements a stream handler proxy. When the stream handler proxy instance is created, it is associated with a particular protocol and will answer all future requests for handling of that stream type. It does not directly handle the stream handler requests, but delegates the requests to an underlying stream handler service.

The proxy instance for a particular protocol is used for all framework instances that may contain their own stream handler services. When performing a stream handler operation, the proxy retrieves the handler service from the framework instance associated with the current call stack and delegates the call to the handler service.

The proxy will create simple stream handler service trackers for each framework instance. The trackers will listen to service events in its respective framework instance to maintain a reference to the "best" stream handler service at any given time.


Constructor Summary
URLHandlersStreamHandlerProxy(java.lang.String protocol, SecureAction action, java.net.URLStreamHandler builtIn, java.net.URL builtInURL)
           
 
Method Summary
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)
           
 java.lang.Object invoke(java.lang.Object obj, java.lang.reflect.Method method, java.lang.Object[] params)
           
protected  java.net.URLConnection openConnection(java.net.URL url)
           
protected  void parseURL(java.net.URL url, java.lang.String spec, int start, int limit)
           
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 url, java.lang.String protocol, java.lang.String host, int port, java.lang.String authority, java.lang.String userInfo, java.lang.String path, 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
 

Constructor Detail

URLHandlersStreamHandlerProxy

public URLHandlersStreamHandlerProxy(java.lang.String protocol,
                                     SecureAction action,
                                     java.net.URLStreamHandler builtIn,
                                     java.net.URL builtInURL)
Method Detail

equals

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

getDefaultPort

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

getHostAddress

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

hashCode

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

hostsEqual

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

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

parseURL

protected void parseURL(java.net.URL url,
                        java.lang.String spec,
                        int start,
                        int limit)
Overrides:
parseURL in class java.net.URLStreamHandler

sameFile

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

setURL

public void setURL(java.net.URL url,
                   java.lang.String protocol,
                   java.lang.String host,
                   int port,
                   java.lang.String authority,
                   java.lang.String userInfo,
                   java.lang.String path,
                   java.lang.String query,
                   java.lang.String ref)
Specified by:
setURL in interface org.osgi.service.url.URLStreamHandlerSetter
Overrides:
setURL in class java.net.URLStreamHandler

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)
Specified by:
setURL in interface org.osgi.service.url.URLStreamHandlerSetter
Overrides:
setURL in class java.net.URLStreamHandler

toExternalForm

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

invoke

public java.lang.Object invoke(java.lang.Object obj,
                               java.lang.reflect.Method method,
                               java.lang.Object[] params)
                        throws java.lang.Throwable
Specified by:
invoke in interface java.lang.reflect.InvocationHandler
Throws:
java.lang.Throwable


Copyright © 2006-2009 The Apache Software Foundation. All Rights Reserved.