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/01/22 16:47:09 UTC

svn commit: r1560388 - in /jena/branches/jena-fuseki-new-ui: ./ docs/ src-dev/dev/ src/main/java/org/apache/jena/fuseki/ src/main/java/org/apache/jena/fuseki/mgt/ src/main/java/org/apache/jena/fuseki/server/ src/main/java/org/apache/jena/fuseki/servlets/

Author: andy
Date: Wed Jan 22 15:47:08 2014
New Revision: 1560388

URL: http://svn.apache.org/r1560388
Log:
Reference count operations so that shutdown can happen when it's quiet.

Added:
    jena/branches/jena-fuseki-new-ui/ds-offline
      - copied, changed from r1558569, jena/branches/jena-fuseki-new-ui/ds-dormant
Removed:
    jena/branches/jena-fuseki-new-ui/classpath-jetty-8.1.11
    jena/branches/jena-fuseki-new-ui/classpath-jetty-9.1.0
    jena/branches/jena-fuseki-new-ui/ds-dormant
Modified:
    jena/branches/jena-fuseki-new-ui/docs/fuseki-protocol.md
    jena/branches/jena-fuseki-new-ui/ds-active
    jena/branches/jena-fuseki-new-ui/ds-get
    jena/branches/jena-fuseki-new-ui/src-dev/dev/RunFuseki2.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/FusekiCmd.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionCtl.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionSPARQL.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/REST_Quads_R.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_GSP_R.java

Modified: jena/branches/jena-fuseki-new-ui/docs/fuseki-protocol.md
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/docs/fuseki-protocol.md?rev=1560388&r1=1560387&r2=1560388&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/docs/fuseki-protocol.md (original)
+++ jena/branches/jena-fuseki-new-ui/docs/fuseki-protocol.md Wed Jan 22 15:47:08 2014
@@ -55,24 +55,14 @@ Pattern: `/$/server`
 
 The URL `/$/server` returns details about the server and it's current status in JSON.
 
-@@details of JSON format.
+_@@details of JSON format._
 
 ## Datasets and Services
 Pattern: `/$/datasets/`
 
 `/$/datasets/` is a container representing all datasets present in the server. 
-`/$/datasets/*{name}*` names a specific dataset.
-
-### Backup 
-Pattern: `/$/backup/*{name}*`
-
-> _Not implemented_
-
-This operation initiates a backup and returns. It returns, via the Location head (@@?)
-the location of a resource that can be used to monitor the backup operation. Backup
-operations run asynchronously and may take a long time.
-
-Backups are written to the sever local directory 'backups' as  gzip-compressed N-Quads files.
+`/$/datasets/*{name}*` names a specific dataset.  As a container, operations on items
+in the container, via `GET`, `POST` and `DELETE`, operate on specific dataset.
 
 ### Adding a Dataset and its Services.
 
@@ -98,7 +88,7 @@ For in-memory datasets, the dataset is r
 #### Templates
 
 A short-cut form for some common set-ups is provided by <tt>POST</tt>ing with
-the following parameters (query string or HTMl form):
+the following parameters (query string or HTML form):
 
 | Parameter |                 |
 |-----------|-----------------|
@@ -137,6 +127,17 @@ any persistent data can be manipulated o
 
 Datasets are initially "active".  The transition from "active" to "offline" is graceful - all outstanding requests are completed.
 
+### Backup 
+Pattern: `/$/backup/*{name}*`
+
+> _Not implemented_
+
+This operation initiates a backup and returns. It returns, via the Location head (@@?)
+the location of a resource that can be used to monitor the backup operation. Backup
+operations run asynchronously and may take a long time.
+
+Backups are written to the sever local directory 'backups' as  gzip-compressed N-Quads files.
+
 ## Statistics
 > **`/$/stats/*{name}*`**
 

Modified: jena/branches/jena-fuseki-new-ui/ds-active
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/ds-active?rev=1560388&r1=1560387&r2=1560388&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/ds-active (original)
+++ jena/branches/jena-fuseki-new-ui/ds-active Wed Jan 22 15:47:08 2014
@@ -1,3 +1,3 @@
 #!/bin/bash
 
-curl -XPOST 'http://localhost:3030/$/datasets/NEW?status=active'
\ No newline at end of file
+curl -XPOST 'http://localhost:3030/$/datasets/NEW?state=active'
\ No newline at end of file

