/** Parse Definition Attributes for a LDAP matching rule */
  static LDAPMatchingRuleSchema parseDefAttributes(Attributes attrs) throws NamingException {
    String name = null, oid = null, desc = null, syntax = null;
    boolean obsolete = false;
    Vector applies = new Vector();

    for (Enumeration attrEnum = attrs.getAll(); attrEnum.hasMoreElements(); ) {
      Attribute attr = (Attribute) attrEnum.nextElement();
      String attrName = attr.getID();
      if (attrName.equals(NAME)) {
        name = getSchemaAttrValue(attr);
      } else if (attrName.equals(NUMERICOID)) {
        oid = getSchemaAttrValue(attr);
      } else if (attrName.equals(SYNTAX)) {
        syntax = getSchemaAttrValue(attr);
      } else if (attrName.equals(DESC)) {
        desc = getSchemaAttrValue(attr);
      } else if (attrName.equals(APPLIES)) {
        for (Enumeration valEnum = attr.getAll(); valEnum.hasMoreElements(); ) {
          applies.addElement((String) valEnum.nextElement());
        }
      } else if (attrName.equals(OBSOLETE)) {
        obsolete = parseTrueFalseValue(attr);
      } else {
        throw new NamingException(
            "Invalid schema attribute type for matching rule definition " + attrName);
      }
    }

    LDAPMatchingRuleSchema mrule =
        new LDAPMatchingRuleSchema(name, oid, desc, vectorToStringAry(applies), syntax);

    if (obsolete) {
      mrule.setQualifier(OBSOLETE, "");
    }
    return mrule;
  }
示例#2
0
  public static void main(String args[]) throws Exception {

    String[] rdnStr = new String[] {"one=voilet"};

    ArrayList rdnList = new ArrayList();

    for (int i = 0; i < rdnStr.length; i++) {
      rdnList.add(i, new Rdn(rdnStr[i]));
    }
    LdapName dn = new LdapName(rdnList);

    Collection rdns = dn.getRdns();
    System.out.println("size is :" + dn.size());
    System.out.println("isEmpty :" + dn.isEmpty());
    System.out.println("************Printing as Rdns*********");
    Iterator iter = rdns.iterator();
    while (iter.hasNext()) {
      System.out.println(iter.next());
    }

    System.out.println();
    System.out.println("************Printing the Enumeration*********");
    Enumeration dnEnum = dn.getAll();
    while (dnEnum.hasMoreElements()) {
      System.out.println(dnEnum.nextElement());
    }

    // addAll tests
    System.out.println();
    LdapName nameSuffix = new LdapName("two=Indigo");
    System.out.println("addAll():" + dn.addAll(nameSuffix));

    ArrayList list = new ArrayList();
    list.add(new Rdn("five=Yellow"));
    System.out.println("Rdn- addAll():" + dn.addAll(list));

    nameSuffix = new LdapName("three=Blue");
    System.out.println();
    System.out.println("addAll at pos = 2");
    System.out.println("addAll():" + dn.addAll(2, nameSuffix));

    list = new ArrayList();
    list.add(new Rdn("four=Green"));
    System.out.println();
    System.out.println("addAll at pos = 3");
    System.out.println("Rdn- addAll():" + dn.addAll(3, list));

    // add() tests
    Rdn rdn;
    System.out.println();
    System.out.println("add():" + dn.add("eight=white"));
    rdn = new Rdn("nine=Black");
    System.out.println();
    System.out.println("Rdn- add():" + dn.add(rdn));

    /*
    Rdn nullRdn = null;
    System.out.println("Rdn- add() with null RDN:" +
                    dn.add(nullRdn));
    */

    System.out.println();
    System.out.println("add() at pos 5");
    System.out.println("add():" + dn.add(5, "six=Orange"));
    rdn = new Rdn("six=Orange");
    System.out.println();
    System.out.println("add() at pos 6");
    System.out.println("Rdn- add():" + dn.add(6, "seven=Red"));

    // remove tests
    System.out.println();
    System.out.println("Removing entries at positions: 7, 8");
    System.out.println("Removed:" + dn.remove(8));
    System.out.println("Removed:" + dn.remove(7));

    // get tests
    System.out.println();
    System.out.println("toString():" + dn);
    int size = dn.size();
    System.out.println("get(0):" + dn.get(0));
    System.out.println("get(size() - 1):" + dn.get(size - 1));
    System.out.println("getRdn(0):" + dn.getRdn(0));
    System.out.println("getRdn(size() - 1):" + dn.getRdn(size - 1));

    System.out.println();
    System.out.println("********Prefixes**********");
    System.out.println("getPrefix(0):" + dn.getPrefix(0));
    System.out.println("getPrefix(size / 2):" + dn.getPrefix(size / 2));
    System.out.println("getPrefix(size):" + dn.getPrefix(size));

    System.out.println();
    System.out.println("********Suffixes**********");
    System.out.println("getSuffix(0):" + dn.getSuffix(0));
    System.out.println("getSuffix(size/2):" + dn.getSuffix(size / 2));
    System.out.println("getSuffix(size):" + dn.getSuffix(size));

    System.out.println();
    System.out.println("startsWith(" + rdnStr[0] + "):" + dn.startsWith(new LdapName(rdnStr[0])));

    String lastEntry = "seven=red";
    System.out.println("startsWith(" + lastEntry + "):" + dn.startsWith(new LdapName(lastEntry)));

    System.out.println(
        "compositeName- startsWith("
            + rdnStr[0]
            + "): "
            + dn.startsWith(new CompositeName(rdnStr[0])));

    java.util.List prefixList = (dn.getRdns()).subList(0, size / 2);
    System.out.println("Rdn - startsWith(" + prefixList + "):" + dn.startsWith(prefixList));

    System.out.println("Rdn - startsWith() - empty RDN list:" + dn.startsWith(new ArrayList()));

    System.out.println();
    System.out.println("endsWith(" + rdnStr[0] + "):" + dn.endsWith(new LdapName(rdnStr[0])));

    System.out.println("endsWith(" + lastEntry + "):" + dn.endsWith(new LdapName(lastEntry)));

    System.out.println(
        "compositeName- endsWith("
            + rdnStr[0]
            + "):    "
            + dn.endsWith(new CompositeName(rdnStr[0])));

    System.out.println("Rdn - endsWith(" + prefixList + "):" + dn.endsWith(prefixList));

    System.out.println("Rdn - endsWith() empty RDN list:" + dn.endsWith(new ArrayList()));

    // test clone
    System.out.println();
    System.out.println("cloned name:" + dn.clone());

    // test serialization
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("dn.ser"));
    out.writeObject(dn);
    out.close();

    ObjectInputStream in = new ObjectInputStream(new FileInputStream("dn.ser"));

    System.out.println();
    System.out.println("Deserialized name:" + in.readObject());
    in.close();
  }