1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.commons.configuration.web; 18 19 import java.util.List; 20 21 import org.apache.commons.configuration.AbstractConfiguration; 22 import org.apache.commons.configuration.PropertyConverter; 23 24 /** 25 * <p> 26 * An abstract base class for all web configurations. 27 * </p> 28 * <p> 29 * This class implements common functionality used by all web based 30 * configurations. E.g. some methods are not supported by configurations of this 31 * type, so they throw a {@code UnsupportedOperationException} exception. 32 * </p> 33 * 34 * @author <a 35 * href="http://commons.apache.org/configuration/team-list.html">Commons 36 * Configuration team</a> 37 * @version $Id: BaseWebConfiguration.java 1211122 2011-12-06 20:55:45Z oheger $ 38 * @since 1.2 39 */ 40 abstract class BaseWebConfiguration extends AbstractConfiguration 41 { 42 /** 43 * Checks if this configuration is empty. This implementation makes use of 44 * the {@code getKeys()} method (which must be defined by concrete 45 * sub classes) to find out whether properties exist. 46 * 47 * @return a flag whether this configuration is empty 48 */ 49 public boolean isEmpty() 50 { 51 return !getKeys().hasNext(); 52 } 53 54 /** 55 * Checks whether the specified key is stored in this configuration. 56 * 57 * @param key the key 58 * @return a flag whether this key exists in this configuration 59 */ 60 public boolean containsKey(String key) 61 { 62 return getProperty(key) != null; 63 } 64 65 /** 66 * Removes the property with the given key. <strong>This operation is not 67 * supported and will throw an UnsupportedOperationException.</strong> 68 * 69 * @param key the key of the property to be removed 70 * @throws UnsupportedOperationException because this operation is not 71 * allowed 72 */ 73 @Override 74 public void clearProperty(String key) 75 { 76 throw new UnsupportedOperationException("Read only configuration"); 77 } 78 79 /** 80 * Adds a property to this configuration. <strong>This operation is not 81 * supported and will throw an UnsupportedOperationException.</strong> 82 * 83 * @param key the key of the property 84 * @param obj the value to be added 85 * @throws UnsupportedOperationException because this operation is not 86 * allowed 87 */ 88 @Override 89 protected void addPropertyDirect(String key, Object obj) 90 { 91 throw new UnsupportedOperationException("Read only configuration"); 92 } 93 94 /** 95 * Takes care of list delimiters in property values. This method checks if 96 * delimiter parsing is enabled and the passed in value contains a delimiter 97 * character. If this is the case, a split operation is performed. 98 * 99 * @param value the property value to be examined 100 * @return the processed value 101 */ 102 protected Object handleDelimiters(Object value) 103 { 104 if (!isDelimiterParsingDisabled() && value instanceof String) 105 { 106 List<String> list = PropertyConverter.split((String) value, 107 getListDelimiter()); 108 value = list.size() > 1 ? list : list.get(0); 109 } 110 111 return value; 112 } 113 }