Modified: jena/branches/jena-fuseki-new-ui/ds-get
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/ds-get?rev=1560388&r1=1560387&r2=1560388&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/ds-get (original)
+++ jena/branches/jena-fuseki-new-ui/ds-get Wed Jan 22 15:47:08 2014
@@ -1,3 +1,3 @@
 #!/bin/bash
 
-wget -S -O- -q 'http://localhost:3030/NEW/query?query=ASK{}'
\ No newline at end of file
+wget -S -O- -q 'http://localhost:3030/NEW/query?query=ASK{}'

Copied: jena/branches/jena-fuseki-new-ui/ds-offline (from r1558569, jena/branches/jena-fuseki-new-ui/ds-dormant)
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/ds-offline?p2=jena/branches/jena-fuseki-new-ui/ds-offline&p1=jena/branches/jena-fuseki-new-ui/ds-dormant&r1=1558569&r2=1560388&rev=1560388&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/ds-dormant (original)
+++ jena/branches/jena-fuseki-new-ui/ds-offline Wed Jan 22 15:47:08 2014
@@ -1,3 +1,3 @@
 #!/bin/bash
 
-curl -XPOST 'http://localhost:3030/$/datasets/NEW?status=dormant'
\ No newline at end of file
+curl -XPOST 'http://localhost:3030/$/datasets/NEW?state=offline'
\ No newline at end of file

