/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * 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.apache.jena.sparql.core.mem; import static org.apache.jena.sparql.core.Quad.defaultGraphIRI; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import org.apache.jena.shared.PrefixMapping; import org.apache.jena.shared.impl.PrefixMappingImpl; import org.apache.jena.sparql.core.DatasetPrefixStorage; /** * A simple {@link DatasetPrefixStorage} for in-memory datasets. */ public class DatasetPrefixStorageInMemory implements DatasetPrefixStorage { private Map<String, PrefixMapping> prefixMappings = new ConcurrentHashMap<>(); /** * A mapping from graph name to {@link PrefixMapping} for that graph. */ private Map<String, PrefixMapping> prefixMappings() { return prefixMappings; } @Override public void close() { prefixMappings = null; } @Override public void sync() { // NO OP } @Override public Set<String> graphNames() { return prefixMappings().keySet(); } @Override public String readPrefix(final String graphName, final String prefix) { return getPrefixMapping(graphName).getNsPrefixURI(prefix); } @Override public String readByURI(final String graphName, final String uriStr) { return getPrefixMapping(graphName).getNsURIPrefix(uriStr); } @Override public Map<String, String> readPrefixMap(final String graphName) { return getPrefixMapping(graphName).getNsPrefixMap(); } @Override public void insertPrefix(final String graphName, final String prefix, final String uri) { getPrefixMapping(graphName).setNsPrefix(prefix, uri); } @Override public void loadPrefixMapping(final String graphName, final PrefixMapping pmap) { getPrefixMapping(graphName).setNsPrefixes(pmap); } @Override public void removeFromPrefixMap(final String graphName, final String prefix) { getPrefixMapping(graphName).removeNsPrefix(prefix); } @Override public void removeAllFromPrefixMap(String graphName) { getPrefixMapping(graphName).clearNsPrefixMap() ; } @Override public PrefixMapping getPrefixMapping() { return getPrefixMapping(defaultGraphIRI.getURI()); } @Override public PrefixMapping getPrefixMapping(final String graphName) { return prefixMappings().computeIfAbsent(graphName, x -> new PrefixMappingImpl()); } }