home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / naming / spi / NamingManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  7.1 KB  |  297 lines

  1. package javax.naming.spi;
  2.  
  3. import com.sun.naming.internal.FactoryEnumeration;
  4. import com.sun.naming.internal.ResourceManager;
  5. import com.sun.naming.internal.VersionHelper;
  6. import java.net.MalformedURLException;
  7. import java.util.Hashtable;
  8. import javax.naming.CannotProceedException;
  9. import javax.naming.Context;
  10. import javax.naming.Name;
  11. import javax.naming.NamingException;
  12. import javax.naming.NoInitialContextException;
  13. import javax.naming.RefAddr;
  14. import javax.naming.Reference;
  15. import javax.naming.Referenceable;
  16. import javax.naming.StringRefAddr;
  17.  
  18. public class NamingManager {
  19.    private static boolean debug = true;
  20.    static VersionHelper helper = VersionHelper.getVersionHelper();
  21.    private static ObjectFactoryBuilder object_factory_builder = null;
  22.    private static final String defaultPkgPrefix = "com.sun.jndi.url";
  23.    private static InitialContextFactoryBuilder initctx_factory_builder = null;
  24.    public static final String CPE = "java.naming.spi.CannotProceedException";
  25.  
  26.    NamingManager() {
  27.    }
  28.  
  29.    public static synchronized void setObjectFactoryBuilder(ObjectFactoryBuilder var0) throws NamingException {
  30.       if (object_factory_builder != null) {
  31.          throw new IllegalStateException("ObjectFactoryBuilder already set");
  32.       } else {
  33.          SecurityManager var1 = System.getSecurityManager();
  34.          if (var1 != null) {
  35.             var1.checkSetFactory();
  36.          }
  37.  
  38.          object_factory_builder = var0;
  39.       }
  40.    }
  41.  
  42.    static ObjectFactoryBuilder getObjectFactoryBuilder() {
  43.       return object_factory_builder;
  44.    }
  45.  
  46.    static ObjectFactory getObjectFactoryFromReference(Reference var0, String var1) throws IllegalAccessException, InstantiationException, MalformedURLException {
  47.       Class var2 = null;
  48.  
  49.       try {
  50.          var2 = helper.loadClass(var1);
  51.       } catch (ClassNotFoundException var6) {
  52.       }
  53.  
  54.       String var3;
  55.       if (var2 == null && (var3 = var0.getFactoryClassLocation()) != null) {
  56.          try {
  57.             var2 = helper.loadClass(var1, var3);
  58.          } catch (ClassNotFoundException var5) {
  59.          }
  60.       }
  61.  
  62.       return var2 != null ? (ObjectFactory)var2.newInstance() : null;
  63.    }
  64.  
  65.    private static Object createObjectFromFactories(Object var0, Name var1, Context var2, Hashtable var3) throws Exception {
  66.       FactoryEnumeration var4 = ResourceManager.getFactories("java.naming.factory.object", var3, var2);
  67.       if (var4 == null) {
  68.          return null;
  69.       } else {
  70.          ObjectFactory var5;
  71.          Object var6;
  72.          for(var6 = null; var6 == null && var4.hasMore(); var6 = var5.getObjectInstance(var0, var1, var2, var3)) {
  73.             var5 = (ObjectFactory)var4.next();
  74.          }
  75.  
  76.          return var6;
  77.       }
  78.    }
  79.  
  80.    private static String getURLScheme(String var0) {
  81.       int var1 = var0.indexOf(58);
  82.       int var2 = var0.indexOf(47);
  83.       return var1 <= 0 || var2 != -1 && var1 >= var2 ? null : var0.substring(0, var1);
  84.    }
  85.  
  86.    public static Object getObjectInstance(Object var0, Name var1, Context var2, Hashtable var3) throws Exception {
  87.       ObjectFactoryBuilder var5 = getObjectFactoryBuilder();
  88.       if (var5 != null) {
  89.          ObjectFactory var9 = var5.createObjectFactory(var0, var3);
  90.          return var9.getObjectInstance(var0, var1, var2, var3);
  91.       } else {
  92.          Reference var6 = null;
  93.          if (var0 instanceof Reference) {
  94.             var6 = (Reference)var0;
  95.          } else if (var0 instanceof Referenceable) {
  96.             var6 = ((Referenceable)var0).getReference();
  97.          }
  98.  
  99.          if (var6 != null) {
  100.             String var8 = var6.getFactoryClassName();
  101.             if (var8 != null) {
  102.                ObjectFactory var4 = getObjectFactoryFromReference(var6, var8);
  103.                if (var4 != null) {
  104.                   return var4.getObjectInstance(var6, var1, var2, var3);
  105.                }
  106.  
  107.                return var0;
  108.             }
  109.  
  110.             Object var7 = processURLAddrs(var6, var1, var2, var3);
  111.             if (var7 != null) {
  112.                return var7;
  113.             }
  114.          }
  115.  
  116.          Object var10 = createObjectFromFactories(var0, var1, var2, var3);
  117.          return var10 != null ? var10 : var0;
  118.       }
  119.    }
  120.  
  121.    static Object processURLAddrs(Reference var0, Name var1, Context var2, Hashtable var3) throws NamingException {
  122.       for(int var4 = 0; var4 < var0.size(); ++var4) {
  123.          RefAddr var5 = var0.get(var4);
  124.          if (var5 instanceof StringRefAddr && var5.getType().equalsIgnoreCase("URL")) {
  125.             String var6 = (String)var5.getContent();
  126.             Object var7 = processURL(var6, var1, var2, var3);
  127.             if (var7 != null) {
  128.                return var7;
  129.             }
  130.          }
  131.       }
  132.  
  133.       return null;
  134.    }
  135.  
  136.    private static Object processURL(Object var0, Name var1, Context var2, Hashtable var3) throws NamingException {
  137.       if (var0 instanceof String) {
  138.          String var5 = (String)var0;
  139.          String var6 = getURLScheme(var5);
  140.          if (var6 != null) {
  141.             Object var4 = getURLObject(var6, var0, var1, var2, var3);
  142.             if (var4 != null) {
  143.                return var4;
  144.             }
  145.          }
  146.       }
  147.  
  148.       if (var0 instanceof String[]) {
  149.          String[] var9 = (String[])var0;
  150.  
  151.          for(int var10 = 0; var10 < var9.length; ++var10) {
  152.             String var7 = getURLScheme(var9[var10]);
  153.             if (var7 != null) {
  154.                Object var8 = getURLObject(var7, var0, var1, var2, var3);
  155.                if (var8 != null) {
  156.                   return var8;
  157.                }
  158.             }
  159.          }
  160.       }
  161.  
  162.       return null;
  163.    }
  164.  
  165.    static Context getContext(Object var0, Name var1, Context var2, Hashtable var3) throws NamingException {
  166.       if (var0 instanceof Context) {
  167.          return (Context)var0;
  168.       } else {
  169.          Object var4;
  170.          try {
  171.             var4 = getObjectInstance(var0, var1, var2, var3);
  172.          } catch (NamingException var8) {
  173.             throw var8;
  174.          } catch (Exception var9) {
  175.             NamingException var7 = new NamingException();
  176.             var7.setRootCause(var9);
  177.             throw var7;
  178.          }
  179.  
  180.          return var4 instanceof Context ? (Context)var4 : null;
  181.       }
  182.    }
  183.  
  184.    static Resolver getResolver(Object var0, Name var1, Context var2, Hashtable var3) throws NamingException {
  185.       if (var0 instanceof Resolver) {
  186.          return (Resolver)var0;
  187.       } else {
  188.          Object var4;
  189.          try {
  190.             var4 = getObjectInstance(var0, var1, var2, var3);
  191.          } catch (NamingException var8) {
  192.             throw var8;
  193.          } catch (Exception var9) {
  194.             NamingException var7 = new NamingException();
  195.             var7.setRootCause(var9);
  196.             throw var7;
  197.          }
  198.  
  199.          return var4 instanceof Resolver ? (Resolver)var4 : null;
  200.       }
  201.    }
  202.  
  203.    public static Context getURLContext(String var0, Hashtable var1) throws NamingException {
  204.       Object var2 = getURLObject(var0, (Object)null, (Name)null, (Context)null, var1);
  205.       return var2 instanceof Context ? (Context)var2 : null;
  206.    }
  207.  
  208.    private static Object getURLObject(String var0, Object var1, Name var2, Context var3, Hashtable var4) throws NamingException {
  209.       ObjectFactory var5 = (ObjectFactory)ResourceManager.getFactory("java.naming.factory.url.pkgs", var4, var3, "." + var0 + "." + var0 + "URLContextFactory", "com.sun.jndi.url");
  210.       if (var5 == null) {
  211.          return null;
  212.       } else {
  213.          try {
  214.             return var5.getObjectInstance(var1, var2, var3, var4);
  215.          } catch (NamingException var9) {
  216.             throw var9;
  217.          } catch (Exception var10) {
  218.             NamingException var8 = new NamingException();
  219.             var8.setRootCause(var10);
  220.             throw var8;
  221.          }
  222.       }
  223.    }
  224.  
  225.    private static InitialContextFactoryBuilder getInitialContextFactoryBuilder() {
  226.       return initctx_factory_builder;
  227.    }
  228.  
  229.    public static Context getInitialContext(Hashtable var0) throws NamingException {
  230.       InitialContextFactoryBuilder var2 = getInitialContextFactoryBuilder();
  231.       InitialContextFactory var1;
  232.       if (var2 == null) {
  233.          String var3 = var0 != null ? (String)var0.get("java.naming.factory.initial") : null;
  234.          if (var3 == null) {
  235.             NoInitialContextException var4 = new NoInitialContextException("Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial");
  236.             throw var4;
  237.          }
  238.  
  239.          try {
  240.             var1 = (InitialContextFactory)helper.loadClass(var3).newInstance();
  241.          } catch (Exception var6) {
  242.             NoInitialContextException var5 = new NoInitialContextException("Cannot instantiate class: " + var3);
  243.             ((NamingException)var5).setRootCause(var6);
  244.             throw var5;
  245.          }
  246.       } else {
  247.          var1 = var2.createInitialContextFactory(var0);
  248.       }
  249.  
  250.       return var1.getInitialContext(var0);
  251.    }
  252.  
  253.    public static synchronized void setInitialContextFactoryBuilder(InitialContextFactoryBuilder var0) throws NamingException {
  254.       if (initctx_factory_builder != null) {
  255.          throw new IllegalStateException("InitialContextFactoryBuilder already set");
  256.       } else {
  257.          SecurityManager var1 = System.getSecurityManager();
  258.          if (var1 != null) {
  259.             var1.checkSetFactory();
  260.          }
  261.  
  262.          initctx_factory_builder = var0;
  263.       }
  264.    }
  265.  
  266.    public static boolean hasInitialContextFactoryBuilder() {
  267.       return initctx_factory_builder != null;
  268.    }
  269.  
  270.    public static Context getContinuationContext(CannotProceedException var0) throws NamingException {
  271.       Hashtable var1 = var0.getEnvironment();
  272.       if (var1 == null) {
  273.          var1 = new Hashtable(7);
  274.          var0.setEnvironment(var1);
  275.       }
  276.  
  277.       var1.put("java.naming.spi.CannotProceedException", var0);
  278.       ContinuationContext var2 = new ContinuationContext(var0);
  279.       return var2.getTargetContext();
  280.    }
  281.  
  282.    public static Object getStateToBind(Object var0, Name var1, Context var2, Hashtable var3) throws NamingException {
  283.       FactoryEnumeration var4 = ResourceManager.getFactories("java.naming.factory.state", var3, var2);
  284.       if (var4 == null) {
  285.          return var0;
  286.       } else {
  287.          StateFactory var5;
  288.          Object var6;
  289.          for(var6 = null; var6 == null && var4.hasMore(); var6 = var5.getStateToBind(var0, var1, var2, var3)) {
  290.             var5 = (StateFactory)var4.next();
  291.          }
  292.  
  293.          return var6 != null ? var6 : var0;
  294.       }
  295.    }
  296. }
  297.