[Minor] Moved finally block in AbstractTransaction to .close()

This commit is contained in:
Robert von Burg 2022-06-29 10:47:53 +02:00
parent 5764201470
commit 66f638cbd4
Signed by: eitch
GPG Key ID: 75DB9C85C74331F7
1 changed files with 28 additions and 53 deletions

View File

@ -107,6 +107,7 @@ public abstract class AbstractTransaction implements StrolchTransaction {
this.txResult.setState(TransactionState.OPEN); this.txResult.setState(TransactionState.OPEN);
} }
@Override
public String getAction() { public String getAction() {
return this.action; return this.action;
} }
@ -125,8 +126,6 @@ public abstract class AbstractTransaction implements StrolchTransaction {
return this.txResult.getState().isOpen(); return this.txResult.getState().isOpen();
} }
@Override @Override
public boolean isRollingBack() { public boolean isRollingBack() {
return this.txResult.getState().isRollingBack(); return this.txResult.getState().isRollingBack();
@ -193,11 +192,6 @@ public abstract class AbstractTransaction implements StrolchTransaction {
this.closeStrategy = closeStrategy; this.closeStrategy = closeStrategy;
} }
@Override
public void close() throws StrolchTransactionException {
this.closeStrategy.close(this);
}
@Override @Override
public StrolchTransaction readOnly() { public StrolchTransaction readOnly() {
setCloseStrategy(TransactionCloseStrategy.READ_ONLY); setCloseStrategy(TransactionCloseStrategy.READ_ONLY);
@ -333,11 +327,13 @@ public abstract class AbstractTransaction implements StrolchTransaction {
add(command); add(command);
} }
@Override
public void add(Command command) { public void add(Command command) {
assertNotReadOnly(); assertNotReadOnly();
this.commands.add(command); this.commands.add(command);
} }
@Override
public boolean isReadOnly() { public boolean isReadOnly() {
return this.closeStrategy.isReadonly(); return this.closeStrategy.isReadonly();
} }
@ -484,20 +480,13 @@ public abstract class AbstractTransaction implements StrolchTransaction {
String objectClassType = elements.get(0); String objectClassType = elements.get(0);
String type = elements.get(1); String type = elements.get(1);
String id = elements.get(2); String id = elements.get(2);
switch (objectClassType) { rootElement = switch (objectClassType) {
case Tags.RESOURCE: case Tags.RESOURCE -> getResourceBy(type, id);
rootElement = getResourceBy(type, id); case Tags.ORDER -> getOrderBy(type, id);
break; case Tags.ACTIVITY -> getActivityBy(type, id);
case Tags.ORDER: default -> throw new StrolchModelException(
rootElement = getOrderBy(type, id);
break;
case Tags.ACTIVITY:
rootElement = getActivityBy(type, id);
break;
default:
throw new StrolchModelException(
MessageFormat.format("Unknown object class {0}", objectClassType)); //$NON-NLS-1$ MessageFormat.format("Unknown object class {0}", objectClassType)); //$NON-NLS-1$
} };
if (rootElement == null) { if (rootElement == null) {
if (allowNull) if (allowNull)
@ -549,9 +538,7 @@ public abstract class AbstractTransaction implements StrolchTransaction {
StrolchTimedState<IValue<?>> timedState = resource.getTimedState(stateId); StrolchTimedState<IValue<?>> timedState = resource.getTimedState(stateId);
return (T) timedState; return (T) timedState;
} else if (rootElement instanceof Activity) { } else if (rootElement instanceof Activity activity) {
Activity activity = (Activity) rootElement;
Iterator<String> iter = elements.subList(3, elements.size()).iterator(); Iterator<String> iter = elements.subList(3, elements.size()).iterator();
IActivityElement element = activity; IActivityElement element = activity;
@ -601,19 +588,12 @@ public abstract class AbstractTransaction implements StrolchTransaction {
if (parentP == null || parentP.isEmpty()) if (parentP == null || parentP.isEmpty())
break; break;
switch (parentP.getInterpretation()) { parent = switch (parentP.getInterpretation()) {
case INTERPRETATION_RESOURCE_REF: case INTERPRETATION_RESOURCE_REF -> getResourceBy(parentP);
parent = getResourceBy(parentP); case INTERPRETATION_ORDER_REF -> getOrderBy(parentP);
break; case INTERPRETATION_ACTIVITY_REF -> getActivityBy(parentP);
case INTERPRETATION_ORDER_REF: default -> throw new IllegalStateException("Unhandled element ref " + parentP.getInterpretation());
parent = getOrderBy(parentP); };
break;
case INTERPRETATION_ACTIVITY_REF:
parent = getActivityBy(parentP);
break;
default:
throw new IllegalStateException("Unhandled element ref " + parentP.getInterpretation());
}
if (parent == null) if (parent == null)
break; break;
@ -645,16 +625,11 @@ public abstract class AbstractTransaction implements StrolchTransaction {
if (op == null) if (op == null)
return Operation.GET; return Operation.GET;
switch (op) { return switch (op) {
case ADD: case ADD -> Operation.ADD;
return Operation.ADD; case MODIFY -> Operation.UPDATE;
case MODIFY: case REMOVE -> Operation.REMOVE;
return Operation.UPDATE; };
case REMOVE:
return Operation.REMOVE;
default:
return Operation.GET;
}
} }
@Override @Override
@ -1593,10 +1568,6 @@ public abstract class AbstractTransaction implements StrolchTransaction {
this.txResult.setState(TransactionState.FAILED); this.txResult.setState(TransactionState.FAILED);
handleFailure(true, start, e); handleFailure(true, start, e);
} finally {
releaseElementLocks();
TransactionThreadLocal.removeTx();
} }
} }
@ -1613,9 +1584,6 @@ public abstract class AbstractTransaction implements StrolchTransaction {
} catch (Exception e) { } catch (Exception e) {
handleFailure(true, start, e); handleFailure(true, start, e);
this.txResult.setState(TransactionState.FAILED); this.txResult.setState(TransactionState.FAILED);
} finally {
releaseElementLocks();
TransactionThreadLocal.removeTx();
} }
} }
@ -1657,6 +1625,13 @@ public abstract class AbstractTransaction implements StrolchTransaction {
} }
handleFailure(true, start, e); handleFailure(true, start, e);
this.txResult.setState(TransactionState.FAILED); this.txResult.setState(TransactionState.FAILED);
}
}
@Override
public void close() throws StrolchTransactionException {
try {
this.closeStrategy.close(this);
} finally { } finally {
releaseElementLocks(); releaseElementLocks();
TransactionThreadLocal.removeTx(); TransactionThreadLocal.removeTx();