/** * <p> * Retrieves the {@link TransactionConfigurationAttributes} for the * specified {@link Class class} which may optionally declare or inherit a * {@link TransactionConfiguration @TransactionConfiguration}. If a * {@link TransactionConfiguration} annotation is not present for the * supplied class, the <entityManager>default values</entityManager> for attributes defined in * {@link TransactionConfiguration} will be used instead. * @param clazz the Class object corresponding to the test class for which * the configuration attributes should be retrieved * @return a new TransactionConfigurationAttributes instance */ private TransactionConfigurationAttributes retrieveTransactionConfigurationAttributes(Class<?> clazz) { Class<TransactionConfiguration> annotationType = TransactionConfiguration.class; TransactionConfiguration config = clazz.getAnnotation(annotationType); if (logger.isDebugEnabled()) { logger.debug("Retrieved @TransactionConfiguration [" + config + "] for test class [" + clazz + "]"); } String transactionManagerName; boolean defaultRollback; if (config != null) { transactionManagerName = config.transactionManager(); defaultRollback = config.defaultRollback(); } else { transactionManagerName = (String) AnnotationUtils.getDefaultValue(annotationType, "transactionManager"); defaultRollback = (Boolean) AnnotationUtils.getDefaultValue(annotationType, "defaultRollback"); } TransactionConfigurationAttributes configAttributes = new TransactionConfigurationAttributes(transactionManagerName, defaultRollback); if (logger.isDebugEnabled()) { logger.debug("Retrieved TransactionConfigurationAttributes [" + configAttributes + "] for class [" + clazz + "]"); } return configAttributes; }
/** * Retrieves the {@link TransactionConfigurationAttributes} for the * specified {@link Class class} which may optionally declare or inherit a * {@link TransactionConfiguration @TransactionConfiguration}. If a * {@link TransactionConfiguration} annotation is not present for the * supplied class, the <em>default values</em> for attributes defined in * {@link TransactionConfiguration} will be used instead. * * @param clazz * the Class object corresponding to the test class for which the * configuration attributes should be retrieved * @return a new TransactionConfigurationAttributes instance */ private TransactionConfigurationAttributes retrieveConfigurationAttributes( TestContext testContext) { if (this.configurationAttributes == null) { Class<?> clazz = testContext.getTestClass(); Class<TransactionConfiguration> annotationType = TransactionConfiguration.class; TransactionConfiguration config = clazz .getAnnotation(annotationType); if (logger.isDebugEnabled()) { logger.debug("Retrieved @TransactionConfiguration [" + config + "] for test class [" + clazz + "]"); } String transactionManagerName; boolean defaultRollback; if (config != null) { transactionManagerName = config.transactionManager(); defaultRollback = config.defaultRollback(); } else { transactionManagerName = (String) AnnotationUtils .getDefaultValue(annotationType, "transactionManager"); defaultRollback = (Boolean) AnnotationUtils.getDefaultValue( annotationType, "defaultRollback"); } TransactionConfigurationAttributes configAttributes = new TransactionConfigurationAttributes( transactionManagerName, defaultRollback); if (logger.isDebugEnabled()) { logger.debug("Retrieved TransactionConfigurationAttributes [" + configAttributes + "] for class [" + clazz + "]"); } this.configurationAttributes = configAttributes; } return this.configurationAttributes; }