mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noël Rouvignac
22.56.2016 83f86f11c27378d650c3bfc7e55397687062edbc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*
 * The contents of this file are subject to the terms of the Common Development and
 * Distribution License (the License). You may not use this file except in compliance with the
 * License.
 *
 * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
 * specific language governing permission and limitations under the License.
 *
 * When distributing Covered Software, include this CDDL Header Notice in each file and include
 * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
 * Header, with the fields enclosed by brackets [] replaced by your own identifying
 * information: "Portions Copyright [year] [name of copyright owner]".
 *
 * Copyright 2008 Sun Microsystems, Inc.
 * Portions Copyright 2014-2016 ForgeRock AS.
 */
package org.forgerock.opendj.config.client;
 
import java.util.Collection;
 
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.config.ManagedObjectPath;
import org.forgerock.opendj.ldap.LdapException;
 
/**
 * An interface for performing client-side constraint validation.
 * <p>
 * Constraints are evaluated immediately before the client performs a write
 * operation. If one or more constraints fails, the write operation is refused
 * and fails with an {@link OperationRejectedException}.
 * <p>
 * A client constraint handler must override at least one of the provided
 * methods.
 *
 * @see org.forgerock.opendj.config.Constraint
 */
public abstract class ClientConstraintHandler {
 
    /** Creates a new client constraint handler. */
    protected ClientConstraintHandler() {
        // No implementation required.
    }
 
    /**
     * Determines whether or not the newly created managed object which is about
     * to be added to the server configuration satisfies this constraint.
     * <p>
     * If the constraint is not satisfied, the implementation must return
     * <code>false</code> and add a message describing why the constraint was
     * not satisfied.
     * <p>
     * The default implementation is to return <code>true</code>.
     *
     * @param context
     *            The management context.
     * @param managedObject
     *            The new managed object.
     * @param unacceptableReasons
     *            A list of messages to which error messages should be added.
     * @return Returns <code>true</code> if this constraint is satisfied, or
     *         <code>false</code> if it is not.
     * @throws LdapException
     *             If an error occurs.
     */
    public boolean isAddAcceptable(ManagementContext context, ManagedObject<?> managedObject,
        Collection<LocalizableMessage> unacceptableReasons) throws LdapException {
        return true;
    }
 
    /**
     * Determines whether or not the changes to an existing managed object which
     * are about to be committed to the server configuration satisfies this
     * constraint.
     * <p>
     * If the constraint is not satisfied, the implementation must return
     * <code>false</code> and add a message describing why the constraint was
     * not satisfied.
     * <p>
     * The default implementation is to return <code>true</code>.
     *
     * @param context
     *            The management context.
     * @param managedObject
     *            The modified managed object.
     * @param unacceptableReasons
     *            A list of messages to which error messages should be added.
     * @return Returns <code>true</code> if this modify is satisfied, or
     *         <code>false</code> if it is not.
      * @throws LdapException
     *             If an error occurs.
     */
    public boolean isModifyAcceptable(ManagementContext context, ManagedObject<?> managedObject,
        Collection<LocalizableMessage> unacceptableReasons) throws LdapException {
        return true;
    }
 
    /**
     * Determines whether or not the existing managed object which is about to
     * be deleted from the server configuration satisfies this constraint.
     * <p>
     * If the constraint is not satisfied, the implementation must return
     * <code>false</code> and add a message describing why the constraint was
     * not satisfied.
     * <p>
     * The default implementation is to return <code>true</code>.
     *
     * @param context
     *            The management context.
     * @param path
     *            The path of the managed object which is about to be deleted.
     * @param unacceptableReasons
     *            A list of messages to which error messages should be added.
     * @return Returns <code>true</code> if this constraint is satisfied, or
     *         <code>false</code> if it is not.
     * @throws LdapException
     *             If an error occurs.
     */
    public boolean isDeleteAcceptable(ManagementContext context, ManagedObjectPath<?, ?> path,
        Collection<LocalizableMessage> unacceptableReasons) throws LdapException {
        return true;
    }
}