Polish rollback rule support
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -25,7 +25,13 @@ import org.springframework.core.NestedRuntimeException;
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
class MyRuntimeException extends NestedRuntimeException {
|
||||
|
||||
public MyRuntimeException() {
|
||||
super("");
|
||||
}
|
||||
|
||||
public MyRuntimeException(String msg) {
|
||||
super(msg);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ package org.springframework.transaction.interceptor;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.junit.jupiter.api.Nested;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.beans.FatalBeanException;
|
||||
@@ -36,65 +37,105 @@ import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException
|
||||
*/
|
||||
class RollbackRuleAttributeTests {
|
||||
|
||||
@Test
|
||||
void constructorArgumentMustBeThrowableClassWithNonThrowableType() {
|
||||
assertThatIllegalArgumentException().isThrownBy(() -> new RollbackRuleAttribute(Object.class));
|
||||
@Nested
|
||||
class ExceptionPatternTests {
|
||||
|
||||
@Test
|
||||
void constructorPreconditions() {
|
||||
assertThatIllegalArgumentException().isThrownBy(() -> new RollbackRuleAttribute((String) null));
|
||||
}
|
||||
|
||||
@Test
|
||||
void notFound() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(IOException.class.getName());
|
||||
assertThat(rr.getDepth(new MyRuntimeException())).isEqualTo(-1);
|
||||
}
|
||||
|
||||
@Test
|
||||
void alwaysFoundForThrowable() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(Throwable.class.getName());
|
||||
assertThat(rr.getDepth(new MyRuntimeException())).isGreaterThan(0);
|
||||
assertThat(rr.getDepth(new IOException())).isGreaterThan(0);
|
||||
assertThat(rr.getDepth(new FatalBeanException(null, null))).isGreaterThan(0);
|
||||
assertThat(rr.getDepth(new RuntimeException())).isGreaterThan(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
void foundImmediatelyWhenDirectMatch() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(Exception.class.getName());
|
||||
assertThat(rr.getDepth(new Exception())).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
void foundImmediatelyWhenExceptionThrownIsNestedTypeOfRegisteredException() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(EnclosingException.class.getName());
|
||||
assertThat(rr.getDepth(new EnclosingException.NestedException())).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
void foundImmediatelyWhenNameOfExceptionThrownStartsWithNameOfRegisteredException() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(MyException.class.getName());
|
||||
assertThat(rr.getDepth(new MyException2())).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
void foundInSuperclassHierarchy() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(Exception.class.getName());
|
||||
// Exception -> RuntimeException -> NestedRuntimeException -> MyRuntimeException
|
||||
assertThat(rr.getDepth(new MyRuntimeException())).isEqualTo(3);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void constructorArgumentMustBeThrowableClassWithNullThrowableType() {
|
||||
assertThatIllegalArgumentException().isThrownBy(() -> new RollbackRuleAttribute((Class<?>) null));
|
||||
}
|
||||
@Nested
|
||||
class ExceptionTypeTests {
|
||||
|
||||
@Test
|
||||
void constructorArgumentMustBeStringWithNull() {
|
||||
assertThatIllegalArgumentException().isThrownBy(() -> new RollbackRuleAttribute((String) null));
|
||||
}
|
||||
@Test
|
||||
void constructorPreconditions() {
|
||||
assertThatIllegalArgumentException().isThrownBy(() -> new RollbackRuleAttribute(Object.class));
|
||||
assertThatIllegalArgumentException().isThrownBy(() -> new RollbackRuleAttribute((Class<?>) null));
|
||||
}
|
||||
|
||||
@Test
|
||||
void notFound() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(IOException.class);
|
||||
assertThat(rr.getDepth(new MyRuntimeException(""))).isEqualTo(-1);
|
||||
}
|
||||
@Test
|
||||
void notFound() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(IOException.class);
|
||||
assertThat(rr.getDepth(new MyRuntimeException())).isEqualTo(-1);
|
||||
}
|
||||
|
||||
@Test
|
||||
void foundImmediatelyWithString() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(Exception.class.getName());
|
||||
assertThat(rr.getDepth(new Exception())).isEqualTo(0);
|
||||
}
|
||||
@Test
|
||||
void alwaysFoundForThrowable() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(Throwable.class);
|
||||
assertThat(rr.getDepth(new MyRuntimeException())).isGreaterThan(0);
|
||||
assertThat(rr.getDepth(new IOException())).isGreaterThan(0);
|
||||
assertThat(rr.getDepth(new FatalBeanException(null, null))).isGreaterThan(0);
|
||||
assertThat(rr.getDepth(new RuntimeException())).isGreaterThan(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
void foundImmediatelyWithClass() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(Exception.class);
|
||||
assertThat(rr.getDepth(new Exception())).isEqualTo(0);
|
||||
}
|
||||
@Test
|
||||
void foundImmediatelyWhenDirectMatch() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(Exception.class);
|
||||
assertThat(rr.getDepth(new Exception())).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
void foundInSuperclassHierarchy() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(Exception.class);
|
||||
// Exception -> RuntimeException -> NestedRuntimeException -> MyRuntimeException
|
||||
assertThat(rr.getDepth(new MyRuntimeException(""))).isEqualTo(3);
|
||||
}
|
||||
@Test
|
||||
void foundImmediatelyWhenExceptionThrownIsNestedTypeOfRegisteredException() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(EnclosingException.class);
|
||||
assertThat(rr.getDepth(new EnclosingException.NestedException())).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
void alwaysFoundForThrowable() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(Throwable.class);
|
||||
assertThat(rr.getDepth(new MyRuntimeException(""))).isGreaterThan(0);
|
||||
assertThat(rr.getDepth(new IOException())).isGreaterThan(0);
|
||||
assertThat(rr.getDepth(new FatalBeanException(null, null))).isGreaterThan(0);
|
||||
assertThat(rr.getDepth(new RuntimeException())).isGreaterThan(0);
|
||||
}
|
||||
@Test
|
||||
void foundImmediatelyWhenNameOfExceptionThrownStartsWithNameOfRegisteredException() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(MyException.class);
|
||||
assertThat(rr.getDepth(new MyException2())).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
void foundNestedExceptionInEnclosingException() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(EnclosingException.class);
|
||||
assertThat(rr.getDepth(new EnclosingException.NestedException())).isEqualTo(0);
|
||||
}
|
||||
@Test
|
||||
void foundInSuperclassHierarchy() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(Exception.class);
|
||||
// Exception -> RuntimeException -> NestedRuntimeException -> MyRuntimeException
|
||||
assertThat(rr.getDepth(new MyRuntimeException())).isEqualTo(3);
|
||||
}
|
||||
|
||||
@Test
|
||||
void foundWhenNameOfExceptionThrownStartsWithTheNameOfTheRegisteredExceptionType() {
|
||||
RollbackRuleAttribute rr = new RollbackRuleAttribute(MyException.class);
|
||||
assertThat(rr.getDepth(new MyException2())).isEqualTo(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2020 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -35,13 +35,13 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
* @author Chris Beams
|
||||
* @since 09.04.2003
|
||||
*/
|
||||
public class RuleBasedTransactionAttributeTests {
|
||||
class RuleBasedTransactionAttributeTests {
|
||||
|
||||
@Test
|
||||
public void testDefaultRule() {
|
||||
void defaultRule() {
|
||||
RuleBasedTransactionAttribute rta = new RuleBasedTransactionAttribute();
|
||||
assertThat(rta.rollbackOn(new RuntimeException())).isTrue();
|
||||
assertThat(rta.rollbackOn(new MyRuntimeException(""))).isTrue();
|
||||
assertThat(rta.rollbackOn(new MyRuntimeException())).isTrue();
|
||||
assertThat(rta.rollbackOn(new Exception())).isFalse();
|
||||
assertThat(rta.rollbackOn(new IOException())).isFalse();
|
||||
}
|
||||
@@ -50,20 +50,20 @@ public class RuleBasedTransactionAttributeTests {
|
||||
* Test one checked exception that should roll back.
|
||||
*/
|
||||
@Test
|
||||
public void testRuleForRollbackOnChecked() {
|
||||
void ruleForRollbackOnChecked() {
|
||||
List<RollbackRuleAttribute> list = new ArrayList<>();
|
||||
list.add(new RollbackRuleAttribute(IOException.class.getName()));
|
||||
RuleBasedTransactionAttribute rta = new RuleBasedTransactionAttribute(TransactionDefinition.PROPAGATION_REQUIRED, list);
|
||||
|
||||
assertThat(rta.rollbackOn(new RuntimeException())).isTrue();
|
||||
assertThat(rta.rollbackOn(new MyRuntimeException(""))).isTrue();
|
||||
assertThat(rta.rollbackOn(new MyRuntimeException())).isTrue();
|
||||
assertThat(rta.rollbackOn(new Exception())).isFalse();
|
||||
// Check that default behaviour is overridden
|
||||
assertThat(rta.rollbackOn(new IOException())).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRuleForCommitOnUnchecked() {
|
||||
void ruleForCommitOnUnchecked() {
|
||||
List<RollbackRuleAttribute> list = new ArrayList<>();
|
||||
list.add(new NoRollbackRuleAttribute(MyRuntimeException.class.getName()));
|
||||
list.add(new RollbackRuleAttribute(IOException.class.getName()));
|
||||
@@ -71,14 +71,14 @@ public class RuleBasedTransactionAttributeTests {
|
||||
|
||||
assertThat(rta.rollbackOn(new RuntimeException())).isTrue();
|
||||
// Check default behaviour is overridden
|
||||
assertThat(rta.rollbackOn(new MyRuntimeException(""))).isFalse();
|
||||
assertThat(rta.rollbackOn(new MyRuntimeException())).isFalse();
|
||||
assertThat(rta.rollbackOn(new Exception())).isFalse();
|
||||
// Check that default behaviour is overridden
|
||||
assertThat(rta.rollbackOn(new IOException())).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRuleForSelectiveRollbackOnCheckedWithString() {
|
||||
void ruleForSelectiveRollbackOnCheckedWithString() {
|
||||
List<RollbackRuleAttribute> l = new ArrayList<>();
|
||||
l.add(new RollbackRuleAttribute(java.rmi.RemoteException.class.getName()));
|
||||
RuleBasedTransactionAttribute rta = new RuleBasedTransactionAttribute(TransactionDefinition.PROPAGATION_REQUIRED, l);
|
||||
@@ -86,7 +86,7 @@ public class RuleBasedTransactionAttributeTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRuleForSelectiveRollbackOnCheckedWithClass() {
|
||||
void ruleForSelectiveRollbackOnCheckedWithClass() {
|
||||
List<RollbackRuleAttribute> l = Collections.singletonList(new RollbackRuleAttribute(RemoteException.class));
|
||||
RuleBasedTransactionAttribute rta = new RuleBasedTransactionAttribute(TransactionDefinition.PROPAGATION_REQUIRED, l);
|
||||
doTestRuleForSelectiveRollbackOnChecked(rta);
|
||||
@@ -105,7 +105,7 @@ public class RuleBasedTransactionAttributeTests {
|
||||
* when Exception prompts a rollback.
|
||||
*/
|
||||
@Test
|
||||
public void testRuleForCommitOnSubclassOfChecked() {
|
||||
void ruleForCommitOnSubclassOfChecked() {
|
||||
List<RollbackRuleAttribute> list = new ArrayList<>();
|
||||
// Note that it's important to ensure that we have this as
|
||||
// a FQN: otherwise it will match everything!
|
||||
@@ -120,20 +120,20 @@ public class RuleBasedTransactionAttributeTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRollbackNever() {
|
||||
void rollbackNever() {
|
||||
List<RollbackRuleAttribute> list = new ArrayList<>();
|
||||
list.add(new NoRollbackRuleAttribute("Throwable"));
|
||||
RuleBasedTransactionAttribute rta = new RuleBasedTransactionAttribute(TransactionDefinition.PROPAGATION_REQUIRED, list);
|
||||
|
||||
assertThat(rta.rollbackOn(new Throwable())).isFalse();
|
||||
assertThat(rta.rollbackOn(new RuntimeException())).isFalse();
|
||||
assertThat(rta.rollbackOn(new MyRuntimeException(""))).isFalse();
|
||||
assertThat(rta.rollbackOn(new MyRuntimeException())).isFalse();
|
||||
assertThat(rta.rollbackOn(new Exception())).isFalse();
|
||||
assertThat(rta.rollbackOn(new IOException())).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToStringMatchesEditor() {
|
||||
void toStringMatchesEditor() {
|
||||
List<RollbackRuleAttribute> list = new ArrayList<>();
|
||||
list.add(new NoRollbackRuleAttribute("Throwable"));
|
||||
RuleBasedTransactionAttribute rta = new RuleBasedTransactionAttribute(TransactionDefinition.PROPAGATION_REQUIRED, list);
|
||||
@@ -144,7 +144,7 @@ public class RuleBasedTransactionAttributeTests {
|
||||
|
||||
assertThat(rta.rollbackOn(new Throwable())).isFalse();
|
||||
assertThat(rta.rollbackOn(new RuntimeException())).isFalse();
|
||||
assertThat(rta.rollbackOn(new MyRuntimeException(""))).isFalse();
|
||||
assertThat(rta.rollbackOn(new MyRuntimeException())).isFalse();
|
||||
assertThat(rta.rollbackOn(new Exception())).isFalse();
|
||||
assertThat(rta.rollbackOn(new IOException())).isFalse();
|
||||
}
|
||||
@@ -153,7 +153,7 @@ public class RuleBasedTransactionAttributeTests {
|
||||
* See <a href="https://forum.springframework.org/showthread.php?t=41350">this forum post</a>.
|
||||
*/
|
||||
@Test
|
||||
public void testConflictingRulesToDetermineExactContract() {
|
||||
void conflictingRulesToDetermineExactContract() {
|
||||
List<RollbackRuleAttribute> list = new ArrayList<>();
|
||||
list.add(new NoRollbackRuleAttribute(MyBusinessWarningException.class));
|
||||
list.add(new RollbackRuleAttribute(MyBusinessException.class));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.springframework.transaction.interceptor;
|
||||
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -27,72 +26,65 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
|
||||
|
||||
/**
|
||||
* Tests to check conversion from String to TransactionAttribute.
|
||||
* Tests to check conversion from String to TransactionAttribute using
|
||||
* a {@link TransactionAttributeEditor}.
|
||||
*
|
||||
* @author Rod Johnson
|
||||
* @author Juergen Hoeller
|
||||
* @author Chris Beams
|
||||
* @since 26.04.2003
|
||||
*/
|
||||
public class TransactionAttributeEditorTests {
|
||||
class TransactionAttributeEditorTests {
|
||||
|
||||
private final TransactionAttributeEditor pe = new TransactionAttributeEditor();
|
||||
|
||||
|
||||
@Test
|
||||
public void testNull() {
|
||||
TransactionAttributeEditor pe = new TransactionAttributeEditor();
|
||||
void nullText() {
|
||||
pe.setAsText(null);
|
||||
TransactionAttribute ta = (TransactionAttribute) pe.getValue();
|
||||
assertThat(ta == null).isTrue();
|
||||
assertThat(pe.getValue()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEmptyString() {
|
||||
TransactionAttributeEditor pe = new TransactionAttributeEditor();
|
||||
void emptyString() {
|
||||
pe.setAsText("");
|
||||
TransactionAttribute ta = (TransactionAttribute) pe.getValue();
|
||||
assertThat(ta == null).isTrue();
|
||||
assertThat(pe.getValue()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidPropagationCodeOnly() {
|
||||
TransactionAttributeEditor pe = new TransactionAttributeEditor();
|
||||
void validPropagationCodeOnly() {
|
||||
pe.setAsText("PROPAGATION_REQUIRED");
|
||||
TransactionAttribute ta = (TransactionAttribute) pe.getValue();
|
||||
assertThat(ta != null).isTrue();
|
||||
assertThat(ta.getPropagationBehavior() == TransactionDefinition.PROPAGATION_REQUIRED).isTrue();
|
||||
assertThat(ta.getIsolationLevel() == TransactionDefinition.ISOLATION_DEFAULT).isTrue();
|
||||
boolean condition = !ta.isReadOnly();
|
||||
assertThat(condition).isTrue();
|
||||
assertThat(ta).isNotNull();
|
||||
assertThat(ta.getPropagationBehavior()).isEqualTo(TransactionDefinition.PROPAGATION_REQUIRED);
|
||||
assertThat(ta.getIsolationLevel()).isEqualTo(TransactionDefinition.ISOLATION_DEFAULT);
|
||||
assertThat(ta.isReadOnly()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInvalidPropagationCodeOnly() {
|
||||
TransactionAttributeEditor pe = new TransactionAttributeEditor();
|
||||
void invalidPropagationCodeOnly() {
|
||||
// should have failed with bogus propagation code
|
||||
assertThatIllegalArgumentException().isThrownBy(() ->
|
||||
pe.setAsText("XXPROPAGATION_REQUIRED"));
|
||||
assertThatIllegalArgumentException().isThrownBy(() -> pe.setAsText("XXPROPAGATION_REQUIRED"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidPropagationCodeAndIsolationCode() {
|
||||
TransactionAttributeEditor pe = new TransactionAttributeEditor();
|
||||
void validPropagationCodeAndIsolationCode() {
|
||||
pe.setAsText("PROPAGATION_REQUIRED, ISOLATION_READ_UNCOMMITTED");
|
||||
TransactionAttribute ta = (TransactionAttribute) pe.getValue();
|
||||
assertThat(ta != null).isTrue();
|
||||
assertThat(ta.getPropagationBehavior() == TransactionDefinition.PROPAGATION_REQUIRED).isTrue();
|
||||
assertThat(ta.getIsolationLevel() == TransactionDefinition.ISOLATION_READ_UNCOMMITTED).isTrue();
|
||||
assertThat(ta).isNotNull();
|
||||
assertThat(ta.getPropagationBehavior()).isEqualTo(TransactionDefinition.PROPAGATION_REQUIRED);
|
||||
assertThat(ta.getIsolationLevel()).isEqualTo(TransactionDefinition.ISOLATION_READ_UNCOMMITTED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidPropagationAndIsolationCodesAndInvalidRollbackRule() {
|
||||
TransactionAttributeEditor pe = new TransactionAttributeEditor();
|
||||
void validPropagationAndIsolationCodesAndInvalidRollbackRule() {
|
||||
// should fail with bogus rollback rule
|
||||
assertThatIllegalArgumentException().isThrownBy(() ->
|
||||
pe.setAsText("PROPAGATION_REQUIRED,ISOLATION_READ_UNCOMMITTED,XXX"));
|
||||
assertThatIllegalArgumentException()
|
||||
.isThrownBy(() -> pe.setAsText("PROPAGATION_REQUIRED,ISOLATION_READ_UNCOMMITTED,XXX"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidPropagationCodeAndIsolationCodeAndRollbackRules1() {
|
||||
TransactionAttributeEditor pe = new TransactionAttributeEditor();
|
||||
void validPropagationCodeAndIsolationCodeAndRollbackRules1() {
|
||||
pe.setAsText("PROPAGATION_MANDATORY,ISOLATION_REPEATABLE_READ,timeout_10,-IOException,+MyRuntimeException");
|
||||
TransactionAttribute ta = (TransactionAttribute) pe.getValue();
|
||||
assertThat(ta).isNotNull();
|
||||
@@ -104,13 +96,11 @@ public class TransactionAttributeEditorTests {
|
||||
assertThat(ta.rollbackOn(new Exception())).isFalse();
|
||||
// Check for our bizarre customized rollback rules
|
||||
assertThat(ta.rollbackOn(new IOException())).isTrue();
|
||||
boolean condition = !ta.rollbackOn(new MyRuntimeException(""));
|
||||
assertThat(condition).isTrue();
|
||||
assertThat(ta.rollbackOn(new MyRuntimeException())).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidPropagationCodeAndIsolationCodeAndRollbackRules2() {
|
||||
TransactionAttributeEditor pe = new TransactionAttributeEditor();
|
||||
void validPropagationCodeAndIsolationCodeAndRollbackRules2() {
|
||||
pe.setAsText("+IOException,readOnly,ISOLATION_READ_COMMITTED,-MyRuntimeException,PROPAGATION_SUPPORTS");
|
||||
TransactionAttribute ta = (TransactionAttribute) pe.getValue();
|
||||
assertThat(ta).isNotNull();
|
||||
@@ -122,18 +112,17 @@ public class TransactionAttributeEditorTests {
|
||||
assertThat(ta.rollbackOn(new Exception())).isFalse();
|
||||
// Check for our bizarre customized rollback rules
|
||||
assertThat(ta.rollbackOn(new IOException())).isFalse();
|
||||
assertThat(ta.rollbackOn(new MyRuntimeException(""))).isTrue();
|
||||
assertThat(ta.rollbackOn(new MyRuntimeException())).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDefaultTransactionAttributeToString() {
|
||||
void defaultTransactionAttributeToString() {
|
||||
DefaultTransactionAttribute source = new DefaultTransactionAttribute();
|
||||
source.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
|
||||
source.setIsolationLevel(TransactionDefinition.ISOLATION_REPEATABLE_READ);
|
||||
source.setTimeout(10);
|
||||
source.setReadOnly(true);
|
||||
|
||||
TransactionAttributeEditor pe = new TransactionAttributeEditor();
|
||||
pe.setAsText(source.toString());
|
||||
TransactionAttribute ta = (TransactionAttribute) pe.getValue();
|
||||
assertThat(source).isEqualTo(ta);
|
||||
@@ -151,7 +140,7 @@ public class TransactionAttributeEditorTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRuleBasedTransactionAttributeToString() {
|
||||
void ruleBasedTransactionAttributeToString() {
|
||||
RuleBasedTransactionAttribute source = new RuleBasedTransactionAttribute();
|
||||
source.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
|
||||
source.setIsolationLevel(TransactionDefinition.ISOLATION_REPEATABLE_READ);
|
||||
@@ -160,7 +149,6 @@ public class TransactionAttributeEditorTests {
|
||||
source.getRollbackRules().add(new RollbackRuleAttribute("IllegalArgumentException"));
|
||||
source.getRollbackRules().add(new NoRollbackRuleAttribute("IllegalStateException"));
|
||||
|
||||
TransactionAttributeEditor pe = new TransactionAttributeEditor();
|
||||
pe.setAsText(source.toString());
|
||||
TransactionAttribute ta = (TransactionAttribute) pe.getValue();
|
||||
assertThat(source).isEqualTo(ta);
|
||||
|
||||
Reference in New Issue
Block a user