001 /*
002 * Copyright 2008-2015 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.codehaus.griffon.runtime.core;
017
018 import griffon.core.Configuration;
019
020 import javax.annotation.Nonnull;
021 import javax.annotation.Nullable;
022 import java.util.Properties;
023
024 import static griffon.util.CollectionUtils.toProperties;
025 import static griffon.util.TypeUtils.castToBoolean;
026 import static griffon.util.TypeUtils.castToDouble;
027 import static griffon.util.TypeUtils.castToFloat;
028 import static griffon.util.TypeUtils.castToInt;
029 import static griffon.util.TypeUtils.castToLong;
030
031 /**
032 * @author Andres Almiray
033 * @since 2.0.0
034 */
035 public abstract class AbstractConfiguration implements Configuration {
036 @Nullable
037 @Override
038 @SuppressWarnings("unchecked")
039 public <T> T get(@Nonnull String key, @Nullable T defaultValue) {
040 T value = (T) get(key);
041 return value != null ? value : defaultValue;
042 }
043
044 @Nullable
045 @Override
046 public Object getAt(@Nonnull String key) {
047 return get(key);
048 }
049
050 @Nullable
051 @Override
052 public <T> T getAt(@Nonnull String key, @Nullable T defaultValue) {
053 return get(key, defaultValue);
054 }
055
056 @Override
057 public boolean getAsBoolean(@Nonnull String key) {
058 return getAsBoolean(key, false);
059 }
060
061 @Override
062 public boolean getAsBoolean(@Nonnull String key, boolean defaultValue) {
063 return castToBoolean(get(key), defaultValue);
064 }
065
066 @Override
067 public int getAsInt(@Nonnull String key) {
068 return getAsInt(key, 0);
069 }
070
071 @Override
072 public int getAsInt(@Nonnull String key, int defaultValue) {
073 return castToInt(get(key), defaultValue);
074 }
075
076 @Override
077 public long getAsLong(@Nonnull String key) {
078 return getAsLong(key, 0L);
079 }
080
081 @Override
082 public long getAsLong(@Nonnull String key, long defaultValue) {
083 return castToLong(get(key), defaultValue);
084 }
085
086 @Override
087 public float getAsFloat(@Nonnull String key) {
088 return getAsFloat(key, 0f);
089 }
090
091 @Override
092 public float getAsFloat(@Nonnull String key, float defaultValue) {
093 return castToFloat(get(key), defaultValue);
094 }
095
096 @Override
097 public double getAsDouble(@Nonnull String key) {
098 return getAsDouble(key, 0d);
099 }
100
101 @Override
102 public double getAsDouble(@Nonnull String key, double defaultValue) {
103 return castToDouble(get(key), defaultValue);
104 }
105
106 @Nullable
107 @Override
108 public String getAsString(@Nonnull String key) {
109 return getAsString(key, null);
110 }
111
112 @Nullable
113 @Override
114 public String getAsString(@Nonnull String key, @Nullable String defaultValue) {
115 Object value = get(key);
116 return value != null ? String.valueOf(value) : defaultValue;
117 }
118
119 @Nonnull
120 @Override
121 public Properties asProperties() {
122 return toProperties(asFlatMap());
123 }
124 }
|