1 /*
2  * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.  Oracle designates this
8  * particular file as subject to the "Classpath" exception as provided
9  * by Oracle in the LICENSE file that accompanied this code.
10  *
11  * This code is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14  * version 2 for more details (a copy is included in the LICENSE file that
15  * accompanied this code).
16  *
17  * You should have received a copy of the GNU General Public License version
18  * 2 along with this work; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22  * or visit www.oracle.com if you need additional information or have any
23  * questions.
24  */
25 
26 package com.sun.jndi.ldap;
27 
28 import java.util.Vector;
29 import javax.naming.directory.Attributes;
30 import javax.naming.directory.BasicAttributes;
31 import javax.naming.ldap.Control;
32 
33 /**
34   * %%% public for use by LdapSasl %%%
35   */
36 public final class LdapResult {
37     int msgId;
38     public int status;                  // %%% public for use by LdapSasl
39     String matchedDN;
40     String errorMessage;
41     // Vector<String | Vector<String>>
42     Vector<Vector<String>> referrals = null;
43     LdapReferralException refEx = null;
44     Vector<LdapEntry> entries = null;
45     Vector<Control> resControls = null;
46     public byte[] serverCreds = null;   // %%% public for use by LdapSasl
47     String extensionId = null;          // string OID
48     byte[] extensionValue = null;       // BER OCTET STRING
49 
50 
51     // This function turns an LdapResult that came from a compare operation
52     // into one that looks like it came from a search operation. This is
53     // useful when the caller asked the context to do a search, but it was
54     // carried out as a compare. In this case, the client still expects a
55     // result that looks like it came from a search.
compareToSearchResult(String name)56     boolean compareToSearchResult(String name) {
57         boolean successful = false;
58 
59         switch (status) {
60             case LdapClient.LDAP_COMPARE_TRUE:
61                 status = LdapClient.LDAP_SUCCESS;
62                 entries = new Vector<>(1,1);
63                 Attributes attrs = new BasicAttributes(LdapClient.caseIgnore);
64                 LdapEntry entry = new LdapEntry( name, attrs );
65                 entries.addElement(entry);
66                 successful = true;
67                 break;
68 
69             case LdapClient.LDAP_COMPARE_FALSE:
70                 status = LdapClient.LDAP_SUCCESS;
71                 entries = new Vector<>(0);
72                 successful = true;
73                 break;
74 
75             default:
76                 successful = false;
77                 break;
78         }
79 
80         return successful;
81     }
82 }
83