
org.eclipse.rdf4j.rio.RioConfig Maven / Gradle / Ivy
/*******************************************************************************
* Copyright (c) 2015 Eclipse RDF4J contributors, Aduna, and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Distribution License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*******************************************************************************/
package org.eclipse.rdf4j.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 {
/**
*/
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.
*/
@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.
* @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