diff --git a/services/ResourceService/src/Controller/ResourceController.php b/services/ResourceService/src/Controller/ResourceController.php
index f28db26d2..355e766a9 100644
--- a/services/ResourceService/src/Controller/ResourceController.php
+++ b/services/ResourceService/src/Controller/ResourceController.php
@@ -68,17 +68,38 @@ public function patch(Application $app, Request $request, $id, $child) {
public function delete(Application $app, Request $request, $id, $child) {
$tx = $request->query->get('tx', "");
$force = $request->query->get('force', FALSE);
+
+ error_log('---START OF DELETE RESOURCE REQUEST: ');
+ error_log($id);
+
+ $delete_queue = array($app->escape($id).'/'.$child, );
+ $sparql_query = $app['twig']->render('findAllOreProxy.sparql', array(
+ 'resource' => $id,
+ ));
try {
- $response = $app['api']->deleteResource($app->escape($id).'/'.$child, $tx);
- //remove tombstone also if 'force' == true and previous response is 204
- if ((204 == $response->getStatusCode() || 410 == $response->getStatusCode()) && $force) {
- $response= $app['api']->deleteResource($app->escape($id).'/'.$child.'/fcr:tombstone', $tx);
- }
+ $sparql_result = $app['triplestore']->query($sparql_query);
}
catch (\Exception $e) {
- $app->abort(503, '"Chullo says Fedora4 Repository is Not available"');
+ $app->abort(503, 'Chullo says "Triple Store Not available"');
+ }
+ if (count($sparql_result) > 0) {
+ foreach ($sparql_result as $ore_proxy) {
+ $delete_queue[] = $ore_proxy->obj->getUri();
+ }
+ }
+ error_log(implode(',', $delete_queue));
+ foreach($delete_queue as $object_uri) {
+ try {
+ $response = $app['api']->deleteResource($object_uri, $tx);
+ //remove tombstone also if 'force' == true and previous response is 204
+ if ((204 == $response->getStatusCode() || 410 == $response->getStatusCode()) && $force) {
+ $response = $app['api']->deleteResource($object_uri.'/fcr:tombstone', $tx);
+ }
+ }
+ catch (\Exception $e) {
+ $app->abort(503, '"Chullo says Fedora4 Repository is Not available"');
+ }
+ error_log($response->getStatusCode());
}
- return $response;
}
-
}
\ No newline at end of file
diff --git a/services/ResourceService/templates/findAllOreProxy.sparql b/services/ResourceService/templates/findAllOreProxy.sparql
new file mode 100644
index 000000000..4f75aa731
--- /dev/null
+++ b/services/ResourceService/templates/findAllOreProxy.sparql
@@ -0,0 +1,5 @@
+PREFIX ore:
+PREFIX ldp:
+SELECT ?obj WHERE {
+ ?obj ore:proxyFor <{{ resource }}> .
+}
\ No newline at end of file