You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2015/01/02 14:31:52 UTC
jena git commit: JENA-662 : Filename handling in FileModelAssembler
Repository: jena
Updated Branches:
refs/heads/master 98e2c391c -> e3b6d4410
JENA-662 : Filename handling in FileModelAssembler
This closes #16
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/e3b6d441
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/e3b6d441
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/e3b6d441
Branch: refs/heads/master
Commit: e3b6d4410036d4af2ee8fa6a0329bcf5b43f8adb
Parents: 98e2c39
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Jan 2 13:31:36 2015 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Jan 2 13:31:36 2015 +0000
----------------------------------------------------------------------
.../assemblers/FileModelAssembler.java | 17 ++++++-
.../assembler/test/TestFileModelAssembler.java | 50 ++++++++++++++++++--
2 files changed, 62 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/e3b6d441/jena-core/src/main/java/com/hp/hpl/jena/assembler/assemblers/FileModelAssembler.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/com/hp/hpl/jena/assembler/assemblers/FileModelAssembler.java b/jena-core/src/main/java/com/hp/hpl/jena/assembler/assemblers/FileModelAssembler.java
index 68e26f8..338504f 100644
--- a/jena-core/src/main/java/com/hp/hpl/jena/assembler/assemblers/FileModelAssembler.java
+++ b/jena-core/src/main/java/com/hp/hpl/jena/assembler/assemblers/FileModelAssembler.java
@@ -19,6 +19,12 @@
package com.hp.hpl.jena.assembler.assemblers;
import java.io.File ;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.nio.charset.StandardCharsets;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.hp.hpl.jena.assembler.Assembler ;
import com.hp.hpl.jena.assembler.JA ;
@@ -32,6 +38,9 @@ import com.hp.hpl.jena.util.FileUtils ;
public class FileModelAssembler extends NamedModelAssembler implements Assembler
{
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(FileModelAssembler.class);
+
@Override
protected Model openEmptyModel( Assembler a, Resource root, Mode mode )
{
@@ -90,6 +99,12 @@ public class FileModelAssembler extends NamedModelAssembler implements Assembler
private String getDirectoryName( Resource root )
{
- return getRequiredResource( root, JA.directory ).getURI().replaceFirst( "file:", "" );
+ String dir = getRequiredResource( root, JA.directory ).getURI().replaceFirst( "file:", "" );
+ try {
+ dir = URLDecoder.decode(dir, StandardCharsets.UTF_8.name());
+ } catch (UnsupportedEncodingException e) {
+ LOGGER.warn(String.format("Failed to decode dir %s: %s", dir, e.getMessage()), e);
+ }
+ return dir;
}
}
http://git-wip-us.apache.org/repos/asf/jena/blob/e3b6d441/jena-core/src/test/java/com/hp/hpl/jena/assembler/test/TestFileModelAssembler.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/com/hp/hpl/jena/assembler/test/TestFileModelAssembler.java b/jena-core/src/test/java/com/hp/hpl/jena/assembler/test/TestFileModelAssembler.java
index cd9fb62..b5a0efb 100644
--- a/jena-core/src/test/java/com/hp/hpl/jena/assembler/test/TestFileModelAssembler.java
+++ b/jena-core/src/test/java/com/hp/hpl/jena/assembler/test/TestFileModelAssembler.java
@@ -18,18 +18,33 @@
package com.hp.hpl.jena.assembler.test;
+import java.io.ByteArrayInputStream;
import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
-import com.hp.hpl.jena.assembler.*;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+
+import com.hp.hpl.jena.assembler.Assembler;
+import com.hp.hpl.jena.assembler.BadObjectException;
+import com.hp.hpl.jena.assembler.JA;
+import com.hp.hpl.jena.assembler.Mode;
import com.hp.hpl.jena.assembler.assemblers.FileModelAssembler;
import com.hp.hpl.jena.graph.impl.FileGraph;
-import com.hp.hpl.jena.rdf.model.*;
-import com.hp.hpl.jena.shared.*;
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.ModelFactory;
+import com.hp.hpl.jena.rdf.model.Resource;
+import com.hp.hpl.jena.shared.JenaException;
import com.hp.hpl.jena.util.FileUtils;
public class TestFileModelAssembler extends AssemblerTestBase
{
-
+
+ @Rule
+ private final TemporaryFolder tempFolder = new TemporaryFolder();
+
public TestFileModelAssembler( String name )
{ super( name ); }
@@ -234,4 +249,31 @@ public class TestFileModelAssembler extends AssemblerTestBase
Model m = a.openModel( root );
assertSame( model, m );
}
+
+ @Test
+ public void testDecodeDirectoryName() throws IOException
+ {
+ // TODO: JenaTestBase is mixing JUnit3 and JUnit4 classes, and the
+ // rule doesn't get called correctly.
+ tempFolder.create();
+ assertTrue(tempFolder.getRoot().isDirectory());
+ File folderWithSpace = tempFolder.newFolder("folder with space");
+ folderWithSpace.mkdir();
+ File modelFile = new File(folderWithSpace, "file with space.ttl");
+ modelFile.createNewFile();
+ String graphs = "";
+ graphs += "@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> . ";
+ graphs += "<http://example.org/file> a ja:FileModel ; ";
+ graphs += "ja:directory <file:///" + tempFolder.getRoot().getAbsolutePath() + "/folder%20with%20space/> ; ";
+ graphs += "ja:modelName \"" + modelFile.getName() + "\" . ";
+
+ InputStream is = new ByteArrayInputStream(graphs.getBytes());
+
+ Model model = ModelFactory.createDefaultModel();
+ model.read(is, "http://example.org/", "TURTLE");
+ Resource r = model.createResource("http://example.org/file");
+ Model assemblerModel = (Model) Assembler.general.open(r);
+ assertNotNull(assemblerModel);
+ tempFolder.delete();
+ }
}