Author: sallen
Date: Fri Feb 1 21:13:15 2013
New Revision: 1441632
URL: http://svn.apache.org/viewvc?rev=1441632&view=rev
Log:
Simplified the Using query parameters for update requests via Fuseki.
Added:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UsingUpdateSink.java
Removed:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/AbstractUpdateSink.java
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineBase.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineFactory.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineMain.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorStreamingBase.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateRequestSink.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateVisitorSink.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateAction.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateFactory.java
jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/modify/UpdateEngineSDB.java
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/modify/UpdateEngineTDB.java
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineBase.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineBase.java?rev=1441632&r1=1441631&r2=1441632&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineBase.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineBase.java
Fri Feb 1 21:13:15 2013
@@ -36,7 +36,6 @@ public abstract class UpdateEngineBase i
protected final Context context ;
protected final Binding startBinding ;
protected final UpdateRequest request ;
- protected final UsingList usingList ;
public UpdateEngineBase(GraphStore graphStore,
UpdateRequest request,
@@ -54,16 +53,13 @@ public abstract class UpdateEngineBase i
}
this.startBinding = input ;
this.context.put(ARQConstants.sysCurrentUpdateRequest, request) ;
- this.usingList = null;
}
public UpdateEngineBase(GraphStore graphStore,
- UsingList usingList,
Binding input,
Context context)
{
this.graphStore = graphStore ;
- this.usingList = usingList ;
this.context = setupContext(context, graphStore) ;
if ( input == null )
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineFactory.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineFactory.java?rev=1441632&r1=1441631&r2=1441632&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineFactory.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineFactory.java
Fri Feb 1 21:13:15 2013
@@ -40,5 +40,5 @@ public interface UpdateEngineFactory
public boolean acceptStreaming(GraphStore graphStore, Context context) ;
/** Create the streaming engine - having returned true to accept, should
not fail */
- public UpdateEngineStreaming createStreaming(UsingList usingList,
GraphStore graphStore, Binding inputBinding, Context context);
+ public UpdateEngineStreaming createStreaming(GraphStore graphStore,
Binding inputBinding, Context context);
}
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineMain.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineMain.java?rev=1441632&r1=1441631&r2=1441632&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineMain.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineMain.java
Fri Feb 1 21:13:15 2013
@@ -54,9 +54,9 @@ public class UpdateEngineMain extends Up
* @param usingList Externally supplied using
* @param context Execution Context
*/
- public UpdateEngineMain(GraphStore graphStore, UsingList usingList,
Binding initialBinding, Context context)
+ public UpdateEngineMain(GraphStore graphStore, Binding initialBinding,
Context context)
{
- super(graphStore, usingList, initialBinding, context) ;
+ super(graphStore, initialBinding, context) ;
}
/**
@@ -88,7 +88,7 @@ public class UpdateEngineMain extends Up
@Override
public UpdateSink getUpdateSink()
{
- return new UpdateVisitorSink(this.prepareWorker(), usingList);
+ return new UpdateVisitorSink(this.prepareWorker());
}
/**
@@ -120,9 +120,9 @@ public class UpdateEngineMain extends Up
}
@Override
- public UpdateEngineStreaming createStreaming(UsingList usingList,
GraphStore graphStore, Binding initialBinding, Context context)
+ public UpdateEngineStreaming createStreaming(GraphStore graphStore,
Binding initialBinding, Context context)
{
- return new UpdateEngineMain(graphStore, usingList, initialBinding,
context);
+ return new UpdateEngineMain(graphStore, initialBinding, context);
}
} ;
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorStreamingBase.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorStreamingBase.java?rev=1441632&r1=1441631&r2=1441632&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorStreamingBase.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorStreamingBase.java
Fri Feb 1 21:13:15 2013
@@ -37,12 +37,12 @@ public class UpdateProcessorStreamingBas
protected final UpdateEngineStreaming proc;
- public UpdateProcessorStreamingBase(UsingList usingList, GraphStore
graphStore, Context context, UpdateEngineFactory factory)
+ public UpdateProcessorStreamingBase(GraphStore graphStore, Context
context, UpdateEngineFactory factory)
{
this.graphStore = graphStore ;
this.context = Context.setupContext(context, graphStore) ;
- proc = factory.createStreaming(usingList, graphStore, initialBinding,
context) ;
+ proc = factory.createStreaming(graphStore, initialBinding, context) ;
}
@Override
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateRequestSink.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateRequestSink.java?rev=1441632&r1=1441631&r2=1441632&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateRequestSink.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateRequestSink.java
Fri Feb 1 21:13:15 2013
@@ -26,20 +26,19 @@ import com.hp.hpl.jena.sparql.modify.req
import com.hp.hpl.jena.update.Update ;
import com.hp.hpl.jena.update.UpdateRequest ;
-public class UpdateRequestSink extends AbstractUpdateSink implements UpdateSink
+public class UpdateRequestSink implements UpdateSink
{
final UpdateRequest updateRequest;
- public UpdateRequestSink(UpdateRequest updateRequest, UsingList usingList)
+ public UpdateRequestSink(UpdateRequest updateRequest)
{
- super(usingList);
this.updateRequest = updateRequest;
}
@Override
- public void doSend(Update item)
+ public void send(Update update)
{
- updateRequest.add(item);
+ updateRequest.add(update);
}
@Override
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateVisitorSink.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateVisitorSink.java?rev=1441632&r1=1441631&r2=1441632&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateVisitorSink.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateVisitorSink.java
Fri Feb 1 21:13:15 2013
@@ -23,14 +23,13 @@ import com.hp.hpl.jena.sparql.modify.req
import com.hp.hpl.jena.sparql.modify.request.UpdateVisitor ;
import com.hp.hpl.jena.update.Update ;
-public class UpdateVisitorSink extends AbstractUpdateSink implements UpdateSink
+public class UpdateVisitorSink implements UpdateSink
{
private final Prologue prologue;
private final UpdateVisitor worker;
- public UpdateVisitorSink(UpdateVisitor worker, UsingList usingList)
+ public UpdateVisitorSink(UpdateVisitor worker)
{
- super(usingList);
this.prologue = new Prologue();
this.worker = worker;
}
@@ -42,7 +41,7 @@ public class UpdateVisitorSink extends A
}
@Override
- public void doSend(Update update)
+ public void send(Update update)
{
update.visit(worker);
}
Added:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UsingUpdateSink.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UsingUpdateSink.java?rev=1441632&view=auto
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UsingUpdateSink.java
(added)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UsingUpdateSink.java
Fri Feb 1 21:13:15 2013
@@ -0,0 +1,93 @@
+/*
+ * 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.sparql.modify;
+
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.sparql.core.Prologue ;
+import com.hp.hpl.jena.sparql.modify.request.QuadDataAccSink ;
+import com.hp.hpl.jena.sparql.modify.request.UpdateWithUsing ;
+import com.hp.hpl.jena.update.Update ;
+import com.hp.hpl.jena.update.UpdateException ;
+
+/**
+ * Adds using clauses from the UsingList to UpdateWithUsing operations; will
throw an UpdateException if the modify operation already contains a using
clause.
+ */
+public class UsingUpdateSink implements UpdateSink
+{
+ private final UpdateSink sink;
+ private final UsingList usingList;
+
+ public UsingUpdateSink(UpdateSink sink, UsingList usingList)
+ {
+ this.sink = sink;
+ this.usingList = usingList;
+ }
+
+ @Override
+ public void send(Update update)
+ {
+ // ---- check USING/USING NAMED/WITH not used.
+ // ---- update request to have USING/USING NAMED
+ if ( null != usingList && usingList.usingIsPresent() )
+ {
+ if ( update instanceof UpdateWithUsing )
+ {
+ UpdateWithUsing upu = (UpdateWithUsing)update ;
+ if ( upu.getUsing().size() != 0 || upu.getUsingNamed().size()
!= 0 || upu.getWithIRI() != null )
+ throw new UpdateException("SPARQL Update: Protocol
using-graph-uri or using-named-graph-uri present where update request has
USING, USING NAMED or WITH") ;
+ for ( Node node : usingList.getUsing() )
+ upu.addUsing(node) ;
+ for ( Node node : usingList.getUsingNamed() )
+ upu.addUsingNamed(node) ;
+ }
+ }
+
+ sink.send(update);
+ }
+
+ @Override
+ public QuadDataAccSink getInsertDataSink()
+ {
+ return sink.getInsertDataSink();
+ }
+
+ @Override
+ public QuadDataAccSink getDeleteDataSink()
+ {
+ return sink.getDeleteDataSink();
+ }
+
+ @Override
+ public void flush()
+ {
+ sink.flush();
+ }
+
+ @Override
+ public void close()
+ {
+ sink.close();
+ }
+
+ @Override
+ public Prologue getPrologue()
+ {
+ return sink.getPrologue();
+ }
+}
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateAction.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateAction.java?rev=1441632&r1=1441631&r2=1441632&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateAction.java
(original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateAction.java
Fri Feb 1 21:13:15 2013
@@ -32,6 +32,7 @@ import com.hp.hpl.jena.sparql.engine.bin
import com.hp.hpl.jena.sparql.engine.binding.BindingUtils ;
import com.hp.hpl.jena.sparql.lang.UpdateParser ;
import com.hp.hpl.jena.sparql.modify.UpdateSink ;
+import com.hp.hpl.jena.sparql.modify.UsingUpdateSink ;
import com.hp.hpl.jena.sparql.modify.UsingList ;
/** A class of forms for executing SPARQL Update operations.
@@ -514,12 +515,12 @@ public class UpdateAction
{
GraphStore graphStore = GraphStoreFactory.create(dataset);
- UpdateProcessorStreaming uProc =
UpdateExecutionFactory.createStreaming(usingList, graphStore) ;
+ UpdateProcessorStreaming uProc =
UpdateExecutionFactory.createStreaming(graphStore) ;
uProc.startRequest();
try
{
- UpdateSink sink = uProc.getUpdateSink();
+ UpdateSink sink = new UsingUpdateSink(uProc.getUpdateSink(),
usingList) ;
try
{
UpdateParser parser =
UpdateFactory.setupParser(sink.getPrologue(), baseURI, syntax) ;
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java?rev=1441632&r1=1441631&r2=1441632&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java
Fri Feb 1 21:13:15 2013
@@ -99,29 +99,18 @@ public class UpdateExecutionFactory
*/
public static UpdateProcessorStreaming createStreaming(GraphStore
graphStore)
{
- return createStreaming(new UsingList(), graphStore) ;
+ return createStreaming(graphStore, null, null) ;
}
/** Create an UpdateProcessor appropriate to the GraphStore, or null if no
available factory to make an UpdateProcessor
- * @param usingList
- * @param graphStore
- * @return UpdateProcessor or null
- */
- public static UpdateProcessorStreaming createStreaming(UsingList
usingList, GraphStore graphStore)
- {
- return createStreaming(usingList, graphStore, null, null) ;
- }
-
- /** Create an UpdateProcessor appropriate to the GraphStore, or null if no
available factory to make an UpdateProcessor
- * @param usingList
* @param graphStore
* @param initialBinding (may be null for none)
* @param context (null means use merge of global and graph store
context))
* @return UpdateProcessor or null
*/
- public static UpdateProcessorStreaming createStreaming(UsingList
usingList, GraphStore graphStore, Binding initialBinding, Context context)
+ public static UpdateProcessorStreaming createStreaming(GraphStore
graphStore, Binding initialBinding, Context context)
{
- return makeStreaming(usingList, graphStore, initialBinding, context) ;
+ return makeStreaming(graphStore, initialBinding, context) ;
}
/** Create an UpdateProcessor appropriate to the GraphStore, or null if no
available factory to make an UpdateProcessor
@@ -156,7 +145,7 @@ public class UpdateExecutionFactory
}
// Everything comes through one of these two make methods
- private static UpdateProcessorStreaming makeStreaming(UsingList usingList,
GraphStore graphStore, Binding initialBinding, Context context)
+ private static UpdateProcessorStreaming makeStreaming(GraphStore
graphStore, Binding initialBinding, Context context)
{
if ( context == null )
{
@@ -168,7 +157,7 @@ public class UpdateExecutionFactory
if ( f == null )
return null ;
- UpdateProcessorStreamingBase uProc = new
UpdateProcessorStreamingBase(usingList, graphStore, context, f) ;
+ UpdateProcessorStreamingBase uProc = new
UpdateProcessorStreamingBase(graphStore, context, f) ;
if ( initialBinding != null )
uProc.setInitialBinding(initialBinding) ;
return uProc;
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateFactory.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateFactory.java?rev=1441632&r1=1441631&r2=1441632&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateFactory.java
(original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateFactory.java
Fri Feb 1 21:13:15 2013
@@ -32,6 +32,7 @@ import com.hp.hpl.jena.sparql.core.Prolo
import com.hp.hpl.jena.sparql.lang.UpdateParser ;
import com.hp.hpl.jena.sparql.modify.UpdateRequestSink ;
import com.hp.hpl.jena.sparql.modify.UpdateSink ;
+import com.hp.hpl.jena.sparql.modify.UsingUpdateSink ;
import com.hp.hpl.jena.sparql.modify.UsingList ;
public class UpdateFactory
@@ -86,7 +87,7 @@ public class UpdateFactory
private static void make(UpdateRequest request, String input, String
baseURI, Syntax syntax)
{
UpdateParser parser = setupParser(request, baseURI, syntax) ;
- parser.parse(new UpdateRequestSink(request, null), input) ;
+ parser.parse(new UpdateRequestSink(request), input) ;
}
/* Parse operations and add to an UpdateRequest */
@@ -271,7 +272,7 @@ public class UpdateFactory
private static void make(UpdateRequest request, UsingList usingList,
InputStream input, String baseURI, Syntax syntax)
{
UpdateParser parser = setupParser(request, baseURI, syntax) ;
- UpdateSink sink = new UpdateRequestSink(request, usingList) ;
+ UpdateSink sink = new UsingUpdateSink(new UpdateRequestSink(request),
usingList) ;
try
{
parser.parse(sink, input) ;
Modified:
jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/modify/UpdateEngineSDB.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/modify/UpdateEngineSDB.java?rev=1441632&r1=1441631&r2=1441632&view=diff
==============================================================================
---
jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/modify/UpdateEngineSDB.java
(original)
+++
jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/modify/UpdateEngineSDB.java
Fri Feb 1 21:13:15 2013
@@ -37,8 +37,8 @@ public class UpdateEngineSDB extends Upd
public UpdateEngineSDB(DatasetStoreGraph graphStore, UpdateRequest
request, Binding inputBinding, Context context)
{ super(graphStore, request, inputBinding, context) ; }
- public UpdateEngineSDB(DatasetStoreGraph graphStore, UsingList usingList,
Binding inputBinding, Context context)
- { super(graphStore, usingList, inputBinding, context) ; }
+ public UpdateEngineSDB(DatasetStoreGraph graphStore, Binding inputBinding,
Context context)
+ { super(graphStore, inputBinding, context) ; }
@Override
public void execute()
@@ -67,9 +67,9 @@ public class UpdateEngineSDB extends Upd
}
@Override
- public UpdateEngineStreaming createStreaming(UsingList usingList,
GraphStore graphStore, Binding initialBinding, Context context)
+ public UpdateEngineStreaming createStreaming(GraphStore
graphStore, Binding initialBinding, Context context)
{
- return new UpdateEngineSDB((DatasetStoreGraph)graphStore,
usingList, initialBinding, context);
+ return new UpdateEngineSDB((DatasetStoreGraph)graphStore,
initialBinding, context);
}
} ;
}
Modified:
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/modify/UpdateEngineTDB.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/modify/UpdateEngineTDB.java?rev=1441632&r1=1441631&r2=1441632&view=diff
==============================================================================
---
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/modify/UpdateEngineTDB.java
(original)
+++
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/modify/UpdateEngineTDB.java
Fri Feb 1 21:13:15 2013
@@ -35,8 +35,8 @@ public class UpdateEngineTDB extends Upd
public UpdateEngineTDB(DatasetGraphTDB graphStore, UpdateRequest request,
Binding inputBinding, Context context)
{ super(graphStore, request, inputBinding, context) ; }
- public UpdateEngineTDB(DatasetGraphTDB graphStore, UsingList usingList,
Binding inputBinding, Context context)
- { super(graphStore, usingList, inputBinding, context) ; }
+ public UpdateEngineTDB(DatasetGraphTDB graphStore, Binding inputBinding,
Context context)
+ { super(graphStore, inputBinding, context) ; }
// ---- Factory
@@ -62,9 +62,9 @@ public class UpdateEngineTDB extends Upd
}
@Override
- public UpdateEngineStreaming createStreaming(UsingList usingList,
GraphStore graphStore, Binding inputBinding, Context context)
+ public UpdateEngineStreaming createStreaming(GraphStore
graphStore, Binding inputBinding, Context context)
{
- return new UpdateEngineTDB((DatasetGraphTDB)graphStore,
usingList, inputBinding, context);
+ return new UpdateEngineTDB((DatasetGraphTDB)graphStore,
inputBinding, context);
}
} ;
}