Modified: jena/branches/jena-fuseki-new-ui/src-dev/dev/RunFuseki2.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src-dev/dev/RunFuseki2.java?rev=1560388&r1=1560387&r2=1560388&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src-dev/dev/RunFuseki2.java (original)
+++ jena/branches/jena-fuseki-new-ui/src-dev/dev/RunFuseki2.java Wed Jan 22 15:47:08 2014
@@ -61,7 +61,7 @@ public class RunFuseki2
         
         FusekiCmd.main(
                      //  "-v",
-                     "--update", "--memtdb", "--mgtPort=0", "/ds"
+                     "--update", "--memtdb", "--mgt", "/ds"
                      //"--update", "--loc="+tmpdir+"DB", "--set=tdb:unionDefaultGraph=true", "/ds"
                      //"--update", "--mem", "/ds"
 

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/FusekiCmd.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/FusekiCmd.java?rev=1560388&r1=1560387&r2=1560388&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/FusekiCmd.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/FusekiCmd.java Wed Jan 22 15:47:08 2014
@@ -353,7 +353,7 @@ public class FusekiCmd extends CmdARQ {
         }
 
         if ( ! contains(argMgt) && contains(argMgtPort) )
-            Fuseki.configLog.warn("Management port specified by admin fucntions not enabled with --"+argMgt.getKeyName()) ;
+            Fuseki.configLog.warn("Management port specified by admin functions not enabled with --"+argMgt.getKeyName()) ;
         
         if ( contains(argMgt) ) {
             jettyServerConfig.mgtPort = 0 ;

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionCtl.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionCtl.java?rev=1560388&r1=1560387&r2=1560388&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionCtl.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionCtl.java Wed Jan 22 15:47:08 2014
@@ -60,6 +60,10 @@ public abstract class ActionCtl extends 
         // if /*
         //    request.getPathInfo() ; otherwise it's null.
         
+        // PathInfo is after the servlet name. 
+        String x1 = action.request.getServletPath() ;
+        String x2 = action.request.getPathInfo() ;
+        
         String pathInfo = action.request.getPathInfo() ;
         if ( pathInfo == null || pathInfo.isEmpty() || pathInfo.equals("/") )
             // Includes calling as a container. 

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java?rev=1560388&r1=1560387&r2=1560388&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java Wed Jan 22 15:47:08 2014
@@ -177,8 +177,9 @@ public class ActionDatasets extends Acti
             name = "" ;
         action.log.info(format("[%d] POST dataset %s", action.id, name)) ;
         
-        if ( action.dsRef.getDataset() == null )
-            ServletOps.errorNotFound("Not found: dataset "+action.dsRef.name);
+//        if ( action.dsRef.getDataset() == null )
+//            ServletOps.errorNotFound("Not found: dataset "+action.dsRef.name);
+        
         DatasetRef dsDesc = action.dsRef ;
         String s = action.request.getParameter("state") ;
         if ( s == null || s.isEmpty() )
@@ -186,7 +187,10 @@ public class ActionDatasets extends Acti
 
         // setDatasetState is a transaction on the persistent state of the server. 
         if ( s.equalsIgnoreCase("active") ) {
-            setDatasetState(name, FusekiVocab.stateActive) ;        
+            action.log.info(format("[%d] REBUILD DATASET %s", action.id, name)) ;
+            setDatasetState(name, FusekiVocab.stateActive) ;
+            // DatasetGraph dsg = ???? ;
+            //dsDesc.activate(dsg) ; 
             dsDesc.activate() ;
         } else if ( s.equalsIgnoreCase("offline") ) {
             setDatasetState(name, FusekiVocab.stateOffline) ;        

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java?rev=1560388&r1=1560387&r2=1560388&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java Wed Jan 22 15:47:08 2014
@@ -18,13 +18,19 @@
 
 package org.apache.jena.fuseki.server;
 
-import static org.apache.jena.fuseki.server.DatasetStatus.* ;
+import static org.apache.jena.fuseki.server.DatasetStatus.ACTIVE ;
+import static org.apache.jena.fuseki.server.DatasetStatus.CLOSING ;
+import static org.apache.jena.fuseki.server.DatasetStatus.OFFLINE ;
+import static org.apache.jena.fuseki.server.DatasetStatus.UNINITIALIZED ;
+import static java.lang.String.format ;
 
 import java.util.* ;
+import java.util.concurrent.atomic.AtomicBoolean ;
 import java.util.concurrent.atomic.AtomicLong ;
 
 import org.apache.jena.fuseki.Fuseki ;
 import org.apache.jena.fuseki.FusekiException ;
+import org.apache.jena.fuseki.servlets.HttpAction ;
 
 import com.hp.hpl.jena.query.ReadWrite ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
@@ -53,6 +59,10 @@ public class DatasetRef implements Datas
     @Override
     public  CounterSet getCounters() { return counters ; }
     
+    private final AtomicLong    requestCounter          = new AtomicLong(0) ;   
+    private final AtomicBoolean offlineInProgress       = new AtomicBoolean(false) ;
+    private final AtomicBoolean offline                 = new AtomicBoolean(false) ;
+    
     private Map<String, ServiceRef> endpoints   = new HashMap<String, ServiceRef>() ;
     private List<ServiceRef> serviceRefs        = new ArrayList<ServiceRef>() ;
     private volatile DatasetStatus state = UNINITIALIZED ;
@@ -76,6 +86,28 @@ public class DatasetRef implements Datas
         this.link = link ;
     }
     
+    public void startRequest(HttpAction action)  {
+        // Deny if going offline
+        if ( offline.get() ) {
+            Fuseki.serverLog.warn("Dataset "+name+" is offline"); 
+        }
+        
+        requestCounter.incrementAndGet() ;
+    }
+
+    public void finishRequest(HttpAction action) { 
+        long x = requestCounter.decrementAndGet() ;
+        action.log.info(format("[%d] Action finishRequest : now %d", action.id, x)) ;
+        // TRANSITION ONCE
+        
+        if ( x == 0 && offlineInProgress.get() ) {
+            // No operations should be coming in so we're the only one here.
+            // caveat management operations.
+            shutdown() ;
+            offlineInProgress.set(false) ;
+        }
+    }
+
     public boolean isActive() { return getState() == ACTIVE ; }
     
     /** Follow links */
@@ -94,8 +126,9 @@ public class DatasetRef implements Datas
         return here ;
     }
      
-    
+    @Deprecated
     public DatasetStatus getStatus()                    { return state ; }
+    @Deprecated
     public void setStatus(DatasetStatus newStatus)      { setState(newStatus) ; }
     
     private DatasetStatus getState() {
@@ -130,10 +163,10 @@ public class DatasetRef implements Datas
             initServices() ;    
         setState(OFFLINE) ;
         
-        if ( dataset instanceof DatasetGraphTransaction )
-            StoreConnection.release( ((DatasetGraphTransaction)dataset).getLocation() ) ;
-        else 
-            dataset.close() ;
+        offline.set(true) ;
+        offlineInProgress.set(true) ;
+        // finishRequest will perform the shutdown. 
+        // XXX Check with the mgt operations that they have the right dsRef and hence this works. 
     }
 
     @Override public String toString() { return "DatasetRef:'"+name+"'" ; }  
@@ -219,12 +252,19 @@ public class DatasetRef implements Datas
     }
     
     private void shutdown() {
+        Fuseki.serverLog.info("Shutting down dataset: "+name);
+        
+//        if ( dataset instanceof DatasetGraphTransaction )
+//            StoreConnection.release( ((DatasetGraphTransaction)dataset).getLocation() ) ;
+//        else 
+//            dataset.close() ;
+
         dataset.close() ;
         if ( dataset instanceof DatasetGraphTransaction ) {
             DatasetGraphTransaction dsgtxn = (DatasetGraphTransaction)dataset ;
             StoreConnection.release(dsgtxn.getLocation()) ;
         }
-        setState(OFFLINE) ;
+        dataset = null ; 
     }
     
     //TODO Need to be able to set this from the config file.  
