@Nullable @Override default <T extends Annotation> AnnotationValue<T> getAnnotation(@Nonnull Class<T> annotationClass) { return getAnnotationMetadata().getAnnotation(annotationClass); }
@Nullable @Override default <T extends Annotation> AnnotationValue<T> getAnnotation(@Nonnull String annotation) { return getAnnotationMetadata().getAnnotation(annotation); }
/** * @param targetMethod The target method * @param annotationMetadata The annotation metadata * @param transactionManagerName The transaction manager * @return The {@link TransactionAttribute} */ protected TransactionAttribute resolveTransactionAttribute( ExecutableMethod<Object, Object> targetMethod, AnnotationMetadata annotationMetadata, String transactionManagerName) { return transactionDefinitionMap.computeIfAbsent(targetMethod, method -> { AnnotationValue<Transactional> annotation = annotationMetadata.getAnnotation(Transactional.class); if (annotation == null) { throw new IllegalStateException("No declared @Transactional annotation present"); } BindableRuleBasedTransactionAttribute attribute = new BindableRuleBasedTransactionAttribute(); attribute.setReadOnly(annotation.getRequiredValue("readOnly", Boolean.class)); attribute.setTimeout(annotation.getRequiredValue("timeout", Integer.class)); //noinspection unchecked attribute.setRollbackFor(annotation.get("rollbackFor", Class[].class).orElse(ReflectionUtils.EMPTY_CLASS_ARRAY)); //noinspection unchecked attribute.setNoRollbackFor(annotation.get("noRollbackFor", Class[].class).orElse(ReflectionUtils.EMPTY_CLASS_ARRAY)); attribute.setPropagationBehavior(annotation.getRequiredValue("propagation", Propagation.class).value()); attribute.setIsolationLevel(annotation.getRequiredValue("isolation", Isolation.class).value()); attribute.setQualifier(transactionManagerName); return attribute; }); }
/** * @param targetMethod The target method * @param annotationMetadata The annotation metadata * @param transactionManagerName The transaction manager * @return The {@link TransactionAttribute} */ protected TransactionAttribute resolveTransactionAttribute( ExecutableMethod<Object, Object> targetMethod, AnnotationMetadata annotationMetadata, String transactionManagerName) { return transactionDefinitionMap.computeIfAbsent(targetMethod, method -> { AnnotationValue<Transactional> annotation = annotationMetadata.getAnnotation(Transactional.class); if (annotation == null) { throw new IllegalStateException("No declared @Transactional annotation present"); } BindableRuleBasedTransactionAttribute attribute = new BindableRuleBasedTransactionAttribute(); attribute.setReadOnly(annotation.getRequiredValue("readOnly", Boolean.class)); attribute.setTimeout(annotation.getRequiredValue("timeout", Integer.class)); //noinspection unchecked attribute.setRollbackFor(annotation.get("rollbackFor", Class[].class).orElse(ReflectionUtils.EMPTY_CLASS_ARRAY)); //noinspection unchecked attribute.setNoRollbackFor(annotation.get("noRollbackFor", Class[].class).orElse(ReflectionUtils.EMPTY_CLASS_ARRAY)); attribute.setPropagationBehavior(annotation.getRequiredValue("propagation", Propagation.class).value()); attribute.setIsolationLevel(annotation.getRequiredValue("isolation", Isolation.class).value()); attribute.setQualifier(transactionManagerName); return attribute; }); }