Skip to content

Commit

Permalink
Fixing Annotation Scanning
Browse files Browse the repository at this point in the history
  • Loading branch information
cuioss committed Jun 20, 2024
1 parent 95af7ec commit 658febb
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,19 @@
*/
package de.cuioss.portal.core.test.junit5;

import static de.cuioss.tools.base.Preconditions.checkArgument;

import java.util.Optional;

import de.cuioss.portal.common.cdi.AnnotationInstanceProvider;
import de.cuioss.portal.configuration.PortalConfigurationSource;
import de.cuioss.portal.core.test.mocks.configuration.PortalTestConfiguration;
import de.cuioss.tools.string.Splitter;
import jakarta.enterprise.inject.spi.CDI;

import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.Extension;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.platform.commons.logging.Logger;
import org.junit.platform.commons.logging.LoggerFactory;
import org.junit.platform.commons.support.AnnotationSupport;

import de.cuioss.portal.common.cdi.AnnotationInstanceProvider;
import de.cuioss.portal.configuration.PortalConfigurationSource;
import de.cuioss.portal.core.test.mocks.configuration.PortalTestConfiguration;
import de.cuioss.tools.string.Splitter;
import static de.cuioss.tools.base.Preconditions.checkArgument;

/**
* Junit 5 {@link Extension} controlling the initialization process of a
Expand All @@ -49,29 +45,29 @@ public class PortalTestConfigurationExtension implements BeforeEachCallback {
private static final Logger log = LoggerFactory.getLogger(PortalTestConfigurationExtension.class);

@Override
public void beforeEach(ExtensionContext context) throws Exception {
public void beforeEach(ExtensionContext context) {
Class<?> testClass = context.getTestClass()
.orElseThrow(() -> new IllegalStateException("Unable to determine Test-class"));
.orElseThrow(() -> new IllegalStateException("Unable to determine Test-class"));
log.debug(() -> "Processing test-class " + testClass);

CDI<Object> cdi;
try {
cdi = CDI.current();
} catch (IllegalStateException e) {
throw new IllegalStateException("""
CDI not present, change the order of annotation and put @EnableAutoWeld above \
@EnablePortalConfiguration\
""", e);
CDI not present, change the order of annotation and put @EnableAutoWeld above \
@EnablePortalConfiguration\
""", e);
}

var configuration = cdi
.select(PortalTestConfiguration.class, AnnotationInstanceProvider.of(PortalConfigurationSource.class))
.get();
.select(PortalTestConfiguration.class, AnnotationInstanceProvider.of(PortalConfigurationSource.class))
.get();
log.debug(() -> "Resolved " + configuration);

configuration.clear();

var annotation = extractAnnotation(testClass);
var annotation = AnnotationSupport.findAnnotation(testClass, EnablePortalConfiguration.class);
if (annotation.isPresent()) {
log.debug(() -> "Resolved annotation " + annotation.get());
for (String element : annotation.get().configuration()) {
Expand All @@ -84,17 +80,4 @@ public void beforeEach(ExtensionContext context) throws Exception {

log.debug(() -> "Finished processing instance " + testClass);
}

private static Optional<EnablePortalConfiguration> extractAnnotation(Class<?> testClass) {
Optional<EnablePortalConfiguration> annotation = AnnotationSupport.findAnnotation(testClass,
EnablePortalConfiguration.class);
if (annotation.isPresent()) {
return annotation;
}
if (Object.class.equals(testClass.getClass())) {
return Optional.empty();
}
return extractAnnotation(testClass.getSuperclass());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,14 @@
*/
package de.cuioss.portal.core.test.junit5;

import static org.junit.jupiter.api.Assertions.assertEquals;

import jakarta.inject.Inject;
import jakarta.inject.Provider;

import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.jboss.weld.junit5.auto.EnableAutoWeld;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;

@EnableAutoWeld
@EnablePortalConfiguration(configuration = "key1:value1:zzz")
class PortalTestConfigurationExtensionTest {
Expand All @@ -36,4 +35,5 @@ class PortalTestConfigurationExtensionTest {
void shouldHandleConfig() {
assertEquals("value1:zzz", attribute.get());
}

}

0 comments on commit 658febb

Please sign in to comment.