@@ -249,6 +289,7 @@ public class DatasetRef implements Datas
         checkShutdown() ;
     }
     
+    // DatasetMXBean
     @Override
     public String getName()     { return name ; }
 

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java?rev=1560388&r1=1560387&r2=1560388&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java Wed Jan 22 15:47:08 2014
@@ -114,9 +114,13 @@ public abstract class ActionBase extends
     }
 
     // Default start/finish steps. 
-    protected void startRequest(HttpAction action) { }
+    protected final void startRequest(HttpAction action) {
+        action.startRequest() ;
+    }
     
-    protected void finishRequest(HttpAction action) { }
+    protected final void finishRequest(HttpAction action) {
+        action.finishRequest() ;
+    }
     
     private void archiveHttpAction(HttpAction action) {
         action.minimize() ;

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java?rev=1560388&r1=1560387&r2=1560388&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java Wed Jan 22 15:47:08 2014
@@ -20,6 +20,10 @@ package org.apache.jena.fuseki.servlets;
 
 import javax.servlet.http.HttpServletRequest ;
 
+import org.apache.jena.atlas.web.AcceptList ;
+import org.apache.jena.atlas.web.MediaType ;
+import org.apache.jena.fuseki.DEF ;
+import org.apache.jena.fuseki.conneg.ConNeg ;
 import org.apache.jena.fuseki.server.DatasetRef ;
 import org.apache.jena.fuseki.server.DatasetRegistry ;
 
@@ -131,5 +135,28 @@ public class ActionLib {
         //log.info("removeContext: uri = "+uri+" contextPath="+contextPath+ "--> x="+x) ;
         return x ;
     }
+
+    /** Negotiate the content-type and set the response headers */ 
+    public static MediaType contentNegotation(HttpAction action, AcceptList myPrefs,
+                                              MediaType defaultMediaType) {
+        MediaType mt = ConNeg.chooseContentType(action.request, myPrefs, defaultMediaType) ;
+        if ( mt == null )
+            return null ;
+        if ( mt.getContentType() != null )
+            action.response.setContentType(mt.getContentType()) ;
+        if ( mt.getCharset() != null )
+            action.response.setCharacterEncoding(mt.getCharset()) ;
+        return mt ;
+    }
+    
+    /** Negotiate the content-type for an RDF triples syntax and set the response headers */ 
+    public static MediaType contentNegotationRDF(HttpAction action) {
+        return contentNegotation(action, DEF.rdfOffer, DEF.acceptRDFXML) ;
+    }
+
+    /** Negotiate the content-type for an RDF quads syntax and set the response headers */ 
+    public static MediaType contentNegotationQuads(HttpAction action) {
+        return contentNegotation(action, DEF.quadsOffer, DEF.acceptNQuads) ;
+    }
 }
 

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionSPARQL.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionSPARQL.java?rev=1560388&r1=1560387&r2=1560388&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionSPARQL.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionSPARQL.java Wed Jan 22 15:47:08 2014
@@ -83,29 +83,33 @@ public abstract class ActionSPARQL exten
     {
         incCounter(action.dsRef, Requests) ;
         incCounter(action.srvRef, Requests) ;
-
+        
         startRequest(action) ;
         try {
-            validate(action) ;
-        } catch (ActionErrorException ex) {
-            incCounter(action.dsRef,RequestsBad) ;
-            incCounter(action.srvRef, RequestsBad) ;
-            throw ex ;
-        }
+            // Either exit this via "bad request" on validation
+            // or in 
+            try {
+                validate(action) ;
+            } catch (ActionErrorException ex) {
+                incCounter(action.dsRef,RequestsBad) ;
+                incCounter(action.srvRef, RequestsBad) ;
+                throw ex ;
+            }
 
-        try {
-            perform(action) ;
-            // Success
-            incCounter(action.srvRef, RequestsGood) ;
-            incCounter(action.dsRef, RequestsGood) ;
-        } catch (ActionErrorException ex) {
-            incCounter(action.srvRef, RequestsBad) ;
-            incCounter(action.dsRef, RequestsBad) ;
-            throw ex ;
-        } catch (QueryCancelledException ex) {
-            incCounter(action.srvRef, RequestsBad) ;
-            incCounter(action.dsRef, RequestsBad) ;
-            throw ex ;
+            try {
+                perform(action) ;
+                // Success
+                incCounter(action.srvRef, RequestsGood) ;
+                incCounter(action.dsRef, RequestsGood) ;
+            } catch (ActionErrorException ex) {
+                incCounter(action.srvRef, RequestsBad) ;
+                incCounter(action.dsRef, RequestsBad) ;
+                throw ex ;
+            } catch (QueryCancelledException ex) {
+                incCounter(action.srvRef, RequestsBad) ;
+                incCounter(action.dsRef, RequestsBad) ;
+                throw ex ;
+            }
         } finally {
             finishRequest(action) ;
         }

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java?rev=1560388&r1=1560387&r2=1560388&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java Wed Jan 22 15:47:08 2014
@@ -28,10 +28,7 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse ;
 
 import org.apache.jena.atlas.logging.Log ;
-import org.apache.jena.atlas.web.MediaType ;
-import org.apache.jena.fuseki.DEF ;
 import org.apache.jena.fuseki.FusekiException ;
-import org.apache.jena.fuseki.conneg.ConNeg ;
 import org.apache.jena.fuseki.server.DatasetRef ;
 import org.apache.jena.fuseki.server.ServiceRef ;
 import org.slf4j.Logger ;
@@ -210,7 +207,11 @@ public class HttpAction
         transactional.end() ;
         activeDSG = null ;
     }
