/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package javax.naming.directory; import javax.naming.NamingException; /** * Thrown when a caller attempts to make an attribute modification that is not * permitted. * <p> * Modifications such as addition, removal, and change of value to an entry's * attributes are made via calls to the API on a <code>DirContext</code>. * Where the modification is invalid by reference to the attributes' schema an * <code>AttributeModificationException</code> is thrown describing the * attributes that were unmodified. * </p> * <p> * The list of attributes that were not modified are returned in the same order * as the original modification request. If the list is returned as * <code>null</code> then all modification requests failed. * </p> * <p> * The class is not thread-safe. * </p> */ public class AttributeModificationException extends NamingException { private static final long serialVersionUID = 0x6fdd462d96b0fdaaL; /* Array of ModificationItems that were not applied. */ private ModificationItem unexecs[] = null; /** * Default constructor. * <p> * All fields are initialized to null. * </p> */ public AttributeModificationException() { super(); } /** * Constructs an <code>AttributeModificationException</code> instance * using the supplied text of the message. * <p> * All fields are initialized to null. * </p> * * @param s * message about the problem */ public AttributeModificationException(String s) { super(s); } /** * Gets <code>ModificationItems</code> that were not executed. * * @return an array of <code>ModificationItems</code> that were not * executed, in the same order they were requested in. Null is a * special return value meaning none of the requested modifications * were done. */ public ModificationItem[] getUnexecutedModifications() { return unexecs; } /** * Sets <code>ModificationItems</code> that were not executed. * * @param amodificationitem * an array of <code>ModificationItems</code> that were not * executed, in the same order they were requested in. Null is a * special return value meaning none of the requested * modifications were done. */ public void setUnexecutedModifications(ModificationItem[] amodificationitem) { this.unexecs = amodificationitem; } /** * Returns string representation of this exception. * * @return text detailing the exception location and the failing * modification. */ @Override public String toString() { return toStringImpl(false); } /** * Returns string representation of this exception. * * @param flag * Indicates if the resolved object need to be returned. * @return text detailing the exception location and the failing * modification. */ @Override public String toString(boolean flag) { return toStringImpl(flag); } private String toStringImpl(boolean flag) { StringBuilder sb = new StringBuilder(super.toString(flag)); if (null != unexecs && unexecs.length > 0) { sb.append(". The unexecuted modification items are: \""); //$NON-NLS-1$ for (ModificationItem element : unexecs) { sb.append(element.toString()).append(";"); //$NON-NLS-1$ } sb.append("\""); //$NON-NLS-1$ } return sb.toString(); } }