minijndicontext.java

来自「PostgreSQL7.4.6 for Linux」· Java 代码 · 共 229 行

JAVA
229
字号
package org.postgresql.test.util;import java.util.*;import java.rmi.MarshalledObject;import java.io.Serializable;import javax.naming.*;import javax.naming.spi.ObjectFactory;/** * The Context for a trivial JNDI implementation.  This is not meant to * be very useful, beyond testing JNDI features of the connection * pools.  It is not a complete JNDI implementations. * * @author Aaron Mulder (ammulder@chariotsolutions.com) * @version $Revision: 1.1 $ */public class MiniJndiContext implements Context{    private Map map = new HashMap();    public MiniJndiContext()    {    }    public Object lookup(Name name) throws NamingException    {        return lookup(name.get(0));    }    public Object lookup(String name) throws NamingException    {        Object o = map.get(name);        if (o == null)        {            return null;        }        if (o instanceof Reference)        {            Reference ref = (Reference) o;            try            {                Class factoryClass = Class.forName(ref.getFactoryClassName());                ObjectFactory fac = (ObjectFactory) factoryClass.newInstance();                Object result = fac.getObjectInstance(ref, null, this, null);                return result;            }            catch (Exception e)            {                throw new NamingException("Unable to dereference to object: " + e);            }        }        else if (o instanceof MarshalledObject)        {            try            {                Object result = ((MarshalledObject) o).get();                return result;            }            catch (java.io.IOException e)            {                throw new NamingException("Unable to deserialize object: " + e);            }            catch (ClassNotFoundException e)            {                throw new NamingException("Unable to deserialize object: " + e);            }        }        else        {            throw new NamingException("JNDI Object is neither Referenceable nor Serializable");        }    }    public void bind(Name name, Object obj) throws NamingException    {        rebind(name.get(0), obj);    }    public void bind(String name, Object obj) throws NamingException    {        rebind(name, obj);    }    public void rebind(Name name, Object obj) throws NamingException    {        rebind(name.get(0), obj);    }    public void rebind(String name, Object obj) throws NamingException    {        if (obj instanceof Referenceable)        {            Reference ref = ((Referenceable) obj).getReference();            map.put(name, ref);        }        else if (obj instanceof Serializable)        {            try            {                MarshalledObject mo = new MarshalledObject(obj);                map.put(name, mo);            }            catch (java.io.IOException e)            {                throw new NamingException("Unable to serialize object to JNDI: " + e);            }        }        else        {            throw new NamingException("Object to store in JNDI is neither Referenceable nor Serializable");        }    }    public void unbind(Name name) throws NamingException    {        unbind(name.get(0));    }    public void unbind(String name) throws NamingException    {        map.remove(name);    }    public void rename(Name oldName, Name newName) throws NamingException    {        rename(oldName.get(0), newName.get(0));    }    public void rename(String oldName, String newName) throws NamingException    {        map.put(newName, map.remove(oldName));    }    public NamingEnumeration list(Name name) throws NamingException    {        return null;    }    public NamingEnumeration list(String name) throws NamingException    {        return null;    }    public NamingEnumeration listBindings(Name name) throws NamingException    {        return null;    }    public NamingEnumeration listBindings(String name) throws NamingException    {        return null;    }    public void destroySubcontext(Name name) throws NamingException    {    }    public void destroySubcontext(String name) throws NamingException    {    }    public Context createSubcontext(Name name) throws NamingException    {        return null;    }    public Context createSubcontext(String name) throws NamingException    {        return null;    }    public Object lookupLink(Name name) throws NamingException    {        return null;    }    public Object lookupLink(String name) throws NamingException    {        return null;    }    public NameParser getNameParser(Name name) throws NamingException    {        return null;    }    public NameParser getNameParser(String name) throws NamingException    {        return null;    }    public Name composeName(Name name, Name prefix) throws NamingException    {        return null;    }    public String composeName(String name, String prefix)            throws NamingException    {        return null;    }    public Object addToEnvironment(String propName, Object propVal)            throws NamingException    {        return null;    }    public Object removeFromEnvironment(String propName)            throws NamingException    {        return null;    }    public Hashtable getEnvironment() throws NamingException    {        return null;    }    public void close() throws NamingException    {    }    public String getNameInNamespace() throws NamingException    {        return null;    }}

⌨️ 快捷键说明

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