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 / NameImpl.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  7.9 KB  |  578 lines

  1. package javax.naming;
  2.  
  3. import java.io.Serializable;
  4. import java.util.Enumeration;
  5. import java.util.NoSuchElementException;
  6. import java.util.Properties;
  7. import java.util.Vector;
  8.  
  9. class NameImpl implements Serializable {
  10.    private Vector components;
  11.    private String syntaxDirection;
  12.    private String syntaxSeparator;
  13.    private String syntaxSeparator2;
  14.    private boolean syntaxCaseInsensitive;
  15.    private boolean syntaxTrimBlanks;
  16.    private String syntaxEscape;
  17.    private String syntaxBeginQuote1;
  18.    private String syntaxEndQuote1;
  19.    private String syntaxBeginQuote2;
  20.    private String syntaxEndQuote2;
  21.    private String syntaxAvaSeparator;
  22.    private String syntaxTypevalSeparator;
  23.    private final int STYLE_NONE;
  24.    private final int STYLE_QUOTE1;
  25.    private final int STYLE_QUOTE2;
  26.    private final int STYLE_ESCAPE;
  27.    private int escapingStyle;
  28.  
  29.    private final boolean isA(String var1, int var2, String var3) {
  30.       return var3 != null && var1.startsWith(var3, var2);
  31.    }
  32.  
  33.    private final boolean isMeta(String var1, int var2) {
  34.       return this.isA(var1, var2, this.syntaxEscape) || this.isA(var1, var2, this.syntaxBeginQuote1) || this.isA(var1, var2, this.syntaxBeginQuote2) || this.isSeparator(var1, var2);
  35.    }
  36.  
  37.    private final boolean isSeparator(String var1, int var2) {
  38.       return this.isA(var1, var2, this.syntaxSeparator) || this.isA(var1, var2, this.syntaxSeparator2);
  39.    }
  40.  
  41.    private final int skipSeparator(String var1, int var2) {
  42.       if (this.isA(var1, var2, this.syntaxSeparator)) {
  43.          var2 += this.syntaxSeparator.length();
  44.       } else if (this.isA(var1, var2, this.syntaxSeparator2)) {
  45.          var2 += this.syntaxSeparator2.length();
  46.       }
  47.  
  48.       return var2;
  49.    }
  50.  
  51.    private final int extractComp(String var1, int var2, int var3, Vector var4) throws InvalidNameException {
  52.       boolean var7 = true;
  53.       boolean var8 = false;
  54.  
  55.       StringBuffer var9;
  56.       for(var9 = new StringBuffer(var3); var2 < var3; var7 = false) {
  57.          if (var7 && ((var8 = this.isA(var1, var2, this.syntaxBeginQuote1)) || this.isA(var1, var2, this.syntaxBeginQuote2))) {
  58.             String var13 = var8 ? this.syntaxBeginQuote1 : this.syntaxBeginQuote2;
  59.             String var14 = var8 ? this.syntaxEndQuote1 : this.syntaxEndQuote2;
  60.             if (this.escapingStyle == 0) {
  61.                this.escapingStyle = var8 ? 1 : 2;
  62.             }
  63.  
  64.             for(var2 += var13.length(); var2 < var3 && !var1.startsWith(var14, var2); ++var2) {
  65.                if (this.isA(var1, var2, this.syntaxEscape) && this.isA(var1, var2 + this.syntaxEscape.length(), var14)) {
  66.                   var2 += this.syntaxEscape.length();
  67.                }
  68.  
  69.                var9.append(var1.charAt(var2));
  70.             }
  71.  
  72.             if (var2 >= var3) {
  73.                throw new InvalidNameException(var1 + ": no close quote");
  74.             }
  75.  
  76.             var2 += var14.length();
  77.             if (var2 != var3 && !this.isSeparator(var1, var2)) {
  78.                throw new InvalidNameException(var1 + ": close quote appears before end of component");
  79.             }
  80.             break;
  81.          }
  82.  
  83.          if (this.isSeparator(var1, var2)) {
  84.             break;
  85.          }
  86.  
  87.          if (this.isA(var1, var2, this.syntaxEscape)) {
  88.             if (this.isMeta(var1, var2 + this.syntaxEscape.length())) {
  89.                var2 += this.syntaxEscape.length();
  90.                if (this.escapingStyle == 0) {
  91.                   this.escapingStyle = 3;
  92.                }
  93.             } else if (var2 + this.syntaxEscape.length() >= var3) {
  94.                throw new InvalidNameException(var1 + ": unescaped " + this.syntaxEscape + " at end of component");
  95.             }
  96.          } else if (this.isA(var1, var2, this.syntaxTypevalSeparator) && ((var8 = this.isA(var1, var2 + this.syntaxTypevalSeparator.length(), this.syntaxBeginQuote1)) || this.isA(var1, var2 + this.syntaxTypevalSeparator.length(), this.syntaxBeginQuote2))) {
  97.             String var5 = var8 ? this.syntaxBeginQuote1 : this.syntaxBeginQuote2;
  98.             String var6 = var8 ? this.syntaxEndQuote1 : this.syntaxEndQuote2;
  99.             var2 += this.syntaxTypevalSeparator.length();
  100.             var9.append(this.syntaxTypevalSeparator + var5);
  101.  
  102.             for(var2 += var5.length(); var2 < var3 && !var1.startsWith(var6, var2); ++var2) {
  103.                if (this.isA(var1, var2, this.syntaxEscape) && this.isA(var1, var2 + this.syntaxEscape.length(), var6)) {
  104.                   var2 += this.syntaxEscape.length();
  105.                }
  106.  
  107.                var9.append(var1.charAt(var2));
  108.             }
  109.  
  110.             if (var2 >= var3) {
  111.                throw new InvalidNameException(var1 + ": typeval no close quote");
  112.             }
  113.  
  114.             var2 += var6.length();
  115.             var9.append(var6);
  116.             if (var2 != var3 && !this.isSeparator(var1, var2)) {
  117.                throw new InvalidNameException(var1.substring(var2) + ": typeval close quote appears before end of component");
  118.             }
  119.             break;
  120.          }
  121.  
  122.          var9.append(var1.charAt(var2++));
  123.       }
  124.  
  125.       if (this.syntaxDirection.equals("right_to_left")) {
  126.          var4.insertElementAt(var9.toString(), 0);
  127.       } else {
  128.          var4.addElement(var9.toString());
  129.       }
  130.  
  131.       return var2;
  132.    }
  133.  
  134.    private static boolean getBoolean(Properties var0, String var1) {
  135.       return toBoolean(var0.getProperty(var1));
  136.    }
  137.  
  138.    private static boolean toBoolean(String var0) {
  139.       return var0 != null && var0.toLowerCase().equals("true");
  140.    }
  141.  
  142.    private final void recordNamingConvention(Properties var1) {
  143.       this.syntaxDirection = var1.getProperty("jndi.syntax.direction", "flat");
  144.       if (!this.syntaxDirection.equals("left_to_right") && !this.syntaxDirection.equals("right_to_left") && !this.syntaxDirection.equals("flat")) {
  145.          throw new IllegalArgumentException(this.syntaxDirection + "is not a valid value for the jndi.syntax.direction property");
  146.       } else {
  147.          if (!this.syntaxDirection.equals("flat")) {
  148.             this.syntaxSeparator = var1.getProperty("jndi.syntax.separator");
  149.             this.syntaxSeparator2 = var1.getProperty("jndi.syntax.separator2");
  150.             if (this.syntaxSeparator == null) {
  151.                throw new IllegalArgumentException("jndi.syntax.separator property required for non-flat syntax");
  152.             }
  153.          }
  154.  
  155.          this.syntaxEscape = var1.getProperty("jndi.syntax.escape");
  156.          this.syntaxCaseInsensitive = getBoolean(var1, "jndi.syntax.ignorecase");
  157.          this.syntaxTrimBlanks = getBoolean(var1, "jndi.syntax.trimblanks");
  158.          this.syntaxBeginQuote1 = var1.getProperty("jndi.syntax.beginquote");
  159.          this.syntaxEndQuote1 = var1.getProperty("jndi.syntax.endquote");
  160.          if (this.syntaxEndQuote1 == null && this.syntaxBeginQuote1 != null) {
  161.             this.syntaxEndQuote1 = this.syntaxBeginQuote1;
  162.          } else if (this.syntaxBeginQuote1 == null && this.syntaxEndQuote1 != null) {
  163.             this.syntaxBeginQuote1 = this.syntaxEndQuote1;
  164.          }
  165.  
  166.          this.syntaxBeginQuote2 = var1.getProperty("jndi.syntax.beginquote2");
  167.          this.syntaxEndQuote2 = var1.getProperty("jndi.syntax.endquote2");
  168.          if (this.syntaxEndQuote2 == null && this.syntaxBeginQuote2 != null) {
  169.             this.syntaxEndQuote2 = this.syntaxBeginQuote2;
  170.          } else if (this.syntaxBeginQuote2 == null && this.syntaxEndQuote2 != null) {
  171.             this.syntaxBeginQuote2 = this.syntaxEndQuote2;
  172.          }
  173.  
  174.          this.syntaxAvaSeparator = var1.getProperty("jndi.syntax.separator.ava");
  175.          this.syntaxTypevalSeparator = var1.getProperty("jndi.syntax.separator.typeval");
  176.       }
  177.    }
  178.  
  179.    NameImpl(Properties var1) {
  180.       this.STYLE_NONE = 0;
  181.       this.STYLE_QUOTE1 = 1;
  182.       this.STYLE_QUOTE2 = 2;
  183.       this.STYLE_ESCAPE = 3;
  184.       this.escapingStyle = 0;
  185.       this.recordNamingConvention(var1);
  186.       this.components = new Vector();
  187.    }
  188.  
  189.    NameImpl(Properties var1, String var2) throws InvalidNameException {
  190.       this(var1);
  191.       boolean var3 = this.syntaxDirection.equals("right_to_left");
  192.       boolean var4 = true;
  193.       int var5 = var2.length();
  194.       int var6 = 0;
  195.  
  196.       while(var6 < var5) {
  197.          var6 = this.extractComp(var2, var6, var5, this.components);
  198.          String var7 = var3 ? (String)this.components.firstElement() : (String)this.components.lastElement();
  199.          if (var7.length() >= 1) {
  200.             var4 = false;
  201.          }
  202.  
  203.          if (var6 < var5) {
  204.             var6 = this.skipSeparator(var2, var6);
  205.             if (var6 == var5 && !var4) {
  206.                if (var3) {
  207.                   this.components.insertElementAt("", 0);
  208.                } else {
  209.                   this.components.addElement("");
  210.                }
  211.             }
  212.          }
  213.       }
  214.  
  215.    }
  216.  
  217.    NameImpl(Properties var1, Enumeration var2) {
  218.       this(var1);
  219.  
  220.       while(var2.hasMoreElements()) {
  221.          this.components.addElement(var2.nextElement());
  222.       }
  223.  
  224.    }
  225.  
  226.    private final String stringifyComp(String var1) {
  227.       int var2 = var1.length();
  228.       boolean var3 = false;
  229.       boolean var4 = false;
  230.       String var5 = null;
  231.       String var6 = null;
  232.       StringBuffer var7 = new StringBuffer(var2);
  233.       if (this.syntaxSeparator != null && var1.indexOf(this.syntaxSeparator) >= 0) {
  234.          if (this.syntaxBeginQuote1 != null) {
  235.             var5 = this.syntaxBeginQuote1;
  236.             var6 = this.syntaxEndQuote1;
  237.          } else if (this.syntaxBeginQuote2 != null) {
  238.             var5 = this.syntaxBeginQuote2;
  239.             var6 = this.syntaxEndQuote2;
  240.          } else if (this.syntaxEscape != null) {
  241.             var3 = true;
  242.          }
  243.       }
  244.  
  245.       if (this.syntaxSeparator2 != null && var1.indexOf(this.syntaxSeparator2) >= 0) {
  246.          if (this.syntaxBeginQuote1 != null) {
  247.             if (var5 == null) {
  248.                var5 = this.syntaxBeginQuote1;
  249.                var6 = this.syntaxEndQuote1;
  250.             }
  251.          } else if (this.syntaxBeginQuote2 != null) {
  252.             if (var5 == null) {
  253.                var5 = this.syntaxBeginQuote2;
  254.                var6 = this.syntaxEndQuote2;
  255.             }
  256.          } else if (this.syntaxEscape != null) {
  257.             var4 = true;
  258.          }
  259.       }
  260.  
  261.       if (var5 != null) {
  262.          var7 = var7.append(var5);
  263.          int var8 = 0;
  264.  
  265.          while(var8 < var2) {
  266.             if (var1.startsWith(var6, var8)) {
  267.                var7.append(this.syntaxEscape).append(var6);
  268.                var8 += var6.length();
  269.             } else {
  270.                var7.append(var1.charAt(var8++));
  271.             }
  272.          }
  273.  
  274.          var7.append(var6);
  275.       } else {
  276.          boolean var10 = true;
  277.  
  278.          for(int var9 = 0; var9 < var2; var10 = false) {
  279.             if (var10 && this.isA(var1, var9, this.syntaxBeginQuote1)) {
  280.                var7.append(this.syntaxEscape).append(this.syntaxBeginQuote1);
  281.                var9 += this.syntaxBeginQuote1.length();
  282.             } else if (var10 && this.isA(var1, var9, this.syntaxBeginQuote2)) {
  283.                var7.append(this.syntaxEscape).append(this.syntaxBeginQuote2);
  284.                var9 += this.syntaxBeginQuote2.length();
  285.             } else if (this.isA(var1, var9, this.syntaxEscape)) {
  286.                if (var9 + this.syntaxEscape.length() >= var2) {
  287.                   var7.append(this.syntaxEscape);
  288.                } else if (this.isMeta(var1, var9 + this.syntaxEscape.length())) {
  289.                   var7.append(this.syntaxEscape);
  290.                }
  291.  
  292.                var7.append(this.syntaxEscape);
  293.                var9 += this.syntaxEscape.length();
  294.             } else if (var3 && var1.startsWith(this.syntaxSeparator, var9)) {
  295.                var7.append(this.syntaxEscape).append(this.syntaxSeparator);
  296.                var9 += this.syntaxSeparator.length();
  297.             } else if (var4 && var1.startsWith(this.syntaxSeparator2, var9)) {
  298.                var7.append(this.syntaxEscape).append(this.syntaxSeparator2);
  299.                var9 += this.syntaxSeparator2.length();
  300.             } else {
  301.                var7.append(var1.charAt(var9++));
  302.             }
  303.          }
  304.       }
  305.  
  306.       return var7.toString();
  307.    }
  308.  
  309.    public String toString() {
  310.       StringBuffer var1 = new StringBuffer();
  311.       boolean var3 = true;
  312.       int var4 = this.components.size();
  313.  
  314.       for(int var5 = 0; var5 < var4; ++var5) {
  315.          String var2;
  316.          if (this.syntaxDirection.equals("right_to_left")) {
  317.             var2 = this.stringifyComp((String)this.components.elementAt(var4 - 1 - var5));
  318.          } else {
  319.             var2 = this.stringifyComp((String)this.components.elementAt(var5));
  320.          }
  321.  
  322.          if (var5 != 0 && this.syntaxSeparator != null) {
  323.             var1.append(this.syntaxSeparator);
  324.          }
  325.  
  326.          if (var2.length() >= 1) {
  327.             var3 = false;
  328.          }
  329.  
  330.          var1 = var1.append(var2);
  331.       }
  332.  
  333.       if (var3 && var4 >= 1 && this.syntaxSeparator != null) {
  334.          var1 = var1.append(this.syntaxSeparator);
  335.       }
  336.  
  337.       return var1.toString();
  338.    }
  339.  
  340.    public boolean equals(Object var1) {
  341.       if (var1 != null && var1 instanceof NameImpl) {
  342.          NameImpl var2 = (NameImpl)var1;
  343.          if (var2.size() == this.size()) {
  344.             Enumeration var3 = this.getAll();
  345.             Enumeration var4 = var2.getAll();
  346.  
  347.             while(var3.hasMoreElements()) {
  348.                String var5 = (String)var3.nextElement();
  349.                String var6 = (String)var4.nextElement();
  350.                if (this.syntaxTrimBlanks) {
  351.                   var5 = var5.trim();
  352.                   var6 = var6.trim();
  353.                }
  354.  
  355.                if (this.syntaxCaseInsensitive) {
  356.                   if (!var5.equalsIgnoreCase(var6)) {
  357.                      return false;
  358.                   }
  359.                } else if (!var5.equals(var6)) {
  360.                   return false;
  361.                }
  362.             }
  363.  
  364.             return true;
  365.          }
  366.       }
  367.  
  368.       return false;
  369.    }
  370.  
  371.    public int compareTo(NameImpl var1) {
  372.       if (this == var1) {
  373.          return 0;
  374.       } else {
  375.          int var2 = this.size();
  376.          int var3 = var1.size();
  377.          int var4 = Math.min(var2, var3);
  378.          int var5 = 0;
  379.          int var6 = 0;
  380.  
  381.          while(var4-- != 0) {
  382.             String var7 = this.get(var5++);
  383.             String var8 = var1.get(var6++);
  384.             if (this.syntaxTrimBlanks) {
  385.                var7 = var7.trim();
  386.                var8 = var8.trim();
  387.             }
  388.  
  389.             if (this.syntaxCaseInsensitive) {
  390.                var7 = var7.toLowerCase();
  391.                var8 = var8.toLowerCase();
  392.             }
  393.  
  394.             int var9 = var7.compareTo(var8);
  395.             if (var9 != 0) {
  396.                return var9;
  397.             }
  398.          }
  399.  
  400.          return var2 - var3;
  401.       }
  402.    }
  403.  
  404.    public int size() {
  405.       return this.components.size();
  406.    }
  407.  
  408.    public Enumeration getAll() {
  409.       return this.components.elements();
  410.    }
  411.  
  412.    public String get(int var1) {
  413.       return (String)this.components.elementAt(var1);
  414.    }
  415.  
  416.    public Enumeration getPrefix(int var1) {
  417.       if (var1 >= 0 && var1 <= this.size()) {
  418.          return new NameImplEnumerator(this.components, 0, var1);
  419.       } else {
  420.          throw new ArrayIndexOutOfBoundsException(var1);
  421.       }
  422.    }
  423.  
  424.    public Enumeration getSuffix(int var1) {
  425.       int var2 = this.size();
  426.       if (var1 >= 0 && var1 <= var2) {
  427.          return new NameImplEnumerator(this.components, var1, var2);
  428.       } else {
  429.          throw new ArrayIndexOutOfBoundsException(var1);
  430.       }
  431.    }
  432.  
  433.    public boolean isEmpty() {
  434.       return this.components.isEmpty();
  435.    }
  436.  
  437.    public boolean startsWith(int var1, Enumeration var2) {
  438.       if (var1 >= 0 && var1 <= this.size()) {
  439.          try {
  440.             Enumeration var3 = this.getPrefix(var1);
  441.  
  442.             while(var3.hasMoreElements()) {
  443.                String var4 = (String)var3.nextElement();
  444.                String var5 = (String)var2.nextElement();
  445.                if (this.syntaxTrimBlanks) {
  446.                   var4 = var4.trim();
  447.                   var5 = var5.trim();
  448.                }
  449.  
  450.                if (this.syntaxCaseInsensitive) {
  451.                   if (!var4.equalsIgnoreCase(var5)) {
  452.                      return false;
  453.                   }
  454.                } else if (!var4.equals(var5)) {
  455.                   return false;
  456.                }
  457.             }
  458.  
  459.             return true;
  460.          } catch (NoSuchElementException var6) {
  461.             return false;
  462.          }
  463.       } else {
  464.          return false;
  465.       }
  466.    }
  467.  
  468.    public boolean endsWith(int var1, Enumeration var2) {
  469.       int var3 = this.size() - var1;
  470.       if (var3 >= 0 && var3 <= this.size()) {
  471.          try {
  472.             Enumeration var4 = this.getSuffix(var3);
  473.  
  474.             while(var4.hasMoreElements()) {
  475.                String var5 = (String)var4.nextElement();
  476.                String var6 = (String)var2.nextElement();
  477.                if (this.syntaxTrimBlanks) {
  478.                   var5 = var5.trim();
  479.                   var6 = var6.trim();
  480.                }
  481.  
  482.                if (this.syntaxCaseInsensitive) {
  483.                   if (!var5.equalsIgnoreCase(var6)) {
  484.                      return false;
  485.                   }
  486.                } else if (!var5.equals(var6)) {
  487.                   return false;
  488.                }
  489.             }
  490.  
  491.             return true;
  492.          } catch (NoSuchElementException var7) {
  493.             return false;
  494.          }
  495.       } else {
  496.          return false;
  497.       }
  498.    }
  499.  
  500.    public boolean addAll(Enumeration var1) throws InvalidNameException {
  501.       boolean var2;
  502.       for(var2 = false; var1.hasMoreElements(); var2 = true) {
  503.          try {
  504.             Object var3 = var1.nextElement();
  505.             if (this.size() > 0 && this.syntaxDirection.equals("flat")) {
  506.                throw new InvalidNameException("A flat name can only have a single component");
  507.             }
  508.  
  509.             this.components.addElement(var3);
  510.          } catch (NoSuchElementException var4) {
  511.             break;
  512.          }
  513.       }
  514.  
  515.       return var2;
  516.    }
  517.  
  518.    public boolean addAll(int var1, Enumeration var2) throws InvalidNameException {
  519.       boolean var3 = false;
  520.  
  521.       for(int var4 = var1; var2.hasMoreElements(); ++var4) {
  522.          try {
  523.             Object var5 = var2.nextElement();
  524.             if (this.size() > 0 && this.syntaxDirection.equals("flat")) {
  525.                throw new InvalidNameException("A flat name can only have a single component");
  526.             }
  527.  
  528.             this.components.insertElementAt(var5, var4);
  529.             var3 = true;
  530.          } catch (NoSuchElementException var6) {
  531.             break;
  532.          }
  533.       }
  534.  
  535.       return var3;
  536.    }
  537.  
  538.    public void add(String var1) throws InvalidNameException {
  539.       if (this.size() > 0 && this.syntaxDirection.equals("flat")) {
  540.          throw new InvalidNameException("A flat name can only have a single component");
  541.       } else {
  542.          this.components.addElement(var1);
  543.       }
  544.    }
  545.  
  546.    public void add(int var1, String var2) throws InvalidNameException {
  547.       if (this.size() > 0 && this.syntaxDirection.equals("flat")) {
  548.          throw new InvalidNameException("A flat name can only zero or one component");
  549.       } else {
  550.          this.components.insertElementAt(var2, var1);
  551.       }
  552.    }
  553.  
  554.    public Object remove(int var1) {
  555.       Object var2 = this.components.elementAt(var1);
  556.       this.components.removeElementAt(var1);
  557.       return var2;
  558.    }
  559.  
  560.    public int hashCode() {
  561.       int var1 = 0;
  562.  
  563.       String var3;
  564.       for(Enumeration var2 = this.getAll(); var2.hasMoreElements(); var1 += var3.hashCode()) {
  565.          var3 = (String)var2.nextElement();
  566.          if (this.syntaxTrimBlanks) {
  567.             var3 = var3.trim();
  568.          }
  569.  
  570.          if (this.syntaxCaseInsensitive) {
  571.             var3 = var3.toLowerCase();
  572.          }
  573.       }
  574.  
  575.       return var1;
  576.    }
  577. }
  578.