001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package javax.naming.directory;
019:
020: import javax.naming.NamingException;
021:
022: /**
023: * Thrown when a caller attempts to make an attribute modification that is not
024: * permitted.
025: * <p>
026: * Modifications such as addition, removal, and change of value to an entry's
027: * attributes are made via calls to the API on a <code>DirContext</code>.
028: * Where the modification is invalid by reference to the attributes' schema an
029: * <code>AttributeModificationException</code> is thrown describing the
030: * attributes that were unmodified.
031: * </p>
032: * <p>
033: * The list of attributes that were not modified are returned in the same order
034: * as the original modification request. If the list is returned as
035: * <code>null</code> then all modification requests failed.
036: * </p>
037: * <p>
038: * The class is not thread-safe.
039: * </p>
040: */
041: public class AttributeModificationException extends NamingException {
042:
043: private static final long serialVersionUID = 0x6fdd462d96b0fdaaL;
044:
045: /* Array of ModificationItems that were not applied. */
046: private ModificationItem unexecs[] = null;
047:
048: /**
049: * Default constructor.
050: * <p>
051: * All fields are initialized to null.
052: * </p>
053: */
054: public AttributeModificationException() {
055: super ();
056: }
057:
058: /**
059: * Constructs an <code>AttributeModificationException</code> instance
060: * using the supplied text of the message.
061: * <p>
062: * All fields are initialized to null.
063: * </p>
064: *
065: * @param s
066: * message about the problem
067: */
068: public AttributeModificationException(String s) {
069: super (s);
070: }
071:
072: /**
073: * Gets <code>ModificationItems</code> that were not executed.
074: *
075: * @return an array of <code>ModificationItems</code> that were not
076: * executed, in the same order they were requested in. Null is a
077: * special return value meaning none of the requested modifications
078: * were done.
079: */
080: public ModificationItem[] getUnexecutedModifications() {
081: return unexecs;
082: }
083:
084: /**
085: * Sets <code>ModificationItems</code> that were not executed.
086: *
087: * @param amodificationitem
088: * an array of <code>ModificationItems</code> that were not
089: * executed, in the same order they were requested in. Null is a
090: * special return value meaning none of the requested
091: * modifications were done.
092: */
093: public void setUnexecutedModifications(
094: ModificationItem[] amodificationitem) {
095: this .unexecs = amodificationitem;
096: }
097:
098: /**
099: * Returns string representation of this exception.
100: *
101: * @return text detailing the exception location and the failing
102: * modification.
103: */
104: @Override
105: public String toString() {
106: return toStringImpl(false);
107: }
108:
109: /**
110: * Returns string representation of this exception.
111: *
112: * @param flag
113: * Indicates if the resolved object need to be returned.
114: * @return text detailing the exception location and the failing
115: * modification.
116: */
117: @Override
118: public String toString(boolean flag) {
119: return toStringImpl(flag);
120: }
121:
122: private String toStringImpl(boolean flag) {
123: StringBuffer sb = new StringBuffer(super .toString(flag));
124: if (null != unexecs && unexecs.length > 0) {
125: sb.append(". The unexecuted modification items are: \""); //$NON-NLS-1$
126: for (ModificationItem element : unexecs) {
127: sb.append(element.toString()).append(";"); //$NON-NLS-1$
128: }
129: sb.append("\""); //$NON-NLS-1$
130: }
131: return sb.toString();
132: }
133:
134: }
|