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 2012/12/12 12:09:57 UTC
svn commit: r1420617 - in /jena/trunk/jena-core: ReleaseNotes.txt
src/main/java/com/hp/hpl/jena/rdf/model/impl/ModelCom.java
src/test/java/com/hp/hpl/jena/rdf/model/test/TestListStatements.java
src/test/java/com/hp/hpl/jena/rdf/model/test/TestPackage.java
Author: andy
Date: Wed Dec 12 11:09:54 2012
New Revision: 1420617
URL: http://svn.apache.org/viewvc?rev=1420617&view=rev
Log:
JENA-362 : Fix listStatement(,,null,lang)
Added:
jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/rdf/model/test/TestListStatements.java
Modified:
jena/trunk/jena-core/ReleaseNotes.txt
jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/rdf/model/impl/ModelCom.java
jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/rdf/model/test/TestPackage.java
Modified: jena/trunk/jena-core/ReleaseNotes.txt
URL: http://svn.apache.org/viewvc/jena/trunk/jena-core/ReleaseNotes.txt?rev=1420617&r1=1420616&r2=1420617&view=diff
==============================================================================
--- jena/trunk/jena-core/ReleaseNotes.txt (original)
+++ jena/trunk/jena-core/ReleaseNotes.txt Wed Dec 12 11:09:54 2012
@@ -3,7 +3,9 @@ Release Notes
==== Jena 2.10.0
-+ removed support for DAML+OIL
++ Remove OntModel.queryFor 9exposed graph level abstractions which have been removed)
++ JENA-362 : Fix for listStatements with a nul object but speciifying a language string.
++ Removed support for DAML+OIL
ARP : transition support for daml:collection removed
Vocabulary files removed
OntModelSpec for DMAL+OIL modes removed
Modified: jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/rdf/model/impl/ModelCom.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/rdf/model/impl/ModelCom.java?rev=1420617&r1=1420616&r2=1420617&view=diff
==============================================================================
--- jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/rdf/model/impl/ModelCom.java (original)
+++ jena/trunk/jena-core/src/main/java/com/hp/hpl/jena/rdf/model/impl/ModelCom.java Wed Dec 12 11:09:54 2012
@@ -464,9 +464,53 @@ implements Model, PrefixMapping, Lock
@Override
public StmtIterator listStatements( Resource S, Property P, String O, String L ) {
- return O == null ? listStatements(S, P, Node.ANY)
- : listStatements( S, P, Node.createLiteral( O, L, false ) );
+ if (O != null) {
+ // this is not OK when L is null: returns only the statements whose lang is ""
+ // return listStatements( S, P, Node.createLiteral( O, L, false ) );
+ if (L != null) return listStatements( S, P, Node.createLiteral( O, L, false ) );
+ // there's maybe a better way
+ return new StringFilteredStmtIterator(O, listStatements(S, P, Node.ANY));
+ } else {
+ return new LangFilteredStmtIterator(L, listStatements(S, P, Node.ANY));
+ }
+ }
+
+ private class StringFilteredStmtIterator extends FilterKeepIterator<Statement> implements StmtIterator {
+ public StringFilteredStmtIterator(final String str, Iterator<Statement> it ) {
+ super(
+ new Filter<Statement>() {
+ @Override public boolean accept(Statement s) {
+ RDFNode o = s.getObject();
+ if (o instanceof Literal) {
+ if (str == null) return true; // should not happen
+ return (str.equals(((Literal) o).getString()));
+ }
+ return false;
+ }
+ },
+ it );
+ }
+ @Override public Statement nextStatement() { return next(); }
+ }
+
+ private class LangFilteredStmtIterator extends FilterKeepIterator<Statement> implements StmtIterator {
+ public LangFilteredStmtIterator(final String l, Iterator<Statement> it ) {
+ super(
+ new Filter<Statement>() {
+ @Override public boolean accept(Statement s) {
+ RDFNode o = s.getObject();
+ if (o instanceof Literal) {
+ if (l == null) return true;
+ return (l.equals(((Literal) o).getLanguage()));
+ }
+ return false;
+ }
+ },
+ it );
+ }
+ @Override public Statement nextStatement() { return next(); }
}
+
@Override
public StmtIterator listLiteralStatements( Resource S, Property P, boolean O )
Added: jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/rdf/model/test/TestListStatements.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/rdf/model/test/TestListStatements.java?rev=1420617&view=auto
==============================================================================
--- jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/rdf/model/test/TestListStatements.java (added)
+++ jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/rdf/model/test/TestListStatements.java Wed Dec 12 11:09:54 2012
@@ -0,0 +1,104 @@
+/**
+ * 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 com.hp.hpl.jena.rdf.model.test;
+
+import static org.junit.Assert.assertTrue ;
+
+import java.util.List ;
+
+import junit.framework.JUnit4TestAdapter ;
+import org.junit.AfterClass ;
+import org.junit.BeforeClass ;
+import org.junit.Test ;
+
+import com.hp.hpl.jena.rdf.model.* ;
+
+public class TestListStatements
+{
+ private static Model m;
+ private static Resource s;
+ private static Property p;
+
+ public static junit.framework.Test suite() {
+ return new JUnit4TestAdapter(TestListStatements.class) ;
+ }
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ m = ModelFactory.createDefaultModel();
+ Resource s = m.createResource("http://www.a.com/s");
+ Property p = m.createProperty("http://www.a.com/p");
+
+ m.add(s,p,m.createResource("http://www.a.com/o"));
+ m.add(s,p,"texte","fr");
+ m.add(s,p,"text","en");
+ m.add(s,p,"text");
+ m.add(m.createLiteralStatement(s,p,1789));
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ m = null;
+ s = null;
+ p = null;
+ }
+
+ @Test
+ public final void thereAre4Literals() {
+ StmtIterator it = m.listStatements(s, p, null, null);
+ assertTrue(it.toList().size() == 4);
+ }
+
+ @Test
+ public final void thereIsOneFrench() {
+ StmtIterator it = m.listStatements(s, p, null, "fr");
+ List<Statement> lis = it.toList();
+ assertTrue(lis.size() == 1);
+ assertTrue(lis.get(0).getObject().toString().equals("texte@fr"));
+ }
+
+ @Test
+ public final void thereAre2LitsWoLang() {
+ StmtIterator it = m.listStatements(s, p, null, "");
+ assertTrue(it.toList().size() == 2);
+ }
+
+ @Test
+ public final void theresOneTextEN() {
+ StmtIterator it = m.listStatements(s, p, "text", "en");
+ List<Statement> lis = it.toList();
+ assertTrue(lis.size() == 1);
+ assertTrue(lis.get(0).getObject().toString().equals("text@en"));
+ }
+
+ @Test
+ public final void theresOneTextWoLang() {
+ StmtIterator it = m.listStatements(s, p, "text", "");
+ List<Statement> lis = it.toList();
+ assertTrue(lis.size() == 1);
+ }
+
+ @Test
+ public final void theresAreTwoText() {
+ StmtIterator it = m.listStatements(s, p, "text", null);
+ List<Statement> lis = it.toList();
+ assertTrue(lis.size() == 2);
+ }
+}
+
Modified: jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/rdf/model/test/TestPackage.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/rdf/model/test/TestPackage.java?rev=1420617&r1=1420616&r2=1420617&view=diff
==============================================================================
--- jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/rdf/model/test/TestPackage.java (original)
+++ jena/trunk/jena-core/src/test/java/com/hp/hpl/jena/rdf/model/test/TestPackage.java Wed Dec 12 11:09:54 2012
@@ -20,11 +20,6 @@ package com.hp.hpl.jena.rdf.model.test;
import junit.framework.*;
-/**
- Collected test suite for the .graph package.
- @author jjc + kers
-*/
-
public class TestPackage extends TestSuite {
static public TestSuite suite() {
@@ -35,6 +30,8 @@ public class TestPackage extends TestSui
private TestPackage() {
super("Model");
addTest( "TestModel", TestModelFactory.suite() );
+ addTest(TestListStatements.suite() );
+
addTest( "TestModelFactory", TestModelFactory.suite() );
addTest( "TestSimpleListStatements", TestSimpleListStatements.suite() );
addTest( "TestModelPolymorphism", TestModelPolymorphism.suite() );