/* * 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 java.io.Serializable; import org.apache.harmony.jndi.internal.nls.Messages; /** * This class is a combination of a modification code and attribute. * <p> * It is used by exception reporting (see * <code>AttributeModificationException</code> for an example). * </p> * <p> * The class is not thread-safe. * </p> */ public class ModificationItem implements Serializable { /* * This constant is used during deserialization to check the version which * created the serialized object */ private static final long serialVersionUID = 0x69199e89ac11aae2L; /** * Contains the modification to be performed. * * @serial * @see DirContext */ private int mod_op; /** * The Attribute or value that is the source of the modification. * * @serial */ private Attribute attr; /** * Constructs a <code>ModificationItem</code> instance with all * parameters. * * @param operation * an operation code chosen from * <code>DirContext.ADD_ATTRIBUTE</code>, * <code>DirContext.REPLACE_ATTRIBUTE</code>, * <code>DirContext.REMOVE_ATTRIBUTE</code> * @param attribute * the <code>Attribute</code> or value that is the source of * the modification */ public ModificationItem(int operation, Attribute attribute) { if (null == attribute) { // jndi.13=Non-null attribute is required for modification throw new IllegalArgumentException(Messages.getString("jndi.13")); //$NON-NLS-1$ } if (!(DirContext.ADD_ATTRIBUTE == operation || DirContext.REPLACE_ATTRIBUTE == operation || DirContext.REMOVE_ATTRIBUTE == operation)) { // jndi.14=Modification code {0} must be one of // DirContext.ADD_ATTRIBUTE, DirContext.REPLACE_ATTRIBUTE and // DirContext.REMOVE_ATTRIBUTE throw new IllegalArgumentException(Messages.getString( "jndi.14", operation)); //$NON-NLS-1$ } this.mod_op = operation; this.attr = attribute; } /** * Gets the <code>Attribute</code> or value that is the source of the * modification. * * @return the <code>Attribute</code> or value that is the source of the * modification */ public Attribute getAttribute() { return this.attr; } /** * Gets the operation code. * * @return an operation code chosen from <code> * DirContext.ADD_ATTRIBUTE</code>, * <code> * DirContext.REPLACE_ATTRIBUTE</code>, <code> * DirContext.REMOVE_ATTRIBUTE</code> */ public int getModificationOp() { return this.mod_op; } /** * Returns string representations of this <code>ModificationItem</code> * instance. * * @return a concatenation of string values for the operation and the * attribute */ @Override public String toString() { StringBuilder sb = new StringBuilder(); switch (mod_op) { case DirContext.ADD_ATTRIBUTE: sb.append("Operation is add attribute: "); //$NON-NLS-1$ break; case DirContext.REMOVE_ATTRIBUTE: sb.append("Operation is remove attribute: "); //$NON-NLS-1$ break; case DirContext.REPLACE_ATTRIBUTE: sb.append("Operation is replace attribute: "); //$NON-NLS-1$ break; } return sb.append(attr.toString()).toString(); } }