deltaspike-projectstage: Demonstrate usage of DeltaSpike project stage and shows usage of a conditional @Exclude
Demonstrate usage of DeltaSpike project stage and shows usage of a conditional @Exclude
Project stages provide a way to customize the implementation based on the type of deployment environment. For example, you may want to generate sample data for system testing, but not for production. You can create a bean that generates sample data and activate it only for project stage SystemTest
Besides custom project stages it’s possible to use the following pre-defined project stages:
-
UnitTest
-
Development
-
SystemTest
-
IntegrationTest
-
Staging
-
Production
Furthermore, with @Exclude
, it is possible to annotate beans which should be ignored by CDI, even if they are in a CDI enabled archive.
This project has a interface called MyBean
that has 4 different implementations:
-
ExcludedExceptOnDevelopment - Uses the annotation
@Exclude(exceptIfProjectStage=Development.class)
to exclude the implementation if the project stage is anything other than Development.. -
ExcludedOnDevelopment - Uses the annotation
@Exclude(ifProjectStage=Development.class)
to exclude the implementation for project stage Development. -
MyExcludedBean - Uses the annotation
@Exclude
to exclude the implementation for all project stages. -
NoExcludedBean - The implementation is always available because this bean does not use any annotation.
The application will be running at the following URL: http://localhost:8080/{artifactId}/.
You are presented with a simple page that shows the current project stage: Staging. You will also see the List of available CDI instances for MyBean table with two available implementations.
Edit the file src/main/resources/META-INF/apache-deltaspike.properties
and change the org.apache.deltaspike.ProjectStage
property to Development
. Deploy the application again
$ mvn clean package wildfly:deploy
Access the application again at the same URL: http://localhost:8080/wildfly-deltaspike-projectstage
Review the List of available CDI instances for MyBean table to verify that the available implementations have changed.