@@ -230,23 +230,29 @@ private void sendCompleted(String depositUUID) {
230
230
}
231
231
232
232
private String getMainObjectPidForDeposit (String depositUUID ) {
233
- PID depositPID = new PID ("uuid:" + depositUUID );
234
-
235
- String uri = depositPID .getURI ();
236
- this .dataset .begin (ReadWrite .READ );
237
- Model model = this .dataset .getNamedModel (uri ).begin ();
238
-
239
- String depositPid = depositPID .getURI ();
240
- Bag depositBag = model .getBag (depositPid );
241
-
242
- List <String > topLevelPids = new ArrayList <String >();
243
- DepositGraphUtils .walkChildrenDepthFirst (depositBag , topLevelPids , false );
244
-
245
- // There is a "main object" if the deposit has exactly one top-level object.
246
- if (topLevelPids .size () == 1 ) {
247
- return new PID (topLevelPids .get (0 )).toString ();
248
- } else {
249
- return null ;
233
+ try {
234
+ PID depositPID = new PID ("uuid:" + depositUUID );
235
+
236
+ String uri = depositPID .getURI ();
237
+ this .dataset .begin (ReadWrite .READ );
238
+ Model model = this .dataset .getNamedModel (uri ).begin ();
239
+
240
+ String depositPid = depositPID .getURI ();
241
+ Bag depositBag = model .getBag (depositPid );
242
+
243
+ List <String > topLevelPids = new ArrayList <String >();
244
+ DepositGraphUtils .walkChildrenDepthFirst (depositBag , topLevelPids , false );
245
+
246
+ // There is a "main object" if the deposit has exactly one top-level object.
247
+ if (topLevelPids .size () == 1 ) {
248
+ return new PID (topLevelPids .get (0 )).toString ();
249
+ } else {
250
+ return null ;
251
+ }
252
+ } finally {
253
+ if (this .dataset .isInTransaction ()) {
254
+ this .dataset .end ();
255
+ }
250
256
}
251
257
}
252
258
0 commit comments