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 2018/11/26 11:10:54 UTC
[1/5] jena git commit: JENA-1638: Ping and stats server endpoints.
Repository: jena
Updated Branches:
refs/heads/master 613c9d052 -> 7ab5fe941
JENA-1638: Ping and stats server endpoints.
Command line: --withPing and --withStats
Config: "fuseki:pingEP true" "fuseki:statsEP true"
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/2ed29ea3
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/2ed29ea3
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/2ed29ea3
Branch: refs/heads/master
Commit: 2ed29ea3310236f109ccbde1ddb606fe67aca7a0
Parents: 14dff31
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Nov 23 13:54:31 2018 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Nov 23 19:39:30 2018 +0000
----------------------------------------------------------------------
.../apache/jena/fuseki/server/FusekiVocab.java | 4 ++++
.../apache/jena/fuseki/main/FusekiServer.java | 23 ++++++++++++++++++++
.../jena/fuseki/main/cmds/FusekiMain.java | 15 +++++++++++++
.../jena/fuseki/main/cmds/ServerConfig.java | 3 +++
4 files changed, 45 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/2ed29ea3/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiVocab.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiVocab.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiVocab.java
index 371d317..54c1858 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiVocab.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiVocab.java
@@ -39,6 +39,10 @@ public class FusekiVocab
public static final Property pPasswordFile = property("passwd");
public static final Property pRealm = property("realm");
public static final Property pAuth = property("auth");
+
+ // Server endpoints.
+ public static final Property pServerPing = property("pingEP");
+ public static final Property pServerStats = property("statsEP");
public static final Property pServiceQueryEP = property("serviceQuery");
public static final Property pServiceUpdateEP = property("serviceUpdate");
http://git-wip-us.apache.org/repos/asf/jena/blob/2ed29ea3/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java
index 794b4b7..82ee30a 100644
--- a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java
+++ b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java
@@ -50,9 +50,13 @@ import org.apache.jena.fuseki.servlets.FusekiFilter;
import org.apache.jena.fuseki.servlets.ServiceDispatchRegistry;
import org.apache.jena.query.Dataset;
import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.Property;
import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.rdf.model.Statement;
+import org.apache.jena.shared.JenaException;
import org.apache.jena.sparql.core.DatasetGraph;
import org.apache.jena.sparql.core.assembler.AssemblerUtils;
+import org.apache.jena.sparql.util.NotUniqueException;
import org.apache.jena.sparql.util.graph.GraphUtils;
import org.eclipse.jetty.security.ConstraintSecurityHandler;
import org.eclipse.jetty.security.SecurityHandler;
@@ -474,6 +478,10 @@ public class FusekiServer {
private void processServerLevel(Resource server) {
if ( server == null )
return;
+
+ withPing = argBoolean(server, FusekiVocab.pServerPing, false);
+ withStats = argBoolean(server, FusekiVocab.pServerStats, false);
+
// Extract settings - the server building is done in buildSecurityHandler,
// buildAccessControl. Dataset and graph level happen in assemblers.
String passwdFile = GraphUtils.getAsStringValue(server, FusekiVocab.pPasswordFile);
@@ -489,6 +497,21 @@ public class FusekiServer {
serverAuth = FusekiBuilder.allowedUsers(server);
}
+ private static boolean argBoolean(Resource r, Property p, boolean dftValue) {
+ try { GraphUtils.atmostOneProperty(r, p); }
+ catch (NotUniqueException ex) {
+ throw new FusekiConfigException(ex.getMessage());
+ }
+ Statement stmt = r.getProperty(p);
+ if ( stmt == null )
+ return dftValue;
+ try {
+ return stmt.getBoolean();
+ } catch (JenaException ex) {
+ throw new FusekiConfigException("Not a boolean for '"+p+"' : "+stmt.getObject());
+ }
+ }
+
/** Process password file, auth and realm settings on the server description. **/
private void processAuthentication(Resource server) {
String passwdFile = GraphUtils.getAsStringValue(server, FusekiVocab.pPasswordFile);
http://git-wip-us.apache.org/repos/asf/jena/blob/2ed29ea3/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java
index f6ba99b..e871f42 100644
--- a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java
+++ b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java
@@ -86,6 +86,9 @@ public class FusekiMain extends CmdARQ {
private static ArgDecl argGZip = new ArgDecl(ArgDecl.HasValue, "gzip");
private static ArgDecl argBase = new ArgDecl(ArgDecl.HasValue, "base", "files");
+ private static ArgDecl argWithPing = new ArgDecl(ArgDecl.NoValue, "withPing", "ping");
+ private static ArgDecl argWithStats = new ArgDecl(ArgDecl.NoValue, "withStats", "stats");
+
private static ArgDecl argAuth = new ArgDecl(ArgDecl.HasValue, "auth");
private static ArgDecl argHttps = new ArgDecl(ArgDecl.HasValue, "https");
@@ -164,6 +167,9 @@ public class FusekiMain extends CmdARQ {
add(argPasswdFile, "--passwd=FILE", "Password file");
// put in the configuration file
// add(argRealm, "--realm=REALM", "Realm name");
+
+// add(argWithPing, "--ping", "Enable /$/ping");
+// add(argWithStats, "--stats", "Enable /$/stats");
super.modVersion.addClass(Fuseki.class);
}
@@ -379,6 +385,9 @@ public class FusekiMain extends CmdARQ {
serverConfig.authScheme = AuthScheme.scheme(schemeStr);
}
+ serverConfig.withPing = contains(argWithPing);
+ serverConfig.withStats = contains(argWithStats);
+
// if ( contains(argGZip) ) {
// if ( !hasValueOfTrue(argGZip) && !hasValueOfFalse(argGZip) )
// throw new CmdException(argGZip.getNames().get(0) + ": Not understood: " + getValue(argGZip));
@@ -477,6 +486,12 @@ public class FusekiMain extends CmdARQ {
if ( serverConfig.authScheme != null )
builder.auth(serverConfig.authScheme);
+
+ if ( serverConfig.withPing )
+ builder.enablePing(true);
+
+ if ( serverConfig.withStats )
+ builder.enableStats(true);
return builder.build();
}
http://git-wip-us.apache.org/repos/asf/jena/blob/2ed29ea3/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/ServerConfig.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/ServerConfig.java b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/ServerConfig.java
index 447babf..6eb33e3 100644
--- a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/ServerConfig.java
+++ b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/ServerConfig.java
@@ -35,6 +35,9 @@ class ServerConfig {
/** Allow update */
public boolean allowUpdate = false;
+ public boolean withPing = false;
+ public boolean withStats = false;
+
// This is set ...
public DatasetGraph dsg = null;
// ... or this.
[2/5] jena git commit: JENA-1638: Add /$/status as synonym for
/$/server.
Posted by an...@apache.org.
JENA-1638: Add /$/status as synonym for /$/server.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/14dff31a
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/14dff31a
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/14dff31a
Branch: refs/heads/master
Commit: 14dff31aa92c8691a39778e8f4011ed4ffc9128d
Parents: 5a0843d
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Nov 23 13:53:12 2018 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Nov 23 19:39:30 2018 +0000
----------------------------------------------------------------------
.../jena/fuseki/mgt/ActionServerStatus.java | 19 ++++---------------
.../src/main/webapp/WEB-INF/web.xml | 6 ++++++
2 files changed, 10 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/14dff31a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/mgt/ActionServerStatus.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/mgt/ActionServerStatus.java b/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/mgt/ActionServerStatus.java
index d3c0873..2a100e7 100644
--- a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/mgt/ActionServerStatus.java
+++ b/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/mgt/ActionServerStatus.java
@@ -88,22 +88,11 @@ public class ActionServerStatus extends ActionCtl
if ( builtDateStr == null || builtDateStr.startsWith("${") )
builtDateStr = "Unknown" ;
-// builder
-// .key(JsonConst.server)
-// .startObject()
-// .key(JsonConst.port).value(port)
-// .finishObject() ;
-// builder
-// .key(JsonConst.admin)
-// .startObject()
-// .key(JsonConst.port).value(requestPort)
-// .finishObject() ;
-
builder
- .key(ServerMgtConst.version).value(versionStr)
- .key(ServerMgtConst.built).value(builtDateStr)
- .key(ServerMgtConst.startDT).value(Fuseki.serverStartedAt())
- .key(ServerMgtConst.uptime).value(Fuseki.serverUptimeSeconds())
+ .pair(ServerMgtConst.version, versionStr)
+ .pair(ServerMgtConst.built, builtDateStr)
+ .pair(ServerMgtConst.startDT, Fuseki.serverStartedAt())
+ .pair(ServerMgtConst.uptime, Fuseki.serverUptimeSeconds())
;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/14dff31a/jena-fuseki2/jena-fuseki-webapp/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-webapp/src/main/webapp/WEB-INF/web.xml b/jena-fuseki2/jena-fuseki-webapp/src/main/webapp/WEB-INF/web.xml
index 7de2f92..ae3eb7c 100644
--- a/jena-fuseki2/jena-fuseki-webapp/src/main/webapp/WEB-INF/web.xml
+++ b/jena-fuseki2/jena-fuseki-webapp/src/main/webapp/WEB-INF/web.xml
@@ -231,6 +231,12 @@
<url-pattern>/$/server</url-pattern>
</servlet-mapping>
+ <!-- Alternative name mentioned in default shiro.ini -->
+ <servlet-mapping>
+ <servlet-name>ServerStatusServlet</servlet-name>
+ <url-pattern>/$/status</url-pattern>
+ </servlet-mapping>
+
<servlet>
<servlet-name>ActionDatasets</servlet-name>
<servlet-class>org.apache.jena.fuseki.mgt.ActionDatasets</servlet-class>
[3/5] jena git commit: JENA-1639: Model.getList and Statement.getList
Posted by an...@apache.org.
JENA-1639: Model.getList and Statement.getList
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/d9143725
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/d9143725
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/d9143725
Branch: refs/heads/master
Commit: d914372597d1d2b0296d8fb01e1d95989f42c670
Parents: 5a0843d
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Nov 25 18:19:34 2018 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Nov 25 18:19:34 2018 +0000
----------------------------------------------------------------------
.../java/org/apache/jena/rdf/model/Model.java | 8 +-
.../org/apache/jena/rdf/model/ModelCon.java | 34 +++-
.../org/apache/jena/rdf/model/Statement.java | 6 +
.../apache/jena/rdf/model/impl/ModelCom.java | 12 +-
.../jena/rdf/model/impl/StatementImpl.java | 5 +
.../apache/jena/rdf/model/test/TestList.java | 171 ++++++-------------
.../jena/permissions/model/SecuredModel.java | 28 ++-
.../model/impl/SecuredModelImpl.java | 44 +++--
.../model/impl/SecuredStatementImpl.java | 18 +-
9 files changed, 174 insertions(+), 152 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/d9143725/jena-core/src/main/java/org/apache/jena/rdf/model/Model.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/Model.java b/jena-core/src/main/java/org/apache/jena/rdf/model/Model.java
index 924256d..9c97229 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/Model.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/Model.java
@@ -287,7 +287,6 @@ public interface Model
*/
public RDFList createList();
-
/**
* <p>Answer a new list containing the resources from the given iterator, in order.</p>
* @param members An iterator, each value of which is expected to be an RDFNode
@@ -297,11 +296,14 @@ public interface Model
/**
- * <p>Answer a new list containing the nodes from the given array, in order</p>
+ * <p>Answer a new list containing the nodes from the given eleemnts, in order.
+ * If the list of elements is empty, until the list is made the object or subject in the model, or has an element added,
+ * it will not appear in the model (e.g. when written out).
+ *
* @param members An array of RDF nodes that will be the members of the list
* @return An RDF-encoded list
*/
- public RDFList createList( RDFNode[] members );
+ public RDFList createList( RDFNode... members );
/** Add a statement to this model.
http://git-wip-us.apache.org/repos/asf/jena/blob/d9143725/jena-core/src/main/java/org/apache/jena/rdf/model/ModelCon.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/ModelCon.java b/jena-core/src/main/java/org/apache/jena/rdf/model/ModelCon.java
index 0a30710..949d28f 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/ModelCon.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/ModelCon.java
@@ -111,16 +111,17 @@ public interface ModelCon {
* It is in effect an unsafe downcast.</p>
*
* <p>Subsequent operations on the returned Alt may modify this model.</p>
- * <p>The bag is assumed to already exist in the model. If it does not,
+ * <p>The Alt is assumed to already exist in the model. If it does not,
* <CODE>createAlt</CODE> should be used instead.</p>
* @return an Alt instance
* @param r an untyped Resource instance
*/
Alt getAlt(Resource r) ;
+
/** Return a Seq instance in this model.
*
- * <p>Subsequent operations on the returned bag may modify this model.</p>
+ * <p>Subsequent operations on the returned sequence may modify this model.</p>
* <p>The seq is assumed to already exist in the model. If it does not,
* <CODE>createSeq</CODE> should be used instead.</p>
* @return a seq instance
@@ -128,7 +129,7 @@ public interface ModelCon {
*/
Seq getSeq(String uri) ;
-
+
/** Return a Seq instance based on a given resource.
*
* <p> This method enables an application to treat any resource as a Seq.
@@ -136,13 +137,36 @@ public interface ModelCon {
*
* <p>Subsequent operations on the returned Seq may modify this model.</p>
* <p>The Seq is assumed to already exist in the model. If it does not,
- * <CODE>createAlt</CODE> should be used instead.</p>
- * @return an Alt instance
+ * <CODE>createSeq</CODE> should be used instead.</p>
+ * @return an Seq instance
* @param r an untyped Resource instance
*/
Seq getSeq(Resource r) ;
+/** Return a RDF List instance in this model.
+ *
+ * <p>Subsequent operations on the returned list may modify this model.</p>
+ * <p>The list is assumed to already exist in the model. If it does not,
+ * <CODE>createList</CODE> should be used instead.</p>
+ * @return a list instance
+ * @param uri the URI of the list
+ */
+ RDFList getList(String uri) ;
+
+/** Return a RDF List based on a given resource.
+ *
+ * <p> This method enables an application to treat any resource as a list.
+ * It is in effect an unsafe downcast.</p>
+ *
+ * <p>Subsequent operations on the returned list may modify this model.</p>
+ * <p>The list is assumed to already exist in the model. If it does not,
+ * <CODE>createList</CODE> should be used instead.</p>
+ * @return a list instance
+ * @param r the resource of the list
+ */
+ RDFList getList(Resource r) ;
+
/** Create a new anonymous resource with a given type.
*
* <p> Subsequent operations on the returned resource may modify this model.
http://git-wip-us.apache.org/repos/asf/jena/blob/d9143725/jena-core/src/main/java/org/apache/jena/rdf/model/Statement.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/Statement.java b/jena-core/src/main/java/org/apache/jena/rdf/model/Statement.java
index 376659d..5568df0 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/Statement.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/Statement.java
@@ -238,6 +238,12 @@ public interface Statement extends FrontsTriple
*/
public Seq getSeq() ;
+ /** Return the object of the statement as an RDF List.
+ * <p>An exception will be thrown if the object is not an {@link RDFList}.</p>
+ * @return The object of the statement interpreted as a value as RDFList.
+ */
+ public RDFList getList() ;
+
/** Return the language of the object of the statement.
*
* <p>An exception will be thrown if the object is not a Literal.</p>
http://git-wip-us.apache.org/repos/asf/jena/blob/d9143725/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
index ab90d30..09124e2 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
@@ -876,13 +876,13 @@ implements Model, PrefixMapping, Lock
/**
Answer a (the) new empty list
+ Until this is made the object or subject in the model, it will not appear in a written form.
@return An RDF-encoded list of no elements (ie nil)
*/
@Override
public RDFList createList()
{ return getResource( RDF.nil.getURI() ).as( RDFList.class ); }
-
/**
* <p>Answer a new list containing the resources from the given iterator, in order.</p>
* @param members An iterator, each value of which is expected to be an RDFNode.
@@ -914,7 +914,7 @@ implements Model, PrefixMapping, Lock
* @return An RDF-encoded list
*/
@Override
- public RDFList createList( RDFNode[] members ) {
+ public RDFList createList( RDFNode... members ) {
return createList( Arrays.asList( members ).iterator() );
}
@@ -953,6 +953,14 @@ implements Model, PrefixMapping, Lock
public Bag getBag( Resource r )
{ return r.inModel( this ).as( Bag.class ); }
+ @Override
+ public RDFList getList( String uri )
+ { return (RDFList)IteratorFactory.asResource( makeURI( uri ), RDFList.class, this ); }
+
+ @Override
+ public RDFList getList( Resource r )
+ { return r.inModel( this ).as( RDFList.class ); }
+
static private Node makeURI(String uri)
{ return uri == null ? NodeFactory.createBlankNode() : NodeFactory.createURI( uri ); }
http://git-wip-us.apache.org/repos/asf/jena/blob/d9143725/jena-core/src/main/java/org/apache/jena/rdf/model/impl/StatementImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/StatementImpl.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/StatementImpl.java
index e4a8f44..aa9b45c 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/StatementImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/StatementImpl.java
@@ -129,6 +129,11 @@ public class StatementImpl extends StatementBase implements Statement {
return object.as( Seq.class );
}
+ @Override
+ public RDFList getList() {
+ return object.as( RDFList.class );
+ }
+
/** it turns out to be handy to return the new StatementImpl as the result */
@Override protected StatementImpl replace( RDFNode n ) {
StatementImpl s = new StatementImpl( subject, predicate, n, model );
http://git-wip-us.apache.org/repos/asf/jena/blob/d9143725/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestList.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestList.java b/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestList.java
index 826c3aa..87efc45 100644
--- a/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestList.java
+++ b/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestList.java
@@ -50,8 +50,7 @@ public class TestList extends AbstractModelTestBase
public static final String NS = "uri:urn:x-rdf:test#";
/** Test that an iterator delivers the expected values */
- protected static void iteratorTest( final Iterator<?> i,
- final Object[] expected )
+ protected static void iteratorTest( final Iterator<?> i, final Object[] expected )
{
final Logger logger = LoggerFactory.getLogger(TestList.class);
final List<Object> expList = new ArrayList<>();
@@ -757,7 +756,6 @@ public class TestList extends AbstractModelTestBase
public void testValidity()
{
-
final Resource root = model.createResource(TestList.NS + "root");
final Property p = model.createProperty(TestList.NS, "p");
@@ -783,125 +781,58 @@ public class TestList extends AbstractModelTestBase
model.add(badList, RDF.rest, nil);
checkValid("valid5", l1, true);
+ }
+
+ public void testStmtGetList()
+ {
+ Resource root = model.createResource(TestList.NS + "root");
+ Property p = model.createProperty(TestList.NS, "p");
+ Resource r = model.createResource(TestList.NS + "r");
+ Resource r1 = model.createResource(TestList.NS + "r1");
+ Resource r2 = model.createResource(TestList.NS + "r2");
+
+ RDFList list0 = model.createList(r1, r2);
+ model.add(r, p, list0);
+
+ Resource obj = model.listStatements(r, p, (Resource)null).next().getResource();
+
+ RDFList list1 = model.getList(obj);
+
+ boolean b = list0.sameListAs(list1);
+ assertTrue("Different lists: expected: "+list0+" : got: "+list1, b);
+ }
+
+ public void testModelGetList()
+ {
+ Resource root = model.createResource(TestList.NS + "root");
+ Property p = model.createProperty(TestList.NS, "p");
+ Resource r = model.createResource(TestList.NS + "r");
+ Resource r1 = model.createResource(TestList.NS + "r1");
+ Resource r2 = model.createResource(TestList.NS + "r2");
+
+ RDFList list0 = model.createList(r1, r2);
+ model.add(r, p, list0);
+ RDFList list1 = model.listStatements(r, p, (Resource)null).next().getList();
+
+ boolean b = list0.sameListAs(list1);
+ assertTrue("Different lists: expected: "+list0+" : got: "+list1, b);
}
- // public void testListSubclass() {
- // String NS = "http://example.org/test#";
- // Resource a = model.createResource( NS + "a" );
- // Resource b = model.createResource( NS + "b" );
- //
- // Resource cell0 = model.createResource();
- // Resource cell1 = model.createResource();
- // cell0.addProperty( RDF.first, a );
- // cell0.addProperty( RDF.rest, cell1 );
- // cell1.addProperty( RDF.first, b );
- // cell1.addProperty( RDF.rest, RDF.nil );
- //
- // UserList ul = getUserListInstance(cell0);
- //
- // assertEquals( "User list length ", 2, ul.size() );
- // assertEquals( "head of user list ", a, ul.getHead() );
- //
- // RDFList l = ul.as( RDFList.class );
- // assertNotNull( "RDFList facet of user-defined list subclass", l );
- //
- // }
- //
- // /** A simple extension to RDFList to test user-subclassing of RDFList */
- // protected static interface UserList extends RDFList {
- // }
- //
- // /** Impl of a simple extension to RDFList to test user-subclassing of
- // RDFList */
- // protected static class UserListImpl extends RDFListImpl implements
- // UserList {
- // public UserListImpl( Node n, EnhGraph g ) {
- // super( n, g );
- // }
- // }
- //
- // public UserList getUserListInstance( Resource r )
- // {
- // return new UserListImpl( r.asNode(), (EnhGraph) model );
- // }
- //
- // public void testUserDefinedList() {
- // BuiltinPersonalities.model.add( UserDefList.class,
- // UserDefListImpl.factoryForTests );
- //
- // String NS = "http://example.org/test#";
- // Resource a = model.createResource( NS + "a" );
- // Resource b = model.createResource( NS + "b" );
- //
- // Resource empty = model.createResource( UserDefListImpl.NIL.getURI() );
- // UserDefList ul = empty.as( UserDefList.class );
- // assertNotNull( "UserList facet of empty list", ul );
- //
- // UserDefList ul0 = (UserDefList) ul.cons( b );
- // ul0 = (UserDefList) ul0.cons( a );
- // assertEquals( "should be length 2", 2, ul0.size() );
- // assertTrue( "first statement", model.contains( ul0,
- // UserDefListImpl.FIRST, a ) );
- // }
- //
- // protected static interface UserDefList extends RDFList {}
- //
- // protected static class UserDefListImpl extends RDFListImpl implements
- // UserDefList {
- // @SuppressWarnings("hiding") public static final String NS =
- // "http://example.org/testlist#";
- // public static final Property FIRST = ResourceFactory.createProperty(
- // NS+"first" );
- // public static final Property REST = ResourceFactory.createProperty(
- // NS+"rest" );
- // public static final Resource NIL = ResourceFactory.createResource(
- // NS+"nil" );
- // public static final Resource LIST = ResourceFactory.createResource(
- // NS+"List" );
- //
- // /**
- // * A factory for generating UserDefList facets from nodes in enhanced
- // graphs.
- // */
- // public static Implementation factoryForTests = new Implementation() {
- // @Override public EnhNode wrap( Node n, EnhGraph eg ) {
- // if (canWrap( n, eg )) {
- // UserDefListImpl impl = new UserDefListImpl( n, eg );
- //
- // Model model = impl.getModel();
- // impl.m_listFirst = FIRST.inModel( model );
- // impl.m_listRest = REST.inModel( model );
- // impl.m_listNil = NIL.inModel( model );
- // impl.m_listType = LIST.inModel( model );
- //
- // return impl;
- // }
- // else {
- // throw new JenaException( "Cannot convert node " + n + " to UserDefList");
- // }
- // }
- //
- // @Override public boolean canWrap( Node node, EnhGraph eg ) {
- // Graph g = eg.asGraph();
- //
- // return node.equals( NIL.asNode() ) ||
- // g.contains( node, FIRST.asNode(), Node.ANY ) ||
- // g.contains( node, REST.asNode(), Node.ANY ) ||
- // g.contains( node, RDF.type.asNode(), LIST.asNode() );
- // }
- // };
- //
- // /** This method returns the Java class object that defines which
- // abstraction facet is presented */
- // @Override public Class<? extends RDFList> listAbstractionClass() {
- // return UserDefList.class;
- // }
- //
- // public UserDefListImpl( Node n, EnhGraph g ) {
- // super( n, g );
- // }
- //
- // }
+ public void testModelGetEmptyList()
+ {
+ Resource root = model.createResource(TestList.NS + "root");
+ Property p = model.createProperty(TestList.NS, "p");
+ Resource r = model.createResource(TestList.NS + "r");
+
+ RDFList list0 = model.createList();
+ model.add(r, p, list0);
+
+ RDFList list1 = model.listStatements(r, p, (Resource)null).next().getList();
+
+ boolean b = list0.sameListAs(list1);
+ assertTrue("Different lists: expected: "+list0+" : got: "+list1, b);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/jena/blob/d9143725/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredModel.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredModel.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredModel.java
index 43d1685..4a64e71 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredModel.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredModel.java
@@ -563,7 +563,7 @@ public interface SecuredModel extends Model, SecuredPrefixMapping {
* if user is not authenticated and is required to be.
*/
@Override
- public SecuredRDFList createList(final RDFNode[] members)
+ public SecuredRDFList createList(final RDFNode...members)
throws AddDeniedException, UpdateDeniedException, AuthenticationRequiredException;
/**
@@ -1096,6 +1096,32 @@ public interface SecuredModel extends Model, SecuredPrefixMapping {
@Override
public SecuredSeq getSeq(final String uri) throws ReadDeniedException, AuthenticationRequiredException;
+ /** Return a RDF List instance in this model.
+ *
+ * <p>Subsequent operations on the returned list may modify this model.</p>
+ * <p>The list is assumed to already exist in the model. If it does not,
+ * <CODE>createList</CODE> should be used instead.</p>
+ * @return a list instance
+ * @param uri the URI of the list
+ */
+ @Override
+ public SecuredRDFList getList(String uri) throws ReadDeniedException, AuthenticationRequiredException;
+
+ /** Return a RDF List based on a given resource.
+ *
+ * <p> This method enables an application to treat any resource as a list.
+ * It is in effect an unsafe downcast.</p>
+ *
+ * <p>Subsequent operations on the returned list may modify this model.</p>
+ * <p>The list is assumed to already exist in the model. If it does not,
+ * <CODE>createList</CODE> should be used instead.</p>
+ * @return a list instance
+ * @param r the resource of the list
+ */
+ @Override
+ public SecuredRDFList getList(Resource r) throws ReadDeniedException, AuthenticationRequiredException;
+
+
/**
*
* @sec.graph Read
http://git-wip-us.apache.org/repos/asf/jena/blob/d9143725/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java
index 358d928..dcea6dd 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java
@@ -712,7 +712,7 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel {
}
@Override
- public SecuredRDFList createList(final RDFNode[] members)
+ public SecuredRDFList createList(RDFNode... members)
throws UpdateDeniedException, AddDeniedException, AuthenticationRequiredException {
return createList(Arrays.asList(members).iterator());
}
@@ -1063,8 +1063,36 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel {
checkRead(new Triple(NodeFactory.createURI(uri), RDF.type.asNode(), RDF.Bag.asNode()));
return SecuredBagImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem().getBag(uri));
}
+
+ @Override
+ public SecuredSeq getSeq(final Resource r) throws ReadDeniedException, AuthenticationRequiredException {
+ checkRead();
+ checkRead(new Triple(r.asNode(), RDF.type.asNode(), RDF.Seq.asNode()));
+ return SecuredSeqImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem().getSeq(r));
+ }
@Override
+ public SecuredSeq getSeq(final String uri) throws ReadDeniedException, AuthenticationRequiredException {
+ checkRead();
+ checkRead(new Triple(NodeFactory.createURI(uri), RDF.type.asNode(), RDF.Seq.asNode()));
+ return SecuredSeqImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem().getSeq(uri));
+ }
+
+
+
+ @Override
+ public SecuredRDFList getList( String uri ) throws ReadDeniedException, AuthenticationRequiredException {
+ checkRead();
+ return SecuredRDFListImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem().getList(uri));
+ }
+
+ @Override
+ public SecuredRDFList getList( Resource r ) throws ReadDeniedException, AuthenticationRequiredException {
+ checkRead();
+ return SecuredRDFListImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem().getList(r));
+ }
+
+ @Override
public SecuredGraph getGraph() {
return graph;
}
@@ -1242,20 +1270,6 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel {
}
@Override
- public SecuredSeq getSeq(final Resource r) throws ReadDeniedException, AuthenticationRequiredException {
- checkRead();
- checkRead(new Triple(r.asNode(), RDF.type.asNode(), RDF.Seq.asNode()));
- return SecuredSeqImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem().getSeq(r));
- }
-
- @Override
- public SecuredSeq getSeq(final String uri) throws ReadDeniedException, AuthenticationRequiredException {
- checkRead();
- checkRead(new Triple(NodeFactory.createURI(uri), RDF.type.asNode(), RDF.Seq.asNode()));
- return SecuredSeqImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem().getSeq(uri));
- }
-
- @Override
public RDFWriter getWriter() {
return holder.getBaseItem().getWriter();
}
http://git-wip-us.apache.org/repos/asf/jena/blob/d9143725/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementImpl.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementImpl.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementImpl.java
index 700a4a7..01165ba 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementImpl.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementImpl.java
@@ -279,6 +279,18 @@ public class SecuredStatementImpl extends SecuredItemImpl implements
}
@Override
+ public SecuredSeq getSeq() {
+ return SecuredSeqImpl.getInstance(getModel(), holder.getBaseItem()
+ .getSeq());
+ }
+
+ @Override
+ public SecuredRDFList getList() {
+ return SecuredRDFListImpl.getInstance(getModel(), holder.getBaseItem()
+ .getList());
+ }
+
+ @Override
public boolean getBoolean() throws ReadDeniedException,
AuthenticationRequiredException {
checkRead();
@@ -411,12 +423,6 @@ public class SecuredStatementImpl extends SecuredItemImpl implements
}
@Override
- public SecuredSeq getSeq() {
- return SecuredSeqImpl.getInstance(getModel(), holder.getBaseItem()
- .getSeq());
- }
-
- @Override
public short getShort() throws ReadDeniedException,
AuthenticationRequiredException {
checkRead();
[4/5] jena git commit: JENA-1638: Merge commit 'refs/pull/496/head'
of https://github.com/apache/jena
Posted by an...@apache.org.
JENA-1638: Merge commit 'refs/pull/496/head' of https://github.com/apache/jena
This closes #496.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/1caaa048
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/1caaa048
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/1caaa048
Branch: refs/heads/master
Commit: 1caaa0482a65f0e7bf530214b35456cc213cbbc3
Parents: 613c9d0 2ed29ea
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Nov 26 10:46:19 2018 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Nov 26 10:46:19 2018 +0000
----------------------------------------------------------------------
.../apache/jena/fuseki/server/FusekiVocab.java | 4 ++++
.../apache/jena/fuseki/main/FusekiServer.java | 23 ++++++++++++++++++++
.../jena/fuseki/main/cmds/FusekiMain.java | 15 +++++++++++++
.../jena/fuseki/main/cmds/ServerConfig.java | 3 +++
.../jena/fuseki/mgt/ActionServerStatus.java | 19 ++++------------
.../src/main/webapp/WEB-INF/web.xml | 6 +++++
6 files changed, 55 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
[5/5] jena git commit: JENA-1639: Merge commit 'refs/pull/498/head'
of https://github.com/apache/jena
Posted by an...@apache.org.
JENA-1639: Merge commit 'refs/pull/498/head' of https://github.com/apache/jena
This closes #498.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/7ab5fe94
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/7ab5fe94
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/7ab5fe94
Branch: refs/heads/master
Commit: 7ab5fe9410c26542878536f59a472d494c187de2
Parents: 1caaa04 d914372
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Nov 26 10:47:13 2018 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Nov 26 10:47:13 2018 +0000
----------------------------------------------------------------------
.../java/org/apache/jena/rdf/model/Model.java | 8 +-
.../org/apache/jena/rdf/model/ModelCon.java | 34 +++-
.../org/apache/jena/rdf/model/Statement.java | 6 +
.../apache/jena/rdf/model/impl/ModelCom.java | 12 +-
.../jena/rdf/model/impl/StatementImpl.java | 5 +
.../apache/jena/rdf/model/test/TestList.java | 171 ++++++-------------
.../jena/permissions/model/SecuredModel.java | 28 ++-
.../model/impl/SecuredModelImpl.java | 44 +++--
.../model/impl/SecuredStatementImpl.java | 18 +-
9 files changed, 174 insertions(+), 152 deletions(-)
----------------------------------------------------------------------