javaURLContextFactory.java |
/* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jnp.interfaces.java; import java.util.Hashtable; import javax.naming.*; import javax.naming.spi.*; import org.jnp.interfaces.NamingContext; import org.jnp.interfaces.Naming; /** * Implementation of "java:" namespace factory. The context is associated * with the thread, so the root context must be set before this is used in a thread * * @author Rickard Oberg * @version $Revision: 1.2.32.1 $ */ public class javaURLContextFactory implements ObjectFactory { // Constants ----------------------------------------------------- // Attributes ---------------------------------------------------- // Static -------------------------------------------------------- private static ThreadLocal server = new ThreadLocal(); public static void setRoot(Naming srv) { // TODO: Add security check here server.set(srv); } public static Naming getRoot() { // TODO: Add security check here return (Naming)server.get(); } // Constructors -------------------------------------------------- // Public -------------------------------------------------------- // ObjectFactory implementation ---------------------------------- public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable environment) throws Exception { if (obj == null) return new NamingContext(environment, name, (Naming)server.get()); else if (obj instanceof String) { String url = (String)obj; Context ctx = new NamingContext(environment, name, (Naming)server.get()); Name n = ctx.getNameParser(name).parse(url.substring(url.indexOf(":")+1)); if (n.size() >= 3) { // Provider URL? if (n.get(0).toString().equals("") && n.get(1).toString().equals("")) { ctx.addToEnvironment(Context.PROVIDER_URL, n.get(2)); } } return ctx; } else { return null; } } // Y overrides --------------------------------------------------- // Package protected --------------------------------------------- // Protected ----------------------------------------------------- // Private ------------------------------------------------------- // Inner classes ------------------------------------------------- }
javaURLContextFactory.java |