Step 3 - Running a Vaadin Legacy CDI application with MPR and Flow
- Updating to the correct CDI version
- Handling of CDIUI annotation
- What to do with CDI Views
- What to do with ViewScopes
- Next step
Note
| This step is needed in case your Vaadin 7 or 8 application uses CDI. If it isn’t the case, go back to the framework selection. |
Updating to the correct CDI version
Remove any version from com.vaadin:vaadin-cdi
as the proper Vaadin 14 compatible version for it’s managed by the vaadin-bom
:
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-cdi</artifactId>
</dependency>
Handling of CDIUI annotation
Instead of @CDIUI
use @Route
.
@CDIUI
@Theme("valo")
public class TodoUI extends UI {
@Override
protected void init(VaadinRequest vaadinRequest) {
setContent(new HorizontalLayout());
}
}
can for instance be replaced with
@Route("")
public class TodoUI extends Div implements HasLegacyComponents {
@PostConstruct
private void buildLayouts() {
setSizeFull();
add(new HorizontalLayout());
}
}
Note
|
Annotations in the UI, such as @Theme and @Title and so on, are dealt with later on in the tutorial.
Most of them have similar counterpart in either Flow or MPR.
|
What to do with CDI Views
Any @CDIView
should be updated to a Flow Route by wrapping them as a MprRouteAdapter<? extends View>
or re-writing it to be a Flow Component. See Upgrading Views to Flow Routes
What to do with ViewScopes
All ViewScopes should be changed to RouteScopes e.g.
-
@ViewScoped
to@RouteScoped
-
@NormalViewScoped
to@NormalRouteScoped
Note
|
In some projects CDI has ignored the archive and not instantiated objects as expected. This
is fixed by adding a beans.xml (empty is fine) file to src/main/webapp/WEB_INF .
|