blob: cb78ca2fd263eba803865de8778b5025444819cb [file] [log] [blame]
/*
* Copyright (c) 2002, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
package com.sun.jndi.ldap.ctl;
import javax.naming.ldap.BasicControl;
/**
* This class implements a LDAP request control for notifying the server
* only virtual attributes be returned during LDAP search operation.
* <p>
* A virtual attribute is not stored with the entry. It is computed and
* returned to the client application as a normal attribute during the
* LDAP operation.
* <p>
* This control can be included with any JNDI operation that results
* in a LDAP search. VirtualAttributeOnlyControl and {@link RealAttributesOnlyControl}
* function in a mutually exclusive way. If both controls are included in the
* search request, the server may send an error back as there are no results
* to return. If neither of the controls is included in the search request
* the server will return both virtual and real attributes.
* <p>
* The object identifier for Virtual Attributes Only control is
* 2.16.840.1.113730.3.4.19 and the control has no value.
* <p>
* The following code sample shows how the control may be used:
* <pre>
*
* // create an initial context using the supplied environment properties
* LdapContext ctx = new InitialLdapContext(env, null);
*
* ctx.setRequestControls(new Control[] {
* new VirtualAttributesOnlyControl()
* };
* NamingEnumeration results
* = ctx.search(searchBase, filter, constraints);
*
* while (results != null && results.hasMore()) {
* SearchResult sr = (SearchResult) results.next();
*
* // Gets only virtual attributes
* Attributes virtualAttrs = sr.getAttributes();
*
*
* </pre>
* @see RealAttributesOnlyControl
* @author Jayalaxmi Hangal
*/
public class VirtualAttributesOnlyControl extends BasicControl {
/**
* The virtual attributes only control's assigned object identifier is
* 2.16.840.1.113730.3.4.19
*/
public static final String OID = "2.16.840.1.113730.3.4.19";
private static final long serialVersionUID = -5373095230975089359L;
/**
* Constructs a control to return only virtual attributes in
* the search result.
* The control is always marked critical.
*
*/
public VirtualAttributesOnlyControl() {
super(OID, true, null);
}
}