@Override @Nullable public TransactionAttribute getTransactionAttribute(Method method, @Nullable Class<?> targetClass) { for (TransactionAttributeSource tas : this.transactionAttributeSources) { TransactionAttribute ta = tas.getTransactionAttribute(method, targetClass); if (ta != null) { return ta; } } return null; }
@Override public boolean matches(Method method, Class<?> targetClass) { if (TransactionalProxy.class.isAssignableFrom(targetClass) || PlatformTransactionManager.class.isAssignableFrom(targetClass) || PersistenceExceptionTranslator.class.isAssignableFrom(targetClass)) { return false; } TransactionAttributeSource tas = getTransactionAttributeSource(); return (tas == null || tas.getTransactionAttribute(method, targetClass) != null); }
@Override @Nullable public TransactionAttribute getTransactionAttribute(Method method, @Nullable Class<?> targetClass) { for (TransactionAttributeSource tas : this.transactionAttributeSources) { TransactionAttribute ta = tas.getTransactionAttribute(method, targetClass); if (ta != null) { return ta; } } return null; }
@Override public boolean matches(Method method, Class<?> targetClass) { if (TransactionalProxy.class.isAssignableFrom(targetClass) || PlatformTransactionManager.class.isAssignableFrom(targetClass) || PersistenceExceptionTranslator.class.isAssignableFrom(targetClass)) { return false; } TransactionAttributeSource tas = getTransactionAttributeSource(); return (tas == null || tas.getTransactionAttribute(method, targetClass) != null); }
@Test public void rollbackRules() { TransactionInterceptor txInterceptor = (TransactionInterceptor) context.getBean("txRollbackAdvice"); TransactionAttributeSource txAttrSource = txInterceptor.getTransactionAttributeSource(); TransactionAttribute txAttr = txAttrSource.getTransactionAttribute(getAgeMethod,ITestBean.class); assertTrue("should be configured to rollback on Exception",txAttr.rollbackOn(new Exception())); txAttr = txAttrSource.getTransactionAttribute(setAgeMethod, ITestBean.class); assertFalse("should not rollback on RuntimeException",txAttr.rollbackOn(new RuntimeException())); }
@Test public void nullValue() throws Exception { editor.setAsText(null); TransactionAttributeSource tas = (TransactionAttributeSource) editor.getValue(); Method m = Object.class.getMethod("hashCode"); assertNull(tas.getTransactionAttribute(m, null)); }
TransactionAttribute transactionAttribute = this.attributeSource.getTransactionAttribute(testMethod, testClass);
private void checkTransactionProperties(TransactionAttributeSource tas, Method method, int propagationBehavior) { TransactionAttribute ta = tas.getTransactionAttribute(method, null); if (propagationBehavior >= 0) { assertNotNull(ta); assertEquals(TransactionDefinition.ISOLATION_DEFAULT, ta.getIsolationLevel()); assertEquals(propagationBehavior, ta.getPropagationBehavior()); } else { assertNull(ta); } }
final TransactionAttribute txAttr = (tas != null ? tas.getTransactionAttribute(method, targetClass) : null); final PlatformTransactionManager tm = determineTransactionManager(txAttr); final String joinpointIdentification = methodIdentification(method, targetClass, txAttr);
final TransactionAttribute txAttr = (tas != null ? tas.getTransactionAttribute(method, targetClass) : null); final PlatformTransactionManager tm = determineTransactionManager(txAttr); final String joinpointIdentification = methodIdentification(method, targetClass, txAttr);
private void verify(TransactionInterceptor interceptor, PlatformTransactionManager txm) throws Exception { assertSame(txm, interceptor.getTransactionManager()); TransactionAttribute atts = interceptor.getTransactionAttributeSource() .getTransactionAttribute(TransactionInterceptorBuilderTests.class.getDeclaredMethod("test"), null); Assert.assertThat(atts.getPropagationBehavior(), equalTo(Propagation.REQUIRES_NEW.value())); Assert.assertThat(atts.getIsolationLevel(), equalTo(Isolation.SERIALIZABLE.value())); Assert.assertThat(atts.getTimeout(), equalTo(42)); assertTrue(atts.isReadOnly()); }
public boolean matches(Method method, Class targetClass) { Assert.notNull(this.transactionAttributeSource, "transactionAttributeSource is required"); return (this.transactionAttributeSource.getTransactionAttribute(method, targetClass) != null); }
@Override @Nullable public TransactionAttribute getTransactionAttribute(Method method, @Nullable Class<?> targetClass) { for (TransactionAttributeSource tas : this.transactionAttributeSources) { TransactionAttribute ta = tas.getTransactionAttribute(method, targetClass); if (ta != null) { return ta; } } return null; }
@Test //INT-2649 public void transactionalSubElement() throws Exception { Object endpoint = context.getBean("delayerWithTransactional"); DelayHandler delayHandler = TestUtils.getPropertyValue(endpoint, "handler", DelayHandler.class); List<?> adviceChain = TestUtils.getPropertyValue(delayHandler, "delayedAdviceChain", List.class); assertEquals(1, adviceChain.size()); Object advice = adviceChain.get(0); assertTrue(advice instanceof TransactionInterceptor); TransactionAttributeSource transactionAttributeSource = ((TransactionInterceptor) advice).getTransactionAttributeSource(); assertTrue(transactionAttributeSource instanceof MatchAlwaysTransactionAttributeSource); Method method = MessageHandler.class.getMethod("handleMessage", Message.class); TransactionDefinition definition = transactionAttributeSource.getTransactionAttribute(method, null); assertEquals(TransactionDefinition.PROPAGATION_REQUIRED, definition.getPropagationBehavior()); assertEquals(TransactionDefinition.ISOLATION_DEFAULT, definition.getIsolationLevel()); assertEquals(TransactionDefinition.TIMEOUT_DEFAULT, definition.getTimeout()); assertFalse(definition.isReadOnly()); }
@Override @Nullable public TransactionAttribute getTransactionAttribute(Method method, @Nullable Class<?> targetClass) { for (TransactionAttributeSource tas : this.transactionAttributeSources) { TransactionAttribute ta = tas.getTransactionAttribute(method, targetClass); if (ta != null) { return ta; } } return null; }
@Override public boolean matches(Method method, Class<?> targetClass) { if (TransactionalProxy.class.isAssignableFrom(targetClass) || PlatformTransactionManager.class.isAssignableFrom(targetClass) || PersistenceExceptionTranslator.class.isAssignableFrom(targetClass)) { return false; } TransactionAttributeSource tas = getTransactionAttributeSource(); return (tas == null || tas.getTransactionAttribute(method, targetClass) != null); }
@Override public boolean matches(Method method, @Nullable Class<?> targetClass) { if (targetClass != null && TransactionalProxy.class.isAssignableFrom(targetClass)) { return false; } TransactionAttributeSource tas = getTransactionAttributeSource(); return (tas == null || tas.getTransactionAttribute(method, targetClass) != null); }
/** * checks method (and as a fallback the class) for the Spring * {@link Transactional} annotation. * * @param mi * Non-null method invocation. * @return true if the {@link Transactional} annotation lists this method as * read-only, or if no annotation is found. */ boolean checkReadOnly(MethodInvocation mi) { TransactionAttribute ta = txSource.getTransactionAttribute(mi .getMethod(), mi.getThis().getClass()); return ta == null ? true : ta.isReadOnly(); }
@Override public TransactionAttributeSource getTransactionAttributeSource() { final TransactionAttributeSource origTxAttrSource = super.getTransactionAttributeSource(); return (final Method method, final Class<?> targetClass) -> { TransactionAttribute txAttr = origTxAttrSource.getTransactionAttribute(method, targetClass); if (txAttr instanceof DefaultTransactionAttribute) { ((DefaultTransactionAttribute) txAttr).setQualifier(AuthContextUtils.getDomain()); } return txAttr; }; }
private void verify(TransactionInterceptor interceptor, PlatformTransactionManager txm) { assertSame(txm, interceptor.getTransactionManager()); TransactionAttribute atts = interceptor.getTransactionAttributeSource() .getTransactionAttribute(null, null); assertThat(atts.getPropagationBehavior(), equalTo(Propagation.REQUIRES_NEW.value())); assertThat(atts.getIsolationLevel(), equalTo(Isolation.SERIALIZABLE.value())); assertThat(atts.getTimeout(), equalTo(42)); assertTrue(atts.isReadOnly()); }