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:
Source code
XML
<dependency>
    <groupId>com.vaadin</groupId>
    <artifactId>vaadin-cdi</artifactId>
</dependency>Handling of CDIUI annotation
Instead of @CDIUI use @Route.
Source code
Java
@CDIUI
@Theme("valo")
public class TodoUI extends UI {
    @Override
    protected void init(VaadinRequest vaadinRequest) {
        setContent(new HorizontalLayout());
    }
}can for instance be replaced with
Source code
Java
@Route("")
public class TodoUI extends Div implements HasLegacyComponents {
    @PostConstruct
    private void buildLayouts() {
        setSizeFull();
        add(new HorizontalLayout());
    }
}| Note | Annotations in the UI, such as @Themeand@Titleand 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.
- 
@ViewScopedto@RouteScoped
- 
@NormalViewScopedto@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 tosrc/main/webapp/WEB_INF. |