package org.wildfly.swarm.jolokia.runtime;
import java.util.function.Consumer;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import org.jboss.shrinkwrap.api.Archive;
import org.wildfly.swarm.jolokia.JolokiaFraction;
import org.wildfly.swarm.jolokia.JolokiaProperties;
import org.wildfly.swarm.keycloak.KeycloakFraction;
import org.wildfly.swarm.keycloak.Secured;
import org.wildfly.swarm.spi.api.Customizer;
import org.wildfly.swarm.spi.runtime.annotations.ConfigurationValue;
import org.wildfly.swarm.spi.runtime.annotations.Pre;
/**
* @author Bob McWhirter
*/
@Pre
@ApplicationScoped
public class JolokiaKeycloakCustomizer implements Customizer {
@Inject
KeycloakFraction keycloak;
@Inject
JolokiaFraction jolokia;
@Inject
@ConfigurationValue(JolokiaProperties.KEYCLOAK_ROLE)
String role;
@Override
public void customize() {
if (this.role == null) {
return;
}
Consumer<Archive> keycloakPreparer = (archive) -> {
archive.as(Secured.class)
.protect()
.withRole(this.role);
};
Consumer<Archive> preparer = this.jolokia.jolokiaWarPreparer();
if (preparer == null) {
preparer = keycloakPreparer;
} else {
preparer = preparer.andThen(keycloakPreparer);
}
this.jolokia.prepareJolokiaWar(preparer);
}
}