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 2014/06/23 11:54:45 UTC
svn commit: r1604729 - in
/jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki:
mgt/ActionAsyncTask.java mgt/ActionContainerItem.java
mgt/ActionDatasets.java servlets/ServletOps.java
Author: andy
Date: Mon Jun 23 09:54:45 2014
New Revision: 1604729
URL: http://svn.apache.org/r1604729
Log:
Tidy up code : ActionDatasets extends ActionContainerItem.
Modified:
jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionAsyncTask.java
jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionContainerItem.java
jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ServletOps.java
Modified: jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionAsyncTask.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionAsyncTask.java?rev=1604729&r1=1604728&r2=1604729&view=diff
==============================================================================
--- jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionAsyncTask.java (original)
+++ jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionAsyncTask.java Mon Jun 23 09:54:45 2014
@@ -36,7 +36,6 @@ public abstract class ActionAsyncTask ex
public ActionAsyncTask() { super() ; }
- // Block GET - caching issues.
@Override
final
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
@@ -44,9 +43,6 @@ public abstract class ActionAsyncTask ex
}
@Override
- protected void execDelete(HttpAction action) { ServletOps.errorMethodNotAllowed(METHOD_DELETE); }
-
- @Override
final
protected JsonValue execGetItem(HttpAction action) {
throw new InternalErrorException("GET for AsyncTask -- Should not be here!") ;
Modified: jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionContainerItem.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionContainerItem.java?rev=1604729&r1=1604728&r2=1604729&view=diff
==============================================================================
--- jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionContainerItem.java (original)
+++ jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionContainerItem.java Mon Jun 23 09:54:45 2014
@@ -57,7 +57,7 @@ public abstract class ActionContainerIte
/** GET request on an item in the container - repond with JSON, or null for plain 200 */
protected abstract JsonValue execGetItem(HttpAction action) ;
- private void execPost(HttpAction action) {
+ protected void execPost(HttpAction action) {
JsonValue v ;
if ( isContainerAction(action) )
v = execPostContainer(action) ;
@@ -72,7 +72,23 @@ public abstract class ActionContainerIte
/** POST request on an item in the container - respond with JSON, or null for plain 200 */
protected abstract JsonValue execPostItem(HttpAction action) ;
- // Must be an item
- protected abstract void execDelete(HttpAction action) ;
+
+ /** DELETE request */
+ protected void execDelete(HttpAction action) {
+ if ( isContainerAction(action) )
+ execDeleteContainer(action) ;
+ else
+ execDeleteItem(action) ;
+ ServletOps.success(action) ;
+ }
+
+ /** DELETE request on an item in the container */
+ protected void execDeleteContainer(HttpAction action) {
+ ServletOps.errorMethodNotAllowed(METHOD_DELETE, "DELETE applied to a container") ;
+ }
+ /** DELETE request on an item in the container */
+ protected void execDeleteItem(HttpAction action) {
+ ServletOps.errorMethodNotAllowed(METHOD_DELETE) ;
+ }
}
Modified: jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java?rev=1604729&r1=1604728&r2=1604729&view=diff
==============================================================================
--- jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java (original)
+++ jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java Mon Jun 23 09:54:45 2014
@@ -31,7 +31,6 @@ import javax.servlet.http.HttpServletReq
import javax.servlet.http.HttpServletResponse ;
import org.apache.jena.atlas.io.IO ;
-import org.apache.jena.atlas.json.JSON ;
import org.apache.jena.atlas.json.JsonBuilder ;
import org.apache.jena.atlas.json.JsonValue ;
import org.apache.jena.atlas.lib.InternalErrorException ;
@@ -66,8 +65,7 @@ import com.hp.hpl.jena.update.UpdateActi
import com.hp.hpl.jena.update.UpdateFactory ;
import com.hp.hpl.jena.update.UpdateRequest ;
-public class ActionDatasets extends ActionCtl {
- // XXX Use ActionContainerItem
+public class ActionDatasets extends ActionContainerItem {
private static Dataset system = SystemState.getDataset() ;
private static DatasetGraphTransaction systemDSG = SystemState.getDatasetGraph() ;
@@ -97,46 +95,9 @@ public class ActionDatasets extends Acti
doCommon(request, response);
}
-// @Override
-// protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-// doCommon(request, response);
-// }
-
- @Override
- protected void perform(HttpAction action) {
- String method = action.request.getMethod() ; // No need - guarentteed .toUpperCase(Locale.ROOT) ;
- if ( method.equals(METHOD_GET) )
- execGet(action) ;
- else if ( method.equals(METHOD_POST) )
- execPost(action) ;
- else if ( method.equals(METHOD_DELETE) )
- execDelete(action) ;
- else
- ServletOps.error(HttpSC.METHOD_NOT_ALLOWED_405) ;
- }
-
- protected void execGet(HttpAction action) {
- JsonValue v ;
- if ( isContainerAction(action) )
- v = execGetContainer(action) ;
- else
- v = execGetDataset(action) ;
-
- try {
- HttpServletResponse response = action.response ;
- ServletOutputStream out = response.getOutputStream() ;
- response.setContentType(WebContent.contentTypeJSON);
- response.setCharacterEncoding(WebContent.charsetUTF8) ;
- JSON.write(out, v) ;
- out.println() ;
- out.flush() ;
- ServletOps.success(action);
- } catch (IOException ex) { ServletOps.errorOccurred(ex) ; }
- }
-
// ---- GET : return details of dataset or datasets.
-
- private JsonValue execGetContainer(HttpAction action) {
+ @Override
+ protected JsonValue execGetContainer(HttpAction action) {
action.log.info(format("[%d] GET datasets", action.id)) ;
JsonBuilder builder = new JsonBuilder() ;
builder.startObject("D") ;
@@ -146,7 +107,8 @@ public class ActionDatasets extends Acti
return builder.build() ;
}
- private JsonValue execGetDataset(HttpAction action) {
+ @Override
+ protected JsonValue execGetItem(HttpAction action) {
action.log.info(format("[%d] GET dataset %s", action.id, action.getDatasetName())) ;
JsonBuilder builder = new JsonBuilder() ;
DataAccessPoint dsDesc = DataAccessPointRegistry.get().get(action.getDatasetName()) ;
@@ -158,62 +120,8 @@ public class ActionDatasets extends Acti
// ---- POST
- // POST /$/datasets/ -- to the container -> register new dataset
- // POST /$/datasets/name -- change something about an existing dataset
-
- protected void execPost(HttpAction action) {
- if ( isContainerAction(action) )
- execPostContainer(action) ;
- else
- execPostDataset(action) ;
- }
-
- private void execPostDataset(HttpAction action) {
- String name = action.getDatasetName() ;
- if ( name == null )
- name = "''" ;
- action.log.info(format("[%d] POST dataset %s", action.id, name)) ;
-
- if ( action.getDataAccessPoint() == null )
- ServletOps.errorNotFound("Not found: dataset "+action.getDatasetName());
-
- DataService dSrv = action.getDataService() ;
- if ( dSrv == null )
- // If not set explicitly, take from DataAccessPoint
- dSrv = action.getDataAccessPoint().getDataService() ;
-
- String s = action.request.getParameter("state") ;
- if ( s == null || s.isEmpty() )
- ServletOps.errorBadRequest("No state change given") ;
-
- // setDatasetState is a transaction on the persistent state of the server.
- if ( s.equalsIgnoreCase("active") ) {
- action.log.info(format("[%d] REBUILD DATASET %s", action.id, name)) ;
- setDatasetState(name, FusekiVocab.stateActive) ;
- dSrv.goActive() ;
- // DatasetGraph dsg = ???? ;
- //dSrv.activate(dsg) ;
- //dSrv.activate() ;
- } else if ( s.equalsIgnoreCase("offline") ) {
- action.log.info(format("[%d] OFFLINE DATASET %s", action.id, name)) ;
- DataAccessPoint access = action.getDataAccessPoint() ;
- //access.goOffline() ;
- dSrv.goOffline() ; // Affects the target of the name.
- setDatasetState(name, FusekiVocab.stateOffline) ;
- //dSrv.offline() ;
- } else if ( s.equalsIgnoreCase("unlink") ) {
- action.log.info(format("[%d] UNLINK ACCESS NAME %s", action.id, name)) ;
- DataAccessPoint access = action.getDataAccessPoint() ;
- ServletOps.errorNotImplemented("unlink: dataset"+action.getDatasetName());
- //access.goOffline() ;
- // Registry?
- }
- else
- ServletOps.errorBadRequest("State change operation '"+s+"' not recognized");
- ServletOps.success(action) ;
- }
-
- private void execPostContainer(HttpAction action) {
+ @Override
+ protected JsonValue execPostContainer(HttpAction action) {
JenaUUID uuid = JenaUUID.generate() ;
String newURI = uuid.asURI() ;
Node gn = NodeFactory.createURI(newURI) ;
@@ -225,7 +133,7 @@ public class ActionDatasets extends Acti
try {
Model model = system.getNamedModel(gn.getURI()) ;
StreamRDF dest = StreamRDFLib.graph(model.getGraph()) ;
-
+
if ( WebContent.isHtmlForm(ct) )
assemblerFromForm(action, dest) ;
else if ( WebContent.isMultiPartForm(ct) )
@@ -258,7 +166,7 @@ public class ActionDatasets extends Acti
if ( object.getDatatype() != null && ! object.getDatatype().equals(XSDDatatype.XSDstring) )
action.log.warn(format("[%d] Service name '%s' is not a string", action.id, FmtUtils.stringForRDFNode(object)));
-
+
String datasetName = object.getLexicalForm() ;
String datasetPath = DataAccessPoint.canonical(datasetName) ;
action.log.info(format("[%d] Create database : name = %s", action.id, datasetPath)) ;
@@ -285,8 +193,55 @@ public class ActionDatasets extends Acti
if ( ! committed ) system.abort() ;
system.end() ;
}
+ return null ;
}
-
+
+ @Override
+ protected JsonValue execPostItem(HttpAction action) {
+ String name = action.getDatasetName() ;
+ if ( name == null )
+ name = "''" ;
+ action.log.info(format("[%d] POST dataset %s", action.id, name)) ;
+
+ if ( action.getDataAccessPoint() == null )
+ ServletOps.errorNotFound("Not found: dataset "+action.getDatasetName());
+
+ DataService dSrv = action.getDataService() ;
+ if ( dSrv == null )
+ // If not set explicitly, take from DataAccessPoint
+ dSrv = action.getDataAccessPoint().getDataService() ;
+
+ String s = action.request.getParameter("state") ;
+ if ( s == null || s.isEmpty() )
+ ServletOps.errorBadRequest("No state change given") ;
+
+ // setDatasetState is a transaction on the persistent state of the server.
+ if ( s.equalsIgnoreCase("active") ) {
+ action.log.info(format("[%d] REBUILD DATASET %s", action.id, name)) ;
+ setDatasetState(name, FusekiVocab.stateActive) ;
+ dSrv.goActive() ;
+ // DatasetGraph dsg = ???? ;
+ //dSrv.activate(dsg) ;
+ //dSrv.activate() ;
+ } else if ( s.equalsIgnoreCase("offline") ) {
+ action.log.info(format("[%d] OFFLINE DATASET %s", action.id, name)) ;
+ DataAccessPoint access = action.getDataAccessPoint() ;
+ //access.goOffline() ;
+ dSrv.goOffline() ; // Affects the target of the name.
+ setDatasetState(name, FusekiVocab.stateOffline) ;
+ //dSrv.offline() ;
+ } else if ( s.equalsIgnoreCase("unlink") ) {
+ action.log.info(format("[%d] UNLINK ACCESS NAME %s", action.id, name)) ;
+ DataAccessPoint access = action.getDataAccessPoint() ;
+ ServletOps.errorNotImplemented("unlink: dataset"+action.getDatasetName());
+ //access.goOffline() ;
+ // Registry?
+ }
+ else
+ ServletOps.errorBadRequest("State change operation '"+s+"' not recognized");
+ return null ;
+ }
+
private void assemblerFromBody(HttpAction action, StreamRDF dest) {
bodyAsGraph(action, dest) ;
}
@@ -318,7 +273,8 @@ public class ActionDatasets extends Acti
// ---- DELETE
- protected void execDelete(HttpAction action) {
+ @Override
+ protected void execDeleteItem(HttpAction action) {
// Does not exist?
String name = action.getDatasetName() ;
if ( name == null )
Modified: jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ServletOps.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ServletOps.java?rev=1604729&r1=1604728&r2=1604729&view=diff
==============================================================================
--- jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ServletOps.java (original)
+++ jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ServletOps.java Mon Jun 23 09:54:45 2014
@@ -114,14 +114,22 @@ public class ServletOps {
}
public static void errorMethodNotAllowed(String method) {
- error(HttpSC.METHOD_NOT_ALLOWED_405, "HTTP method not allowed: " + method) ;
+ errorMethodNotAllowed(method, "HTTP method not allowed: " + method) ;
}
+ public static void errorMethodNotAllowed(String method, String msg) {
+ error(HttpSC.METHOD_NOT_ALLOWED_405, msg) ;
+ }
+
+ public static void errorForbidden() {
+ error(HttpSC.FORBIDDEN_403, "Forbidden") ;
+ }
+
public static void errorForbidden(String msg) {
if ( msg != null )
error(HttpSC.FORBIDDEN_403, msg) ;
else
- error(HttpSC.FORBIDDEN_403, "Forbidden") ;
+ errorForbidden() ;
}
public static void error(int statusCode) {