You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2002/10/01 20:49:15 UTC

cvs commit: jakarta-tomcat-connectors/naming/src/org/apache/naming/handler/jndi DirContextURLConnection.java DirContextURLStreamHandler.java DirContextURLStreamHandlerFactory.java Handler.java package.html

costin      2002/10/01 11:49:15

  Added:       naming/src/org/apache/naming/handler package.html
               naming/src/org/apache/naming/handler/jndi
                        DirContextURLConnection.java
                        DirContextURLStreamHandler.java
                        DirContextURLStreamHandlerFactory.java Handler.java
                        package.html
  Log:
  The URL handler.
  
  Revision  Changes    Path
  1.1                  jakarta-tomcat-connectors/naming/src/org/apache/naming/handler/package.html
  
  Index: package.html
  ===================================================================
  <h2>URL handlers<h2>
  
  This package contains URL handlers that allow access to jndi resources.
  
  
  1.1                  jakarta-tomcat-connectors/naming/src/org/apache/naming/handler/jndi/DirContextURLConnection.java
  
  Index: DirContextURLConnection.java
  ===================================================================
  /*
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:  
   *       "This product includes software developed by the 
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * [Additional notices, if required by prior licensing conditions]
   *
   */ 
  
  package org.apache.naming.handler.jndi;
  
  import java.net.URL;
  import java.net.URLConnection;
  import java.io.*;
  import java.security.Permission;
  import java.util.Date;
  import java.util.Enumeration;
  import java.util.Vector;
  import javax.naming.NamingException;
  import javax.naming.NamingEnumeration;
  import javax.naming.NameClassPair;
  import javax.naming.directory.DirContext;
  import javax.naming.directory.Attribute;
  import javax.naming.directory.Attributes;
  
  import org.apache.naming.core.JndiPermission;
  import org.apache.naming.util.AttributeHelper;
  // import org.apache.naming.resources.Resource;
  // import org.apache.naming.resources.ResourceAttributes;
  
  /**
   * Connection to a JNDI directory context.
   * <p/>
   * Note: All the object attribute names are the WebDAV names, not the HTTP 
   * names, so this class overrides some methods from URLConnection to do the
   * queries using the right names. Content handler is also not used; the 
   * content is directly returned.
   * 
   * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
   * @author Costin Manolache
   */
  public class DirContextURLConnection 
      extends URLConnection
  {
      
      
      // ----------------------------------------------------------- Constructors
      
      /**
       * @param context The base context for the dynamic resources.
       *        For regular webapps, it should be a thread-bound context, probably
       *        a branch under java:
       *        For top-level apps, it can be either the InitialContext or a branch
       *        that is used for all content.
       *
       * The choice of the context affects the base of the URLs.
       */
      public DirContextURLConnection(DirContext context, URL url) {
          super(url);
          if (context == null)
              throw new IllegalArgumentException
                  ("Directory context can't be null");
          if (System.getSecurityManager() != null) {
              this.permission = new JndiPermission(url.toString());
  	}
          this.context = context;
      }
      
      
      // ----------------------------------------------------- Instance Variables
      
      
      /**
       * Directory context.
       */
      protected DirContext context;
      
      
      /**
       * Associated resource.
       */
      protected Object resource;
      
      
      /**
       * Associated DirContext.
       */
      protected DirContext collection;
      
      
      /**
       * Other unknown object.
       */
      protected Object object;
      
      
      /**
       * Attributes.
       */
      protected Attributes attributes;
      
      
      /**
       * Date.
       */
      protected long date;
      
      
      /**
       * Permission
       */
      protected Permission permission;
  
  
      // ------------------------------------------------------------- Properties
      
      
      /**
       * Connect to the DirContext, and retrive the bound object, as well as
       * its attributes. If no object is bound with the name specified in the
       * URL, then an IOException is thrown.
       * 
       * @throws IOException Object not found
       */
      public void connect()
          throws IOException {
          
          if (!connected) {
              
              try {
                  // TODO: What is this ???  (costin)
                  date = System.currentTimeMillis();
                  String path = getURL().getFile();
  
                  /* This deals with a strange case, where the
                     name is prefixed by hostname and contextname.
  
                     A webapp should never use this - all resources
                     are local ( or a different mean should be used to
                     locate external res ).
  
                     The top-level handler must use the hostname + context to
                     locate files in a particular context.
                     
                    if (context instanceof ProxyDirContext) {
                      ProxyDirContext proxyDirContext = 
                          (ProxyDirContext) context;
                      String hostName = proxyDirContext.getHostName();
                      String contextName = proxyDirContext.getContextName();
                      if (hostName != null) {
                          if (!path.startsWith("/" + hostName + "/"))
                              return;
                          path = path.substring(hostName.length()+ 1);
                      }
                      if (contextName != null) {
                          if (!path.startsWith(contextName + "/")) {
                              return;
                          } else {
                              path = path.substring(contextName.length());
                          }
                      }
                  }
                  */
                  object = context.lookup(path);
                  attributes = context.getAttributes(path);
                  //                if (object instanceof Resource)
                  //  resource = (Resource) object;
                  if (object instanceof DirContext)
                      collection = (DirContext) object;
                  else
                      resource=object;
              } catch (NamingException e) {
                  // Object not found
              }
              
              connected = true;
              
          }
          
      }
      
      
      /**
       * Return the content length value.
       */
      public int getContentLength() {
          if (!connected) {
              // Try to connect (silently)
              try {
                  connect();
              } catch (IOException e) {
              }
          }
          
          if (attributes == null)
              return (-1);
  
          return (int)AttributeHelper.getContentLength( attributes );
      }
  
      /**
       * Return the content type value.
       */
      public String getContentType() {
          if (!connected) {
              // Try to connect (silently)
              try {
                  connect();
              } catch (IOException e) {
              }
          }
          
          if (attributes == null)
              return null;
          
          return AttributeHelper.getContentType(attributes);
      }
      
      
      /**
       * Return the last modified date.
       * TODO: it's broken
       */
      public long getDate() {
          return date;
      }
      
      
      /**
       * Return the last modified date.
       */
      public long getLastModified() {
  
          if (!connected) {
              // Try to connect (silently)
              try {
                  connect();
              } catch (IOException e) {
              }
          }
  
          if (attributes == null)
              return 0;
  
          return AttributeHelper.getLastModified( attributes );
      }
      
      
      /**
       * Returns the name of the specified header field.
       */
      public String getHeaderField(String name) {
  
          if (!connected) {
              // Try to connect (silently)
              try {
                  connect();
              } catch (IOException e) {
              }
          }
          
          if (attributes == null)
              return (null);
  
          Attribute attribute = attributes.get(name);
          try {
              return attribute.get().toString();
          } catch (Exception e) {
              // Shouldn't happen, unless the attribute has no value
          }
  
          return (null);
          
      }
      
      
      /**
       * Get object content.
       */
      public Object getContent()
          throws IOException {
          
          if (!connected)
              connect();
          
          if (resource != null)
              return getInputStream();
          if (collection != null)
              return collection;
          if (object != null)
              return object;
          
          throw new FileNotFoundException();
          
      }
      
      
      /**
       * Get object content.
       */
      public Object getContent(Class[] classes)
          throws IOException {
          
          Object object = getContent();
          
          for (int i = 0; i < classes.length; i++) {
              if (classes[i].isInstance(object))
                  return object;
          }
          
          return null;
          
      }
      
      
      /**
       * Get input stream.
       */
      public InputStream getInputStream() 
          throws IOException {
          
          if (!connected)
              connect();
          
          if (resource == null) {
              throw new FileNotFoundException();
          } else {
              // Reopen resource
              try {
                  resource =  context.lookup(getURL().getFile());
              } catch (NamingException e) {
              }
          }
          
          //        return (resource.streamContent());
          return getInputStream(resource);
          
      }
  
      /** Try to extract content from a resource found in the directory
       *  Code from Resource and ProxyContext.
       */
      public static InputStream getInputStream( Object resource ) {
          if( resource instanceof InputStream )
              return (InputStream) resource;
  
          // Found in: ProxyDirContext.lookup ( strange, only in one ).
          return new ByteArrayInputStream(resource.toString().getBytes());
      }
      
      /**
       * Get the Permission for this URL
       */
      public Permission getPermission() {
  
          return permission;
      }
  
  
      // --------------------------------------------------------- Public Methods
      
      
      /**
       * List children of this collection. The names given are relative to this
       * URI's path. The full uri of the children is then : path + "/" + name.
       */
      public Enumeration list()
          throws IOException {
          
          if (!connected) {
              connect();
          }
          
          if ((resource == null) && (collection == null)) {
              throw new FileNotFoundException();
          }
          
          Vector result = new Vector();
          
          if (collection != null) {
              try {
                  NamingEnumeration enum = context.list(getURL().getFile());
                  while (enum.hasMoreElements()) {
                      NameClassPair ncp = (NameClassPair) enum.nextElement();
                      result.addElement(ncp.getName());
                  }
              } catch (NamingException e) {
                  // Unexpected exception
                  throw new FileNotFoundException();
              }
          }
          
          return result.elements();
          
      }
      
      
  }
  
  
  
  1.1                  jakarta-tomcat-connectors/naming/src/org/apache/naming/handler/jndi/DirContextURLStreamHandler.java
  
  Index: DirContextURLStreamHandler.java
  ===================================================================
  /*
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:  
   *       "This product includes software developed by the 
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * [Additional notices, if required by prior licensing conditions]
   *
   */ 
  
  package org.apache.naming.handler.jndi;
  
  import java.net.URL;
  import java.net.URLConnection;
  import java.net.URLStreamHandler;
  import java.io.IOException;
  import java.util.Hashtable;
  import javax.naming.NamingException;
  import javax.naming.directory.DirContext;
  
  /**
   * Stream handler to a JNDI directory context.
   * 
   * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
   * @version $Revision: 1.1 $
   */
  public class DirContextURLStreamHandler 
      extends URLStreamHandler {
      
      
      // ----------------------------------------------------------- Constructors
      
      
      public DirContextURLStreamHandler() {
      }
      
      
      public DirContextURLStreamHandler(DirContext context) {
          this.context = context;
      }
      
      
      // -------------------------------------------------------------- Variables
      
      
      /**
       * Bindings class loader - directory context. Keyed by CL id.
       */
      private static Hashtable clBindings = new Hashtable();
      
      
      /**
       * Bindings thread - directory context. Keyed by thread id.
       */
      private static Hashtable threadBindings = new Hashtable();
      
      
      // ----------------------------------------------------- Instance Variables
      
      
      /**
       * Directory context.
       */
      protected DirContext context = null;
      
      
      // ------------------------------------------------------------- Properties
      
      
      // ----------------------------------------------- URLStreamHandler Methods
      
      
      /**
       * Opens a connection to the object referenced by the <code>URL</code> 
       * argument.
       */
      protected URLConnection openConnection(URL u) 
          throws IOException {
          DirContext currentContext = this.context;
          if (currentContext == null)
              currentContext = get();
          return new DirContextURLConnection(currentContext, u);
      }
      
      
      // --------------------------------------------------------- Public Methods
      public static final String PROTOCOL_HANDLER_VARIABLE = 
          "java.protocol.handler.pkgs";
  
      public static final String PACKAGE = "org.apache.naming.handler.jndi";
  
      
      /**
       * Set the java.protocol.handler.pkgs system property.
       */
      public static void setProtocolHandler() {
          String value = System.getProperty(PROTOCOL_HANDLER_VARIABLE);
          if (value == null) {
              value = PACKAGE;
              System.setProperty(PROTOCOL_HANDLER_VARIABLE, value);
          } else if (value.indexOf( PACKAGE ) == -1) {
              value += "|" + PACKAGE;
              System.setProperty(PROTOCOL_HANDLER_VARIABLE, value);
          }
      }
      
      
      /**
       * Returns true if the thread or the context class loader of the current 
       * thread is bound.
       */
      public static boolean isBound() {
          return (clBindings.containsKey
                  (Thread.currentThread().getContextClassLoader()))
              || (threadBindings.containsKey(Thread.currentThread()));
      }
      
      
      /**
       * Binds a directory context to a class loader.
       */
      public static void bind(DirContext dirContext) {
          ClassLoader currentCL = 
              Thread.currentThread().getContextClassLoader();
          if (currentCL != null)
              clBindings.put(currentCL, dirContext);
      }
      
      
      /**
       * Unbinds a directory context to a class loader.
       */
      public static void unbind() {
          ClassLoader currentCL = 
              Thread.currentThread().getContextClassLoader();
          if (currentCL != null)
              clBindings.remove(currentCL);
      }
      
      
      /**
       * Binds a directory context to a thread.
       */
      public static void bindThread(DirContext dirContext) {
          threadBindings.put(Thread.currentThread(), dirContext);
      }
      
      
      /**
       * Unbinds a directory context to a thread.
       */
      public static void unbindThread() {
          threadBindings.remove(Thread.currentThread());
      }
      
      
      /**
       * Get the bound context.
       */
      public static DirContext get() {
  
          DirContext result = null;
  
          Thread currentThread = Thread.currentThread();
          ClassLoader currentCL = currentThread.getContextClassLoader();
  
          // Checking CL binding
          result = (DirContext) clBindings.get(currentCL);
          if (result != null)
              return result;
  
          // Checking thread biding
          result = (DirContext) threadBindings.get(currentThread);
  
          // Checking parent CL binding
          currentCL = currentCL.getParent();
          while (currentCL != null) {
              result = (DirContext) clBindings.get(currentCL);
              if (result != null)
                  return result;
              currentCL = currentCL.getParent();
          }
  
          if (result == null)
              throw new IllegalStateException("Illegal class loader binding");
  
          return result;
  
      }
      
      
      /**
       * Binds a directory context to a class loader.
       */
      public static void bind(ClassLoader cl, DirContext dirContext) {
          clBindings.put(cl, dirContext);
      }
      
      
      /**
       * Unbinds a directory context to a class loader.
       */
      public static void unbind(ClassLoader cl) {
          clBindings.remove(cl);
      }
      
      
      /**
       * Get the bound context.
       */
      public static DirContext get(ClassLoader cl) {
          return (DirContext) clBindings.get(cl);
      }
      
      
      /**
       * Get the bound context.
       */
      public static DirContext get(Thread thread) {
          return (DirContext) threadBindings.get(thread);
      }
      
      
  }
  
  
  
  1.1                  jakarta-tomcat-connectors/naming/src/org/apache/naming/handler/jndi/DirContextURLStreamHandlerFactory.java
  
  Index: DirContextURLStreamHandlerFactory.java
  ===================================================================
  /*
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:  
   *       "This product includes software developed by the 
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * [Additional notices, if required by prior licensing conditions]
   *
   */ 
  
  package org.apache.naming.handler.jndi;
  
  import java.net.URLStreamHandler;
  import java.net.URLStreamHandlerFactory;
  import java.io.IOException;
  import javax.naming.NamingException;
  import javax.naming.directory.DirContext;
  
  /**
   * Factory for Stream handlers to a JNDI directory context.
   * 
   * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
   * @version $Revision: 1.1 $
   */
  public class DirContextURLStreamHandlerFactory 
      implements URLStreamHandlerFactory {
      
      
      // ----------------------------------------------------------- Constructors
      
      
      public DirContextURLStreamHandlerFactory() {
      }
      
      
      // ----------------------------------------------------- Instance Variables
      
      
      // ------------------------------------------------------------- Properties
      
      
      // ---------------------------------------- URLStreamHandlerFactory Methods
      
      
      /**
       * Creates a new URLStreamHandler instance with the specified protocol.
       * Will return null if the protocol is not <code>jndi</code>.
       * 
       * @param protocol the protocol (must be "jndi" here)
       * @return a URLStreamHandler for the jndi protocol, or null if the 
       * protocol is not JNDI
       */
      public URLStreamHandler createURLStreamHandler(String protocol) {
          if (protocol.equals("jndi")) {
              return new DirContextURLStreamHandler();
          } else {
              return null;
          }
      }
      
      
  }
  
  
  
  1.1                  jakarta-tomcat-connectors/naming/src/org/apache/naming/handler/jndi/Handler.java
  
  Index: Handler.java
  ===================================================================
  /*
   * $Header: /home/cvs/jakarta-tomcat-connectors/naming/src/org/apache/naming/handler/jndi/Handler.java,v 1.1 2002/10/01 18:49:15 costin Exp $
   * $Revision: 1.1 $
   * $Date: 2002/10/01 18:49:15 $
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:  
   *       "This product includes software developed by the 
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * [Additional notices, if required by prior licensing conditions]
   *
   */ 
  
  package org.apache.naming.handler.jndi;
  
  import java.net.URL;
  import java.net.URLConnection;
  import java.net.URLStreamHandler;
  import java.io.IOException;
  import java.util.Hashtable;
  import javax.naming.NamingException;
  import javax.naming.directory.DirContext;
  
  //import org.apache.naming.core.DirContextURLStreamHandler;
  
  /**
   * Stream handler to a JNDI directory context.
   * 
   * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
   * @version $Revision: 1.1 $
   */
  public class Handler 
      extends DirContextURLStreamHandler {
      
      
      // ----------------------------------------------------------- Constructors
      
      
      public Handler() {
      }
      
      
  }
  
  
  
  1.1                  jakarta-tomcat-connectors/naming/src/org/apache/naming/handler/jndi/package.html
  
  Index: package.html
  ===================================================================
  <h3>Handler</h3>
  
  Objects stored in the directory may have content - and act as a VFS. 
  
  This package deals with accessing files in the directory using URLs.
  
  There are 2 cases:
  
  1. Generic access via InitialContext. We will use a naming structure 
  under the InitialContext to locate the file.
    
     jndi:/my/path
  
  will be translated to a lookup for '/my/path'. 
  
  2. The old behavior: the thread is specifically bound to a 
  ProxyContext, then this is used to locate files in the particular
  webapp. We'll emulate this by treating jndi: as a reference
  to a particular branch in the java: webpp resource.
  
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>