blob: c5f6463283353a07d0dfd519e18c31e5adc076ae [file] [log] [blame]
/*
* 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.riot.adapters;
import java.io.InputStream ;
import org.apache.jena.atlas.junit.BaseTest ;
import org.apache.jena.ontology.Individual ;
import org.apache.jena.ontology.OntModel ;
import org.apache.jena.ontology.OntModelSpec ;
import org.apache.jena.rdf.model.Model ;
import org.apache.jena.rdf.model.ModelFactory ;
import org.apache.jena.riot.stream.TestLocationMapper;
import org.apache.jena.riot.system.stream.StreamManager;
import org.apache.jena.shared.NotFoundException ;
import org.apache.jena.util.FileManager ;
import org.apache.jena.util.LocationMapper ;
import org.junit.Test ;
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
@SuppressWarnings("deprecation")
public class TestFileManager extends BaseTest
{
static Logger log = LoggerFactory.getLogger(TestFileManager.class) ;
public static final String testingDir = "testing/RIOT/FileManager" ;
static final String filename = "fmgr-test-file" ;
static final String filenameNonExistent = "fmgr-test-file-1421" ;
static final String fileModel = "foo.ttl" ;
static final String zipname = testingDir+"/fmgr-test.zip" ;
@Test public void testFileManagerFileLocator() {
FileManager fileManager = FileManager.create();
fileManager.addLocatorFile() ;
InputStream in = fileManager.open(testingDir+"/"+filename) ;
assertNotNull(in) ;
closeInputStream(in) ;
}
@Test public void testFileManagerFileLocatorWithDir() {
FileManager fileManager = FileManager.create() ;
fileManager.addLocatorFile(testingDir) ;
InputStream in = fileManager.open(filename) ;
assertNotNull(in) ;
closeInputStream(in) ;
}
@Test public void testFileManagerNoFile() {
FileManager fileManager = FileManager.create() ;
fileManager.addLocatorFile() ;
try {
// Tests either way round - exception or a null return.
InputStream in = fileManager.open(filenameNonExistent) ;
closeInputStream(in) ;
assertNull("Found non-existant file: "+filenameNonExistent, in) ;
} catch (NotFoundException ex) {}
}
@Test(expected = NotFoundException.class)
public void testFileManagerNoFile2() {
FileManager fileManager = FileManager.create() ;
fileManager.addLocatorFile() ;
fileManager.readModelInternal(ModelFactory.createDefaultModel(), filenameNonExistent);
}
@Test(expected = NotFoundException.class)
public void testFileManagerNoFile3() {
FileManager fileManager = new AdapterFileManager(new StreamManager(), new org.apache.jena.riot.system.stream.LocationMapper()) ;
fileManager.addLocatorFile() ;
fileManager.readModelInternal(ModelFactory.createDefaultModel(), filenameNonExistent);
}
@Test public void testFileManagerLocatorClassLoader() {
FileManager fileManager = FileManager.create() ;
fileManager.addLocatorClassLoader(fileManager.getClass().getClassLoader()) ;
InputStream in = fileManager.open("java/lang/String.class") ;
assertNotNull(in) ;
closeInputStream(in) ;
}
@Test public void testFileManagerLocatorClassLoaderNotFound() {
FileManager fileManager = FileManager.create() ;
fileManager.addLocatorClassLoader(fileManager.getClass().getClassLoader()) ;
try {
InputStream in = fileManager.open("not/java/lang/String.class") ;
closeInputStream(in) ;
assertNull("Found non-existant class", in) ;
} catch (NotFoundException ex) {}
}
@Test public void testFileManagerLocatorZip() {
FileManager fileManager = FileManager.create() ;
try {
fileManager.addLocatorZip(zipname) ;
} catch (Exception ex)
{
fail("Failed to create a filemanager and add a zip locator") ;
}
InputStream in = fileManager.open(filename) ;
assertNotNull(in) ;
closeInputStream(in) ;
}
@Test public void testFileManagerLocatorZipNonFound() {
FileManager fileManager = FileManager.create() ;
try {
fileManager.addLocatorZip(zipname) ;
} catch (Exception ex)
{ fail("Failed to create a filemanager and add a zip locator") ; }
try {
InputStream in = fileManager.open(filenameNonExistent) ;
closeInputStream(in) ;
assertNull("Found non-existant zip file member", in) ;
} catch (NotFoundException ex) {}
}
@Test public void testFileManagerClone() {
FileManager fileManager1 = FileManager.create() ;
FileManager fileManager2 = fileManager1.clone() ;
// Should not affect fileManager2
fileManager1.addLocatorFile() ;
{
InputStream in = fileManager1.open(testingDir+"/"+filename) ;
assertNotNull(in) ;
closeInputStream(in) ;
}
// Should not work.
try {
InputStream in = fileManager2.open(testingDir+"/"+filename) ;
closeInputStream(in) ;
assertNull("Found file via wrong FileManager", in) ;
} catch (NotFoundException ex) {}
}
@Test public void testFileManagerReadOntModel() {
OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM) ;
FileManager.getInternal().readModelInternal(model, testingDir+"/data.ttl") ;
// Check
Individual ind = model.getIndividual("http://example.com/individual") ;
String t = ind.getOntClass().getURI() ;
assertEquals("http://example.com/T", t) ;
long c1 = model.size() ;
model.loadImports();
long c2 = model.size() ;
assertEquals(c1,c2) ;
}
@Test public void testLocationMappingURLtoFileOpen() {
LocationMapper locMap = new LocationMapper(TestLocationMapper.mapping) ;
FileManager fileManager = FileManager.create(locMap) ;
fileManager.addLocatorFile() ;
InputStream in = fileManager.open("http://example.org/file") ;
assertNotNull(in) ;
closeInputStream(in) ;
}
@Test public void testLocationMappingURLtoFileOpenNotFound() {
LocationMapper locMap = new LocationMapper(TestLocationMapper.mapping) ;
FileManager fileManager = FileManager.create(locMap) ;
fileManager.addLocatorClassLoader(fileManager.getClass().getClassLoader()) ;
try {
InputStream in = fileManager.open("http://example.org/file") ;
closeInputStream(in) ;
assertNull("Found nont-existant URL", null) ;
} catch (NotFoundException ex) {}
}
@Test public void testCache1() {
FileManager fileManager = FileManager.create() ;
fileManager.addLocatorFile(testingDir) ;
Model m1 = fileManager.loadModelInternal(fileModel) ;
Model m2 = fileManager.loadModelInternal(fileModel) ;
assertNotSame(m1, m2) ;
}
@Test public void testCache2() {
FileManager.setGlobalFileManager(AdapterFileManager.get()) ;
FileManager fileManager = FileManager.getInternal() ;
fileManager.addLocatorFile(testingDir) ;
fileManager.setModelCaching(true) ;
Model m1 = fileManager.loadModelInternal(fileModel) ;
Model m2 = fileManager.loadModelInternal(fileModel) ;
assertSame(m1, m2) ;
}
@Test public void testCache3() {
FileManager fileManager = FileManager.getInternal() ;
fileManager.addLocatorFile(testingDir) ;
fileManager.setModelCaching(true) ;
Model m1 = fileManager.loadModelInternal(fileModel) ;
Model m2 = fileManager.loadModelInternal(fileModel) ;
assertSame(m1, m2) ;
fileManager.removeCacheModel(fileModel) ;
Model m3 = fileManager.loadModelInternal(fileModel) ;
assertNotSame(m1, m3) ;
fileManager.resetCache() ;
Model m4 = fileManager.loadModelInternal(fileModel) ;
Model m5 = fileManager.loadModelInternal(fileModel) ;
assertSame(m4, m5) ;
assertNotSame(m1, m4) ;
assertNotSame(m3, m4) ;
}
// -------- Helpers
private void closeInputStream(InputStream in) {
try {
if ( in != null )
in.close();
}
catch (Exception ex) {}
}
}