org.openrdf.rio.RioConfig Maven / Gradle / Ivy
/*
* Licensed to Aduna under one or more contributor license agreements.
* See the NOTICE.txt file distributed with this work for additional
* information regarding copyright ownership.
*
* Aduna licenses this file to you under the terms of the Aduna BSD
* License (the "License"); you may not use this file except in compliance
* with the License. See the LICENSE.txt file distributed with this work
* for the full License.
*
* 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 org.openrdf.rio;
import java.io.Serializable;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Superclass for {@link ParserConfig} and {@link WriterConfig}.
*
* @author Peter Ansell
*/
public class RioConfig implements Serializable {
/**
* @since 2.7.14
*/
private static final long serialVersionUID = 2714L;
/**
* A map containing mappings from settings to their values.
*/
protected final ConcurrentMap, Object> settings = new ConcurrentHashMap, Object>();
protected final Logger log = LoggerFactory.getLogger(this.getClass());
/**
*
*/
public RioConfig() {
super();
}
/**
* Return the value for a given {@link RioSetting} or the default value if it
* has not been set.
*
* @param setting
* The {@link RioSetting} to fetch a value for.
* @return The value for the parser setting, or the default value if it is
* not set.
* @since 2.7.0
*/
@SuppressWarnings("unchecked")
public T get(RioSetting setting) {
Object result = settings.get(setting);
if (result == null) {
return setting.getDefaultValue();
}
return (T)result;
}
/**
* Sets a {@link RioSetting} to have a new value. If the value is null, the
* parser setting is removed and the default will be used instead.
*
* @param setting
* The setting to set a new value for.
* @param value
* The value for the parser setting, or null to reset the parser
* setting to use the default value.
* @since 2.7.0
* @return Either a copy of this config, if it is immutable, or this object,
* to allow chaining of method calls.
*/
@SuppressWarnings("unchecked")
public RioConfig set(RioSetting setting, T value) {
if (value == null) {
settings.remove(setting);
}
else {
Object putIfAbsent = settings.putIfAbsent((RioSetting
© 2015 - 2025 Weber Informatics LLC | Privacy Policy