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    package org.apache.commons.betwixt.expression;
018    
019    import java.util.Collection;
020    
021    /**
022     * Updates a Collection by adding the new value to it.
023     * @since 0.8
024     */
025    public class CollectionUpdater implements Updater {
026    
027        private static CollectionUpdater INSTANCE;
028        
029        /**
030         * Gets singleton instance.
031         * @return <code>CollectionUpdater</code>, not null
032         */
033        public static synchronized CollectionUpdater getInstance() {
034             if (INSTANCE == null) {
035                 INSTANCE = new CollectionUpdater();
036             }
037             return INSTANCE;
038        }
039        
040        /**
041         * Updates collection contained by the context by adding the new value.
042         * @param context <code>Context</code>, not null
043         * @param newValue value to be added, possibly null 
044         */
045        public void update(Context context, Object newValue) {
046                if (newValue != null) {
047                    Object subject = context.getBean();
048                    if (subject != null && subject instanceof Collection) {
049                        Collection collection = (Collection) subject;
050                        collection.add(newValue);
051                    }
052                }
053        }
054    }