1 /* 2 * Copyright 2002-2006 the original author or authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package org.springframework.beans; 18 19 /** 20 * Interface representing an object whose value set can be merged with 21 * that of a parent object. 22 * 23 * @author Rob Harrop 24 * @since 2.0 25 * @see org.springframework.beans.factory.support.ManagedSet 26 * @see org.springframework.beans.factory.support.ManagedList 27 * @see org.springframework.beans.factory.support.ManagedMap 28 * @see org.springframework.beans.factory.support.ManagedProperties 29 */ 30 public interface Mergeable { 31 32 /** 33 * Is merging enabled for this particular instance? 34 */ 35 boolean isMergeEnabled(); 36 37 /** 38 * Merge the current value set with that of the supplied object. 39 * <p>The supplied object is considered the parent, and values in 40 * the callee's value set must override those of the supplied object. 41 * @param parent the object to merge with 42 * @return the result of the merge operation 43 * @throws IllegalArgumentException if the supplied parent is <code>null</code> 44 * @exception IllegalStateException if merging is not enabled for this instance 45 * (i.e. <code>mergeEnabled</code> equals <code>false</code>). 46 */ 47 Object merge(Object parent); 48 49 } 50