initialcontext.java

来自「gcc3.2.1源代码」· Java 代码 · 共 334 行

JAVA
334
字号
/* Copyright (C) 2000 Free Software Foundation      This file is part of libgcj.      This software is copyrighted work licensed under the terms of the   Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for   details.  */package javax.naming;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.util.Enumeration;import java.util.Hashtable;import java.util.Properties;import java.applet.Applet;import java.util.Hashtable;import javax.naming.spi.NamingManager;public class InitialContext implements Context{  protected Context defaultInitCtx;  protected boolean gotDefault = false;  protected Hashtable myProps;    public InitialContext (Hashtable environment)    {      init (environment);    }    protected InitialContext (boolean lazy)    {      if (! lazy)	init (null);    }    public InitialContext ()    {      init (null);    }    protected void init (Hashtable environment)    {      // FIXME: Is this enough?      final String[] properties = {	Context.DNS_URL,	Context.INITIAL_CONTEXT_FACTORY,	Context.OBJECT_FACTORIES,	Context.PROVIDER_URL,	Context.STATE_FACTORIES,	Context.URL_PKG_PREFIXES,      };            // Create myProps, cloning environment if needed.      if (environment != null)	myProps = (Hashtable) environment.clone ();      else	myProps = new Hashtable ();            Applet napplet = (Applet) myProps.get (Context.APPLET);            for (int i = properties.length - 1; i >= 0; i--)	{	  Object o = myProps.get (properties[i]);	  	  if (o == null)	    {	      if (napplet != null)		o = napplet.getParameter (properties[i]);	      if (o == null)		o = System.getProperty (properties[i]);	      if (o != null)		myProps.put (properties[i], o);	    }	}            try	{	    Enumeration ep = Thread.currentThread().getContextClassLoader().getResources("jndi.naming");	    while (ep.hasMoreElements ())		{		    URL url = (URL) ep.nextElement ();		    Properties p = new Properties ();		    		    try {			InputStream is = url.openStream ();			p.load (is);			is.close ();		    } catch (IOException e) {}		    merge (myProps, p);		}	}      catch (IOException e) {}      String home = System.getProperty("java.home");      if (home != null)	{	  String fileName = home + File.separator	    + "lib" + File.separator + "jndi.properties";	  Properties p = new Properties ();		  try {	    InputStream is = new FileInputStream (fileName);	    p.load (is);	    is.close ();	  } catch (IOException e) {}	  merge (myProps, p);	}    }  // FIXME: Is this enough?  private static final String[] colon_list =   {    Context.OBJECT_FACTORIES,    Context.URL_PKG_PREFIXES,    Context.STATE_FACTORIES  };  private static void merge (Hashtable h1, Hashtable h2)    {      Enumeration e2 = h2.keys();          while (e2.hasMoreElements())	{	  String key2 = (String) e2.nextElement();	  Object value1 = h1.get(key2);	  if (value1 == null)	    h1.put(key2, h2.get(key2));	  else if (key2.compareTo(colon_list[0]) == 0		   || key2.compareTo(colon_list[1]) == 0		   || key2.compareTo(colon_list[2]) == 0		   || key2.compareTo(colon_list[3]) == 0)	    {	      String value2 = (String) h2.get(key2);	      h1.put(key2, (String) value1 + ":" + value2);	    }	}    }  protected Context getDefaultInitCtx () throws NamingException    {      if (! gotDefault)	{	  defaultInitCtx = NamingManager.getInitialContext (myProps);	  gotDefault = true;	}      return defaultInitCtx;    }  protected Context getURLOrDefaultInitCtx (Name name)       throws NamingException    {      if (name.size () > 0)	  return getURLOrDefaultInitCtx (name.get (0));      else	  return getDefaultInitCtx ();    }  protected Context getURLOrDefaultInitCtx (String name)       throws NamingException    {      String scheme = null;      if (NamingManager.hasInitialContextFactoryBuilder())	return getDefaultInitCtx();      int colon = name.indexOf(':');      int slash = name.indexOf('/');      if (colon > 0 && (slash == -1 || colon < slash))	scheme = name.substring(0, colon);      if (scheme != null) 	{	  Context context = 	      NamingManager.getURLContext(scheme, myProps);	  if (context != null)	    return context;	}	      return getDefaultInitCtx();    }  public void bind (Name name, Object obj) throws NamingException  {    getURLOrDefaultInitCtx (name).bind (name, obj);  }  public void bind (String name, Object obj) throws NamingException  {    getURLOrDefaultInitCtx (name).bind (name, obj);  }  public Object lookup (Name name) throws NamingException  {    return getURLOrDefaultInitCtx (name).lookup (name);  }  public Object lookup (String name) throws NamingException  {    return getURLOrDefaultInitCtx (name).lookup (name);  }  public void rebind (Name name, Object obj) throws NamingException  {    getURLOrDefaultInitCtx (name).rebind (name, obj);  }  public void rebind (String name, Object obj) throws NamingException  {    getURLOrDefaultInitCtx (name).rebind (name, obj);  }  public void unbind (Name name) throws NamingException  {    getURLOrDefaultInitCtx (name).unbind (name);  }  public void unbind (String name) throws NamingException  {    getURLOrDefaultInitCtx (name).unbind (name);  }  public void rename (Name oldName, Name newName) throws NamingException  {    getURLOrDefaultInitCtx (oldName).rename (oldName, newName);  }  public void rename (String oldName, String newName) throws NamingException  {    getURLOrDefaultInitCtx (oldName).rename (oldName, newName);  }  public NamingEnumeration list (Name name) throws NamingException  {    return getURLOrDefaultInitCtx (name).list (name);  }  public NamingEnumeration list (String name) throws NamingException  {    return getURLOrDefaultInitCtx (name).list (name);  }  public NamingEnumeration listBindings (Name name) throws NamingException  {    return getURLOrDefaultInitCtx (name).listBindings (name);  }  public NamingEnumeration listBindings (String name) throws NamingException  {    return getURLOrDefaultInitCtx (name).listBindings (name);  }  public void destroySubcontext (Name name) throws NamingException  {    getURLOrDefaultInitCtx (name).destroySubcontext (name);  }  public void destroySubcontext (String name) throws NamingException  {    getURLOrDefaultInitCtx (name).destroySubcontext (name);  }  public Context createSubcontext (Name name) throws NamingException  {    return getURLOrDefaultInitCtx (name).createSubcontext (name);  }  public Context createSubcontext (String name) throws NamingException  {    return getURLOrDefaultInitCtx (name).createSubcontext (name);  }  public Object lookupLink (Name name) throws NamingException  {    return getURLOrDefaultInitCtx (name).lookupLink (name);  }  public Object lookupLink (String name) throws NamingException  {    return getURLOrDefaultInitCtx (name).lookupLink (name);  }  public NameParser getNameParser (Name name) throws NamingException  {    return getURLOrDefaultInitCtx (name).getNameParser (name);  }  public NameParser getNameParser (String name) throws NamingException  {    return getURLOrDefaultInitCtx (name).getNameParser (name);  }  public Name composeName (Name name, Name prefix) throws NamingException  {    return getURLOrDefaultInitCtx (name).composeName (name, prefix);  }  public String composeName (String name,                            String prefix) throws NamingException  {    return getURLOrDefaultInitCtx (name).composeName (name, prefix);  }  public Object addToEnvironment (String propName,                                 Object propVal) throws NamingException  {    return myProps.put (propName, propVal);  }  public Object removeFromEnvironment (String propName) throws NamingException  {    return myProps.remove (propName);  }  public Hashtable getEnvironment () throws NamingException  {    return myProps;  }  public void close () throws NamingException  {    throw new OperationNotSupportedException ();  }  public String getNameInNamespace () throws NamingException  {    throw new OperationNotSupportedException ();  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?