-   
+
+    public void startRequest()  { if ( dsRef != null ) dsRef.startRequest(this) ; }
+
+    public void finishRequest() { if ( dsRef != null ) dsRef.finishRequest(this) ; }
+    
     public final DatasetGraph getActiveDSG() {
         return activeDSG ;
     }
@@ -259,19 +260,4 @@ public class HttpAction
     public void sync() {
         SystemARQ.sync(dsg) ;
     }
-
-    public static MediaType contentNegotationRDF(HttpAction action) {
-        MediaType mt = ConNeg.chooseContentType(action.request, DEF.rdfOffer, DEF.acceptRDFXML) ;
-        if ( mt == null )
-            return null ;
-        if ( mt.getContentType() != null )
-            action.response.setContentType(mt.getContentType()) ;
-        if ( mt.getCharset() != null )
-            action.response.setCharacterEncoding(mt.getCharset()) ;
-        return mt ;
-    }
-
-    public static MediaType contentNegotationQuads(HttpAction action) {
-        return ConNeg.chooseContentType(action.request, DEF.quadsOffer, DEF.acceptNQuads) ;
-    }
 }

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/REST_Quads_R.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/REST_Quads_R.java?rev=1560388&r1=1560387&r2=1560388&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/REST_Quads_R.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/REST_Quads_R.java Wed Jan 22 15:47:08 2014
@@ -46,7 +46,7 @@ public class REST_Quads_R extends REST_Q
 
     @Override
     protected void doGet(HttpAction action) {
-        MediaType mediaType = HttpAction.contentNegotationQuads(action) ;
+        MediaType mediaType = ActionLib.contentNegotationQuads(action) ;
         ServletOutputStream output ;
         try {
             output = action.response.getOutputStream() ;
@@ -90,7 +90,7 @@ public class REST_Quads_R extends REST_Q
     protected void doHead(HttpAction action) {
         action.beginRead() ;
         try {
-            MediaType mediaType = HttpAction.contentNegotationQuads(action) ;
+            MediaType mediaType = ActionLib.contentNegotationQuads(action) ;
             ServletOps.success(action) ;
         } finally {
             action.endRead() ;

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_GSP_R.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_GSP_R.java?rev=1560388&r1=1560387&r2=1560388&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_GSP_R.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_GSP_R.java Wed Jan 22 15:47:08 2014
@@ -46,7 +46,7 @@ public class SPARQL_GSP_R extends SPARQL
     {
         // Assume success - do the set up before grabbing the lock.
         // Sets content type.
-        MediaType mediaType = HttpAction.contentNegotationRDF(action) ;
+        MediaType mediaType = ActionLib.contentNegotationRDF(action) ;
         
         ServletOutputStream output ;
         try { output = action.response.getOutputStream() ; }
@@ -102,7 +102,7 @@ public class SPARQL_GSP_R extends SPARQL
                 ServletOps.successNotFound(action) ;
                 return ;
             }
-            MediaType mediaType = HttpAction.contentNegotationRDF(action) ;
+            MediaType mediaType = ActionLib.contentNegotationRDF(action) ;
             ServletOps.success(action) ;
         } finally { action.endRead() ; }
     }