Lines Matching refs:filter

45      * First convert filter string into byte[].
49 * Then parse the byte[] as a filter, converting \hh to
50 * a single byte, and encoding the resulting filter
57 throw new InvalidSearchFilterException("Empty filter");
59 byte[] filter;
62 filter = filterStr.getBytes("UTF8");
64 filter = filterStr.getBytes("8859_1");
66 filterLen = filter.length;
69 System.err.println("String filter: " + filterStr);
71 dprint("original: ", filter, 0, filterLen);
74 encodeFilter(ber, filter, 0, filterLen);
77 private static void encodeFilter(BerEncoder ber, byte[] filter,
81 dprint("encFilter: ", filter, filterStart, filterEnd);
86 throw new InvalidSearchFilterException("Empty filter");
98 switch (filter[filtOffset[0]]) {
102 switch (filter[filtOffset[0]]) {
104 encodeComplexFilter(ber, filter,
111 encodeComplexFilter(ber, filter,
118 encodeComplexFilter(ber, filter,
130 if (filter[nextOffset] == '(')
132 else if (filter[nextOffset] == ')')
135 if (filter[nextOffset] == '\\' && !escape)
146 encodeSimpleFilter(ber, filter, filtOffset[0], nextOffset);
170 default: // assume simple type=value filter
171 encodeSimpleFilter(ber, filter, filtOffset[0], filterEnd);
232 * parsing a LDAP v3 filter (illegal by v3 way)
317 private static void encodeSimpleFilter(BerEncoder ber, byte[] filter,
321 dprint("encSimpleFilter: ", filter, filtStart, filtEnd);
329 if ((eq = indexOf(filter, '=', filtStart, filtEnd)) == -1) {
340 switch (filter[eq - 1]) {
389 if ((filter[typeStart] >= '0' && filter[typeStart] <= '9') ||
390 (filter[typeStart] >= 'A' && filter[typeStart] <= 'Z') ||
391 (filter[typeStart] >= 'a' && filter[typeStart] <= 'z')) {
394 filter[typeStart] >= '0' && filter[typeStart] <= '9';
397 if (filter[i] == ';') {
398 if (isNumericOid && filter[i - 1] == '.') {
409 if (filter[i] == ':' && ftype == LDAP_FILTER_EXT) {
410 if (isNumericOid && filter[i - 1] == '.') {
422 if ((filter[i] == '.' && filter[i - 1] == '.') ||
423 (filter[i] != '.' &&
424 !(filter[i] >= '0' && filter[i] <= '9'))) {
433 if (filter[i] != '-' && filter[i] != '_' &&
434 !(filter[i] >= '0' && filter[i] <= '9') &&
435 !(filter[i] >= 'A' && filter[i] <= 'Z') &&
436 !(filter[i] >= 'a' && filter[i] <= 'z')) {
442 } else if (ftype == LDAP_FILTER_EXT && filter[typeStart] == ':') {
453 if (filter[i] == ';') {
454 if (filter[i - 1] == ';') {
462 if (filter[i] == ':' && ftype == LDAP_FILTER_EXT) {
463 if (filter[i - 1] == ';') {
476 if (filter[i] != '-' && filter[i] != '_' &&
477 !(filter[i] >= '0' && filter[i] <= '9') &&
478 !(filter[i] >= 'A' && filter[i] <= 'Z') &&
479 !(filter[i] >= 'a' && filter[i] <= 'z')) {
490 if (filter[i] == ':') {
493 } else if ((filter[i] >= '0' && filter[i] <= '9') ||
494 (filter[i] >= 'A' && filter[i] <= 'Z') ||
495 (filter[i] >= 'a' && filter[i] <= 'z')) {
496 boolean isNumericOid = filter[i] >= '0' && filter[i] <= '9';
500 if (filter[j] == ':') {
505 if (isNumericOid && filter[j - 1] == '.') {
516 if ((filter[j] == '.' && filter[j - 1] == '.') ||
517 (filter[j] != '.' &&
518 !(filter[j] >= '0' && filter[j] <= '9'))) {
527 if (filter[j] != '-' && filter[j] != '_' &&
528 !(filter[j] >= '0' && filter[j] <= '9') &&
529 !(filter[j] >= 'A' && filter[j] <= 'Z') &&
530 !(filter[j] >= 'a' && filter[j] <= 'z')) {
544 if (filter[typeEnd - 1] == '.' || filter[typeEnd - 1] == ';' ||
545 filter[typeEnd - 1] == ':') {
550 if (typeEnd == eq) { // filter type is of "equal"
551 if (findUnescaped(filter, '*', valueStart, valueEnd) == -1) {
553 } else if (filter[valueStart] == '*' &&
557 encodeSubstringFilter(ber, filter,
564 ber.encodeOctetString(filter, ftype, typeStart, typeEnd-typeStart);
566 encodeExtensibleMatch(ber, filter,
570 ber.encodeOctetString(filter, Ber.ASN_OCTET_STR,
573 unescapeFilterValue(filter, valueStart, valueEnd),
583 private static void encodeSubstringFilter(BerEncoder ber, byte[] filter,
588 dprint("encSubstringFilter: type ", filter, typeStart, typeEnd);
589 dprint(", val : ", filter, valueStart, valueEnd);
594 ber.encodeOctetString(filter, Ber.ASN_OCTET_STR,
599 while ((index = findUnescaped(filter, '*', previndex, valueEnd)) != -1) {
606 unescapeFilterValue(filter, previndex, index),
614 unescapeFilterValue(filter, previndex, index),
624 unescapeFilterValue(filter, previndex, valueEnd),
635 // The complex filter types look like:
642 private static void encodeComplexFilter(BerEncoder ber, byte[] filter,
647 dprint("encComplexFilter: ", filter, filtOffset[0], filtEnd);
656 int[] parens = findRightParen(filter, filtOffset, filtEnd);
657 encodeFilterList(ber, filter, filterType, parens[0], parens[1]);
668 // filter at filtOffset[0] - 1 points to a (. Find ) that matches it
672 private static int[] findRightParen(byte[] filter, int filtOffset[], int end)
681 if (filter[nextOffset] == '(')
683 else if (filter[nextOffset] == ')')
686 if (filter[nextOffset] == '\\' && !escape)
697 // String tmp = filter.substring(filtOffset[0], nextOffset);
708 // Encode filter list of type "(filter1)(filter2)..."
710 private static void encodeFilterList(BerEncoder ber, byte[] filter,
714 dprint("encFilterList: ", filter, start, end);
721 if (Character.isSpaceChar((char)filter[filtOffset[0]]))
729 if (filter[filtOffset[0]] == '(') {
733 int[] parens = findRightParen(filter, filtOffset, end);
738 System.arraycopy(filter, parens[0], newfilter, 1, len);
755 private static void encodeExtensibleMatch(BerEncoder ber, byte[] filter,
767 if ((colon = indexOf(filter, ':', matchStart, matchEnd)) >= 0) {
770 if ((i = indexOf(filter, ":dn", colon, matchEnd)) >= 0) {
775 if (((colon2 = indexOf(filter, ':', colon + 1, matchEnd)) >= 0)
779 ber.encodeOctetString(filter, LDAP_FILTER_EXT_RULE,
783 ber.encodeOctetString(filter, LDAP_FILTER_EXT_RULE,
787 ber.encodeOctetString(filter, LDAP_FILTER_EXT_RULE,
794 ber.encodeOctetString(filter,
798 ber.encodeOctetString(filter, LDAP_FILTER_EXT_TYPE, matchStart,
803 unescapeFilterValue(filter, valueStart, valueEnd),
819 // the filter generation code
849 /////////////// Constants used for encoding filter //////////////